gawk-patches
来自「ftam等标准协议服务器和客户端的源代码。」· 代码 · 共 781 行 · 第 1/2 页
TXT
781 行
*** 1716,1722 ****--- 1728,1742 ---- env_loaded = 1; } if ((r = lookup(name)) == NULL)+ #ifdef SNMP+ {+ #endif r = install(name, node(Nnull_string, Node_var, (NODE *) NULL));+ #ifdef SNMP+ if (snmp_enabled && r)+ snmp_check (r, name);+ }+ #endif else if (can_free) free(name); return r;diff -rc gawk-2.13.orig/builtin.c gawk-2.13/builtin.c*** gawk-2.13.orig/builtin.c Wed Jun 19 05:30:27 1991--- gawk-2.13/builtin.c Wed Dec 11 21:58:10 1991****************** 605,610 ****--- 605,648 ---- } } + #ifdef SNMP+ NODE *do_band (tree)+ NODE *tree;+ {+ unsigned long d1,+ d2;+ NODE *s1,+ *s2;+ + s1 = tree_eval (tree -> lnode);+ s2 = tree_eval (tree -> rnode -> lnode);+ d1 = force_number (s1);+ d2 = force_number (s2);+ free_temp (s1);+ free_temp (s2);+ + return tmp_number ((AWKNUM) ((unsigned long) (d1 & d2)));+ }+ + NODE *do_bor (tree)+ NODE *tree;+ {+ unsigned long d1,+ d2;+ NODE *s1,+ *s2;+ + s1 = tree_eval (tree -> lnode);+ s2 = tree_eval (tree -> rnode -> lnode);+ d1 = force_number (s1);+ d2 = force_number (s2);+ free_temp (s1);+ free_temp (s2);+ + return tmp_number ((AWKNUM) ((unsigned long) (d1 | d2)));+ }+ #endif+ NODE * do_sqrt(tree) NODE *tree;****************** 981,986 ****--- 1019,1029 ---- t = tmp; priv = 1; }+ #ifdef SNMP+ else+ if (SET_node)+ SET_node = NULL;+ #endif text = t->stptr; textlen = t->stlen; ****************** 1064,1069 ****--- 1107,1116 ---- if (priv) { unref(*lhs); *lhs = t;+ #ifdef SNMP+ if (SET_node)+ snmp_set ();+ #endif } if (after_assign) (*after_assign)();Common subdirectories: gawk-2.13.orig/config and gawk-2.13/configOnly in gawk-2.13: config.hdiff -rc gawk-2.13.orig/eval.c gawk-2.13/eval.c*** gawk-2.13.orig/eval.c Mon Jul 8 19:08:58 1991--- gawk-2.13/eval.c Thu Dec 12 01:16:20 1991****************** 254,266 ****--- 254,278 ---- #define arrvar forloop->incr PUSH_BINDING(loop_tag_stack, loop_tag, loop_tag_valid); lhs = (volatile NODE **) get_lhs(tree->hakvar, &after_assign);+ #ifdef SNMP+ if (SET_node)+ fatal ("attempt to use SNMP variable \"%s\" unwisely",+ 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 (assoc_scan(t, (struct search *)&l); l.retval; assoc_next((struct search *)&l)) {+ #else+ for (assoc_scan(t, (struct search *)&l,+ tree -> forloop -> cond);+ l.retval;+ assoc_next(t, (struct search *)&l)) {+ #endif unref(*((NODE **) lhs)); *lhs = dupnode(l.retval); if (after_assign)****************** 272,277 ****--- 284,293 ---- 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); return 1; default:****************** 361,367 **** long lx2; #endif ! #ifdef DEBUG if (tree == NULL) return Nnull_string; if (tree->type == Node_val) {--- 377,383 ---- long lx2; #endif ! #ifdef DEBUG if (tree == NULL) return Nnull_string; if (tree->type == Node_val) {****************** 373,381 **** return tree->var_value; } if (tree->type == Node_param_list)! return (stack_ptr[(_t)->param_cnt])->var_value; #endif switch (tree->type) { case Node_and: return tmp_number((AWKNUM) (eval_condition(tree->lnode) && eval_condition(tree->rnode)));--- 389,405 ---- return tree->var_value; } if (tree->type == Node_param_list)! return (stack_ptr[tree->param_cnt])->var_value; #endif switch (tree->type) {+ #ifdef SNMP+ case Node_var_array:+ if (!tree -> magic)+ break;+ snmp_get (tree, (char *) NULL);+ return tree -> var_value;+ #endif+ case Node_and: return tmp_number((AWKNUM) (eval_condition(tree->lnode) && eval_condition(tree->rnode)));****************** 447,452 ****--- 471,480 ---- lhs = get_lhs(tree->lnode, &after_assign); unref(*lhs); *lhs = dupnode(r);+ #ifdef SNMP+ if (SET_node)+ snmp_set ();+ #endif free_temp(r); if (after_assign) (*after_assign)();****************** 841,847 ****--- 869,879 ---- */ 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);****************** 912,917 ****--- 944,954 ---- arg = stack_ptr[arg->param_cnt]; n = *sp++; if (arg->type == Node_var && n->type == Node_var_array) {+ #ifdef SNMP+ if (arg -> magic)+ fatal ("array assignment to SNMP variable \"%s\"",+ snmp_name (arg));+ #endif arg->var_array = n->var_array; arg->type = Node_var_array; }****************** 955,960 ****--- 992,1013 ---- switch (ptr->type) { 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;+ unref (SET_inst);+ SET_inst = NULL;+ }+ + aptr = &(ptr->var_value);+ break;+ }+ #endif fatal("attempt to use an array in a scalar context"); case Node_var: aptr = &(ptr->var_value);****************** 1066,1072 ****--- 1119,1143 ---- 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;+ unref (SET_inst);+ SET_inst = subs;+ }+ }+ #else aptr = assoc_lookup(n, concat_exp(ptr->rnode));+ #endif break; case Node_func:diff -rc gawk-2.13.orig/io.c gawk-2.13/io.c*** gawk-2.13.orig/io.c Tue Jun 18 11:58:47 1991--- gawk-2.13/io.c Wed Dec 11 21:54:17 1991****************** 738,743 ****--- 738,747 ---- } unref(*lhs); *lhs = make_string(s, strlen(s));+ #ifdef SNMP+ if (SET_node)+ snmp_set ();+ #endif /* we may have to regenerate $0 here! */ if (after_assign) (*after_assign)();diff -rc gawk-2.13.orig/main.c gawk-2.13/main.c*** gawk-2.13.orig/main.c Sat Jul 6 12:20:21 1991--- gawk-2.13/main.c Wed Dec 11 22:56:40 1991****************** 102,112 ****--- 102,121 ---- * * Note that after 2.13, c,a,e,C,D, and V go away. */+ #ifndef SNMP #ifdef DEBUG char awk_opts[] = "F:f:v:W:caeCVD"; #else char awk_opts[] = "F:f:v:W:caeCV"; #endif+ #else+ #ifdef DEBUG+ char awk_opts[] = "F:f:v:W:caeCVDsS";+ #else+ char awk_opts[] = "F:f:v:W:caeCVsS";+ #endif+ extern int debug;+ #endif int main(argc, argv)****************** 186,192 ****--- 195,211 ---- "warning: option -D will go away in the next release, use -W parsedebug\n"); gawk_option("parsedebug"); break;+ + #ifdef SNMP+ case 's':+ debug = 1;+ break;+ + case 'S':+ debug = 2;+ break; #endif+ #endif case 'c': fprintf(stderr,****************** 441,446 ****--- 460,473 ---- {&RLENGTH_node, "RLENGTH", Node_var, 0, 0, 0 }, {&RSTART_node, "RSTART", Node_var, 0, 0, 0 }, {&SUBSEP_node, "SUBSEP", Node_var, "\034", 0, 0 },+ #ifdef SNMP+ {&AGENT_node, "AGENT", Node_var, 0, 0, 0 },+ {&COMMUNITY_node,"COMMUNITY", Node_var, "public",0, 0 },+ {&DIAGNOSTIC_node,"DIAGNOSTIC", Node_var, 0, 0, 0 },+ {&ERROR_node, "ERROR", Node_var, 0, 3.0,0 },+ {&RETRIES_node, "RETRIES", Node_var, 0, 10.0,0 },+ {&TIMEOUT_node, "TIMEOUT", Node_var, 0, 0, 0 },+ #endif {0, 0, Node_illegal, 0, 0, 0 }, }; ****************** 449,454 ****--- 476,489 ---- { register struct varinit *vp; + #ifdef SNMP+ for (vp = varinit; vp->name; vp++)+ if (strcmp ("AGENT", vp -> name) == 0) {+ (void) snmp_init (&vp -> strval);+ break;+ }+ #endif+ for (vp = varinit; vp->name; vp++) { *(vp->spec) = install(vp->name, node(vp->strval == 0 ? make_number(vp->numval)****************** 512,517 ****--- 547,556 ---- lhs = get_lhs(var, &after_assign); unref(*lhs); *lhs = it;+ #ifdef SNMP+ if (SET_node)+ snmp_set ();+ #endif if (after_assign) (*after_assign)(); *--cp = '='; /* restore original text of ARGV */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?