aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorvda <vda@69ca8d6d-28ef-0310-b511-8ec308f3f277>2006-12-17 19:43:10 +0000
committervda <vda@69ca8d6d-28ef-0310-b511-8ec308f3f277>2006-12-17 19:43:10 +0000
commitafd32324ae45bf2a70943a6509dc3e9d70521b49 (patch)
tree8abfddbb424183f8d0c8f0b2d422849e565e6bea
parent90832c7bdd7e7130c07da4524ee2960cac3de1ce (diff)
downloadbusybox-w32-afd32324ae45bf2a70943a6509dc3e9d70521b49.tar.gz
busybox-w32-afd32324ae45bf2a70943a6509dc3e9d70521b49.tar.bz2
busybox-w32-afd32324ae45bf2a70943a6509dc3e9d70521b49.zip
start_stop_daemon: make code a bit more readable
git-svn-id: svn://busybox.net/trunk/busybox@16985 69ca8d6d-28ef-0310-b511-8ec308f3f277
-rw-r--r--debianutils/start_stop_daemon.c42
1 files changed, 19 insertions, 23 deletions
diff --git a/debianutils/start_stop_daemon.c b/debianutils/start_stop_daemon.c
index 399f9f5e1..d1f5e94c0 100644
--- a/debianutils/start_stop_daemon.c
+++ b/debianutils/start_stop_daemon.c
@@ -194,7 +194,7 @@ static int do_stop(void)
194} 194}
195 195
196#if ENABLE_FEATURE_START_STOP_DAEMON_LONG_OPTIONS 196#if ENABLE_FEATURE_START_STOP_DAEMON_LONG_OPTIONS
197static const struct option ssd_long_options[] = { 197static const struct option long_options[] = {
198 { "stop", 0, NULL, 'K' }, 198 { "stop", 0, NULL, 'K' },
199 { "start", 0, NULL, 'S' }, 199 { "start", 0, NULL, 'S' },
200 { "background", 0, NULL, 'b' }, 200 { "background", 0, NULL, 'b' },
@@ -219,16 +219,16 @@ static const struct option ssd_long_options[] = {
219}; 219};
220#endif 220#endif
221 221
222#define SSD_CTX_STOP 0x1 222enum {
223#define SSD_CTX_START 0x2 223 CTX_STOP = 0x1,
224#define SSD_OPT_BACKGROUND 0x4 224 CTX_START = 0x2,
225#define SSD_OPT_QUIET 0x8 225 OPT_BACKGROUND = 0x4,
226#define SSD_OPT_MAKEPID 0x10 226 OPT_QUIET = 0x8,
227#if ENABLE_FEATURE_START_STOP_DAEMON_FANCY 227 OPT_MAKEPID = 0x10,
228#define SSD_OPT_OKNODO 0x20 228 OPT_OKNODO = 0x20 * ENABLE_FEATURE_START_STOP_DAEMON_FANCY,
229#define SSD_OPT_VERBOSE 0x40 229 OPT_VERBOSE = 0x40 * ENABLE_FEATURE_START_STOP_DAEMON_FANCY,
230#define SSD_OPT_NICELEVEL 0x80 230 OPT_NICELEVEL = 0x80 * ENABLE_FEATURE_START_STOP_DAEMON_FANCY,
231#endif 231};
232 232
233int start_stop_daemon_main(int argc, char **argv) 233int start_stop_daemon_main(int argc, char **argv)
234{ 234{
@@ -241,7 +241,7 @@ int start_stop_daemon_main(int argc, char **argv)
241 char *opt_N; 241 char *opt_N;
242#endif 242#endif
243#if ENABLE_FEATURE_START_STOP_DAEMON_LONG_OPTIONS 243#if ENABLE_FEATURE_START_STOP_DAEMON_LONG_OPTIONS
244 applet_long_options = ssd_long_options; 244 applet_long_options = long_options;
245#endif 245#endif
246 246
247 /* Check required one context option was given */ 247 /* Check required one context option was given */
@@ -254,8 +254,7 @@ int start_stop_daemon_main(int argc, char **argv)
254// USE_FEATURE_START_STOP_DAEMON_FANCY(,&retry_arg) 254// USE_FEATURE_START_STOP_DAEMON_FANCY(,&retry_arg)
255 ,&startas, &cmdname, &signame, &userspec, &chuid, &execname, &pidfile); 255 ,&startas, &cmdname, &signame, &userspec, &chuid, &execname, &pidfile);
256 256
257 quiet = (opt & SSD_OPT_QUIET) 257 quiet = (opt & OPT_QUIET) && !(opt & OPT_VERBOSE);
258 USE_FEATURE_START_STOP_DAEMON_FANCY(&& !(opt & SSD_OPT_VERBOSE));
259 258
260 if (signame) { 259 if (signame) {
261 signal_nr = get_signum(signame); 260 signal_nr = get_signum(signame);
@@ -278,11 +277,9 @@ int start_stop_daemon_main(int argc, char **argv)
278 user_id = bb_xgetpwnam(userspec); 277 user_id = bb_xgetpwnam(userspec);
279 } 278 }
280 279
281 if (opt & SSD_CTX_STOP) { 280 if (opt & CTX_STOP) {
282 int i = do_stop(); 281 int i = do_stop();
283 return 282 return (opt & OPT_OKNODO) ? 0 : (i<=0);
284 USE_FEATURE_START_STOP_DAEMON_FANCY((opt & SSD_OPT_OKNODO)
285 ? 0 :) !!(i<=0);
286 } 283 }
287 284
288 do_procinit(); 285 do_procinit();
@@ -290,15 +287,14 @@ int start_stop_daemon_main(int argc, char **argv)
290 if (found) { 287 if (found) {
291 if (!quiet) 288 if (!quiet)
292 printf("%s already running\n%d\n", execname, found->pid); 289 printf("%s already running\n%d\n", execname, found->pid);
293 USE_FEATURE_START_STOP_DAEMON_FANCY(return !(opt & SSD_OPT_OKNODO);) 290 return !(opt & OPT_OKNODO);
294 SKIP_FEATURE_START_STOP_DAEMON_FANCY(return EXIT_FAILURE;)
295 } 291 }
296 *--argv = startas; 292 *--argv = startas;
297 if (opt & SSD_OPT_BACKGROUND) { 293 if (opt & OPT_BACKGROUND) {
298 xdaemon(0, 0); 294 xdaemon(0, 0);
299 setsid(); 295 setsid();
300 } 296 }
301 if (opt & SSD_OPT_MAKEPID) { 297 if (opt & OPT_MAKEPID) {
302 /* user wants _us_ to make the pidfile */ 298 /* user wants _us_ to make the pidfile */
303 FILE *pidf = xfopen(pidfile, "w"); 299 FILE *pidf = xfopen(pidfile, "w");
304 300
@@ -313,7 +309,7 @@ int start_stop_daemon_main(int argc, char **argv)
313 xsetuid(user_id); 309 xsetuid(user_id);
314 } 310 }
315#if ENABLE_FEATURE_START_STOP_DAEMON_FANCY 311#if ENABLE_FEATURE_START_STOP_DAEMON_FANCY
316 if (opt & SSD_OPT_NICELEVEL) { 312 if (opt & OPT_NICELEVEL) {
317 /* Set process priority */ 313 /* Set process priority */
318 int prio = getpriority(PRIO_PROCESS, 0) + xatoi_range(opt_N, INT_MIN/2, INT_MAX/2); 314 int prio = getpriority(PRIO_PROCESS, 0) + xatoi_range(opt_N, INT_MIN/2, INT_MAX/2);
319 if (setpriority(PRIO_PROCESS, 0, prio) < 0) { 315 if (setpriority(PRIO_PROCESS, 0, prio) < 0) {