Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • unix.c

    r7f49a86 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;
     
    6060        if( global.conf->runmode == RUNMODE_INETD )
    6161        {
    62                 log_link( LOGLVL_ERROR, LOGOUTPUT_IRC );
    63                 log_link( LOGLVL_WARNING, LOGOUTPUT_IRC );
    64        
    6562                i = bitlbee_inetd_init();
    6663                log_message( LOGLVL_INFO, "Bitlbee %s starting in inetd mode.", BITLBEE_VERSION );
     
    6966        else if( global.conf->runmode == RUNMODE_DAEMON )
    7067        {
    71                 log_link( LOGLVL_ERROR, LOGOUTPUT_SYSLOG );
    72                 log_link( LOGLVL_WARNING, LOGOUTPUT_SYSLOG );
    73 
    7468                i = bitlbee_daemon_init();
    7569                log_message( LOGLVL_INFO, "Bitlbee %s starting in daemon mode.", BITLBEE_VERSION );
     
    141135        {
    142136                char *fn = ipc_master_save_state();
    143                 char **args;
    144                 int n, i;
    145137               
    146138                chdir( old_cwd );
    147139               
    148                 n = 0;
    149                 args = g_new0( char *, argc + 3 );
    150                 args[n++] = argv[0];
    151                 if( fn )
    152                 {
    153                         args[n++] = "-R";
    154                         args[n++] = fn;
    155                 }
    156                 for( i = 1; argv[i] && i < argc; i ++ )
    157                 {
    158                         if( strcmp( argv[i], "-R" ) == 0 )
    159                                 i += 2;
    160                        
    161                         args[n++] = argv[i];
    162                 }
     140                setenv( "_BITLBEE_RESTART_STATE", fn, 1 );
     141                g_free( fn );
    163142               
    164143                close( global.listen_socket );
    165144               
    166                 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 ); */
    167150        }
    168151       
     
    225208        return( (double) time->tv_sec + (double) time->tv_usec / 1000000 );
    226209}
    227 
    228 
Note: See TracChangeset for help on using the changeset viewer.