From 1a4aaf18f5ec6149315aabc53dbe667f1abfdb62 Mon Sep 17 00:00:00 2001 From: john haque Date: Sat, 21 Apr 2012 05:52:19 -0500 Subject: Add optional shutdown routine for an extension lib. --- awk.h | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'awk.h') diff --git a/awk.h b/awk.h index 8b9861b4..c89ed977 100644 --- a/awk.h +++ b/awk.h @@ -953,6 +953,8 @@ typedef struct srcfile { int fd; int maxlen; /* size of the longest line */ + void (*fini_func)(); /* dynamic extension of type SRC_EXTLIB */ + char *lexptr; char *lexend; char *lexeme; @@ -1488,12 +1490,13 @@ extern STACK_ITEM *grow_stack(void); extern void dump_fcall_stack(FILE *fp); extern int register_exec_hook(Func_pre_exec preh, Func_post_exec posth); /* ext.c */ -NODE *do_ext(int nargs); -NODE *load_ext(const char *lib_name, const char *init_func, NODE *obj); +extern NODE *do_ext(int nargs); +extern NODE *load_ext(SRCFILE *s, const char *init_func, const char *fini_func, NODE *obj); +extern void close_extensions(void); #ifdef DYNAMIC -void make_builtin(const char *, NODE *(*)(int), int); -NODE *get_argument(int); -NODE *get_actual_argument(int, int, int); +extern void make_builtin(const char *, NODE *(*)(int), int); +extern NODE *get_argument(int); +extern NODE *get_actual_argument(int, int, int); #define get_scalar_argument(i, opt) get_actual_argument((i), (opt), FALSE) #define get_array_argument(i, opt) get_actual_argument((i), (opt), TRUE) #endif -- cgit v1.2.3