mirror of
https://github.com/sheumann/hush.git
synced 2024-09-12 00:55:11 +00:00
and now this fact is recorded in applets.h, not ash.c. Several fixes to "--help + STANDALONE_SHELL" scenarios. function old new delta run_current_applet_and_exit - 355 +355 arith 2064 2073 +9 refresh 1148 1156 +8 getopt32 1068 1073 +5 telnet_main 1510 1514 +4 md5_sha1_sum_main 565 566 +1 xstrtoul_range_sfx 255 251 -4 packed_usage 22523 22514 -9 tryexec 255 203 -52 static.safe_applets 152 - -152 .rodata 131320 131128 -192 run_applet_by_name 869 506 -363 ------------------------------------------------------------------------------ (add/remove: 1/1 grow/shrink: 5/5 up/down: 382/-772) Total: -390 bytes ./busybox ash -c 'i=20000; while test $i != 0; do touch z; i=$((i-1)); done' runs more than twice as fast with STANDALONE_SHELL versus without.
46 lines
1.0 KiB
C
46 lines
1.0 KiB
C
/* 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:8;
|
|
__extension__ enum SUIDRoot need_suid:8;
|
|
/* true if instead if fork(); exec("applet"); waitpid();
|
|
* one can do fork(); exit(applet_main(argc,argv)); waitpid(); */
|
|
unsigned char noexec;
|
|
/* Even nicer */
|
|
/* true if instead if fork(); exec("applet"); waitpid();
|
|
* one can simply call applet_main(argc,argv); */
|
|
unsigned char nofork;
|
|
};
|
|
|
|
/* Defined in applet.c */
|
|
extern const struct BB_applet applets[];
|
|
extern const unsigned short NUM_APPLETS;
|
|
|
|
#endif /* _BB_INTERNAL_H_ */
|