| /* vi: set sw=4 ts=4: */ |
| /* |
| * Busybox main internal header file |
| * |
| * Licensed under the GPL v2 or later, see the file LICENSE in this tarball. |
| */ |
| #ifndef _BB_INTERNAL_H_ |
| #define _BB_INTERNAL_H_ 1 |
| |
| #include "libbb.h" |
| |
| /* order matters: used as index into "install_dir[]" in busybox.c */ |
| enum Location { |
| _BB_DIR_ROOT = 0, |
| _BB_DIR_BIN, |
| _BB_DIR_SBIN, |
| _BB_DIR_USR_BIN, |
| _BB_DIR_USR_SBIN |
| }; |
| |
| enum SUIDRoot { |
| _BB_SUID_NEVER = 0, |
| _BB_SUID_MAYBE, |
| _BB_SUID_ALWAYS |
| }; |
| |
| struct BB_applet { |
| const char *name; |
| int (*main) (int argc, char **argv); |
| __extension__ enum Location location:4; |
| __extension__ enum SUIDRoot need_suid:4; |
| }; |
| |
| /* From busybox.c */ |
| extern const struct BB_applet applets[]; |
| |
| /* Automagically pull in all the applet function prototypes and |
| * applet usage strings. These are all of the form: |
| * extern int foo_main(int argc, char **argv); |
| * extern const char foo_usage[]; |
| * These are all autogenerated from the set of currently defined applets. |
| */ |
| #define PROTOTYPES |
| #include "applets.h" |
| #undef PROTOTYPES |
| |
| #endif /* _BB_INTERNAL_H_ */ |