aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/applets.h1
-rw-r--r--include/libbb.h14
-rw-r--r--include/usage.h5
3 files changed, 16 insertions, 4 deletions
diff --git a/include/applets.h b/include/applets.h
index aff9070bb..5dd485ab4 100644
--- a/include/applets.h
+++ b/include/applets.h
@@ -268,6 +268,7 @@ USE_NOHUP(APPLET(nohup, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
USE_NSLOOKUP(APPLET(nslookup, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
USE_OD(APPLET(od, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
USE_OPENVT(APPLET(openvt, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
+USE_PARSE(APPLET(parse, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
USE_PASSWD(APPLET(passwd, _BB_DIR_USR_BIN, _BB_SUID_ALWAYS))
USE_PATCH(APPLET(patch, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
USE_PGREP(APPLET(pgrep, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
diff --git a/include/libbb.h b/include/libbb.h
index 14af1368c..af6c1385d 100644
--- a/include/libbb.h
+++ b/include/libbb.h
@@ -988,16 +988,22 @@ int bb_ask_confirmation(void) FAST_FUNC;
int bb_parse_mode(const char* s, mode_t* theMode) FAST_FUNC;
/*
- * Uniform config file parser helpers
+ * Config file parser
*/
+#define PARSE_DONT_REDUCE 0x00010000 // do not treat consecutive delimiters as one
+#define PARSE_DONT_TRIM 0x00020000 // do not trim line of leading and trailing delimiters
+#define PARSE_LAST_IS_GREEDY 0x00040000 // last token takes whole remainder of the line
+//#define PARSE_DONT_NULL 0x00080000 // do not set tokens[] to NULL
typedef struct parser_t {
FILE *fp;
- char *line, *data;
+ char *line;
+ USE_FEATURE_PARSE_COPY(char *data;)
int lineno;
} parser_t;
parser_t* config_open(const char *filename) FAST_FUNC;
-/* TODO: add define magic to collapse ntokens/mintokens/comment into one int param */
-int config_read(parser_t *parser, char **tokens, int ntokens, int mintokens, const char *delims, char comment) FAST_FUNC;
+int config_read(parser_t *parser, char **tokens, unsigned flags, const char *delims) FAST_FUNC;
+#define config_read(parser, tokens, max, min, str, flags) \
+ config_read(parser, tokens, ((flags) | (((min) & 0xFF) << 8) | ((max) & 0xFF)), str)
void config_close(parser_t *parser) FAST_FUNC;
/* Concatenate path and filename to new allocated buffer.
diff --git a/include/usage.h b/include/usage.h
index f9a993a21..61c5c8ee3 100644
--- a/include/usage.h
+++ b/include/usage.h
@@ -2903,6 +2903,11 @@
#define openvt_example_usage \
"openvt 2 /bin/ash\n"
+#define parse_trivial_usage \
+ "[-n maxtokens] [-m mintokens] [-d delims] [-f flags] file ..."
+#define parse_full_usage "\n\n" \
+ "[-n maxtokens] [-m mintokens] [-d delims] [-f flags] file ..."
+
#define passwd_trivial_usage \
"[OPTION] [name]"
#define passwd_full_usage "\n\n" \