aboutsummaryrefslogtreecommitdiffstats
path: root/symbol.c
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2021-10-18 18:41:51 +0300
committerArnold D. Robbins <arnold@skeeve.com>2021-10-18 18:41:51 +0300
commit51181b9f13fe0b26135a448e2a5f3d4e4d82e151 (patch)
tree7b86fd58bf49211a9666a6f94095c7105516cb2c /symbol.c
parent3fc30463797c0ba8648e76ab6de76b883ce79a86 (diff)
downloadegawk-51181b9f13fe0b26135a448e2a5f3d4e4d82e151.tar.gz
egawk-51181b9f13fe0b26135a448e2a5f3d4e4d82e151.tar.bz2
egawk-51181b9f13fe0b26135a448e2a5f3d4e4d82e151.zip
Code cleanups and bug fix.
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;
+}