- Timestamp:
- 2006-02-02T13:59:14Z (18 years ago)
- Branches:
- master
- Children:
- ec3e411
- Parents:
- 34b17d9 (diff), a49dcd5 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
unix.c
r34b17d9 r1d2e3c2 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; 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.