diff options
author | Antonio Giovanni Colombo <azc100@gmail.com> | 2020-08-16 21:25:30 +0200 |
---|---|---|
committer | Antonio Giovanni Colombo <azc100@gmail.com> | 2020-08-16 21:25:30 +0200 |
commit | 87761102eb08df817871b17f56041428e88efb12 (patch) | |
tree | e5575279f26c44b485939140f03d261aa6e80062 /symbol.c | |
parent | 65cb5e20a94c407eab227bbfe78bac5f86d9d808 (diff) | |
parent | af190c94590e340fcb5918a6ebd245169d5f1000 (diff) | |
download | egawk-87761102eb08df817871b17f56041428e88efb12.tar.gz egawk-87761102eb08df817871b17f56041428e88efb12.tar.bz2 egawk-87761102eb08df817871b17f56041428e88efb12.zip |
Merge branch 'feature/docit' of ssh://git.sv.gnu.org/srv/git/gawk into feature/docit
Diffstat (limited to 'symbol.c')
-rw-r--r-- | symbol.c | 14 |
1 files changed, 13 insertions, 1 deletions
@@ -292,6 +292,7 @@ make_symbol(const char *name, NODETYPE type) r->var_value = dupnode(Nnull_string); r->vname = (char *) name; r->type = type; + r->valref = 1; return r; } @@ -366,7 +367,18 @@ comp_symbol(const void *v1, const void *v2) n1 = *npp1; n2 = *npp2; - return strcmp(n1->vname, n2->vname); + // names in awk namespace come out first + bool n1_is_in_ns = (strchr(n1->vname, ':') != NULL); + bool n2_is_in_ns = (strchr(n2->vname, ':') != NULL); + + if (n1_is_in_ns && n2_is_in_ns) + return strcmp(n1->vname, n2->vname); + else if (n1_is_in_ns && ! n2_is_in_ns) + return 1; + else if (! n1_is_in_ns && n2_is_in_ns) + return -1; + else + return strcmp(n1->vname, n2->vname); } |