X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=include%2Flibbb.h;h=fb7296f25fe0f79489cbb4853274cc59122f8318;hb=f125b6d341b06fda5412b82d23e486100e107eaa;hp=8ecde5b4b603a48f3611db06c0a48cd8f9c76efe;hpb=4ff1ce063979a0d9df7ec42823eee4624723ab58;p=oweals%2Fbusybox.git diff --git a/include/libbb.h b/include/libbb.h index 8ecde5b4b..fb7296f25 100644 --- a/include/libbb.h +++ b/include/libbb.h @@ -286,7 +286,9 @@ enum { ACTION_DEPTHFIRST = (1 << 3), /*ACTION_REVERSE = (1 << 4), - unused */ ACTION_QUIET = (1 << 5), + ACTION_DANGLING_OK = (1 << 6), }; +typedef uint8_t recurse_flags_t; extern int recursive_action(const char *fileName, unsigned flags, int FAST_FUNC (*fileAction)(const char *fileName, struct stat* statbuf, void* userData, int depth), int FAST_FUNC (*dirAction)(const char *fileName, struct stat* statbuf, void* userData, int depth), @@ -629,6 +631,9 @@ extern void xwrite(int fd, const void *buf, size_t count) FAST_FUNC; extern void xwrite_str(int fd, const char *str) FAST_FUNC; extern void xopen_xwrite_close(const char* file, const char *str) FAST_FUNC; +/* Close fd, but check for failures (some types of write errors) */ +extern void xclose(int fd) FAST_FUNC; + /* Reads and prints to stdout till eof, then closes FILE. Exits on error: */ extern void xprint_and_close_file(FILE *file) FAST_FUNC; @@ -686,12 +691,19 @@ char *itoa_to_buf(int n, char *buf, unsigned buflen) FAST_FUNC; /* Intelligent formatters of bignums */ void smart_ulltoa4(unsigned long long ul, char buf[5], const char *scale) FAST_FUNC; void smart_ulltoa5(unsigned long long ul, char buf[5], const char *scale) FAST_FUNC; +/* If block_size == 0, display size without fractional part, + * else display (size * block_size) with one decimal digit. + * If display_unit == 0, add suffix (K,M,G...), + * else divide by display_unit and do not use suffix. */ //TODO: provide pointer to buf (avoid statics)? const char *make_human_readable_str(unsigned long long size, unsigned long block_size, unsigned long display_unit) FAST_FUNC; /* Put a string of hex bytes ("1b2e66fe"...), return advanced pointer */ char *bin2hex(char *buf, const char *cp, int count) FAST_FUNC; +/* Generate a UUID */ +void generate_uuid(uint8_t *buf) FAST_FUNC; + /* Last element is marked by mult == 0 */ struct suffix_mult { char suffix[4]; @@ -1259,6 +1271,7 @@ line_input_t *new_line_input_t(int flags) FAST_FUNC; */ int read_line_input(const char* prompt, char* command, int maxsize, line_input_t *state) FAST_FUNC; #else +#define MAX_HISTORY 0 int read_line_input(const char* prompt, char* command, int maxsize) FAST_FUNC; #define read_line_input(prompt, command, maxsize, state) \ read_line_input(prompt, command, maxsize) @@ -1563,7 +1576,6 @@ extern const char bb_default_login_shell[]; #undef islower #undef isprint #undef ispunct -#undef isspace #undef isupper #undef isxdigit @@ -1571,6 +1583,16 @@ extern const char bb_default_login_shell[]; #undef isdigit #define isdigit(a) ((unsigned)((a) - '0') <= 9) +/* This one is more efficient too! ~200 bytes */ +/* In POSIX/C locale (the only locale we care about: do we REALLY want + * to allow Unicode whitespace in, say, .conf files? nuts!) + * isspace is only these chars: "\t\n\v\f\r" and space. + * "\t\n\v\f\r" happen to have ASCII codes 9,10,11,12,13. + * Use that. + */ +#undef isspace +#define isspace(a) ({ unsigned char bb__isspace = (a) - 9; bb__isspace == (' ' - 9) || bb__isspace <= (13 - 9); }) + #define ARRAY_SIZE(x) ((unsigned)(sizeof(x) / sizeof((x)[0])))