*: use better isspace implementation
[oweals/busybox.git] / include / libbb.h
index be175d79f9af55be4d9b4f6ea1e09f81a6af0f54..fb7296f25fe0f79489cbb4853274cc59122f8318 100644 (file)
@@ -701,6 +701,9 @@ const char *make_human_readable_str(unsigned long long size,
 /* 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];
@@ -1268,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)
@@ -1572,7 +1576,6 @@ extern const char bb_default_login_shell[];
 #undef islower
 #undef isprint
 #undef ispunct
-#undef isspace
 #undef isupper
 #undef isxdigit
 
@@ -1580,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])))