[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