diff options
author | Niels de Vos <ndevos@redhat.com> | 2015-01-01 13:15:45 +0100 |
---|---|---|
committer | Vijay Bellur <vbellur@redhat.com> | 2015-03-03 12:31:38 -0800 |
commit | 95d5e60afb29aedc29909340e7564d54a6a247c2 (patch) | |
tree | 9d0c2b2963e0b74add7109b5952c1252d868c3cf /libglusterfs/src/parse-utils.h | |
parent | 2acfbcf34ed77985905b2d122adbfd541eb01db1 (diff) |
core: add generic parser utility
This generic parser will get used for parsing the netgroups and exports
files for the Gluster/NFS server. The parsing of netgroups shows how the
parser can be used (see Change-Id Ie04800d4).
BUG: 1143880
Change-Id: Id4cf2b0189ef5799c06868d211d3fcd9c8608c08
Original-author: Shreyas Siravara <shreyas.siravara@gmail.com>
CC: Richard Wareing <rwareing@fb.com>
CC: Jiffin Tony Thottan <jthottan@redhat.com>
Signed-off-by: Niels de Vos <ndevos@redhat.com>
Reviewed-on: http://review.gluster.org/9359
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
Diffstat (limited to 'libglusterfs/src/parse-utils.h')
-rw-r--r-- | libglusterfs/src/parse-utils.h | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/libglusterfs/src/parse-utils.h b/libglusterfs/src/parse-utils.h new file mode 100644 index 00000000000..275ccf3153b --- /dev/null +++ b/libglusterfs/src/parse-utils.h @@ -0,0 +1,50 @@ +/* + Copyright 2014-present Facebook. All Rights Reserved + + This file is part of GlusterFS. + + Author : + Shreyas Siravara <shreyas.siravara@gmail.com> + + This file is licensed to you under your choice of the GNU Lesser + General Public License, version 3 or any later version (LGPLv3 or + later), or the GNU General Public License, version 2 (GPLv2), in all + cases as published by the Free Software Foundation. +*/ + +#ifndef _PARSE_UTILS_H +#define _PARSE_UTILS_H + +#include <regex.h> + +#define GF_PARSE "parse-utils" + +struct parser { + regex_t preg; /* Compiled regex */ + regmatch_t pmatch[1]; /* The match */ + char *complete_str; /* The string we are parsing */ + char *regex; /* Regex used to parse the string */ + char *_rstr; /* Temp string to hold offsets */ +}; + +/* Initializes some of the parsers variables */ +struct parser * +parser_init (const char *regex); + +/* Sets the string to parse */ +int +parser_set_string (struct parser *parser, const char *complete_str); + +/* Frees memory used by the string after all matches are found */ +int +parser_unset_string (struct parser *parser); + +/* Free memory used by the parser */ +void +parser_deinit (struct parser *ptr); + +/* Get the next matching string */ +char * +parser_get_next_match (struct parser *parser); + +#endif /* _PARSE_UTILS_H */ |