[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] /srv/bzr/emacs/trunk r105421: Lisp code shouldn't use set-
From: |
Chong Yidong |
Subject: |
[Emacs-diffs] /srv/bzr/emacs/trunk r105421: Lisp code shouldn't use set-time-zone-rule except through setenv. |
Date: |
Mon, 08 Aug 2011 11:53:35 -0400 |
User-agent: |
Bazaar (2.3.1) |
------------------------------------------------------------
revno: 105421
fixes bug(s): http://debbugs.gnu.org/7337
committer: Chong Yidong <address@hidden>
branch nick: trunk
timestamp: Mon 2011-08-08 11:53:35 -0400
message:
Lisp code shouldn't use set-time-zone-rule except through setenv.
* time.el (display-time-world-list, display-time-world-display):
* time-stamp.el (time-stamp-string):
* vc/add-log.el (add-change-log-entry): Use setenv instead of
set-time-zone-rule.
* src/editfns.c (Fset_time_zone_rule): Document relationship with the
setenv function.
modified:
lisp/ChangeLog
lisp/time-stamp.el
lisp/time.el
lisp/vc/add-log.el
src/ChangeLog
src/editfns.c
=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog 2011-08-08 07:11:25 +0000
+++ b/lisp/ChangeLog 2011-08-08 15:53:35 +0000
@@ -1,3 +1,10 @@
+2011-08-08 Chong Yidong <address@hidden>
+
+ * time.el (display-time-world-list, display-time-world-display):
+ * time-stamp.el (time-stamp-string):
+ * vc/add-log.el (add-change-log-entry): Use setenv instead of
+ set-time-zone-rule (Bug#7337).
+
2011-08-08 Daiki Ueno <address@hidden>
* epg.el (epg--status-KEYEXPIRED, epg--status-KEYREVOKED): Fix typo.
=== modified file 'lisp/time-stamp.el'
--- a/lisp/time-stamp.el 2011-04-19 13:44:55 +0000
+++ b/lisp/time-stamp.el 2011-08-08 15:53:35 +0000
@@ -424,10 +424,10 @@
(let ((ts-real-time-zone (getenv "TZ")))
(unwind-protect
(progn
- (set-time-zone-rule time-stamp-time-zone)
+ (setenv "TZ" time-stamp-time-zone)
(format-time-string
(time-stamp-string-preprocess ts-format)))
- (set-time-zone-rule ts-real-time-zone)))
+ (setenv "TZ" ts-real-time-zone)))
(format-time-string
(time-stamp-string-preprocess ts-format)))
;; handle version 1 compatibility
=== modified file 'lisp/time.el'
--- a/lisp/time.el 2011-07-14 14:30:35 +0000
+++ b/lisp/time.el 2011-08-08 15:53:35 +0000
@@ -156,21 +156,24 @@
(defcustom display-time-world-list
;; Determine if zoneinfo style timezones are supported by testing that
;; America/New York and Europe/London return different timezones.
- (let (gmt nyt)
- (set-time-zone-rule "America/New_York")
- (setq nyt (format-time-string "%z"))
- (set-time-zone-rule "Europe/London")
- (setq gmt (format-time-string "%z"))
- (set-time-zone-rule nil)
+ (let ((old-tz (getenv "TZ"))
+ gmt nyt)
+ (unwind-protect
+ (progn
+ (setenv "TZ" "America/New_York")
+ (setq nyt (format-time-string "%z"))
+ (setenv "TZ" "Europe/London")
+ (setq gmt (format-time-string "%z")))
+ (setenv "TZ" old-tz))
(if (string-equal nyt gmt)
legacy-style-world-list
zoneinfo-style-world-list))
"Alist of time zones and places for `display-time-world' to display.
Each element has the form (TIMEZONE LABEL).
-TIMEZONE should be in the format supported by `set-time-zone-rule' on
-your system. See the documentation of `zoneinfo-style-world-list' and
-\`legacy-style-world-list' for two widely used formats.
-LABEL is a string to display as the label of that TIMEZONE's time."
+TIMEZONE should be in a format supported by your system. See the
+documentation of `zoneinfo-style-world-list' and
+\`legacy-style-world-list' for two widely used formats. LABEL is
+a string to display as the label of that TIMEZONE's time."
:group 'display-time
:type '(repeat (list string string))
:version "23.1")
@@ -521,26 +524,26 @@
(defun display-time-world-display (alist)
"Replace current buffer text with times in various zones, based on ALIST."
(let ((inhibit-read-only t)
- (buffer-undo-list t))
+ (buffer-undo-list t)
+ (old-tz (getenv "TZ"))
+ (max-width 0)
+ result fmt)
(erase-buffer)
- (let ((max-width 0)
- (result ())
- fmt)
- (unwind-protect
- (dolist (zone alist)
- (let* ((label (cadr zone))
- (width (string-width label)))
- (set-time-zone-rule (car zone))
- (push (cons label
- (format-time-string display-time-world-time-format))
- result)
- (when (> width max-width)
- (setq max-width width))))
- (set-time-zone-rule nil))
- (setq fmt (concat "%-" (int-to-string max-width) "s %s\n"))
- (dolist (timedata (nreverse result))
- (insert (format fmt (car timedata) (cdr timedata)))))
- (delete-char -1)))
+ (unwind-protect
+ (dolist (zone alist)
+ (let* ((label (cadr zone))
+ (width (string-width label)))
+ (setenv "TZ" (car zone))
+ (push (cons label
+ (format-time-string display-time-world-time-format))
+ result)
+ (when (> width max-width)
+ (setq max-width width))))
+ (setenv "TZ" old-tz))
+ (setq fmt (concat "%-" (int-to-string max-width) "s %s\n"))
+ (dolist (timedata (nreverse result))
+ (insert (format fmt (car timedata) (cdr timedata)))))
+ (delete-char -1))
;;;###autoload
(defun display-time-world ()
=== modified file 'lisp/vc/add-log.el'
--- a/lisp/vc/add-log.el 2011-05-23 17:57:17 +0000
+++ b/lisp/vc/add-log.el 2011-08-08 15:53:35 +0000
@@ -853,9 +853,9 @@
(let ((tz (getenv "TZ")))
(unwind-protect
(progn
- (set-time-zone-rule add-log-time-zone-rule)
+ (setenv "TZ" add-log-time-zone-rule)
(funcall add-log-time-format))
- (set-time-zone-rule tz)))
+ (setenv "TZ" tz)))
(funcall add-log-time-format))
" " full-name
" <" addr ">"))
=== modified file 'src/ChangeLog'
--- a/src/ChangeLog 2011-08-08 14:49:34 +0000
+++ b/src/ChangeLog 2011-08-08 15:53:35 +0000
@@ -1,5 +1,8 @@
2011-08-08 Chong Yidong <address@hidden>
+ * editfns.c (Fset_time_zone_rule): Document relationship with the
+ setenv function.
+
* ftfont.c (ftfont_pattern_entity): Copy the extras argument to
the font entity extracted from the cache (Bug#8109).
=== modified file 'src/editfns.c'
--- a/src/editfns.c 2011-08-07 14:14:54 +0000
+++ b/src/editfns.c 2011-08-08 15:53:35 +0000
@@ -2053,7 +2053,12 @@
DEFUN ("set-time-zone-rule", Fset_time_zone_rule, Sset_time_zone_rule, 1, 1, 0,
doc: /* Set the local time zone using TZ, a string specifying a time
zone rule.
If TZ is nil, use implementation-defined default time zone information.
-If TZ is t, use Universal Time. */)
+If TZ is t, use Universal Time.
+
+Instead of calling this function, you typically want (setenv "TZ" TZ).
+That changes both the environment of the Emacs process and the
+variable `process-environment', whereas `set-time-zone-rule' affects
+only the former. */)
(Lisp_Object tz)
{
const char *tzstring;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] /srv/bzr/emacs/trunk r105421: Lisp code shouldn't use set-time-zone-rule except through setenv.,
Chong Yidong <=