[Cluster-devel] [PATCH 03/32] libgfs2: Separate out gfs2l's language API
Andrew Price
anprice at redhat.com
Thu Aug 6 13:37:38 UTC 2020
It doesn't really make sense to have this interpreter be part of
libgfs2, at least while the language isn't rich enough to be broadly
useful.
Signed-off-by: Andrew Price <anprice at redhat.com>
---
gfs2/libgfs2/Makefile.am | 14 ++++++++------
gfs2/libgfs2/gfs2l.c | 1 +
gfs2/libgfs2/lang.h | 15 +++++++++++++++
gfs2/libgfs2/libgfs2.h | 19 -------------------
4 files changed, 24 insertions(+), 25 deletions(-)
diff --git a/gfs2/libgfs2/Makefile.am b/gfs2/libgfs2/Makefile.am
index 76df920e..03a955f2 100644
--- a/gfs2/libgfs2/Makefile.am
+++ b/gfs2/libgfs2/Makefile.am
@@ -41,10 +41,7 @@ libgfs2_la_SOURCES = \
fs_ops.c \
recovery.c \
structures.c \
- meta.c \
- lang.c \
- parser.y \
- lexer.l
+ meta.c
libgfs2_la_CPPFLAGS = \
-D_FILE_OFFSET_BITS=64 \
@@ -53,13 +50,18 @@ libgfs2_la_CPPFLAGS = \
-I$(top_srcdir)/gfs2/include \
$(uuid_CFLAGS)
-gfs2l_SOURCES = gfs2l.c
+gfs2l_SOURCES = \
+ gfs2l.c \
+ lang.c \
+ parser.y \
+ lexer.l
gfs2l_LDADD = \
libgfs2.la \
$(uuid_LIBS)
gfs2l_CPPFLAGS = \
-I$(top_srcdir)/gfs2/include \
- -D_FILE_OFFSET_BITS=64
+ -D_FILE_OFFSET_BITS=64 \
+ $(uuid_CFLAGS)
# Autotools can't handle header files output by flex so we have to generate it manually
lexer.h: lexer.l
diff --git a/gfs2/libgfs2/gfs2l.c b/gfs2/libgfs2/gfs2l.c
index ba2d5f15..bc42e888 100644
--- a/gfs2/libgfs2/gfs2l.c
+++ b/gfs2/libgfs2/gfs2l.c
@@ -1,6 +1,7 @@
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
+#include "lang.h"
#include "libgfs2.h"
static void usage(const char *cmd)
diff --git a/gfs2/libgfs2/lang.h b/gfs2/libgfs2/lang.h
index 7d9a6e98..f74a57bd 100644
--- a/gfs2/libgfs2/lang.h
+++ b/gfs2/libgfs2/lang.h
@@ -12,6 +12,21 @@ struct lgfs2_lang_state {
struct ast_node *ls_interp_curr;
};
+struct lgfs2_lang_result {
+ uint64_t lr_blocknr;
+ struct gfs2_buffer_head *lr_bh;
+ const struct lgfs2_metadata *lr_mtype;
+ int lr_state; // GFS2_BLKST_*
+};
+
+extern struct lgfs2_lang_state *lgfs2_lang_init(void);
+extern int lgfs2_lang_parsef(struct lgfs2_lang_state *state, FILE *script);
+extern int lgfs2_lang_parses(struct lgfs2_lang_state *state, const char *script);
+extern struct lgfs2_lang_result *lgfs2_lang_result_next(struct lgfs2_lang_state *state, struct gfs2_sbd *sbd);
+extern int lgfs2_lang_result_print(struct lgfs2_lang_result *result);
+extern void lgfs2_lang_result_free(struct lgfs2_lang_result **result);
+extern void lgfs2_lang_free(struct lgfs2_lang_state **state);
+
typedef enum {
AST_NONE,
// Statements
diff --git a/gfs2/libgfs2/libgfs2.h b/gfs2/libgfs2/libgfs2.h
index cf225af5..59fb18e8 100644
--- a/gfs2/libgfs2/libgfs2.h
+++ b/gfs2/libgfs2/libgfs2.h
@@ -769,25 +769,6 @@ extern void gfs2_log_descriptor_print(const struct gfs2_log_descriptor *ld);
extern void gfs2_statfs_change_print(const struct gfs2_statfs_change *sc);
extern void gfs2_quota_change_print(const struct gfs2_quota_change *qc);
-/* Language functions */
-
-struct lgfs2_lang_state;
-
-struct lgfs2_lang_result {
- uint64_t lr_blocknr;
- struct gfs2_buffer_head *lr_bh;
- const struct lgfs2_metadata *lr_mtype;
- int lr_state; // GFS2_BLKST_*
-};
-
-extern struct lgfs2_lang_state *lgfs2_lang_init(void);
-extern int lgfs2_lang_parsef(struct lgfs2_lang_state *state, FILE *script);
-extern int lgfs2_lang_parses(struct lgfs2_lang_state *state, const char *script);
-extern struct lgfs2_lang_result *lgfs2_lang_result_next(struct lgfs2_lang_state *state, struct gfs2_sbd *sbd);
-extern int lgfs2_lang_result_print(struct lgfs2_lang_result *result);
-extern void lgfs2_lang_result_free(struct lgfs2_lang_result **result);
-extern void lgfs2_lang_free(struct lgfs2_lang_state **state);
-
__END_DECLS
#endif /* __LIBGFS2_DOT_H__ */
--
2.26.2
More information about the Cluster-devel
mailing list