Changeset 5005
- Timestamp:
- 10/24/07 16:39:08 (9 months ago)
- Files:
-
- wired/trunk/wired/main.c (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
wired/trunk/wired/main.c
r4754 r5005 65 65 66 66 67 static wi_boolean_t wd_daemonize = true;68 69 67 wi_boolean_t wd_running = true; 70 68 … … 80 78 81 79 int main(int argc, const char **argv) { 80 wi_array_t *arguments; 82 81 wi_pool_t *pool; 83 82 wi_string_t *string; 83 const char **xargv; 84 84 int ch, facility; 85 wi_boolean_t no_chroot, test_config ;85 wi_boolean_t no_chroot, test_config, daemonize; 86 86 87 87 /* init libwired */ … … 104 104 no_chroot = false; 105 105 test_config = false; 106 daemonize = true; 107 108 /* init reexec argument list */ 109 arguments = wi_array_init(wi_array_alloc()); 106 110 107 111 /* parse command line switches */ 108 while((ch = getopt(argc, (char * const *) argv, "46Dd:f:hi:L:ls:tuVv ")) != -1) {112 while((ch = getopt(argc, (char * const *) argv, "46Dd:f:hi:L:ls:tuVvX")) != -1) { 109 113 switch(ch) { 110 114 case '4': 111 115 wd_address_family = WI_ADDRESS_IPV4; 116 112 117 break; 113 118 … … 117 122 118 123 case 'D': 119 wd_daemonize =false;124 daemonize = false; 120 125 wi_log_stderr = true; 121 126 break; … … 171 176 wd_version(); 172 177 break; 178 179 case 'X': 180 daemonize = false; 181 break; 173 182 174 183 case '?': … … 178 187 break; 179 188 } 180 } 181 189 190 wi_array_add_data(arguments, wi_string_with_format(WI_STR("-%c"), ch)); 191 192 if(optarg) 193 wi_array_add_data(arguments, wi_string_with_cstring(optarg)); 194 } 195 196 /* detach */ 197 if(daemonize) { 198 wi_array_insert_data_at_index(arguments, WI_STR("-X"), 0); 199 wi_array_insert_data_at_index(arguments, wi_string_with_cstring(argv[0]), 0); 200 201 switch(fork()) { 202 case -1: 203 wi_log_err(WI_STR("Could not fork: %m")); 204 break; 205 206 case 0: 207 xargv = wi_array_argv(arguments); 208 209 if(execv(argv[0], (char * const *) xargv) < 0) 210 wi_log_err(WI_STR("Could not execute %s: %m"), argv[0]); 211 break; 212 213 default: 214 _exit(0); 215 break; 216 } 217 } 218 219 wi_release(arguments); 220 182 221 /* open log */ 183 222 wi_log_open(); … … 225 264 wd_server_init(); 226 265 227 /* detach */228 if(wd_daemonize) {229 if(!wi_daemon())230 wi_log_err(WI_STR("Could not become a daemon: %m"));231 }232 233 266 /* switch user/group */ 234 267 wi_switch_user(wd_settings.user, wd_settings.group);
