Mercurial > emacs
changeset 9812:bc352c8f079c
(Fdecode_time): Fix Lisp_Object vs. integer problems.
Don't use tm_gmtoff; it's not portable.
author | Karl Heuer <kwzh@gnu.org> |
---|---|
date | Wed, 02 Nov 1994 04:27:27 +0000 |
parents | c6270c781781 |
children | e33e1c6864de |
files | src/editfns.c |
diffstat | 1 files changed, 17 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/src/editfns.c Wed Nov 02 02:35:56 1994 +0000 +++ b/src/editfns.c Wed Nov 02 04:27:27 1994 +0000 @@ -39,6 +39,7 @@ #define max(a, b) ((a) > (b) ? (a) : (b)) extern void insert_from_buffer (); +static long difftm (); /* Some static data, and a function to initialize it for each run */ @@ -703,6 +704,7 @@ Lisp_Object specified_time; { time_t time_spec; + struct tm save_tm; struct tm *decoded_time; Lisp_Object list_args[9]; @@ -710,15 +712,22 @@ error ("Invalid time specification"); decoded_time = localtime (&time_spec); - list_args[0] = XFASTINT (decoded_time->tm_sec); - list_args[1] = XFASTINT (decoded_time->tm_min); - list_args[2] = XFASTINT (decoded_time->tm_hour); - list_args[3] = XFASTINT (decoded_time->tm_mday); - list_args[4] = XFASTINT (decoded_time->tm_mon + 1); - list_args[5] = XFASTINT (decoded_time->tm_year + 1900); - list_args[6] = XFASTINT (decoded_time->tm_wday); + XSETFASTINT (list_args[0], decoded_time->tm_sec); + XSETFASTINT (list_args[1], decoded_time->tm_min); + XSETFASTINT (list_args[2], decoded_time->tm_hour); + XSETFASTINT (list_args[3], decoded_time->tm_mday); + XSETFASTINT (list_args[4], decoded_time->tm_mon + 1); + XSETFASTINT (list_args[5], decoded_time->tm_year + 1900); + XSETFASTINT (list_args[6], decoded_time->tm_wday); list_args[7] = (decoded_time->tm_isdst)? Qt : Qnil; - list_args[8] = XINT (decoded_time->tm_gmtoff); + + /* Make a copy, in case gmtime modifies the struct. */ + save_tm = *decoded_time; + decoded_time = gmtime (&time_spec); + if (decoded_time == 0) + list_args[8] = Qnil; + else + XSETINT (list_args[8], difftm (&save_tm, decoded_time)); return Flist (9, list_args); }