aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorRob Landley <rob@landley.net>2019-08-04 16:17:37 -0500
committerRob Landley <rob@landley.net>2019-08-04 16:17:37 -0500
commit60dd7c8a794ed9f460d8ae9d3a6bba8e32494325 (patch)
tree78553a5fc775ac079228f95612c1b5f00156f726 /lib
parente5942a8c90c2f52550496fdf08efddb564d8e5a3 (diff)
downloadtoybox-60dd7c8a794ed9f460d8ae9d3a6bba8e32494325.tar.gz
Add TOYFLAG_MAYFORK and annotate a couple commands.
A TOYFLAG_NOFORK command must run in the context of toysh, but a MAYFORK can either run standalone or run in the toysh process. MAYFORK means it cleans up after itself: no leaked resources (malloc, mmap, filehandles, etc), even in error_exit() paths that would longjmp() back to the shell. It also doesn't discard anything we need to retain (don't close stdout, change toys.optargs[] so we can't free it, etc)...
Diffstat (limited to 'lib')
-rw-r--r--lib/toyflags.h11
1 files changed, 6 insertions, 5 deletions
diff --git a/lib/toyflags.h b/lib/toyflags.h
index 408c3ec6..b158ba88 100644
--- a/lib/toyflags.h
+++ b/lib/toyflags.h
@@ -15,21 +15,22 @@
// This is a shell built-in function, running in the same process context.
#define TOYFLAG_NOFORK (1<<4)
+#define TOYFLAG_MAYFORK (1<<5)
// Start command with a umask of 0 (saves old umask in this.old_umask)
-#define TOYFLAG_UMASK (1<<5)
+#define TOYFLAG_UMASK (1<<6)
// This command runs as root.
-#define TOYFLAG_STAYROOT (1<<6) // Don't drop suid root before running cmd_main
-#define TOYFLAG_NEEDROOT (1<<7) // Refuse to run if real uid != 0
+#define TOYFLAG_STAYROOT (1<<7) // Don't drop suid root before running cmd_main
+#define TOYFLAG_NEEDROOT (1<<8) // Refuse to run if real uid != 0
#define TOYFLAG_ROOTONLY (TOYFLAG_STAYROOT|TOYFLAG_NEEDROOT)
// Call setlocale to listen to environment variables.
// This invalidates sprintf("%.*s", size, string) as a valid length constraint.
-#define TOYFLAG_LOCALE (1<<8)
+#define TOYFLAG_LOCALE (1<<9)
// Suppress default --help processing
-#define TOYFLAG_NOHELP (1<<9)
+#define TOYFLAG_NOHELP (1<<10)
// Error code to return if argument parsing fails (default 1)
#define TOYFLAG_ARGFAIL(x) (x<<24)