Changes in unix.c [d25f6fc:58bc4e6]
Legend:
- Unmodified
- Added
- Removed
-
unix.c
rd25f6fc r58bc4e6 29 29 #include "protocols/nogaim.h" 30 30 #include "help.h" 31 #include "ipc.h" 31 32 #include <signal.h> 32 33 #include <unistd.h> … … 38 39 static void sighandler( int signal ); 39 40 40 int main( int argc, char *argv[] )41 int main( int argc, char *argv[], char **envp ) 41 42 { 42 43 int i = 0; 44 char *old_cwd = NULL; 43 45 struct sigaction sig, old; 44 46 … … 73 75 else if( global.conf->runmode == RUNMODE_FORKDAEMON ) 74 76 { 77 /* In case the operator requests a restart, we need this. */ 78 old_cwd = g_malloc( 256 ); 79 if( getcwd( old_cwd, 255 ) == NULL ) 80 { 81 log_message( LOGLVL_WARNING, "Could not save current directory: %s", strerror( errno ) ); 82 g_free( old_cwd ); 83 old_cwd = NULL; 84 } 85 75 86 i = bitlbee_daemon_init(); 76 87 log_message( LOGLVL_INFO, "Bitlbee %s starting in forking daemon mode.", BITLBEE_VERSION ); … … 108 119 g_main_run( global.loop ); 109 120 121 if( global.restart ) 122 { 123 char *fn = ipc_master_save_state(); 124 char **args; 125 int n, i; 126 127 chdir( old_cwd ); 128 129 n = 0; 130 args = g_new0( char *, argc + 3 ); 131 args[n++] = argv[0]; 132 if( fn ) 133 { 134 args[n++] = "-R"; 135 args[n++] = fn; 136 } 137 for( i = 1; argv[i] && i < argc; i ++ ) 138 { 139 if( strcmp( argv[i], "-R" ) == 0 ) 140 i += 2; 141 142 args[n++] = argv[i]; 143 } 144 145 close( global.listen_socket ); 146 147 execve( args[0], args, envp ); 148 } 149 110 150 return( 0 ); 111 151 }
Note: See TracChangeset
for help on using the changeset viewer.