Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • unix.c

    r51bbec0 rcd63d58  
    4040static void sighandler( int signal );
    4141
    42 int main( int argc, char *argv[], char **envp )
     42int main( int argc, char *argv[] )
    4343{
    4444        int i = 0;
     
    135135        {
    136136                char *fn = ipc_master_save_state();
    137                 char **args;
    138                 int n, i;
    139137               
    140138                chdir( old_cwd );
    141139               
    142                 n = 0;
    143                 args = g_new0( char *, argc + 3 );
    144                 args[n++] = argv[0];
    145                 if( fn )
    146                 {
    147                         args[n++] = "-R";
    148                         args[n++] = fn;
    149                 }
    150                 for( i = 1; argv[i] && i < argc; i ++ )
    151                 {
    152                         if( strcmp( argv[i], "-R" ) == 0 )
    153                                 i += 2;
    154                        
    155                         args[n++] = argv[i];
    156                 }
     140                setenv( "_BITLBEE_RESTART_STATE", fn, 1 );
     141                g_free( fn );
    157142               
    158143                close( global.listen_socket );
    159144               
    160                 execve( args[0], args, envp );
     145                if( execv( argv[0], argv ) == -1 )
     146                        /* Apparently the execve() failed, so let's just
     147                           jump back into our own/current main(). */
     148                        /* Need more cleanup code to make this work. */
     149                        return 1; /* main( argc, argv ); */
    161150        }
    162151       
Note: See TracChangeset for help on using the changeset viewer.