diff options
author | Barton E. Schaefer <schaefer@zsh.org> | 2015-04-25 10:57:44 -0700 |
---|---|---|
committer | Barton E. Schaefer <schaefer@zsh.org> | 2015-04-25 10:57:44 -0700 |
commit | 0164457a199d826e8d2018c94f57a7803071b63a (patch) | |
tree | eddd879d2b4bc422ed4b2df188f7068da7f9bfaf /Src/Modules/datetime.c | |
parent | f8fb6ebae8a829ce20291c9f37fb23c48fd4c32e (diff) | |
download | zsh-0164457a199d826e8d2018c94f57a7803071b63a.tar.gz zsh-0164457a199d826e8d2018c94f57a7803071b63a.tar.xz zsh-0164457a199d826e8d2018c94f57a7803071b63a.zip |
34961: $TZ is implicitly local in builtin strftime (originally workers/34602 from workers/34596)
Diffstat (limited to 'Src/Modules/datetime.c')
-rw-r--r-- | Src/Modules/datetime.c | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/Src/Modules/datetime.c b/Src/Modules/datetime.c index 00ebd2b49..63a04dc89 100644 --- a/Src/Modules/datetime.c +++ b/Src/Modules/datetime.c @@ -94,7 +94,7 @@ reverse_strftime(char *nam, char **argv, char *scalar, int quiet) } static int -bin_strftime(char *nam, char **argv, Options ops, UNUSED(int func)) +output_strftime(char *nam, char **argv, Options ops, UNUSED(int func)) { int bufsize, x; char *endptr = NULL, *scalar = NULL, *buffer; @@ -145,6 +145,25 @@ bin_strftime(char *nam, char **argv, Options ops, UNUSED(int func)) return 0; } +static int +bin_strftime(char *nam, char **argv, Options ops, int func) +{ + int result = 1; + char *tz = getsparam("TZ"); + + startparamscope(); + if (tz && *tz) { + Param pm = createparam("TZ", PM_LOCAL|PM_SCALAR|PM_EXPORTED); + if (pm) + pm->level = locallevel; /* because createparam() doesn't */ + setsparam("TZ", ztrdup(tz)); + } + result = output_strftime(nam, argv, ops, func); + endparamscope(); + + return result; +} + static zlong getcurrentsecs(UNUSED(Param pm)) { |