gawk-patches
来自「ftam等标准协议服务器和客户端的源代码。」· 代码 · 共 799 行 · 第 1/2 页
TXT
799 行
{ "END", Node_illegal, LEX_END, 0, 0 }, { "atan2", Node_builtin, LEX_BUILTIN, 0, do_atan2 },+ #ifdef SNMP+ { "bit_and", Node_builtin, LEX_BUILTIN, 0, do_band },+ { "bit_or", Node_builtin, LEX_BUILTIN, 0, do_bor },+ #endif #ifdef DEBUG { "bp", Node_builtin, LEX_BUILTIN, 0, do_bp }, #endif****************** 1680,1686 ****--- 1692,1706 ---- register NODE *r; if ((r = lookup(variables, name)) == NULL)+ #ifdef SNMP+ {+ #endif r = install(variables, name, node(Nnull_string, Node_var, (NODE *) NULL));+ #ifdef SNMP+ if (snmp_enabled && r)+ snmp_check (r, name);+ }+ #endif return r; }diff -rc gawk-2.11.orig/builtin.c builtin.c*** gawk-2.11.orig/builtin.c Mon Nov 13 13:51:49 1989--- builtin.c Mon May 20 15:16:07 1991****************** 533,538 ****--- 533,606 ---- fflush(fp); } + #ifdef SNMP+ NODE *do_band (tree)+ NODE *tree;+ {+ #ifdef sun386+ long l;+ #endif+ unsigned long d1,+ d2;+ NODE *s1,+ *s2;+ + get_two (tree, &s1, &s2);+ + #ifdef sun386+ l = force_number (s1);+ d1 = (unsigned long) l;+ #else+ d1 = (unsigned long) force_number (s1);+ #endif+ + #ifdef sun386+ l = force_number (s2);+ d2 = (unsigned long) l;+ #else+ d2 = (unsigned long) force_number (s2);+ #endif+ + free_temp (s1);+ free_temp (s2);+ + return tmp_number ((AWKNUM) ((unsigned long) (d1 & d2)));+ }+ + NODE *do_bor (tree)+ NODE *tree;+ {+ #ifdef sun386+ long l;+ #endif+ unsigned long d1,+ d2;+ NODE *s1,+ *s2;+ + get_two (tree, &s1, &s2);+ + #ifdef sun386+ l = force_number (s1);+ d1 = (unsigned long) l;+ #else+ d1 = (unsigned long) force_number (s1);+ #endif+ + #ifdef sun386+ l = force_number (s2);+ d2 = (unsigned long) l;+ #else+ d2 = (unsigned long) force_number (s2);+ #endif+ + free_temp (s1);+ free_temp (s2);+ + return tmp_number ((AWKNUM) ((unsigned long) (d1 | d2)));+ }+ #endif+ NODE * do_sqrt(tree) NODE *tree;****************** 971,977 ****--- 1039,1054 ---- t = tmp; if (lhs) *lhs = tmp;+ #ifdef SNMP+ if (SET_node)+ snmp_set ();+ #endif }+ #ifdef SNMP+ else+ if (SET_node)+ SET_node = NULL;+ #endif lastbuf = t->stptr; do { if (re_search(rp, t->stptr, t->stlen, search_start,diff -rc gawk-2.11.orig/debug.c debug.c*** gawk-2.11.orig/debug.c Mon Nov 13 13:51:51 1989--- debug.c Fri Aug 17 15:14:59 1990****************** 107,114 ****--- 107,122 ---- { struct search *l; + #ifndef SNMP printf("(0x%x Array)\n", ptr); for (l = assoc_scan(ptr); l; l = assoc_next(l)) {+ #else+ printf("(0x%x Array%s)\n", ptr,+ ptr -> magic ? " {SNMP}": "");+ if (ptr -> magic)+ return;+ for (l = assoc_scan(ptr); l; l = assoc_next(ptr, l)) {+ #endif printf("\tindex: "); print_parse_tree(l->retval); printf("\tvalue: ");****************** 344,349 ****--- 352,361 ---- for (buc = variables[n]; buc; buc = buc->hnext) { if (buc->hvalue == ptr) { printf("%.*s", buc->hlength, buc->hname);+ #ifdef SNMP+ if (ptr -> magic)+ printf ("{SNMP}");+ #endif n = HASHSIZE; break; }diff -rc gawk-2.11.orig/eval.c eval.c*** gawk-2.11.orig/eval.c Mon Nov 13 13:51:53 1989--- eval.c Mon May 20 16:20:37 1991****************** 298,308 ****--- 298,321 ---- PUSH_BINDING(loop_tag_stack, loop_tag, loop_tag_valid); DBG_P(("AFOR.VAR", tree->hakvar)); lhs = (volatile NODE **) get_lhs(tree->hakvar, 1);+ #ifdef SNMP+ if (SET_node)+ fatal ("attempt to use SNMP %s variable \"%s\" unwisely",+ tree -> hakvar -> type == Node_var ? "scalar"+ : "array",+ snmp_name (tree -> hakvar));+ #endif t = tree->arrvar; if (t->type == Node_param_list) t = stack_ptr[t->param_cnt]; stable_tree = tree;+ #ifndef SNMP for (l = assoc_scan(t); l; l = assoc_next((struct search *)l)) {+ #else+ for (l = assoc_scan (t, tree -> forloop -> cond);+ l;+ l = assoc_next (t, l)) {+ #endif deref = *((NODE **) lhs); do_deref(); *lhs = dupnode(l->retval);****************** 318,323 ****--- 331,340 ---- break; case TAG_BREAK:+ #ifdef SNMP+ if (t -> magic)+ (void) snmp_assoc_next (l, 1);+ #endif RESTORE_BINDING(loop_tag_stack, loop_tag, loop_tag_valid); field_num = -1; return 1;****************** 496,501 ****--- 513,522 ---- r = tree_eval(tree->rnode); lhs = get_lhs(tree->lnode, 1); *lhs = dupnode(r);+ #ifdef SNMP+ if (SET_node)+ snmp_set ();+ #endif free_temp(r); do_deref(); if (field_num == 0)****************** 683,688 ****--- 704,713 ---- n->flags &= ~STR; n->stref = 0; deref = 0;+ #ifdef SNMP+ if (SET_node)+ snmp_set ();+ #endif } ****************** 916,922 ****--- 941,951 ---- */ if (arg->type == Node_param_list) arg = stack_ptr[arg->param_cnt];+ #ifndef SNMP if (arg->type == Node_var_array)+ #else+ if (arg -> type == Node_var_array && !arg -> magic)+ #endif *r = *arg; else { n = tree_eval(arg);****************** 984,989 ****--- 1013,1023 ---- arg = argp->lnode; n = *sp++; if (arg->type == Node_var && n->type == Node_var_array) {+ #ifdef SNMP+ if (arg -> magic)+ fatal ("array assignment to SNMP scalar variable \"%s\"",+ snmp_name (arg));+ #endif arg->var_array = n->var_array; arg->type = Node_var_array; }****************** 1035,1040 ****--- 1069,1088 ---- switch (ptr->type) { case Node_var: case Node_var_array:+ #ifdef SNMP+ if (ptr -> magic) {+ snmp_get (ptr, (char *) NULL);+ + if (assign) {+ if (SET_node)+ fatal ("SET_node non-empty");+ SET_node = ptr;+ deref = SET_inst;+ do_deref ();+ SET_inst = NULL;+ }+ }+ #endif if (ptr == NF_node && (int) NF_node->var_value->numbr == -1) (void) get_field(HUGE-1, assign); /* parse record */ deref = ptr->var_value;****************** 1071,1077 ****--- 1119,1144 ---- n = ptr->lnode; if (n->type == Node_param_list) n = stack_ptr[n->param_cnt];+ #ifdef SNMP+ {+ NODE *subs = concat_exp (ptr -> rnode,+ n -> magic ? 1 : 0);+ + if (n -> magic && assign)+ subs = dupnode (subs);+ aptr = assoc_lookup(n, subs);+ if (n -> magic && assign) {+ if (SET_node)+ fatal ("SET_node non-empty");+ SET_node = n;+ deref = SET_inst;+ do_deref ();+ SET_inst = subs;+ }+ }+ #else aptr = assoc_lookup(n, concat_exp(ptr->rnode));+ #endif deref = *aptr; #ifdef DEBUG if (deref->type != Node_val)diff -rc gawk-2.11.orig/io.c io.c*** gawk-2.11.orig/io.c Mon Nov 13 13:52:07 1989--- io.c Mon May 20 11:15:26 1991****************** 800,805 ****--- 800,809 ---- return tmp_number((AWKNUM) 0.0); } *lhs = make_string(s, strlen(s));+ #ifdef SNMP+ if (SET_node)+ snmp_set ();+ #endif do_deref(); /* we may have to regenerate $0 here! */ if (field_num == 0)diff -rc gawk-2.11.orig/main.c main.c*** gawk-2.11.orig/main.c Mon Nov 13 13:52:08 1989--- main.c Fri Aug 17 17:00:30 1990****************** 94,101 ****--- 94,106 ---- */ #define EXTENSIONS 8 /* where to clear */ #ifdef DEBUG+ #ifndef SNMP char awk_opts[] = "F:f:v:caeCVdD"; #else+ char awk_opts[] = "F:f:v:caeCVdDsS";+ extern int debug;+ #endif+ #else char awk_opts[] = "F:f:v:caeCV"; #endif ****************** 192,198 ****--- 197,213 ---- debugging++; yydebug = 2; break;+ + #ifdef SNMP+ case 's':+ debug = 1;+ break;+ + case 'S':+ debug = 2;+ break; #endif+ #endif #ifndef STRICT case 'c':****************** 483,488 ****--- 498,512 ---- RSTART_node = spc_var("RSTART", make_number(0.0)); SUBSEP_node = spc_var("SUBSEP", make_string("\034", 1)); IGNORECASE_node = spc_var("IGNORECASE", make_number(0.0));+ #ifdef SNMP+ if (snmp_init ())+ AGENT_node = spc_var ("AGENT", make_string ("localhost", 9));+ COMMUNITY_node = spc_var ("COMMUNITY", make_string ("public", 6));+ DIAGNOSTIC_node = spc_var ("DIAGNOSTIC", Nnull_string);+ ERROR_node = spc_var ("ERROR", make_number (0.0));+ RETRIES_node = spc_var ("RETRIES", make_number (3.0));+ TIMEOUT_node = spc_var ("TIMEOUT", make_number (10.0));+ #endif ENVIRON_node = spc_var("ENVIRON", Nnull_string); for (i = 0; environ[i]; i++) {diff -rc gawk-2.11.orig/node.c node.c*** gawk-2.11.orig/node.c Mon Nov 13 13:52:13 1989--- node.c Fri Aug 17 15:15:01 1990****************** 277,282 ****--- 277,285 ---- #endif it->type = ty; it->flags = MALLOC;+ #ifdef SNMP+ it->magic = NULL;+ #endif #ifdef MEMDEBUG fprintf(stderr, "node: new: %0x\n", it); #endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?