X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=busybox.h;h=aef537b2b516206e47fc8bf436bf1491fa723a4e;hb=f1bbb22dca4d39aa227246f4c2ee90acd7e512a4;hp=84d0ddad8400e4a5ec7f04bdd7cba4adb7c40290;hpb=872138de50b1c5bbf105b0243f5778fcb02b310b;p=oweals%2Fbusybox.git diff --git a/busybox.h b/busybox.h index 84d0ddad8..aef537b2b 100644 --- a/busybox.h +++ b/busybox.h @@ -26,27 +26,19 @@ #include "Config.h" -#ifdef DMALLOC -#include "dmalloc.h" -#endif - -#include +#include #include -#include -#include -#include #include -#include -#include -#include -/* for the _syscall() macros */ -#include -#include +#include +#ifdef DMALLOC +#include "dmalloc.h" +#endif /* Some useful definitions */ -#define FALSE ((int) 1) -#define TRUE ((int) 0) +#define FALSE ((int) 0) +#define TRUE ((int) 1) +#define SKIP ((int) 2) /* for mtab.c */ #define MTAB_GETMOUNTPT '1' @@ -55,11 +47,8 @@ #define BUF_SIZE 8192 #define EXPAND_ALLOC 1024 - -#define isBlank(ch) (((ch) == ' ') || ((ch) == '\t')) -#define isDecimal(ch) (((ch) >= '0') && ((ch) <= '9')) -#define isOctal(ch) (((ch) >= '0') && ((ch) <= '7')) -#define isWildCard(ch) (((ch) == '*') || ((ch) == '?') || ((ch) == '[')) +static inline int is_decimal(ch) { return ((ch >= '0') && (ch <= '9')); } +static inline int is_octal(ch) { return ((ch >= '0') && (ch <= '7')); } /* Macros for min/max. */ #ifndef MIN @@ -71,26 +60,6 @@ #endif -/* I don't like nested includes, but the string and io functions are used - * too often - */ -#include -#if !defined(NO_STRING_H) || defined(STDC_HEADERS) -# include -# if !defined(STDC_HEADERS) && !defined(NO_MEMORY_H) && !defined(__GNUC__) -# include -# endif -# define memzero(s, n) memset ((void *)(s), 0, (n)) -#else -# include -# define strchr index -# define strrchr rindex -# define memcpy(d, s, n) bcopy((s), (d), (n)) -# define memcmp(s1, s2, n) bcmp((s1), (s2), (n)) -# define memzero(s, n) bzero((s), (n)) -#endif - - enum Location { _BB_DIR_ROOT = 0, _BB_DIR_BIN, @@ -103,251 +72,38 @@ struct BB_applet { const char* name; int (*main)(int argc, char** argv); enum Location location; - const char* usage; + int usage_index; }; /* From busybox.c */ extern const struct BB_applet applets[]; -extern int ar_main(int argc, char **argv); -extern int basename_main(int argc, char **argv); -extern int bogomips_main(int argc, char **argv); -extern int busybox_main(int argc, char** argv); -extern int cat_main(int argc, char** argv); -extern int chmod_chown_chgrp_main(int argc, char** argv); -extern int chroot_main(int argc, char** argv); -extern int chvt_main(int argc, char** argv); -extern int clear_main(int argc, char** argv); -extern int cmp_main(int argc, char** argv); -extern int cp_mv_main(int argc, char** argv); -extern int cut_main(int argc, char** argv); -extern int date_main(int argc, char** argv); -extern int dc_main(int argc, char** argv); -extern int dd_main(int argc, char** argv); -extern int dirname_main(int argc, char** argv); -extern int deallocvt_main(int argc, char** argv); -extern int df_main(int argc, char** argv); -extern int dmesg_main(int argc, char** argv); -extern int dos2unix_main(int argc, char** argv); -extern int du_main(int argc, char** argv); -extern int dumpkmap_main(int argc, char** argv); -extern int dutmp_main(int argc, char** argv); -extern int echo_main(int argc, char** argv); -extern int expr_main(int argc, char** argv); -extern int false_main(int argc, char** argv); -extern int fbset_main(int argc, char** argv); -extern int fdisk_main(int argc, char** argv); -extern int fdflush_main(int argc, char **argv); -extern int fsck_minix_main(int argc, char **argv); -extern int find_main(int argc, char** argv); -extern int free_main(int argc, char** argv); -extern int freeramdisk_main(int argc, char** argv); -extern int getopt_main(int argc, char** argv); -extern int grep_main(int argc, char** argv); -extern int gunzip_main (int argc, char** argv); -extern int gzip_main(int argc, char** argv); -extern int halt_main(int argc, char** argv); -extern int head_main(int argc, char** argv); -extern int hostid_main(int argc, char** argv); -extern int hostname_main(int argc, char** argv); -extern int id_main(int argc, char** argv); -extern int init_main(int argc, char** argv); -extern int insmod_main(int argc, char** argv); -extern int kill_main(int argc, char** argv); -extern int length_main(int argc, char** argv); -extern int ln_main(int argc, char** argv); -extern int loadacm_main(int argc, char** argv); -extern int loadfont_main(int argc, char** argv); -extern int loadkmap_main(int argc, char** argv); -extern int losetup_main(int argc, char** argv); -extern int logger_main(int argc, char **argv); -extern int logname_main(int argc, char **argv); -extern int ls_main(int argc, char** argv); -extern int lsmod_main(int argc, char** argv); -extern int makedevs_main(int argc, char** argv); -extern int md5sum_main(int argc, char** argv); -extern int mkdir_main(int argc, char** argv); -extern int mkfifo_main(int argc, char **argv); -extern int mkfs_minix_main(int argc, char **argv); -extern int mknod_main(int argc, char** argv); -extern int mkswap_main(int argc, char** argv); -extern int mktemp_main(int argc, char **argv); -extern int nc_main(int argc, char** argv); -extern int more_main(int argc, char** argv); -extern int mount_main(int argc, char** argv); -extern int mt_main(int argc, char** argv); -extern int nslookup_main(int argc, char **argv); -extern int ping_main(int argc, char **argv); -extern int poweroff_main(int argc, char **argv); -extern int printf_main(int argc, char** argv); -extern int ps_main(int argc, char** argv); -extern int pwd_main(int argc, char** argv); -extern int rdate_main(int argc, char** argv); -extern int readlink_main(int argc, char** argv); -extern int reboot_main(int argc, char** argv); -extern int renice_main(int argc, char** argv); -extern int reset_main(int argc, char** argv); -extern int rm_main(int argc, char** argv); -extern int rmdir_main(int argc, char **argv); -extern int rmmod_main(int argc, char** argv); -extern int sed_main(int argc, char** argv); -extern int sfdisk_main(int argc, char** argv); -extern int setkeycodes_main(int argc, char** argv); -extern int shell_main(int argc, char** argv); -extern int sleep_main(int argc, char** argv); -extern int sort_main(int argc, char** argv); -extern int swap_on_off_main(int argc, char** argv); -extern int sync_main(int argc, char** argv); -extern int syslogd_main(int argc, char **argv); -extern int tail_main(int argc, char** argv); -extern int tar_main(int argc, char** argv); -extern int tee_main(int argc, char** argv); -extern int test_main(int argc, char** argv); -extern int telnet_main(int argc, char** argv); -extern int touch_main(int argc, char** argv); -extern int tr_main(int argc, char** argv); -extern int true_main(int argc, char** argv); -extern int tput_main(int argc, char** argv); -extern int tryopen_main(int argc, char** argv); -extern int tty_main(int argc, char** argv); -extern int umount_main(int argc, char** argv); -extern int uname_main(int argc, char** argv); -extern int uniq_main(int argc, char** argv); -extern int unix2dos_main(int argc, char** argv); -extern int unrpm_main(int argc, char** argv); -extern int update_main(int argc, char** argv); -extern int uptime_main(int argc, char** argv); -extern int usleep_main(int argc, char** argv); -extern int uuencode_main(int argc, char** argv); -extern int uudecode_main(int argc, char** argv); -extern int wc_main(int argc, char** argv); -extern int wget_main(int argc, char** argv); -extern int which_main(int argc, char** argv); -extern int whoami_main(int argc, char** argv); -extern int xargs_main(int argc, char** argv); -extern int yes_main(int argc, char** argv); - -extern const char ar_usage[]; -extern const char basename_usage[]; -extern const char cat_usage[]; -extern const char chgrp_usage[]; -extern const char chmod_usage[]; -extern const char chown_usage[]; -extern const char chroot_usage[]; -extern const char chvt_usage[]; -extern const char clear_usage[]; -extern const char cmp_usage[]; -extern const char cp_usage[]; -extern const char cut_usage[]; -extern const char date_usage[]; -extern const char dc_usage[]; -extern const char dd_usage[]; -extern const char deallocvt_usage[]; -extern const char df_usage[]; -extern const char dirname_usage[]; -extern const char dmesg_usage[]; -extern const char dos2unix_usage[]; -extern const char du_usage[]; -extern const char dumpkmap_usage[]; -extern const char dutmp_usage[]; -extern const char echo_usage[]; -extern const char expr_usage[]; -extern const char false_usage[]; -extern const char fdflush_usage[]; -extern const char find_usage[]; -extern const char free_usage[]; -extern const char freeramdisk_usage[]; -extern const char fsck_minix_usage[]; -extern const char grep_usage[]; -extern const char gunzip_usage[]; -extern const char gzip_usage[]; -extern const char halt_usage[]; -extern const char head_usage[]; -extern const char hostid_usage[]; -extern const char hostname_usage[]; -extern const char id_usage[]; -extern const char insmod_usage[]; -extern const char kill_usage[]; -extern const char killall_usage[]; -extern const char length_usage[]; -extern const char ln_usage[]; -extern const char loadacm_usage[]; -extern const char loadfont_usage[]; -extern const char loadkmap_usage[]; -extern const char logger_usage[]; -extern const char logname_usage[]; -extern const char ls_usage[]; -extern const char lsmod_usage[]; -extern const char makedevs_usage[]; -extern const char md5sum_usage[]; -extern const char mkdir_usage[]; -extern const char mkfifo_usage[]; -extern const char mkfs_minix_usage[]; -extern const char mknod_usage[]; -extern const char mkswap_usage[]; -extern const char mktemp_usage[]; -extern const char more_usage[]; -extern const char mount_usage[]; -extern const char mt_usage[]; -extern const char mv_usage[]; -extern const char nc_usage[]; -extern const char nslookup_usage[]; -extern const char ping_usage[]; -extern const char poweroff_usage[]; -extern const char printf_usage[]; -extern const char ps_usage[]; -extern const char pwd_usage[]; -extern const char rdate_usage[]; -extern const char readlink_usage[]; -extern const char reboot_usage[]; -extern const char renice_usage[]; -extern const char reset_usage[]; -extern const char rm_usage[]; -extern const char rmdir_usage[]; -extern const char rmmod_usage[]; -extern const char sed_usage[]; -extern const char setkeycodes_usage[]; -extern const char shell_usage[]; -extern const char sleep_usage[]; -extern const char sort_usage[]; -extern const char swapoff_usage[]; -extern const char swapon_usage[]; -extern const char sync_usage[]; -extern const char syslogd_usage[]; -extern const char tail_usage[]; -extern const char tar_usage[]; -extern const char tee_usage[]; -extern const char telnet_usage[]; -extern const char test_usage[]; -extern const char touch_usage[]; -extern const char tr_usage[]; -extern const char true_usage[]; -extern const char tty_usage[]; -extern const char umount_usage[]; -extern const char uname_usage[]; -extern const char uniq_usage[]; -extern const char unix2dos_usage[]; -extern const char unrpm_usage[]; -extern const char update_usage[]; -extern const char uptime_usage[]; -extern const char usleep_usage[]; -extern const char uudecode_usage[]; -extern const char uuencode_usage[]; -extern const char wc_usage[]; -extern const char wget_usage[]; -extern const char which_usage[]; -extern const char whoami_usage[]; -extern const char xargs_usage[]; -extern const char yes_usage[]; +/* 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 + +#define APPLET_ENUM +enum APPLET_INDEX_NUMBERS { +#include "applets.h" +}; +#undef APPLET_ENUM extern const char *applet_name; -extern void usage(const char *usage) __attribute__ ((noreturn)); -extern void errorMsg(const char *s, ...) __attribute__ ((format (printf, 1, 2))); -extern void fatalError(const char *s, ...) __attribute__ ((noreturn, format (printf, 1, 2))); +extern void show_usage(void) __attribute__ ((noreturn)); +extern void error_msg(const char *s, ...) __attribute__ ((format (printf, 1, 2))); +extern void error_msg_and_die(const char *s, ...) __attribute__ ((noreturn, format (printf, 1, 2))); +extern void perror_msg(const char *s, ...) __attribute__ ((format (printf, 1, 2))); +extern void perror_msg_and_die(const char *s, ...) __attribute__ ((noreturn, format (printf, 1, 2))); -const char *modeString(int mode); -const char *timeString(time_t timeVal); -int isDirectory(const char *name, const int followLinks, struct stat *statBuf); +const char *mode_string(int mode); +const char *time_string(time_t timeVal); +int is_directory(const char *name, const int followLinks, struct stat *statBuf); int isDevice(const char *name); typedef struct ino_dev_hash_bucket_struct { @@ -360,28 +116,29 @@ int is_in_ino_dev_hashtable(const struct stat *statbuf, char **name); void add_to_ino_dev_hashtable(const struct stat *statbuf, const char *name); void reset_ino_dev_hashtable(void); -int copyFile(const char *srcName, const char *destName, +int copy_file(const char *srcName, const char *destName, int setModes, int followLinks, int forceFlag); -int copySubFile(int srcFd, int dstFd, size_t remaining); +int copy_file_chunk(int srcFd, int dstFd, size_t remaining); char *buildName(const char *dirName, const char *fileName); int makeString(int argc, const char **argv, char *buf, int bufLen); char *getChunk(int size); char *chunkstrdup(const char *str); void freeChunks(void); -int fullWrite(int fd, const char *buf, int len); -int fullRead(int fd, char *buf, int len); -int recursiveAction(const char *fileName, int recurse, int followLinks, int depthFirst, +ssize_t safe_read(int fd, void *buf, size_t count); +int full_write(int fd, const char *buf, int len); +int full_read(int fd, char *buf, int len); +int recursive_action(const char *fileName, int recurse, int followLinks, int depthFirst, int (*fileAction) (const char *fileName, struct stat* statbuf, void* userData), int (*dirAction) (const char *fileName, struct stat* statbuf, void* userData), void* userData); -extern int createPath (const char *name, int mode); +extern int create_path (const char *name, int mode); extern int parse_mode( const char* s, mode_t* theMode); extern int get_kernel_revision(void); extern int get_console_fd(char* tty_name); -extern struct mntent *findMountPoint(const char *name, const char *table); +extern struct mntent *find_mount_point(const char *name, const char *table); extern void write_mtab(char* blockDevice, char* directory, char* filesystemType, long flags, char* string_flags); extern void erase_mtab(const char * name); @@ -390,25 +147,36 @@ extern char *mtab_first(void **iter); extern char *mtab_next(void **iter); extern char *mtab_getinfo(const char *match, const char which); extern int check_wildcard_match(const char* text, const char* pattern); -extern long getNum (const char *cp); -extern pid_t* findPidByName( char* pidName); +extern long atoi_w_units (const char *cp); +extern pid_t* find_pid_by_name( char* pidName); extern int find_real_root_device_name(char* name); extern char *get_line_from_file(FILE *file); extern void print_file(FILE *file); extern int print_file_by_name(char *filename); extern char process_escape_sequence(char **ptr); extern char *get_last_path_component(char *path); -extern void xregcomp(regex_t *preg, const char *regex, int cflags); extern FILE *wfopen(const char *path, const char *mode); extern FILE *xfopen(const char *path, const char *mode); +extern void chomp(char *s); +extern struct BB_applet *find_applet_by_name(const char *name); +void run_applet_by_name(const char *name, int argc, char **argv); -#ifndef DMALLOC +#ifndef DMALLOC extern void *xmalloc (size_t size); extern void *xrealloc(void *old, size_t size); extern void *xcalloc(size_t nmemb, size_t size); extern char *xstrdup (const char *s); #endif extern char *xstrndup (const char *s, int n); +extern char * safe_strncpy(char *dst, const char *src, size_t size); + +struct suffix_mult { + char *suffix; + int mult; +}; + +extern unsigned long parse_number(const char *numstr, + const struct suffix_mult *suffixes); /* These parse entries in /etc/passwd and /etc/group. This is desirable @@ -471,4 +239,19 @@ extern int sysinfo (struct sysinfo* info); #define isclr(a,i) (((a)[(i)/NBBY] & (1<<((i)%NBBY))) == 0) #endif +#ifdef BB_FEATURE_HUMAN_READABLE +const char *format(unsigned long val, unsigned long hr); +#define KILOBYTE 1024 +#define MEGABYTE (KILOBYTE*1024) +#define GIGABYTE (MEGABYTE*1024) +#endif + +#ifdef BB_FEATURE_BUFFERS_GO_ON_STACK +#define RESERVE_BB_BUFFER(buffer,len) char buffer[len] +#define RESERVE_BB_UBUFFER(buffer,len) unsigned char buffer[len] +#else +#define RESERVE_BB_BUFFER(buffer,len) char *buffer=xmalloc(len) +#define RESERVE_BB_UBUFFER(buffer,len) unsigned char *buffer=xmalloc(len) +#endif + #endif /* _BB_INTERNAL_H_ */