35054: readonly -p + POSIXBUILTINS fix.

Now displays unset variables marekd readonly
This commit is contained in:
Peter Stephenson 2015-05-07 12:10:16 +01:00
parent 13c6d38e4b
commit 60c6bcdeae
3 changed files with 20 additions and 4 deletions

View File

@ -1,5 +1,8 @@
2015-05-07 Peter Stephenson <p.stephenson@samsung.com>
* 35054: Src/params.c, Test/B02typeset.ztst: "readonly -p"
displays unset readonly variables with POSIXBUILTINS.
* Eric Cook: 35052: Completion/BSD/Command/_bsdconfig,
Completion/BSD/Command/_bsdinstall,
Completion/BSD/Command/_jexec, Completion/BSD/Command/_jls:

View File

@ -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 ");

View File

@ -475,13 +475,15 @@
print ${+pbro} >&2
(typeset pbro=3)
(pbro=4)
readonly -p | grep pbro >&2 # shows up as "readonly" although unset
typeset -r pbro # idempotent (no error)...
print ${+pbro} >&2 # ...so still readonly...
typeset +r pbro # ...can't turn it off
)
1:Readonly with POSIX_BUILTINS
1:readonly with POSIX_BUILTINS
?0
?(eval):5: read-only variable: pbro
?(eval):6: read-only variable: pbro
?typeset -r pbro
?0
?(eval):9: read-only variable: pbro
?(eval):10: read-only variable: pbro