aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJim Blandy1992-09-13 10:54:38 +0000
committerJim Blandy1992-09-13 10:54:38 +0000
commitb7cceaf12a73559df9c2fcf135983b4c03b48061 (patch)
treede45679165e29811fe12d574dbcba2d325a1ceef
parente4801b31ff4d1c01f79e25a2eefbd3877375386b (diff)
downloademacs-b7cceaf12a73559df9c2fcf135983b4c03b48061.tar.gz
emacs-b7cceaf12a73559df9c2fcf135983b4c03b48061.zip
*** empty log message ***
-rwxr-xr-xconfigure1.in25
-rw-r--r--etc/MACHINES32
-rw-r--r--lib-src/Makefile.in17
-rw-r--r--lisp/diff.el2
-rw-r--r--lisp/mail/rmail.el56
-rw-r--r--lisp/subr.el18
-rwxr-xr-xmake-dist2
-rw-r--r--src/m/hp9000s300.h49
-rw-r--r--src/s/bsd4-3.h7
-rw-r--r--src/systime.h44
10 files changed, 178 insertions, 74 deletions
diff --git a/configure1.in b/configure1.in
index a8c2c79687a..f44611c2272 100755
--- a/configure1.in
+++ b/configure1.in
@@ -28,15 +28,18 @@
28# config.status is removed. 28# config.status is removed.
29# 29#
30 30
31# Remove any leading "." elements from the path name. When this 31# Remove any leading "." elements from the path name. If we don't
32# script is invoked from the config.status script, a new ./ gets added 32# remove them, then another "./" will be prepended to the file name
33# to the the front of the path, resulting in a "././" prefix. That 33# each time we use config.status, and the program name will get larger
34# prefix is then recorded in the resulting config.status file, so 34# and larger. This wouldn't be a problem, except that since progname
35# basically each time config.status is used, it prepends another "./" 35# gets recorded in all the Makefiles this script produces,
36# to the filename. This wouldn't be a problem, except that since
37# progname gets recorded in all the Makefiles this script produces,
38# move-if-changed thinks they're different when they're not. 36# move-if-changed thinks they're different when they're not.
39progname="`echo $0 | sed 's:^\(\./\)*::'`" 37#
38# It would be nice if we could put the ./ in a \( \) group and then
39# apply the * operator to that, so we remove as many leading ./././'s
40# as are present, but some seds (like Ultrix's sed) don't allow you to
41# apply * to a \( \) group. Bleah.
42progname="`echo $0 | sed 's:^\./::'`"
40 43
41short_usage="Type \`${progname} -usage' for more information about options." 44short_usage="Type \`${progname} -usage' for more information about options."
42 45
@@ -421,8 +424,8 @@ echo "Examining the machine- and system-dependent files to find out"
421echo " - which libraries the lib-src programs will want, and" 424echo " - which libraries the lib-src programs will want, and"
422echo " - whether the GNU malloc routines are usable." 425echo " - whether the GNU malloc routines are usable."
423tempcname="configure.tmp.$$.c" 426tempcname="configure.tmp.$$.c"
424echo '#include "src/'${machfile}'" 427echo '#include "src/'${opsysfile}'"
425#include "src/'${opsysfile}'" 428#include "src/'${machfile}'"
426#ifndef LIBS_MACHINE 429#ifndef LIBS_MACHINE
427#define LIBS_MACHINE 430#define LIBS_MACHINE
428#endif 431#endif
@@ -543,6 +546,7 @@ rm -f src/Makefile.tmp
543# If you are thinking about editing it, you should seriously consider 546# If you are thinking about editing it, you should seriously consider
544# editing \`Makefile.in' itself, or running \`${progname}' instead." 547# editing \`Makefile.in' itself, or running \`${progname}' instead."
545 /bin/sed < src/Makefile.in \ 548 /bin/sed < src/Makefile.in \
549 -e '/^# DIST: /d' \
546 -e 's;^\(CC[ ]*=\).*$;\1'"${cc};") > src/Makefile.tmp 550 -e 's;^\(CC[ ]*=\).*$;\1'"${cc};") > src/Makefile.tmp
547./move-if-change src/Makefile.tmp src/Makefile 551./move-if-change src/Makefile.tmp src/Makefile
548# Remind people not to edit this. 552# Remind people not to edit this.
@@ -555,6 +559,7 @@ rm -f lib-src/Makefile.tmp
555# If you are thinking about editing it, you should seriously consider 559# If you are thinking about editing it, you should seriously consider
556# editing \`Makefile.in' itself, or running \`${progname}' instead." 560# editing \`Makefile.in' itself, or running \`${progname}' instead."
557 /bin/sed < lib-src/Makefile.in \ 561 /bin/sed < lib-src/Makefile.in \
562 -e '/^# DIST: /d' \
558 -e 's;^\(CFLAGS=\).*$;\1'"${c_switch_site};" \ 563 -e 's;^\(CFLAGS=\).*$;\1'"${c_switch_site};" \
559 -e 's;^\(LOADLIBES=\).*$;\1'"${libsrc_libs};" \ 564 -e 's;^\(LOADLIBES=\).*$;\1'"${libsrc_libs};" \
560 -e 's;^\(CC=\).*$;\1'"${cc};") > lib-src/Makefile.tmp 565 -e 's;^\(CC=\).*$;\1'"${cc};") > lib-src/Makefile.tmp
diff --git a/etc/MACHINES b/etc/MACHINES
index e872da5f2aa..3d04d790916 100644
--- a/etc/MACHINES
+++ b/etc/MACHINES
@@ -97,7 +97,7 @@ System V rel 4 (-opsystem=usg5-4)
97 97
98 Most versions of V.4 support sockets. If `/usr/lib/libsocket.so' 98 Most versions of V.4 support sockets. If `/usr/lib/libsocket.so'
99 exists, your system supports them. If yours does not, you must add 99 exists, your system supports them. If yours does not, you must add
100 #undef HAVE_SOCKETS in config.h, aftern the inclusion of s-usg5-4.h. 100 #undef HAVE_SOCKETS in config.h, after the inclusion of s-usg5-4.h.
101 (Any system that supports Internet should implement sockets.) 101 (Any system that supports Internet should implement sockets.)
102 102
103Ultrix (-opsystem=bsd4-2) 103Ultrix (-opsystem=bsd4-2)
@@ -260,10 +260,14 @@ Cydra 5 (-machine=cydra5; -opsystem=usg5-3)
260 18.51 worked in one version of their operating system but stopped 260 18.51 worked in one version of their operating system but stopped
261 working in a newer version. This has not been fixed. 261 working in a newer version. This has not been fixed.
262 262
263DECstation (-machine=pmax; -opsystem=bsd4-3) 263DECstation (-machine=pmax; -opsystem=bsd4-3 or -opsystem=osf1)
264
265 OSF1 support merged in 18.59.
266
267 See under Ultrix for problems using X windows on Ultrix.
268 Note that this is a MIPS machine.
269 -opsystem=bsd4-3 is said to work ok with Ultrix 4.1.
264 270
265 Works, as of 18.55. See under Ultrix for problems using X windows
266 on Ultrix. Note that this is a MIPS machine.
267 For Ultrix versions prior to 4.0, you may need to delete 271 For Ultrix versions prior to 4.0, you may need to delete
268 the definition of START_FILES from src/m/pmax.h. 272 the definition of START_FILES from src/m/pmax.h.
269 273
@@ -571,6 +575,26 @@ Mips (-machine=mips or -machine=mips4; -opsystem=usg5-2-2, -opsystem=bsd4-3)
571 Use -machine=mips4 for RISCOS version 4; use -opsystem=bsd4-3 with 575 Use -machine=mips4 for RISCOS version 4; use -opsystem=bsd4-3 with
572 the BSD world. 576 the BSD world.
573 577
578 Note that the proper -machine option for the Decstation is `-machine=pmax'.
579
580 If you are compiling with GCC, then you must run fixincludes;
581 the alternative of using -traditional won't work because
582 the definition of SIGN_EXTEND_CHAR uses the keyword `signed'.
583
584 If the SYSV world is the default, then you probably need the following
585 line in etc/Makefile:
586
587 CFLAGS= -g -systype bsd43
588
589 Some operating systems on MIPS machines give SIGTRAP for division by
590 zero instead of the usual signals. The only real solution is to fix
591 the system to give a proper signal.
592
593 In the meantime, you can change init_data in data.c if you wish.
594 Change it to handle SIGTRAP as well as SIGFPE. But this will have a
595 great disadvantage: you will not be able to run Emacs under a
596 debugger. I think crashing on division by zero is a lesser problem.
597
574Motorola Delta (-machine=delta; -opsystem=usg5-3) 598Motorola Delta (-machine=delta; -opsystem=usg5-3)
575 599
576 Machine support added in version 18.56. 600 Machine support added in version 18.56.
diff --git a/lib-src/Makefile.in b/lib-src/Makefile.in
index e1651ccdc68..51f96b1a03f 100644
--- a/lib-src/Makefile.in
+++ b/lib-src/Makefile.in
@@ -16,14 +16,19 @@ SHELL = /bin/sh
16INSTALL = install 16INSTALL = install
17INSTALLFLAGS = 17INSTALLFLAGS =
18 18
19# Things that a user might actually run 19# Things that a user might actually run, which should be installed in bindir.
20INSTALLABLES = etags ctags emacsclient b2m 20INSTALLABLES = etags ctags emacsclient b2m
21 21
22# Things that Emacs runs internally, or during the build process. 22# Things that Emacs runs internally, or during the build process,
23# which should not be installed in bindir.
23UTILITIES= test-distrib wakeup make-docfile digest-doc sorted-doc \ 24UTILITIES= test-distrib wakeup make-docfile digest-doc sorted-doc \
24 movemail cvtmail fakemail yow env emacsserver hexl timer rcs2log vcdiff 25 movemail cvtmail fakemail yow env emacsserver hexl timer
25 26
26EXECUTABLES= ${UTILITIES} ${INSTALLABLES} 27# Like UTILITIES, but they're not system-dependent, and should not be
28# deleted by the distclean target.
29SCRIPTS= rcs2log vcdiff
30
31EXECUTABLES= ${UTILITIES} ${INSTALLABLES} ${SCRIPTS}
27 32
28# These things are edited by ../configure; don't change anything before 33# These things are edited by ../configure; don't change anything before
29# or including the '='; everything after that gets blown away. 34# or including the '='; everything after that gets blown away.
@@ -88,10 +93,10 @@ install.xenix:
88 93
89 94
90clean mostlyclean: 95clean mostlyclean:
91 -rm -f ${EXECUTABLES} core *.o 96 -rm -f ${INSTALLABLES} ${UTILITIES} core *.o
92 97
93distclean: 98distclean:
94 -rm -f ${EXECUTABLES} *~ \#* ../etc/DOC* core *.o 99 -rm -f ${INSTALLABLES} ${UTILITIES} *~ \#* ../etc/DOC* core *.o
95 cd ../arch-lib; rm -f ${EXECUTABLES} 100 cd ../arch-lib; rm -f ${EXECUTABLES}
96 101
97realclean: distclean 102realclean: distclean
diff --git a/lisp/diff.el b/lisp/diff.el
index c317baf3281..615d64d5fa8 100644
--- a/lisp/diff.el
+++ b/lisp/diff.el
@@ -184,7 +184,7 @@ With prefix arg, prompt for diff switches."
184 (setq buf 184 (setq buf
185 (compile-internal command 185 (compile-internal command
186 "No more differences" "Diff" 186 "No more differences" "Diff"
187 'diff-parse-differences))) 187 'diff-parse-differences))
188 (save-excursion 188 (save-excursion
189 (set-buffer buf) 189 (set-buffer buf)
190 (set (make-local-variable 'diff-old-file) old) 190 (set (make-local-variable 'diff-old-file) old)
diff --git a/lisp/mail/rmail.el b/lisp/mail/rmail.el
index 2d4a225cd65..62f067ff057 100644
--- a/lisp/mail/rmail.el
+++ b/lisp/mail/rmail.el
@@ -109,7 +109,43 @@ Called with region narrowed to unformatted header.")
109;;; this expression, you must change the code in rmail-nuke-pinhead-header 109;;; this expression, you must change the code in rmail-nuke-pinhead-header
110;;; that knows the exact ordering of the \\( \\) subexpressions. 110;;; that knows the exact ordering of the \\( \\) subexpressions.
111(defvar rmail-unix-mail-delimiter 111(defvar rmail-unix-mail-delimiter
112 "From \\([^ \n]*\\(\\|\".*\"[^ \n]*\\)\\) ?\\([^ \n]*\\) \\([^ ]*\\) *\\([0-9]*\\) \\([0-9:]*\\)\\( ?[A-Z]?[A-Z][A-Z]T\\( DST\\)?\\| ?[-+]?[0-9][0-9][0-9][0-9]\\|\\) [0-9][0-9]\\([0-9]*\\) *\\(remote from [^\n]*\\)?\n" nil) 112 (let ((time-zone-regexp
113 (concat "\\([A-Z]?[A-Z][A-Z]T\\( DST\\)?"
114 "\\|[-+]?[0-9][0-9][0-9][0-9]"
115 "\\|"
116 "\\) *")))
117 (concat
118 "From "
119
120 ;; Username, perhaps with a quoted section that can contain spaces.
121 "\\("
122 "[^ \n]*"
123 "\\(\\|\".*\"[^ \n]*\\)"
124 "\\) ?"
125
126 ;; The time the message was sent.
127 "\\([^ \n]*\\) *" ; day of the week
128 "\\([^ ]*\\) *" ; month
129 "\\([0-9]*\\) *" ; day of month
130 "\\([0-9:]*\\) *" ; time of day
131
132 ;; Perhaps a time zone, specified by an abbreviation, or by a
133 ;; numeric offset.
134 time-zone-regexp
135
136 ;; The year.
137 " [0-9][0-9]\\([0-9]*\\) *"
138
139 ;; On some systems the time zone can appear after the year, too.
140 time-zone-regexp
141
142 ;; I'm not sure what this is.
143 "\\(remote from [^\n]*\\)?"
144
145 "\n"))
146 nil)
147
148
113 149
114;;;; *** Rmail Mode *** 150;;;; *** Rmail Mode ***
115 151
@@ -704,10 +740,20 @@ argument causes us to read a file name and use that file as the inbox."
704 ;; have a Date: field. 740 ;; have a Date: field.
705 (if has-date 741 (if has-date
706 "" 742 ""
707 ;; If no time zone specified, assume est. 743 (concat
708 (if (= (match-beginning 7) (match-end 7)) 744 "Date: \\3, \\5 \\4 \\9 \\6 "
709 "Date: \\3, \\5 \\4 \\9 \\6 EST\n" 745
710 "Date: \\3, \\5 \\4 \\9 \\6\\7\n")) 746 ;; The timezone could be matched by group 7 or group 10.
747 ;; If neither of them matched, assume EST, since only
748 ;; Easterners would be so sloppy.
749 ;; It's a shame the substitution can't use "\\10".
750 (cond
751 ((/= (match-beginning 7) (match-end 7)) "\\7")
752 ((/= (match-beginning 10) (match-end 10))
753 (buffer-substring (match-beginning 10)
754 (match-end 10)))
755 (t "EST"))
756 "\n"))
711 ;; Keep and reformat the sender if we don't 757 ;; Keep and reformat the sender if we don't
712 ;; have a From: field. 758 ;; have a From: field.
713 (if has-from 759 (if has-from
diff --git a/lisp/subr.el b/lisp/subr.el
index c485e98c608..d50e5035ffe 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -338,13 +338,17 @@ With optional non-nil ALL then force then force redisplay of all mode-lines."
338 "Translate character FROM to TO at a low level. 338 "Translate character FROM to TO at a low level.
339This function creates a `keyboard-translate-table' if necessary 339This function creates a `keyboard-translate-table' if necessary
340and then modifies one entry in it." 340and then modifies one entry in it."
341 (or (boundp 'keyboard-translate-table) 341 (or (arrayp keyboard-translate-table)
342 (let ((table (make-string 256)) 342 (setq keyboard-translate-table ""))
343 (i 0)) 343 (if (or (> from (length keyboard-translate-table))
344 (while (< i 256) 344 (> to (length keyboard-translate-table)))
345 (aset table i i) 345 (progn
346 (setq i (1+ i))) 346 (let* ((i (length keyboard-translate-table))
347 (setq keyboard-translate-table table))) 347 (table (make-string (- 256 i) 0)))
348 (while (< i 256)
349 (aset table i i)
350 (setq i (1+ i)))
351 (setq keyboard-translate-table table))))
348 (aset keyboard-translate-table from to)) 352 (aset keyboard-translate-table from to))
349 353
350 354
diff --git a/make-dist b/make-dist
index c450c00201f..8796f0bfe50 100755
--- a/make-dist
+++ b/make-dist
@@ -58,7 +58,7 @@ fi
58 58
59# Find out which version of Emacs this is. 59# Find out which version of Emacs this is.
60version=`grep 'defconst[ ]*emacs-version' lisp/version.el \ 60version=`grep 'defconst[ ]*emacs-version' lisp/version.el \
61 | sed -e 's/^.*"\([0-9]+\.[0-9]+\)\..*$/\1/'` 61 | sed -e 's/^.*"\([0-9][0-9]*\.[0-9][0-9]*\)\..*$/\1/'`
62if [ ! "${version}" ]; then 62if [ ! "${version}" ]; then
63 echo "${progname}: can't find current emacs version in \`./lisp/version.el'." >&2 63 echo "${progname}: can't find current emacs version in \`./lisp/version.el'." >&2
64 exit 1 64 exit 1
diff --git a/src/m/hp9000s300.h b/src/m/hp9000s300.h
index 233f6f7b207..9663a5b4743 100644
--- a/src/m/hp9000s300.h
+++ b/src/m/hp9000s300.h
@@ -29,13 +29,21 @@ HP 9000 series 200 or 300 (-machine=hp9000s300)
29 (a derivative of sysV with some BSD features) or BSD 4.3 ported by Utah. 29 (a derivative of sysV with some BSD features) or BSD 4.3 ported by Utah.
30 30
31 If you're running HP-UX, specify `-opsystem=hpux'. 31 If you're running HP-UX, specify `-opsystem=hpux'.
32 32 If you're running BSD, specify `-opsystem=bsd4-3'.
33 If you're running Utah's BSD port, don't use this -machine option;
34 instead, specify `-machine=hp300bsd' and `-opsystem=bsd4-3'.
35NOTE-END */ 33NOTE-END */
36 34
37/* Define this symbol if you are running a version of HP-UX 35/* Do this here at the top of the file; including sys/wait.h may
38 which predates version 6.5 */ 36 include <endian.h>, which defines BIG_ENDIAN, which will conflict
37 with our definition of BIG_ENDIAN if we do this at the bottom. */
38#ifndef NOT_C_CODE
39#ifndef NO_SHORTNAMES
40#include <sys/wait.h>
41#define WAITTYPE int
42#endif
43#define WRETCODE(w) (((w) >> 8) & 0377)
44#endif
45
46/* Define NOMULTIPLEJOBS on versions of HPUX before 6.5. */
39 47
40/* #define NOMULTIPLEJOBS */ 48/* #define NOMULTIPLEJOBS */
41 49
@@ -55,8 +63,10 @@ NOTE-END */
55 63
56/* Define BIG_ENDIAN iff lowest-numbered byte in a word 64/* Define BIG_ENDIAN iff lowest-numbered byte in a word
57 is the most significant byte. */ 65 is the most significant byte. */
58 66/* Under BSD, <endian.h> defines this. */
67#ifndef BIG_ENDIAN
59#define BIG_ENDIAN 68#define BIG_ENDIAN
69#endif
60 70
61/* Define NO_ARG_ARRAY if you cannot take the address of the first of a 71/* Define NO_ARG_ARRAY if you cannot take the address of the first of a
62 * group of arguments and treat it as an array of the arguments. */ 72 * group of arguments and treat it as an array of the arguments. */
@@ -108,8 +118,11 @@ NOTE-END */
108 a very old, brain-dead version of PCC. */ 118 a very old, brain-dead version of PCC. */
109 119
110#ifdef BSD4_3 120#ifdef BSD4_3
121
111/* Tell crt0.c that this is an ordinary 68020. */ 122/* Tell crt0.c that this is an ordinary 68020. */
112#undef hp9000s300 123#undef hp9000s300
124#define m68000
125
113#define CRT0_DUMMIES bogus_a6, 126#define CRT0_DUMMIES bogus_a6,
114 127
115#define HAVE_ALLOCA 128#define HAVE_ALLOCA
@@ -167,21 +180,23 @@ NOTE-END */
167#endif 180#endif
168 181
169/* Define the BSTRING functions in terms of the sysV functions. 182/* Define the BSTRING functions in terms of the sysV functions.
170 Version 6 of HP-UX supplies these in the BSD library. */ 183 Version 6 of HP-UX supplies these in the BSD library,
184 but that library has reported bugs in `signal'. */
171 185
172#ifdef HPUX_5 186/* #ifdef HPUX_5 */
173#define bcopy(a,b,s) memcpy (b,a,s) 187#define bcopy(a,b,s) memcpy (b,a,s)
174#define bzero(a,s) memset (a,0,s) 188#define bzero(a,s) memset (a,0,s)
175#define bcmp memcmp 189#define bcmp memcmp
176#endif 190/* #endif */
177 191
178/* On USG systems these have different names. 192/* On USG systems these have different names.
179 Version 6 of HP-UX supplies these in the BSD library. */ 193 Version 6 of HP-UX supplies these in the BSD library,
194 which we currently want to avoid using. */
180 195
181#ifdef HPUX_5 196/* #ifdef HPUX_5 */
182#define index strchr 197#define index strchr
183#define rindex strrchr 198#define rindex strrchr
184#endif 199/* #endif */
185 200
186/* Define C_SWITCH_MACHINE to be +X if you want the s200/300 201/* Define C_SWITCH_MACHINE to be +X if you want the s200/300
187 * Emacs to run on both 68010 and 68020 based hp-ux's. 202 * Emacs to run on both 68010 and 68020 based hp-ux's.
@@ -202,18 +217,10 @@ NOTE-END */
202#endif 217#endif
203#endif 218#endif
204 219
205#endif /* not BSD4_3 */
206
207/* Define NEED_BSDTTY if you have such. */ 220/* Define NEED_BSDTTY if you have such. */
208 221
209#ifndef NOMULTIPLEJOBS 222#ifndef NOMULTIPLEJOBS
210#define NEED_BSDTTY 223#define NEED_BSDTTY
211#endif 224#endif
212 225
213#ifndef NOT_C_CODE 226#endif /* not BSD4_3 */
214#ifndef NO_SHORTNAMES
215#include <sys/wait.h>
216#define WAITTYPE int
217#endif
218#define WRETCODE(w) (((w) >> 8) & 0377)
219#endif
diff --git a/src/s/bsd4-3.h b/src/s/bsd4-3.h
index 332bbaa3856..583e6eb05a9 100644
--- a/src/s/bsd4-3.h
+++ b/src/s/bsd4-3.h
@@ -24,11 +24,11 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
24 */ 24 */
25 25
26#ifndef BSD4_3 26#ifndef BSD4_3
27#define BSD 43 /* 4.3 * 10, as cpp doesn't do floats */ 27#define BSD4_3
28#endif /* BSD4_3 */ 28#endif /* BSD4_3 */
29 29
30#ifndef BSD 30#ifndef BSD
31#define BSD4_3 1 31#define BSD
32#endif /* BSD */ 32#endif /* BSD */
33 33
34/* SYSTEM_TYPE should indicate the kind of system you are using. 34/* SYSTEM_TYPE should indicate the kind of system you are using.
@@ -127,6 +127,3 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
127 is named _avenrun. */ 127 is named _avenrun. */
128 128
129#define LDAV_SYMBOL "_avenrun" 129#define LDAV_SYMBOL "_avenrun"
130
131/* The return type of a signal handling function. */
132#define SIGTYPE int
diff --git a/src/systime.h b/src/systime.h
index 9dab2deacfa..787c51d89ab 100644
--- a/src/systime.h
+++ b/src/systime.h
@@ -17,8 +17,6 @@ You should have received a copy of the GNU General Public License
17along with GNU Emacs; see the file COPYING. If not, write to 17along with GNU Emacs; see the file COPYING. If not, write to
18the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ 18the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
19 19
20#ifdef NEED_TIME_H
21
22/* _h_BSDTYPES is checked because on ISC unix, socket.h includes 20/* _h_BSDTYPES is checked because on ISC unix, socket.h includes
23 both time.h and sys/time.h, and the later file is protected 21 both time.h and sys/time.h, and the later file is protected
24 from repeated inclusion. We just hope that other systems will 22 from repeated inclusion. We just hope that other systems will
@@ -26,11 +24,14 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
26#ifndef _h_BSDTYPES 24#ifndef _h_BSDTYPES
27#include <time.h> 25#include <time.h>
28#endif /* _h_BSDTYPES */ 26#endif /* _h_BSDTYPES */
29#else /* ! defined (NEED_TIME_H) */ 27
30#ifdef HAVE_TIMEVAL 28#ifdef HAVE_TIMEVAL
29#ifndef NEED_TIME_H /* Some versions of HP/UX shouldn't have
30 this included; time.h should do the trick
31 instead. */
31#include <sys/time.h> 32#include <sys/time.h>
32#endif /* ! defined (HAVE_TIMEVAL) */ 33#endif
33#endif /* ! defined (NEED_TIME_H) */ 34#endif
34 35
35 36
36/* EMACS_TIME is the type to use to represent temporal intervals - 37/* EMACS_TIME is the type to use to represent temporal intervals -
@@ -145,7 +146,7 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
145 expands to a statement which stores information about the current 146 expands to a statement which stores information about the current
146 time zone in its arguments. 147 time zone in its arguments.
147 148
148 *OFFSET is set to the number of minutes west of Greenwich at which 149 *OFFSET is set to the number of minutes EAST of Greenwich at which
149 the site's time zone is located. This should describe the offset 150 the site's time zone is located. This should describe the offset
150 to standard time only; if some sort of daylight savings time is in 151 to standard time only; if some sort of daylight savings time is in
151 effect, that should not affect this value. Note that the tm_gmtoff 152 effect, that should not affect this value. Note that the tm_gmtoff
@@ -178,17 +179,24 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
178 179
179/* If we have timeval, then we have gettimeofday; that's half the battle. */ 180/* If we have timeval, then we have gettimeofday; that's half the battle. */
180#ifdef HAVE_TIMEVAL 181#ifdef HAVE_TIMEVAL
181#define EMACS_GET_TZ_OFFSET_AND_SAVINGS(offset, savings_flag) \ 182#define EMACS_GET_TZ_OFFSET(offset) \
182 do { \ 183 do { \
183 struct timeval dummy; \ 184 struct timeval dummy; \
184 struct timezone zoneinfo; \ 185 struct timezone zoneinfo; \
185 \ 186 \
186 gettimeofday (&dummy, &zoneinfo); \ 187 gettimeofday (&dummy, &zoneinfo); \
187 *(offset) = zoneinfo.tz_minuteswest; \ 188 *(offset) = -zoneinfo.tz_minuteswest; \
188 *(savings_flag) = zoneinfo.tz_dsttime; \
189 } while (0) 189 } while (0)
190#endif /* ! defined (HAVE_TIMEVAL) */ 190#endif /* ! defined (HAVE_TIMEVAL) */
191 191
192/* System V derivatives have a timezone global variable. */
193#ifdef USG
194#define EMACS_GET_TZ_OFFSET(offset) \
195 do { \
196 tzset (); \
197 (offset) = timezone; \
198 }
199#endif
192 200
193/* The following sane systems have a tzname array. The timezone() function 201/* The following sane systems have a tzname array. The timezone() function
194 is a stupid idea; timezone names can only be determined geographically, 202 is a stupid idea; timezone names can only be determined geographically,
@@ -222,14 +230,22 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
222#endif /* ! defined (ultrix) || defined (hpux) || defined (_AIX) */ 230#endif /* ! defined (ultrix) || defined (hpux) || defined (_AIX) */
223 231
224/* If we can get all the information we need, let's define the macro! */ 232/* If we can get all the information we need, let's define the macro! */
225#if defined (EMACS_GET_TZ_OFFSET_AND_SAVINGS) && defined (EMACS_GET_TZ_NAMES) 233#if defined (EMACS_GET_TZ_OFFSET) && defined (EMACS_GET_TZ_NAMES)
226 234
227#define EMACS_CURRENT_TIME_ZONE(offset, savings_flag, standard, savings)\ 235#define EMACS_CURRENT_TIME_ZONE(offset, savings_flag, standard, savings)\
228 do { \ 236 do { \
229 EMACS_GET_TZ_OFFSET_AND_SAVINGS (offset, savings_flag); \ 237 EMACS_TIME t; \
238 long secs; \
239 struct tm *tmp; \
240 \
241 EMACS_GET_TIME (t); \
242 secs = EMACS_SECS (t); \
243 tmp = localtime (&secs); \
244 *(savings_flag) = tmp->tm_isdst; \
245 \
246 EMACS_GET_TZ_OFFSET (offset); \
230 EMACS_GET_TZ_NAMES (standard, savings); \ 247 EMACS_GET_TZ_NAMES (standard, savings); \
231 } while (0) 248 } while (0)
232 249#endif /* ! defined (EMACS_GET_TZ_OFFSET) && defined (EMACS_GET_TZ_NAMES) */
233#endif /* ! defined (EMACS_GET_TZ_OFFSET_AND_SAVINGS) && defined (EMACS_GET_TZ_NAMES) */
234 250
235#endif /* EMACS_CURRENT_TIME_ZONE */ 251#endif /* EMACS_CURRENT_TIME_ZONE */