From 12857707435f1d4bf9adf33b6fbfd57ff91529a7 Mon Sep 17 00:00:00 2001 From: "Arnold D. Robbins" Date: Fri, 9 May 2014 11:42:52 +0300 Subject: Fix memory leak in do_eval. --- awk.h | 1 + 1 file changed, 1 insertion(+) (limited to 'awk.h') diff --git a/awk.h b/awk.h index 5f420936..65448400 100644 --- a/awk.h +++ b/awk.h @@ -1372,6 +1372,7 @@ extern NODE *stopme(int nargs); extern void shadow_funcs(void); extern int check_special(const char *name); extern SRCFILE *add_srcfile(enum srctype stype, char *src, SRCFILE *curr, bool *already_included, int *errcode); +extern void free_srcfile(SRCFILE *thisfile); extern void register_deferred_variable(const char *name, NODE *(*load_func)(void)); extern int files_are_same(char *path, SRCFILE *src); extern void valinfo(NODE *n, Func_print print_func, FILE *fp); -- cgit v1.2.3 From df2eaea6a92c7d89d604d0a4e885d064678ce3ed Mon Sep 17 00:00:00 2001 From: "Arnold D. Robbins" Date: Thu, 10 Jul 2014 16:32:44 -0700 Subject: Add div() function for integer division & remainder. --- awk.h | 2 ++ 1 file changed, 2 insertions(+) (limited to 'awk.h') diff --git a/awk.h b/awk.h index 9255b45b..cb9f8091 100644 --- a/awk.h +++ b/awk.h @@ -1419,6 +1419,7 @@ extern AWKNUM nondec2awknum(char *str, size_t len); extern NODE *do_dcgettext(int nargs); extern NODE *do_dcngettext(int nargs); extern NODE *do_bindtextdomain(int nargs); +extern NODE *do_div(int nargs); #if MBS_SUPPORT extern int strncasecmpmbs(const unsigned char *, const unsigned char *, size_t); @@ -1555,6 +1556,7 @@ extern NODE *do_mpfr_and(int); extern NODE *do_mpfr_atan2(int); extern NODE *do_mpfr_compl(int); extern NODE *do_mpfr_cos(int); +extern NODE *do_mpfr_div(int); extern NODE *do_mpfr_exp(int); extern NODE *do_mpfr_int(int); extern NODE *do_mpfr_log(int); -- cgit v1.2.3 From 91f979adfcc3c19bec24fc5272c23c065ba3040b Mon Sep 17 00:00:00 2001 From: "Arnold D. Robbins" Date: Thu, 24 Jul 2014 15:49:20 -0400 Subject: Bug fix for I/O errors in the middle of a file. --- awk.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'awk.h') diff --git a/awk.h b/awk.h index 65448400..a322a0b2 100644 --- a/awk.h +++ b/awk.h @@ -1531,7 +1531,7 @@ extern char *find_source(const char *src, struct stat *stb, int *errcode, int is extern NODE *do_getline_redir(int intovar, enum redirval redirtype); extern NODE *do_getline(int intovar, IOBUF *iop); extern struct redirect *getredirect(const char *str, int len); -extern int inrec(IOBUF *iop, int *errcode); +extern bool inrec(IOBUF *iop, int *errcode); extern int nextfile(IOBUF **curfile, bool skipping); /* main.c */ extern int arg_assign(char *arg, bool initing); -- cgit v1.2.3 From 825dd9a1839ca42c4ed6152de41515958e11660d Mon Sep 17 00:00:00 2001 From: "Arnold D. Robbins" Date: Thu, 31 Jul 2014 19:42:41 +0300 Subject: Clean up some memory in MPFR. --- awk.h | 1 + 1 file changed, 1 insertion(+) (limited to 'awk.h') diff --git a/awk.h b/awk.h index a322a0b2..2370a9b2 100644 --- a/awk.h +++ b/awk.h @@ -1567,6 +1567,7 @@ extern NODE *do_mpfr_srand(int); extern NODE *do_mpfr_strtonum(int); extern NODE *do_mpfr_xor(int); extern void init_mpfr(mpfr_prec_t, const char *); +extern void cleanup_mpfr(void); extern NODE *mpg_node(unsigned int); extern const char *mpg_fmt(const char *, ...); extern int mpg_strtoui(mpz_ptr, char *, size_t, char **, int); -- cgit v1.2.3 From 52306503277c1259eeb704d6b94aed0392536e76 Mon Sep 17 00:00:00 2001 From: "Arnold D. Robbins" Date: Tue, 12 Aug 2014 06:22:43 +0300 Subject: Rebuild record upon OFS being changed. --- awk.h | 1 + 1 file changed, 1 insertion(+) (limited to 'awk.h') diff --git a/awk.h b/awk.h index 2370a9b2..a232e7a0 100644 --- a/awk.h +++ b/awk.h @@ -1471,6 +1471,7 @@ extern NODE *get_actual_argument(int, bool, bool); extern void init_fields(void); extern void set_record(const char *buf, int cnt); extern void reset_record(void); +extern void rebuild_record(void); extern void set_NF(void); extern NODE **get_field(long num, Func_ptr *assign); extern NODE *do_split(int nargs); -- cgit v1.2.3 From 611353597e20081bd0c72617e24fa5ff4c63dac1 Mon Sep 17 00:00:00 2001 From: "Arnold D. Robbins" Date: Thu, 4 Sep 2014 09:38:08 +0300 Subject: Make indirect calls work on built-in and extension functions. --- awk.h | 2 ++ 1 file changed, 2 insertions(+) (limited to 'awk.h') diff --git a/awk.h b/awk.h index a232e7a0..60e40d11 100644 --- a/awk.h +++ b/awk.h @@ -1377,6 +1377,8 @@ extern void register_deferred_variable(const char *name, NODE *(*load_func)(void extern int files_are_same(char *path, SRCFILE *src); extern void valinfo(NODE *n, Func_print print_func, FILE *fp); extern void negate_num(NODE *n); +typedef NODE *(*builtin_func_t)(int); /* function that implements a built-in */ +extern builtin_func_t lookup_builtin(const char *name); /* builtin.c */ extern double double_to_int(double d); extern NODE *do_exp(int nargs); -- cgit v1.2.3 From 0f5cb955662136ad4a93e35db5721dd986dfd55b Mon Sep 17 00:00:00 2001 From: "Arnold D. Robbins" Date: Fri, 5 Sep 2014 11:21:38 +0300 Subject: Add builtin functions to FUNCTAB and PROCINFO["identifiers"] and doc. --- awk.h | 2 ++ 1 file changed, 2 insertions(+) (limited to 'awk.h') diff --git a/awk.h b/awk.h index 60e40d11..4f39ffcf 100644 --- a/awk.h +++ b/awk.h @@ -297,6 +297,7 @@ typedef enum nodevals { Node_func, /* lnode is param. list, rnode is body */ Node_ext_func, /* extension function, code_ptr is builtin code */ Node_old_ext_func, /* extension function, code_ptr is builtin code */ + Node_builtin_func, /* built-in function, main use is for FUNCTAB */ Node_array_ref, /* array passed by ref as parameter */ Node_array_tree, /* Hashed array tree (HAT) */ @@ -1379,6 +1380,7 @@ extern void valinfo(NODE *n, Func_print print_func, FILE *fp); extern void negate_num(NODE *n); typedef NODE *(*builtin_func_t)(int); /* function that implements a built-in */ extern builtin_func_t lookup_builtin(const char *name); +extern void install_builtins(void); /* builtin.c */ extern double double_to_int(double d); extern NODE *do_exp(int nargs); -- cgit v1.2.3 From f9fadc3b2bf0bf9d65a981a712aa9aebc21a699b Mon Sep 17 00:00:00 2001 From: "Arnold D. Robbins" Date: Sun, 7 Sep 2014 20:41:47 +0300 Subject: Minor code cleanups. --- awk.h | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) (limited to 'awk.h') diff --git a/awk.h b/awk.h index 4f39ffcf..cb737eb2 100644 --- a/awk.h +++ b/awk.h @@ -193,15 +193,6 @@ extern void *memset_ulong(void *dest, int val, unsigned long l); #define memset memset_ulong #endif -#ifdef HAVE_LIBSIGSEGV -#include -#else -typedef void *stackoverflow_context_t; -#define sigsegv_install_handler(catchsegv) signal(SIGSEGV, catchsig) -/* define as 0 rather than empty so that (void) cast on it works */ -#define stackoverflow_install_handler(catchstackoverflow, extra_stack, STACK_SIZE) 0 -#endif - #if defined(__EMX__) || defined(__MINGW32__) #include "nonposix.h" #endif /* defined(__EMX__) || defined(__MINGW32__) */ @@ -1642,7 +1633,7 @@ extern void load_symbols(); extern void init_symbol_table(); extern NODE *symbol_table; extern NODE *func_table; -extern NODE *install_symbol(char *name, NODETYPE type); +extern NODE *install_symbol(const char *name, NODETYPE type); extern NODE *remove_symbol(NODE *r); extern void destroy_symbol(NODE *r); extern void release_symbols(NODE *symlist, int keep_globals); -- cgit v1.2.3 From 3fcce8a32e825dd10384d5276c420c2514442fe2 Mon Sep 17 00:00:00 2001 From: "Arnold D. Robbins" Date: Mon, 15 Sep 2014 19:47:03 +0300 Subject: Finish excising isalpha and isalnum. Document. --- awk.h | 3 +++ 1 file changed, 3 insertions(+) (limited to 'awk.h') diff --git a/awk.h b/awk.h index cb737eb2..8bc393e7 100644 --- a/awk.h +++ b/awk.h @@ -1372,6 +1372,9 @@ extern void negate_num(NODE *n); typedef NODE *(*builtin_func_t)(int); /* function that implements a built-in */ extern builtin_func_t lookup_builtin(const char *name); extern void install_builtins(void); +extern bool is_alpha(int c); +extern bool is_alnum(int c); +extern bool is_identchar(int c); /* builtin.c */ extern double double_to_int(double d); extern NODE *do_exp(int nargs); -- cgit v1.2.3