diff options
Diffstat (limited to 'lib/include/util.h')
-rw-r--r-- | lib/include/util.h | 77 |
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 |