diff options
author | Peter Stephenson <p.w.stephenson@ntlworld.com> | 2017-09-30 13:35:19 +0100 |
---|---|---|
committer | Peter Stephenson <p.w.stephenson@ntlworld.com> | 2017-10-01 17:53:56 +0100 |
commit | 728f2adfc8daf2c65c5d4130a903635a58c99fb5 (patch) | |
tree | c2863d7a40bbdbe630ebb7ad1e50e996af568a79 /Src/params.c | |
parent | a1276c88e1137c643bb8055d719afc17cb37bf0f (diff) | |
download | zsh-728f2adfc8daf2c65c5d4130a903635a58c99fb5.tar.gz zsh-728f2adfc8daf2c65c5d4130a903635a58c99fb5.tar.xz zsh-728f2adfc8daf2c65c5d4130a903635a58c99fb5.zip |
Add typeset -p1, like typeset -p with newlines
Diffstat (limited to 'Src/params.c')
-rw-r--r-- | Src/params.c | 53 |
1 files changed, 38 insertions, 15 deletions
diff --git a/Src/params.c b/Src/params.c index 3236f7165..ddf3ce164 100644 --- a/Src/params.c +++ b/Src/params.c @@ -5682,40 +5682,60 @@ printparamvalue(Param p, int printflags) /* array */ if (!(printflags & PRINT_KV_PAIR)) { putchar('('); - putchar(' '); + if (!(printflags & PRINT_LINE)) + putchar(' '); } u = p->gsu.a->getfn(p); if(*u) { + if (printflags & PRINT_LINE) { + if (printflags & PRINT_KV_PAIR) + printf(" "); + else + printf("\n "); + } quotedzputs(*u++, stdout); while (*u) { - putchar(' '); + if (printflags & PRINT_LINE) + printf("\n "); + else + putchar(' '); quotedzputs(*u++, stdout); } + if ((printflags & (PRINT_LINE|PRINT_KV_PAIR)) == PRINT_LINE) + putchar('\n'); } if (!(printflags & PRINT_KV_PAIR)) { - putchar(' '); + if (!(printflags & PRINT_LINE)) + putchar(' '); putchar(')'); } break; case PM_HASHED: /* association */ - if (!(printflags & PRINT_KV_PAIR)) { - putchar('('); - putchar(' '); - } { - HashTable ht = p->gsu.h->getfn(p); + HashTable ht; + int found = 0; + if (!(printflags & PRINT_KV_PAIR)) { + putchar('('); + if (!(printflags & PRINT_LINE)) + putchar(' '); + } + ht = p->gsu.h->getfn(p); if (ht) - scanhashtable(ht, 1, 0, PM_UNSET, - ht->printnode, PRINT_KV_PAIR); + found = scanhashtable(ht, 1, 0, PM_UNSET, + ht->printnode, PRINT_KV_PAIR | + (printflags & PRINT_LINE)); + if (!(printflags & PRINT_KV_PAIR)) { + if (found && (printflags & PRINT_LINE)) + putchar('\n'); + putchar(')'); + } } - if (!(printflags & PRINT_KV_PAIR)) - putchar(')'); break; } - if (printflags & PRINT_KV_PAIR) + if ((printflags & (PRINT_KV_PAIR|PRINT_LINE)) == PRINT_KV_PAIR) putchar(' '); - else + else if (!(printflags & PRINT_KV_PAIR)) putchar('\n'); } @@ -5809,8 +5829,11 @@ printparamnode(HashNode hn, int printflags) zputs(p->node.nam, stdout); putchar('\n'); } else { - if (printflags & PRINT_KV_PAIR) + if (printflags & PRINT_KV_PAIR) { + if (printflags & PRINT_LINE) + printf("\n "); putchar('['); + } quotedzputs(p->node.nam, stdout); if (printflags & PRINT_KV_PAIR) printf("]="); |