summaryrefslogtreecommitdiff
path: root/Src/params.c
diff options
context:
space:
mode:
authorPeter Stephenson <p.w.stephenson@ntlworld.com>2017-09-30 13:35:19 +0100
committerPeter Stephenson <p.w.stephenson@ntlworld.com>2017-10-01 17:53:56 +0100
commit728f2adfc8daf2c65c5d4130a903635a58c99fb5 (patch)
treec2863d7a40bbdbe630ebb7ad1e50e996af568a79 /Src/params.c
parenta1276c88e1137c643bb8055d719afc17cb37bf0f (diff)
downloadzsh-728f2adfc8daf2c65c5d4130a903635a58c99fb5.tar.gz
zsh-728f2adfc8daf2c65c5d4130a903635a58c99fb5.zip
Add typeset -p1, like typeset -p with newlines
Diffstat (limited to 'Src/params.c')
-rw-r--r--Src/params.c53
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("]=");