aboutsummaryrefslogtreecommitdiff
path: root/lib/include/util.h
diff options
context:
space:
mode:
authorDavid Oberhollenzer <david.oberhollenzer@tele2.at>2018-05-23 22:26:17 +0200
committerDavid Oberhollenzer <david.oberhollenzer@tele2.at>2018-06-09 15:32:29 +0200
commitbf63f78b6698f33ed3acbd4aed8822a35688c1ba (patch)
tree4e7c79326dd6fd217f135234dbcf3d9bc09ebb82 /lib/include/util.h
parent1eb8a4c792166360137cb5c83afa75eace2b4b1d (diff)
Split configuration parser and utility library
Signed-off-by: David Oberhollenzer <david.oberhollenzer@tele2.at>
Diffstat (limited to 'lib/include/util.h')
-rw-r--r--lib/include/util.h77
1 files changed, 0 insertions, 77 deletions
diff --git a/lib/include/util.h b/lib/include/util.h
index d6b68f1..f63a0d6 100644
--- a/lib/include/util.h
+++ b/lib/include/util.h
@@ -35,83 +35,6 @@ typedef struct {
int value;
} enum_map_t;
-
-typedef struct {
- int fd; /* input file descriptor */
- const char *argstr; /* if not NULL, read from this instead */
-
- const char *filename; /* input file name */
- size_t lineno; /* current line number */
-
- size_t i; /* buffer offset */
- char buffer[256]; /* current line, null-terminated */
-
- int argc;
- const char *const *argv;
-
- bool string; /* inside a string? */
- bool escape; /* reading an escape sequence? */
- bool comment; /* inside a comment */
-} rdline_t;
-
-
-/*
- Initialize the config line scanner.
-
- The scanner reads from the provided fd. The filename is used for
- error reporting. An argument count and vector can be set for argument
- substitution in rdline.
-*/
-void rdline_init(rdline_t *t, int fd, const char *filename,
- int argc, const char *const *argv);
-
-/*
- Read from file until end-of-file or a line feed is encountered.
-
- Returns -1 on failure, +1 if end of file was reached,
- 0 if data was read successfully.
-
- The following transformations are applied:
- - Space characters are replaced with regular white space characters.
- - Sequences of space characters are truncated to a single space.
- - A '#' sign is interpreted as the start of a comment and removed,
- together with everything that follows.
- - Padding spaces are removed from the line.
- - If a '"' is encounterd, the above rules are disabled, until a
- after the matching '"' is read. A '"' can be escaped by preceeding
- it with a backslash.
- - If a second, coresponding '"' is not found, processing fails.
- - If a '%' character is encountered, the next character is expected
- to be a single digit index into argv. If it is not a digit or
- outside the bounds set by argc, processing fails. On success,
- the argv value is inserted and processed as described above.
- - A '%' character can be escaped by writing '%%' or, if inside
- a double quite string, by writing \%.
- - An attempt to use such an indexed argument inside an argument
- expansion, results in failure.
- - If the resulting line is empty, processing is restarted.
-*/
-int rdline(rdline_t *t);
-
-/*
- Remove double quotes ('"') from a string and substitute escape
- sequences in between double quotes.
-*/
-int unescape(char *src);
-
-/*
- Replace spaces in 'str' with null bytes. Tread strings (started and
- terminated with double-quotes which can be escaped) as a single block.
- Such strings are run through unescap(). All elements are tightly
- packed together and the function returns the number of consecutive
- argument strings that are now inside 'str'.
-
- Returns a negative value if unescape() fails, a string is not
- termianted or two such strings touch each other without a white
- space in between.
-*/
-int pack_argv(char *str);
-
/*
Search through an array of enum_map_t entries to resolve a string to
a numeric value. The end of the map is indicated by a sentinel entry