summaryrefslogtreecommitdiffstats
path: root/libglusterfs/src/parse-utils.h
diff options
context:
space:
mode:
authorNiels de Vos <ndevos@redhat.com>2015-01-01 13:15:45 +0100
committerVijay Bellur <vbellur@redhat.com>2015-03-03 12:31:38 -0800
commit95d5e60afb29aedc29909340e7564d54a6a247c2 (patch)
tree9d0c2b2963e0b74add7109b5952c1252d868c3cf /libglusterfs/src/parse-utils.h
parent2acfbcf34ed77985905b2d122adbfd541eb01db1 (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.h50
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 */