summaryrefslogtreecommitdiff
path: root/Src/params.c
diff options
context:
space:
mode:
Diffstat (limited to 'Src/params.c')
-rw-r--r--Src/params.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/Src/params.c b/Src/params.c
index d53b6ca7e..9eab51a34 100644
--- a/Src/params.c
+++ b/Src/params.c
@@ -5039,8 +5039,19 @@ printparamnode(HashNode hn, int printflags)
Param p = (Param) hn;
char *t, **u;
- if (p->node.flags & PM_UNSET)
- return;
+ if (p->node.flags & PM_UNSET) {
+ if (isset(POSIXBUILTINS) && (p->node.flags & PM_READONLY) &&
+ (printflags & PRINT_TYPESET))
+ {
+ /*
+ * Special POSIX rules: show the parameter as readonly
+ * even though it's unset, but with no value.
+ */
+ printflags |= PRINT_NAMEONLY;
+ }
+ else
+ return;
+ }
if (printflags & PRINT_TYPESET)
printf("typeset ");