diff options
author | Richard M. Stallman <rms@gnu.org> | 1995-09-10 04:37:21 +0000 |
---|---|---|
committer | Richard M. Stallman <rms@gnu.org> | 1995-09-10 04:37:21 +0000 |
commit | 81ac1f575bc1aaf2e947dce7bbdc35ce1159b8c7 (patch) | |
tree | d982286ede87e1438fa2018d10b7ba9d3da27fcc /src/editfns.c | |
parent | 3bc713229542f1eca631e86aff044a0752df66bc (diff) | |
download | emacs-81ac1f575bc1aaf2e947dce7bbdc35ce1159b8c7.tar.gz |
(Fset_time_zone_rule): New function.
(syms_of_editfns): defsubr it.
Diffstat (limited to 'src/editfns.c')
-rw-r--r-- | src/editfns.c | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/src/editfns.c b/src/editfns.c index 42fb68a10bd..778646be5a1 100644 --- a/src/editfns.c +++ b/src/editfns.c @@ -899,6 +899,55 @@ the data it can't find.") return Fmake_list (2, Qnil); } +DEFUN ("set-time-zone-rule", Fset_time_zone_rule, Sset_time_zone_rule, 1, 1, 0, + "Set the local time zone using TZ, a string specifying a time zone rule.\n\ +If TZ is nil, use implementation-defined default time zone information.") + (tz) + Lisp_Object tz; +{ + extern char **environ; + static char **environbuf; + int envptrs; + char **from, **to, **newenv; + char *tzstring; + + if (NILP (tz)) + tzstring = 0; + else + { + CHECK_STRING (tz, 0); + tzstring = XSTRING (tz)->data; + } + + for (from = environ; *from; from++) + continue; + envptrs = from - environ + 2; + newenv = to = (char **) xmalloc (envptrs * sizeof (char *) + + (tzstring ? strlen (tzstring) + 4 : 0)); + if (tzstring) + { + char *t = (char *) (to + envptrs); + strcpy (t, "TZ="); + strcat (t, tzstring); + *to++ = t; + } + + for (from = environ; *from; from++) + if (strncmp (*from, "TZ=", 3) != 0) + *to++ = *from; + *to = 0; + + environ = newenv; + if (environbuf) + free (environbuf); + environbuf = newenv; + +#ifdef LOCALTIME_CACHE + tzset (); +#endif + + return Qnil; +} void insert1 (arg) @@ -2319,6 +2368,7 @@ syms_of_editfns () defsubr (&Sencode_time); defsubr (&Scurrent_time_string); defsubr (&Scurrent_time_zone); + defsubr (&Sset_time_zone_rule); defsubr (&Ssystem_name); defsubr (&Smessage); defsubr (&Smessage_box); |