From e55c16708320aee327fe192d543a25e05343fae5 Mon Sep 17 00:00:00 2001 From: Mikael Magnusson Date: Tue, 16 Jun 2015 01:36:50 +0200 Subject: 35476: Allow setting $0 when POSIX_ARGZERO is not set --- ChangeLog | 3 +++ Src/params.c | 17 ++++++++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 9dbdbdf27..1a11c3669 100644 --- a/ChangeLog +++ b/ChangeLog @@ -3,6 +3,9 @@ * 35477: Completion/Unix/Command/_gdb: _gdb: Allow 'core' to occur anywhere in a coredump filename + * 35476: Src/params.c: Allow setting $0 when POSIX_ARGZERO is + not set + 2015-06-16 Barton E. Schaefer * 35493: Src/exec.c: erase $_ when the command line is an assignment diff --git a/Src/params.c b/Src/params.c index 98541a6da..3b757359b 100644 --- a/Src/params.c +++ b/Src/params.c @@ -196,7 +196,7 @@ static const struct gsu_integer ttyidle_gsu = { ttyidlegetfn, nullintsetfn, stdunsetfn }; static const struct gsu_scalar argzero_gsu = -{ argzerogetfn, nullstrsetfn, nullunsetfn }; +{ argzerogetfn, argzerosetfn, nullunsetfn }; static const struct gsu_scalar username_gsu = { usernamegetfn, usernamesetfn, stdunsetfn }; static const struct gsu_scalar dash_gsu = @@ -4044,6 +4044,21 @@ lcsetfn(Param pm, char *x) } #endif /* USE_LOCALE */ +/* Function to set value for special parameter `0' */ + +/**/ +static void +argzerosetfn(UNUSED(Param pm), char *x) +{ + if (x) { + if (!isset(POSIXARGZERO)) { + zsfree(argzero); + argzero = ztrdup(x); + } + zsfree(x); + } +} + /* Function to get value for special parameter `0' */ /**/ -- cgit 1.4.1