diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2010-11-12 12:23:33 +0200 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2010-11-12 12:23:33 +0200 |
commit | 40b3741f63c19e38077d57f4ce4737916ec5073e (patch) | |
tree | 89e086fabdfc738b379901d86733e6c260c22f35 /awk.h | |
parent | 00ef0423acd97cb964a2bae54c93a03a8ab50e5e (diff) | |
download | egawk-40b3741f63c19e38077d57f4ce4737916ec5073e.tar.gz egawk-40b3741f63c19e38077d57f4ce4737916ec5073e.tar.bz2 egawk-40b3741f63c19e38077d57f4ce4737916ec5073e.zip |
Bring in development gawk changes.
Diffstat (limited to 'awk.h')
-rw-r--r-- | awk.h | 42 |
1 files changed, 27 insertions, 15 deletions
@@ -424,6 +424,7 @@ typedef enum nodevals { Node_func, /* lnode is param. list, rnode is body */ Node_func_call, /* lnode is name, rnode is argument list */ + Node_indirect_func_call, /* lnode is name, rnode is argument list */ Node_cond_exp, /* lnode is conditonal, rnode is if_branches */ Node_regex, /* a regexp, text, compiled, flags, etc */ @@ -436,6 +437,7 @@ typedef enum nodevals { Node_CONVFMT, Node_FIELDWIDTHS, Node_FNR, + Node_FPAT, Node_FS, Node_IGNORECASE, Node_LINT, @@ -531,9 +533,8 @@ typedef struct exp_node { * function name; see awkgram.y */ # define FIELD 1024 /* this is a field */ # define INTLSTR 2048 /* use localized version */ -#ifdef MBS_SUPPORT # define WSTRCUR 4096 /* wide str value is current */ -#endif +# define ASSIGNED 8192 /* value assigned, used for function pointer caching */ } NODE; #define vname sub.nodep.name @@ -610,18 +611,16 @@ typedef struct iobuf { size_t scanoff; /* where we were in the buffer when we had to regrow/refill */ - void *opaque; /* private data for open hooks */ + void *opaque; /* private data for open hooks */ int (*get_record) P((char **out, struct iobuf *, int *errcode)); void (*close_func) P((struct iobuf *)); /* open and close hooks */ - int flag; + int flag; # define IOP_IS_TTY 1 -# define IOP_IS_INTERNAL 2 -# define IOP_NO_FREE 4 -# define IOP_NOFREE_OBJ 8 -# define IOP_AT_EOF 16 -# define IOP_CLOSED 32 -# define IOP_AT_START 64 +# define IOP_NOFREE_OBJ 2 +# define IOP_AT_EOF 4 +# define IOP_CLOSED 8 +# define IOP_AT_START 16 } IOBUF; typedef void (*Func_ptr) P((void)); @@ -708,7 +707,7 @@ extern NODE *BINMODE_node, *CONVFMT_node, *FIELDWIDTHS_node, *FILENAME_node; extern NODE *FNR_node, *FS_node, *IGNORECASE_node, *NF_node; extern NODE *NR_node, *OFMT_node, *OFS_node, *ORS_node, *RLENGTH_node; extern NODE *RSTART_node, *RS_node, *RT_node, *SUBSEP_node, *PROCINFO_node; -extern NODE *LINT_node, *ERRNO_node, *TEXTDOMAIN_node; +extern NODE *LINT_node, *ERRNO_node, *TEXTDOMAIN_node, *FPAT_node; ATTRIBUTE_EXPORTED extern NODE **stack_ptr; extern NODE *Nnull_string; extern NODE *Null_field; @@ -735,10 +734,13 @@ extern int do_intl; extern int do_non_decimal_data; extern int do_dump_vars; extern int do_tidy_mem; +extern int do_sandbox; extern int do_optimize; extern int use_lc_numeric; extern int in_begin_rule; extern int in_end_rule; +extern int in_beginfile_rule; +extern int in_endfile_rule; extern int whiny_users; #ifdef NO_LINT #define do_lint 0 @@ -1064,10 +1066,20 @@ extern void reset_record P((void)); extern void set_NF P((void)); extern NODE **get_field P((long num, Func_ptr *assign)); extern NODE *do_split P((NODE *tree)); +extern NODE *do_patsplit P((NODE *tree)); extern void set_FS P((void)); extern void set_RS P((void)); extern void set_FIELDWIDTHS P((void)); -extern int using_fieldwidths P((void)); +extern void set_FPAT P((void)); +extern void update_PROCINFO_str P((char *subscript, char *str)); +extern void update_PROCINFO_num P((char *subscript, AWKNUM val)); + +typedef enum { + Using_FS, + Using_FIELDWIDTHS, + Using_FPAT, +} field_sep_type; +extern field_sep_type current_field_sep P((void)); /* gawkmisc.c */ extern char *gawk_name P((const char *filespec)); extern void os_arg_fixup P((int *argcp, char ***argvp)); @@ -1100,10 +1112,10 @@ extern struct redirect *redirect P((NODE *tree, int *errflg)); extern NODE *do_close P((NODE *tree)); extern int flush_io P((void)); extern int close_io P((int *stdio_problem)); -extern int devopen P((const char *name, const char *mode)); +extern int devopen P((const char *name, const char *mode, int *isdir)); extern int pathopen P((const char *file)); extern NODE *do_getline P((NODE *tree)); -extern void do_nextfile P((void)) ATTRIBUTE_NORETURN; +extern void do_nextfile P((void)); extern struct redirect *getredirect P((const char *str, int len)); /* main.c */ extern int main P((int argc, char **argv)); @@ -1144,7 +1156,7 @@ extern void (*lintfunc) (); extern void init_profiling P((int *flag, const char *def_file)); extern void init_profiling_signals P((void)); extern void set_prof_file P((const char *filename)); -extern void dump_prog P((NODE *begin, NODE *prog, NODE *end)); +extern void dump_prog P((NODE *begin, NODE *beginfile, NODE *prog, NODE *endfile, NODE *end)); extern void pp_func P((const char *name, size_t namelen, NODE *f)); extern void pp_string_fp P((FILE *fp, const char *str, size_t namelen, int delim, int breaklines)); |