OpenVAS Scanner  22.7.9
nasl_lex_ctxt.c
Go to the documentation of this file.
1 /* SPDX-FileCopyrightText: 2023 Greenbone AG
2  * SPDX-FileCopyrightText: 2002-2004 Tenable Network Security
3  *
4  * SPDX-License-Identifier: GPL-2.0-only
5  */
6 
7 #include "nasl_lex_ctxt.h"
8 
9 #include "nasl_func.h"
10 #include "nasl_global_ctxt.h"
11 #include "nasl_tree.h"
12 #include "nasl_var.h"
13 
14 #include <glib.h> /* for g_free() */
15 
16 void
18 
19 lex_ctxt *
21 {
22  lex_ctxt *c = g_malloc0 (sizeof (lex_ctxt));
23 
24  c->ctx_vars.hash_elt = g_malloc0 (sizeof (named_nasl_var *) * VAR_NAME_HASH);
25  c->ctx_vars.num_elt = NULL;
26  c->ctx_vars.max_idx = 0;
27  c->functions = g_hash_table_new_full (g_str_hash, g_str_equal, NULL,
28  (GDestroyNotify) free_func);
29  c->oid = NULL;
30  c->ret_val = NULL;
31  c->fct_ctxt = 0;
32 
38 
39  return c;
40 }
41 
42 void
44 {
45  deref_cell (c->ret_val);
46  free_array (&c->ctx_vars);
47  g_hash_table_destroy (c->functions);
48  g_free (c);
49 }
50 
51 void
53 {
54  int i;
55  named_nasl_var *v;
56 
57  printf ("--------<CTXT>--------\n");
58  if (c->fct_ctxt)
59  printf ("Is a function context\n");
60  if (c->up_ctxt == NULL)
61  printf ("Is the top level context\n");
62  if (c->ret_val)
63  {
64  printf ("Return value\n");
66  }
67 
68  printf ("Variables:\n");
69  for (i = 0; i < VAR_NAME_HASH; i++)
70  for (v = c->ctx_vars.hash_elt[i]; v != NULL; v = v->next_var)
71  printf ("%s\t", v->var_name);
72  putchar ('\n');
73 
74  printf ("----------------------\n");
75 }
free_array
void free_array(nasl_array *a)
Definition: nasl_var.c:342
struct_lex_ctxt::ctx_vars
nasl_array ctx_vars
Definition: nasl_lex_ctxt.h:35
st_n_nasl_var
Definition: nasl_var.h:55
nasl_dump_tree
void nasl_dump_tree(const tree_cell *c)
Definition: nasl_tree.c:366
st_nasl_array::max_idx
int max_idx
Definition: nasl_var.h:34
st_nasl_array::hash_elt
struct st_n_nasl_var ** hash_elt
Definition: nasl_var.h:36
struct_lex_ctxt::functions
GHashTable * functions
Definition: nasl_lex_ctxt.h:37
st_n_nasl_var::var_name
char * var_name
Definition: nasl_var.h:58
struct_lex_ctxt::up_ctxt
struct struct_lex_ctxt * up_ctxt
Definition: nasl_lex_ctxt.h:24
dump_ctxt
void dump_ctxt(lex_ctxt *c)
Definition: nasl_lex_ctxt.c:52
st_n_nasl_var::next_var
struct st_n_nasl_var * next_var
Definition: nasl_var.h:62
nasl_lex_ctxt.h
struct_lex_ctxt::oid
const char * oid
Definition: nasl_lex_ctxt.h:31
free_lex_ctxt
void free_lex_ctxt(lex_ctxt *c)
Definition: nasl_lex_ctxt.c:43
struct_lex_ctxt::fct_ctxt
unsigned fct_ctxt
Definition: nasl_lex_ctxt.h:26
nasl_func.h
free_func
void free_func(nasl_func *f)
Definition: nasl_func.c:266
init_nasl_library
void init_nasl_library(lex_ctxt *)
Adds "built-in" variable and function definitions to a context.
Definition: nasl_init.c:486
struct_lex_ctxt
Definition: nasl_lex_ctxt.h:23
nasl_var.h
nasl_global_ctxt.h
deref_cell
void deref_cell(tree_cell *c)
Definition: nasl_tree.c:181
init_empty_lex_ctxt
lex_ctxt * init_empty_lex_ctxt()
Definition: nasl_lex_ctxt.c:20
nasl_tree.h
VAR_NAME_HASH
#define VAR_NAME_HASH
Definition: nasl_var.h:22
struct_lex_ctxt::ret_val
tree_cell * ret_val
Definition: nasl_lex_ctxt.h:25
st_nasl_array::num_elt
struct st_a_nasl_var ** num_elt
Definition: nasl_var.h:35