nasl_lex_ctxt.c

来自「大国补丁后的nessus2.2.8的源代码」· C语言 代码 · 共 102 行

C
102
字号
/* Nessus Attack Scripting Language  * * Copyright (C) 2002 - 2004 Tenable Network Security * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2, * as published by the Free Software Foundation * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */#include "includes.h"#include "nasl_func.h"#include "nasl_tree.h"#include "nasl_var.h"#include "nasl_global_ctxt.h"#include "nasl_lex_ctxt.h"lex_ctxt*init_empty_lex_ctxt(){  lex_ctxt	*c = emalloc(sizeof(lex_ctxt));  int		i;  c->ctx_vars.hash_elt = emalloc(sizeof(named_nasl_var) * VAR_NAME_HASH);  c->ctx_vars.num_elt = NULL;  c->ctx_vars.max_idx = 0;  for (i = 0; i < FUNC_NAME_HASH; i ++)    c->functions[i] = NULL;  c->ret_val = NULL;  c->fct_ctxt = 0;  return c;}voidfree_lex_ctxt(lex_ctxt* c){  int	i;#if 0  if (c->exit_flag && c->up_ctxt != NULL)    ((lex_ctxt*)c->up_ctxt)->exit_flag = 1;#endif  deref_cell(c->ret_val);  free_array(&c->ctx_vars);  for (i = 0; i < FUNC_NAME_HASH; i ++)    {      free_func_chain(c->functions[i]);    }  efree(&c);}lex_ctxt*get_top_level_ctxt(lex_ctxt* ctxt){  lex_ctxt	*top = ctxt;  while (top->up_ctxt != NULL)    top = top->up_ctxt;  return top;}voiddump_ctxt(lex_ctxt* c){  int	i;  named_nasl_var	*v;  nasl_func	*f;  printf("--------<CTXT>--------\n");  if (c->fct_ctxt)    printf("Is a function context\n");  if (c->up_ctxt == NULL)    printf("Is the top level context\n");  if (c->ret_val)    {      printf("Return value\n");      nasl_dump_tree(c->ret_val);    }  printf("Variables:\n");  for (i = 0; i < VAR_NAME_HASH; i ++)    for (v = c->ctx_vars.hash_elt[i]; v != NULL; v=v->next_var)      printf("%s\t", v->var_name);  putchar('\n');  printf("Functions:\n");  for (i = 0; i < FUNC_NAME_HASH; i ++)    for (f = c->functions[i]; f != NULL; f = f->next_func)      printf("%s\t", f->func_name);  putchar('\n');  printf("----------------------\n");}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?