diff options
| author | Denis Vlasenko <vda.linux@googlemail.com> | 2007-04-09 21:32:30 +0000 |
|---|---|---|
| committer | Denis Vlasenko <vda.linux@googlemail.com> | 2007-04-09 21:32:30 +0000 |
| commit | cd7001f7055c3fc2d6298ab9e3befe91e951c652 (patch) | |
| tree | b9509ed21e0a7af26128b796a66a3294ae4dc5b0 /include | |
| parent | 1b4b2cb20e5291c319ce0c7721e64445e2749b10 (diff) | |
| download | busybox-w32-cd7001f7055c3fc2d6298ab9e3befe91e951c652.tar.gz busybox-w32-cd7001f7055c3fc2d6298ab9e3befe91e951c652.tar.bz2 busybox-w32-cd7001f7055c3fc2d6298ab9e3befe91e951c652.zip | |
factor out NOFORK/NOEXEC code from find. Use it for xargs too.
Diffstat (limited to 'include')
| -rw-r--r-- | include/libbb.h | 35 |
1 files changed, 20 insertions, 15 deletions
diff --git a/include/libbb.h b/include/libbb.h index 4fc5d183f..cec31a7f4 100644 --- a/include/libbb.h +++ b/include/libbb.h | |||
| @@ -269,17 +269,6 @@ char *xrealloc_getcwd_or_warn(char *cwd); | |||
| 269 | char *xmalloc_readlink_or_warn(const char *path); | 269 | char *xmalloc_readlink_or_warn(const char *path); |
| 270 | char *xmalloc_realpath(const char *path); | 270 | char *xmalloc_realpath(const char *path); |
| 271 | 271 | ||
| 272 | /* Unlike waitpid, waits ONLY for one process, | ||
| 273 | * It's safe to pass negative 'pids' from failed [v]fork - | ||
| 274 | * wait4pid will return -1 and ECHILD in errno. | ||
| 275 | * IOW: rc = wait4pid(spawn(argv)); | ||
| 276 | * if (rc < 0) bb_perror_msg("%s", argv[0]); | ||
| 277 | * if (rc > 0) bb_error_msg("exit code: %d", rc); | ||
| 278 | */ | ||
| 279 | extern int wait4pid(int pid); | ||
| 280 | extern int wait_pid(int *wstat, int pid); | ||
| 281 | extern int wait_nohang(int *wstat); | ||
| 282 | //TODO: signal(sid, f) is the same? then why? | ||
| 283 | extern void sig_catch(int,void (*)(int)); | 272 | extern void sig_catch(int,void (*)(int)); |
| 284 | //#define sig_ignore(s) (sig_catch((s), SIG_IGN)) | 273 | //#define sig_ignore(s) (sig_catch((s), SIG_IGN)) |
| 285 | //#define sig_uncatch(s) (sig_catch((s), SIG_DFL)) | 274 | //#define sig_uncatch(s) (sig_catch((s), SIG_DFL)) |
| @@ -288,10 +277,6 @@ extern void sig_unblock(int); | |||
| 288 | /* UNUSED: extern void sig_blocknone(void); */ | 277 | /* UNUSED: extern void sig_blocknone(void); */ |
| 289 | extern void sig_pause(void); | 278 | extern void sig_pause(void); |
| 290 | 279 | ||
| 291 | #define wait_crashed(w) ((w) & 127) | ||
| 292 | #define wait_exitcode(w) ((w) >> 8) | ||
| 293 | #define wait_stopsig(w) ((w) >> 8) | ||
| 294 | #define wait_stopped(w) (((w) & 127) == 127) | ||
| 295 | 280 | ||
| 296 | 281 | ||
| 297 | void xsetgid(gid_t gid); | 282 | void xsetgid(gid_t gid); |
| @@ -528,6 +513,25 @@ int bb_execvp(const char *file, char *const argv[]); | |||
| 528 | /* NOMMU friendy fork+exec */ | 513 | /* NOMMU friendy fork+exec */ |
| 529 | pid_t spawn(char **argv); | 514 | pid_t spawn(char **argv); |
| 530 | pid_t xspawn(char **argv); | 515 | pid_t xspawn(char **argv); |
| 516 | |||
| 517 | /* Unlike waitpid, waits ONLY for one process, | ||
| 518 | * It's safe to pass negative 'pids' from failed [v]fork - | ||
| 519 | * wait4pid will return -1 and ECHILD in errno. | ||
| 520 | * IOW: rc = wait4pid(spawn(argv)); | ||
| 521 | * if (rc < 0) bb_perror_msg("%s", argv[0]); | ||
| 522 | * if (rc > 0) bb_error_msg("exit code: %d", rc); | ||
| 523 | */ | ||
| 524 | int wait_pid(int *wstat, int pid); | ||
| 525 | int wait_nohang(int *wstat); | ||
| 526 | int wait4pid(int pid); | ||
| 527 | //TODO: signal(sid, f) is the same? then why? | ||
| 528 | #define wait_crashed(w) ((w) & 127) | ||
| 529 | #define wait_exitcode(w) ((w) >> 8) | ||
| 530 | #define wait_stopsig(w) ((w) >> 8) | ||
| 531 | #define wait_stopped(w) (((w) & 127) == 127) | ||
| 532 | /* wait4pid(spawn(argv)) + NOFORK/NOEXEC (if configured) */ | ||
| 533 | int spawn_and_wait(char **argv); | ||
| 534 | |||
| 531 | /* Helpers for daemonization. | 535 | /* Helpers for daemonization. |
| 532 | * | 536 | * |
| 533 | * bb_daemonize(flags) = daemonize, does not compile on NOMMU | 537 | * bb_daemonize(flags) = daemonize, does not compile on NOMMU |
| @@ -573,6 +577,7 @@ void bb_daemonize_or_rexec(int flags, char **argv); | |||
| 573 | void bb_sanitize_stdio(void); | 577 | void bb_sanitize_stdio(void); |
| 574 | 578 | ||
| 575 | 579 | ||
| 580 | // TODO: always error out? | ||
| 576 | enum { BB_GETOPT_ERROR = 0x80000000 }; | 581 | enum { BB_GETOPT_ERROR = 0x80000000 }; |
| 577 | extern const char *opt_complementary; | 582 | extern const char *opt_complementary; |
| 578 | #if ENABLE_GETOPT_LONG | 583 | #if ENABLE_GETOPT_LONG |
