diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2020-08-12 18:15:18 +0300 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2020-08-12 18:15:18 +0300 |
commit | d389d4cd9e2d75159f69a23bfa6d038f74502b12 (patch) | |
tree | 54a67069f473d69f4f5de76b01f69081121ec4ef /symbol.c | |
parent | 8110b4b66d9bf0f94b4595aadd4e9439df526fa5 (diff) | |
download | egawk-d389d4cd9e2d75159f69a23bfa6d038f74502b12.tar.gz egawk-d389d4cd9e2d75159f69a23bfa6d038f74502b12.tar.bz2 egawk-d389d4cd9e2d75159f69a23bfa6d038f74502b12.zip |
Fix issues with function ordering in pretty printed output. Add doc.
Diffstat (limited to 'symbol.c')
-rw-r--r-- | symbol.c | 13 |
1 files changed, 12 insertions, 1 deletions
@@ -366,7 +366,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); } |