aboutsummaryrefslogtreecommitdiffstats
path: root/symbol.c
diff options
context:
space:
mode:
Diffstat (limited to 'symbol.c')
-rw-r--r--symbol.c26
1 files changed, 18 insertions, 8 deletions
diff --git a/symbol.c b/symbol.c
index 99a8b3a5..be01369c 100644
--- a/symbol.c
+++ b/symbol.c
@@ -39,6 +39,7 @@ static void (*install_func)(NODE *) = NULL;
static NODE *make_symbol(const char *name, NODETYPE type);
static NODE *install(const char *name, NODE *parm, NODETYPE type);
static void free_bcpool(INSTRUCTION_POOL *pl);
+static NODE *get_name_from_awk_ns(const char *name);
static AWK_CONTEXT *curr_ctxt = NULL;
static int ctxt_level;
@@ -102,10 +103,7 @@ lookup(const char *name)
tables[3] = symbol_table; /* then globals */
tables[4] = NULL;
- if (strncmp(name, "awk::", 5) == 0)
- tmp = make_string(name + 5, strlen(name) - 5);
- else
- tmp = make_string(name, strlen(name));
+ tmp = get_name_from_awk_ns(name);
n = NULL;
for (i = 0; tables[i] != NULL; i++) {
@@ -307,10 +305,7 @@ install(const char *name, NODE *parm, NODETYPE type)
NODE *n_name;
NODE *prev;
- if (strncmp(name, "awk::", 5) == 0)
- n_name = make_string(name + 5, strlen(name) - 5);
- else
- n_name = make_string(name, strlen(name));
+ n_name = get_name_from_awk_ns(name);
table = symbol_table;
@@ -988,3 +983,18 @@ is_all_upper(const char *name)
return true;
}
+
+/* get_name_from_awk_ns --- get the name after awk:: or the full name */
+
+static NODE *
+get_name_from_awk_ns(const char *name)
+{
+ NODE *tmp;
+
+ if (strncmp(name, "awk::", 5) == 0)
+ tmp = make_string(name + 5, strlen(name) - 5);
+ else
+ tmp = make_string(name, strlen(name));
+
+ return tmp;
+}