diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/ChangeLog | 36 | ||||
-rw-r--r-- | src/Makefile.in | 8 | ||||
-rw-r--r-- | src/alloc.c | 3 | ||||
-rw-r--r-- | src/atimer.c | 3 | ||||
-rw-r--r-- | src/buffer.c | 3 | ||||
-rw-r--r-- | src/callproc.c | 3 | ||||
-rw-r--r-- | src/config.in | 275 | ||||
-rw-r--r-- | src/data.c | 2 | ||||
-rw-r--r-- | src/deps.mk | 1 | ||||
-rw-r--r-- | src/dired.c | 3 | ||||
-rw-r--r-- | src/dispnew.c | 3 | ||||
-rw-r--r-- | src/doc.c | 3 | ||||
-rw-r--r-- | src/doprnt.c | 2 | ||||
-rw-r--r-- | src/editfns.c | 2 | ||||
-rw-r--r-- | src/emacs.c | 3 | ||||
-rw-r--r-- | src/fileio.c | 3 | ||||
-rw-r--r-- | src/filelock.c | 3 | ||||
-rw-r--r-- | src/fns.c | 2 | ||||
-rw-r--r-- | src/getloadavg.c | 5 | ||||
-rw-r--r-- | src/getpagesize.h | 4 | ||||
-rw-r--r-- | src/gmalloc.c | 2 | ||||
-rw-r--r-- | src/image.c | 3 | ||||
-rw-r--r-- | src/keyboard.c | 3 | ||||
-rw-r--r-- | src/lisp.h | 1 | ||||
-rw-r--r-- | src/lread.c | 3 | ||||
-rw-r--r-- | src/mktime.c | 544 | ||||
-rw-r--r-- | src/print.c | 45 | ||||
-rw-r--r-- | src/process.c | 2 | ||||
-rw-r--r-- | src/process.h | 3 | ||||
-rw-r--r-- | src/ralloc.c | 2 | ||||
-rw-r--r-- | src/regex.c | 4 | ||||
-rw-r--r-- | src/sysdep.c | 2 | ||||
-rw-r--r-- | src/systty.h | 2 | ||||
-rw-r--r-- | src/term.c | 4 | ||||
-rw-r--r-- | src/termcap.c | 2 | ||||
-rw-r--r-- | src/xfns.c | 3 | ||||
-rw-r--r-- | src/xrdb.c | 3 | ||||
-rw-r--r-- | src/xselect.c | 3 | ||||
-rw-r--r-- | src/xsmfns.c | 3 | ||||
-rw-r--r-- | src/xterm.c | 3 |
40 files changed, 293 insertions, 711 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 4d2aa00cbd3..2265f12138e 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,38 @@ +2011-01-11 Paul Eggert <eggert@cs.ucla.edu> + + Give a name FLOAT_TO_STRING_BUFSIZE to the constant 350. + * lisp.h (FLOAT_TO_STRING_BUFSIZE): New macro. + * data.c (Fnumber_to_string): Use it. + * print.c (float_to_string, print_object): Likewise. + + Include <unistd.h> unilaterally. + * alloc.c, atimer.c, buffer.c, callproc.c, dired.c, dispnew.c, doc.c: + * doprnt.c, editfns.c, emacs.c, fileio.c, filelock.c, fns.c: + * getloadavg.c, getpagesize.h, gmalloc.c, image.c, keyboard.c: + * lread.c, process.c, process.h, ralloc.c, regex.c, sysdep.c: + * systty.h, term.c, termcap.c, xfns.c, xrdb.c, xselect.c, xsmfns.c: + * xterm.c: + Include <unistd.h> without worrying about HAVE_UNISTD_H, since + unistd.h is always present now, possibly supplied by gnulib. + + * mktime.c: Remove; moving to ../lib. + + Use gnulib's mktime module. + * deps.mk (mktime.o): Remove rule. + + Use gnulib's ftoastr module. + * print.c: Include ftoastr.h. + (FLT_RADIX, DBL_MANT_DIG, DBL_DIG, DBL_MIN, DOUBLE_DIGITS_BOUND): + Remove; no longer needed. + (float_to_string): Use dtoastr rather than rolling our own code, + which had an off-by-one bug on non-IEEE hosts. + + Automate syncing from gnulib. + * Makefile.in (lib): New macro. + (ALL_CFLAGS): Add -I$(lib) -I$(srcdir)/../lib. + ($(lib)/libgnu.a): New rule. + (temacs$(EXEEXT)): Also link $(lib)/libgnu.a. + 2011-01-11 Tassilo Horn <tassilo@member.fsf.org> * image.c (imagemagick_load_image, Finit_image_library): Free @@ -29520,4 +29555,3 @@ See ChangeLog.10 for earlier changes. You should have received a copy of the GNU General Public License along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. - diff --git a/src/Makefile.in b/src/Makefile.in index 57d76fc7568..8e26190da14 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -47,6 +47,7 @@ version = @version@ LIBOBJS = @LIBOBJS@ lispsource = $(srcdir)/../lisp +lib = ../lib libsrc = ../lib-src etc = ../etc oldXMenudir = ../oldXMenu @@ -320,6 +321,7 @@ MKDEPDIR=@MKDEPDIR@ ## ## FIXME? MYCPPFLAGS only referenced in etc/DEBUG. ALL_CFLAGS=-Demacs -DHAVE_CONFIG_H $(MYCPPFLAGS) -I. -I$(srcdir) \ + -I$(lib) -I$(srcdir)/../lib \ $(C_SWITCH_MACHINE) $(C_SWITCH_SYSTEM) $(C_SWITCH_X_SITE) \ $(C_SWITCH_X_SYSTEM) $(CFLAGS_SOUND) $(RSVG_CFLAGS) $(IMAGEMAGICK_CFLAGS) \ $(LIBXML2_CFLAGS) $(DBUS_CFLAGS) \ @@ -644,10 +646,12 @@ $(libsrc)/make-docfile$(EXEEXT): buildobj.h: Makefile echo "#define BUILDOBJ \"$(obj) $(otherobj) " "\"" > buildobj.h +$(lib)/libgnu.a: $(config_h) + cd $(lib) && $(MAKE) libgnu.a -temacs$(EXEEXT): $(START_FILES) stamp-oldxmenu $(obj) $(otherobj) +temacs$(EXEEXT): $(START_FILES) stamp-oldxmenu $(obj) $(otherobj) $(lib)/libgnu.a $(CC) $(LD_FIRSTFLAG) $(ALL_CFLAGS) $(TEMACS_LDFLAGS) $(TEMACS_LDFLAGS2) \ - -o temacs $(START_FILES) $(obj) $(otherobj) $(LIBES) + -o temacs $(START_FILES) $(obj) $(otherobj) $(lib)/libgnu.a $(LIBES) ## The following oldxmenu-related rules are only (possibly) used if ## HAVE_X11 && !USE_GTK, but there is no harm in always defining them diff --git a/src/alloc.c b/src/alloc.c index 089a7766ca4..9a249e679b7 100644 --- a/src/alloc.c +++ b/src/alloc.c @@ -59,9 +59,8 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ #undef GC_MALLOC_CHECK #endif -#ifdef HAVE_UNISTD_H #include <unistd.h> -#else +#ifndef HAVE_UNISTD_H extern POINTER_TYPE *sbrk (); #endif diff --git a/src/atimer.c b/src/atimer.c index 8230ebe60e9..5ecf45d0bf0 100644 --- a/src/atimer.c +++ b/src/atimer.c @@ -26,10 +26,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ #include "systime.h" #include "blockinput.h" #include "atimer.h" - -#ifdef HAVE_UNISTD_H #include <unistd.h> -#endif #ifdef HAVE_SYS_TIME_H #include <sys/time.h> diff --git a/src/buffer.c b/src/buffer.c index 52b76fae575..58e2702ec74 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -27,10 +27,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ #include <errno.h> #include <stdio.h> #include <setjmp.h> - -#ifdef HAVE_UNISTD_H #include <unistd.h> -#endif #include "lisp.h" #include "intervals.h" diff --git a/src/callproc.c b/src/callproc.c index 3972b93d46d..2648462e18b 100644 --- a/src/callproc.c +++ b/src/callproc.c @@ -25,10 +25,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ #include <stdio.h> #include <setjmp.h> #include <sys/types.h> - -#ifdef HAVE_UNISTD_H #include <unistd.h> -#endif #include <sys/file.h> #include <fcntl.h> diff --git a/src/config.in b/src/config.in index 3460bba576a..d8a9722d316 100644 --- a/src/config.in +++ b/src/config.in @@ -27,12 +27,13 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ #define EMACS_CONFIG_H +/* Define if the compiler is building for multiple architectures of Apple + platforms at once. */ +#undef AA_APPLE_UNIVERSAL_BUILD + /* Define if building universal (internal helper macro) */ #undef AC_APPLE_UNIVERSAL_BUILD -/* Define to 1 if the mktime function is broken. */ -#undef BROKEN_MKTIME - /* Define if Emacs cannot be dumped on your system. */ #undef CANNOT_DUMP @@ -86,6 +87,15 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ /* Define to 1 if gettimeofday accepts only one argument. */ #undef GETTIMEOFDAY_ONE_ARGUMENT +/* Define to 1 when the gnulib module getopt-gnu should be tested. */ +#undef GNULIB_TEST_GETOPT_GNU + +/* Define to 1 when the gnulib module mktime should be tested. */ +#undef GNULIB_TEST_MKTIME + +/* Define to 1 when the gnulib module time_r should be tested. */ +#undef GNULIB_TEST_TIME_R + /* Define to 1 if you want to use the GNU memory allocator. */ #undef GNU_MALLOC @@ -105,6 +115,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ /* Define to 1 if ALSA is available. */ #undef HAVE_ALSA +/* Define to 1 if strtold conforms to C99. */ +#undef HAVE_C99_STRTOLD + /* Define to 1 if you have the `cbrt' function. */ #undef HAVE_CBRT @@ -132,6 +145,22 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ /* Define to 1 if you have the `dbus_watch_get_unix_fd' function. */ #undef HAVE_DBUS_WATCH_GET_UNIX_FD +/* Define to 1 if you have the declaration of `getenv', and to 0 if you don't. + */ +#undef HAVE_DECL_GETENV + +/* Define to 1 if you have the declaration of `getopt_clip', and to 0 if you + don't. */ +#undef HAVE_DECL_GETOPT_CLIP + +/* Define to 1 if you have the declaration of `localtime_r', and to 0 if you + don't. */ +#undef HAVE_DECL_LOCALTIME_R + +/* Define to 1 if you have the declaration of `optreset', and to 0 if you + don't. */ +#undef HAVE_DECL_OPTRESET + /* Define to 1 if you have the declaration of `sys_siglist', and to 0 if you don't. */ #undef HAVE_DECL_SYS_SIGLIST @@ -426,6 +455,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ /* Define to 1 if you have the <locale.h> header file. */ #undef HAVE_LOCALE_H +/* Define to 1 if you have the `localtime_r' function. */ +#undef HAVE_LOCALTIME_R + /* Define to 1 if you have the `logb' function. */ #undef HAVE_LOGB @@ -494,9 +526,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ /* Define to 1 if you have the `mkstemp' function. */ #undef HAVE_MKSTEMP -/* Define to 1 if you have the `mktime' function. */ -#undef HAVE_MKTIME - /* Define to 1 if you have a working `mmap' system call. */ #undef HAVE_MMAP @@ -546,6 +575,123 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ /* Define to 1 if you have the `random' function. */ #undef HAVE_RANDOM +/* Define to 1 if chown is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_CHOWN + +/* Define to 1 if dup2 is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_DUP2 + +/* Define to 1 if dup3 is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_DUP3 + +/* Define to 1 if endusershell is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_ENDUSERSHELL + +/* Define to 1 if environ is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_ENVIRON + +/* Define to 1 if euidaccess is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_EUIDACCESS + +/* Define to 1 if faccessat is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_FACCESSAT + +/* Define to 1 if fchdir is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_FCHDIR + +/* Define to 1 if fchownat is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_FCHOWNAT + +/* Define to 1 if fsync is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_FSYNC + +/* Define to 1 if ftruncate is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_FTRUNCATE + +/* Define to 1 if getcwd is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_GETCWD + +/* Define to 1 if getdomainname is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_GETDOMAINNAME + +/* Define to 1 if getdtablesize is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_GETDTABLESIZE + +/* Define to 1 if getgroups is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_GETGROUPS + +/* Define to 1 if gethostname is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_GETHOSTNAME + +/* Define to 1 if getlogin is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_GETLOGIN + +/* Define to 1 if getlogin_r is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_GETLOGIN_R + +/* Define to 1 if getpagesize is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_GETPAGESIZE + +/* Define to 1 if getusershell is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_GETUSERSHELL + +/* Define to 1 if lchown is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_LCHOWN + +/* Define to 1 if link is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_LINK + +/* Define to 1 if linkat is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_LINKAT + +/* Define to 1 if lseek is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_LSEEK + +/* Define to 1 if pipe is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_PIPE + +/* Define to 1 if pipe2 is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_PIPE2 + +/* Define to 1 if pread is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_PREAD + +/* Define to 1 if pwrite is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_PWRITE + +/* Define to 1 if readlink is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_READLINK + +/* Define to 1 if readlinkat is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_READLINKAT + +/* Define to 1 if rmdir is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_RMDIR + +/* Define to 1 if setusershell is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_SETUSERSHELL + +/* Define to 1 if sleep is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_SLEEP + +/* Define to 1 if symlink is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_SYMLINK + +/* Define to 1 if symlinkat is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_SYMLINKAT + +/* Define to 1 if ttyname_r is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_TTYNAME_R + +/* Define to 1 if unlink is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_UNLINK + +/* Define to 1 if unlinkat is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_UNLINKAT + +/* Define to 1 if usleep is declared even after undefining macros. */ +#undef HAVE_RAW_DECL_USLEEP + /* Define to 1 if you have the `recvfrom' function. */ #undef HAVE_RECVFROM @@ -603,6 +749,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ /* Define to 1 if `speed_t' is declared by <termios.h>. */ #undef HAVE_SPEED_T +/* Define to 1 if you have the <stddef.h> header file. */ +#undef HAVE_STDDEF_H + /* Define to 1 if you have the <stdint.h> header file. */ #undef HAVE_STDINT_H @@ -717,6 +866,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ /* Define to 1 if `struct timeval' is declared by <sys/time.h>. */ #undef HAVE_TIMEVAL +/* Define to 1 if you have the <time.h> header file. */ +#undef HAVE_TIME_H + /* Define to 1 if `tm_gmtoff' is member of `struct tm'. */ #undef HAVE_TM_GMTOFF @@ -758,6 +910,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ /* Define to 1 if you have the <vfork.h> header file. */ #undef HAVE_VFORK_H +/* Define if you have the 'wchar_t' type. */ +#undef HAVE_WCHAR_T + /* Define if you have a window system. */ #undef HAVE_WINDOW_SYSTEM @@ -862,6 +1017,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ /* Define to 1 if you don't have struct exception in math.h. */ #undef NO_MATHERR +/* Define to 1 if your C compiler doesn't accept -c and -o together. */ +#undef NO_MINUS_C_MINUS_O + /* Define to 1 if `NSInteger' is defined. */ #undef NS_HAVE_NSINTEGER @@ -874,6 +1032,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ /* Define if the C compiler is the linker. */ #undef ORDINARY_LINK +/* Name of package */ +#undef PACKAGE + /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT @@ -957,28 +1118,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ /* Define to 1 if using the Motif X toolkit. */ #undef USE_MOTIF -/* Enable extensions on AIX 3, Interix. */ -#ifndef _ALL_SOURCE -# undef _ALL_SOURCE -#endif -/* Enable GNU extensions on systems that have them. */ -#ifndef _GNU_SOURCE -# undef _GNU_SOURCE -#endif -/* Enable threading extensions on Solaris. */ -#ifndef _POSIX_PTHREAD_SEMANTICS -# undef _POSIX_PTHREAD_SEMANTICS -#endif -/* Enable extensions on HP NonStop. */ -#ifndef _TANDEM_SOURCE -# undef _TANDEM_SOURCE -#endif -/* Enable general extensions on Solaris. */ -#ifndef __EXTENSIONS__ -# undef __EXTENSIONS__ -#endif - - /* Define to 1 if we should use toolkit scroll bars. */ #undef USE_TOOLKIT_SCROLL_BARS @@ -988,6 +1127,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ /* Define to 1 if using an X toolkit. */ #undef USE_X_TOOLKIT +/* Version number of package */ +#undef VERSION + /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most significant byte first (like Motorola and SPARC, unlike Intel). */ #if defined AC_APPLE_UNIVERSAL_BUILD @@ -1026,6 +1168,31 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ /* Define to 1 if you need to in order for `stat' and other things to work. */ #undef _POSIX_SOURCE +/* Define to 500 only on HP-UX. */ +#undef _XOPEN_SOURCE + +/* Enable extensions on AIX 3, Interix. */ +#ifndef _ALL_SOURCE +# undef _ALL_SOURCE +#endif +/* Enable GNU extensions on systems that have them. */ +#ifndef _GNU_SOURCE +# undef _GNU_SOURCE +#endif +/* Enable threading extensions on Solaris. */ +#ifndef _POSIX_PTHREAD_SEMANTICS +# undef _POSIX_PTHREAD_SEMANTICS +#endif +/* Enable extensions on HP NonStop. */ +#ifndef _TANDEM_SOURCE +# undef _TANDEM_SOURCE +#endif +/* Enable general extensions on Solaris. */ +#ifndef __EXTENSIONS__ +# undef __EXTENSIONS__ +#endif + + /* Define to rpl_ if the getopt replacement functions and variables should be used. */ #undef __GETOPT_PREFIX @@ -1033,10 +1200,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ /* Define like PROTOTYPES; this can be used by system headers. */ #undef __PROTOTYPES -/* Define to compiler's equivalent of C99 restrict keyword. Don't define if - equivalent is `__restrict'. */ -#undef __restrict - /* Define to compiler's equivalent of C99 restrict keyword in array declarations. Define as empty for no equivalent. */ #undef __restrict_arr @@ -1050,18 +1213,61 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ /* Define to empty if `const' does not conform to ANSI C. */ #undef const +/* Define to `__inline__' or `__inline' if that's what the C compiler + calls it, or to nothing if 'inline' is not supported under any name. */ +#ifndef __cplusplus +#undef inline +#endif + +/* Work around a bug in Apple GCC 4.0.1 build 5465: In C99 mode, it supports + the ISO C 99 semantics of 'extern inline' (unlike the GNU C semantics of + earlier versions), but does not display it by setting __GNUC_STDC_INLINE__. + __APPLE__ && __MACH__ test for MacOS X. + __APPLE_CC__ tests for the Apple compiler and its version. + __STDC_VERSION__ tests for the C99 mode. */ +#if defined __APPLE__ && defined __MACH__ && __APPLE_CC__ >= 5465 && !defined __cplusplus && __STDC_VERSION__ >= 199901L && !defined __GNUC_STDC_INLINE__ +# define __GNUC_STDC_INLINE__ 1 +#endif + /* Define to a type if <wchar.h> does not define. */ #undef mbstate_t /* Define to `int' if <sys/types.h> does not define. */ #undef pid_t +/* Define to the equivalent of the C99 'restrict' keyword, or to + nothing if this is not supported. Do not define if restrict is + supported directly. */ +#undef restrict +/* Work around a bug in Sun C++: it does not support _Restrict or + __restrict__, even though the corresponding Sun C compiler ends up with + "#define restrict _Restrict" or "#define restrict __restrict__" in the + previous line. Perhaps some future version of Sun C++ will work with + restrict; if so, hopefully it defines __RESTRICT like Sun C does. */ +#if defined __SUNPRO_CC && !defined __RESTRICT +# define _Restrict +# define __restrict__ +#endif + /* Define to `unsigned int' if <sys/types.h> does not define. */ #undef size_t /* Define to any substitute for sys_siglist. */ #undef sys_siglist +/* Define as a marker that can be attached to declarations that might not + be used. This helps to reduce warnings, such as from + GCC -Wunused-parameter. */ +#if __GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7) +# define _GL_UNUSED __attribute__ ((__unused__)) +#else +# define _GL_UNUSED +#endif +/* The name _UNUSED_PARAMETER_ is an earlier spelling, although the name + is a misnomer outside of parameter lists. */ +#define _UNUSED_PARAMETER_ _GL_UNUSED + + /* Define as `fork' if `vfork' does not work. */ #undef vfork @@ -1126,11 +1332,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ #endif #endif -/* Avoid link-time collision with system mktime if we will use our own. */ -#if ! HAVE_MKTIME || BROKEN_MKTIME -#define mktime emacs_mktime -#endif - #define my_strftime nstrftime /* for strftime.c */ /* These default definitions are good for almost all machines. diff --git a/src/data.c b/src/data.c index a9e1a3ba888..603801b1739 100644 --- a/src/data.c +++ b/src/data.c @@ -2375,7 +2375,7 @@ NUMBER may be an integer or a floating point number. */) if (FLOATP (number)) { - char pigbuf[350]; /* see comments in float_to_string */ + char pigbuf[FLOAT_TO_STRING_BUFSIZE]; float_to_string (pigbuf, XFLOAT_DATA (number)); return build_string (pigbuf); diff --git a/src/deps.mk b/src/deps.mk index eebf98ec003..eb7dfedd3b6 100644 --- a/src/deps.mk +++ b/src/deps.mk @@ -138,7 +138,6 @@ md5.o: md5.c md5.h $(config_h) minibuf.o: minibuf.c syntax.h frame.h window.h keyboard.h systime.h \ buffer.h commands.h character.h msdos.h $(INTERVALS_H) keymap.h \ termhooks.h lisp.h $(config_h) coding.h -mktime.o: mktime.c $(config_h) msdos.o: msdos.c msdos.h dosfns.h systime.h termhooks.h dispextern.h frame.h \ termopts.h termchar.h character.h coding.h ccl.h disptab.h window.h \ keyboard.h $(INTERVALS_H) buffer.h commands.h blockinput.h atimer.h \ diff --git a/src/dired.c b/src/dired.c index f2149e1feb8..0f91ccbfbf1 100644 --- a/src/dired.c +++ b/src/dired.c @@ -31,10 +31,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ #include <grp.h> #include <errno.h> - -#ifdef HAVE_UNISTD_H #include <unistd.h> -#endif /* The d_nameln member of a struct dirent includes the '\0' character on some systems, but not on others. What's worse, you can't tell diff --git a/src/dispnew.c b/src/dispnew.c index 39a5e690168..eb632aeb264 100644 --- a/src/dispnew.c +++ b/src/dispnew.c @@ -23,10 +23,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ #include <stdio.h> #include <ctype.h> #include <setjmp.h> - -#ifdef HAVE_UNISTD_H #include <unistd.h> -#endif #include "lisp.h" #include "termchar.h" diff --git a/src/doc.c b/src/doc.c index ab4d401d616..d5f8099603c 100644 --- a/src/doc.c +++ b/src/doc.c @@ -26,10 +26,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ #include <ctype.h> #include <setjmp.h> #include <fcntl.h> - -#ifdef HAVE_UNISTD_H #include <unistd.h> -#endif #include "lisp.h" #include "buffer.h" diff --git a/src/doprnt.c b/src/doprnt.c index 2e46df2d908..6b07a68c0bc 100644 --- a/src/doprnt.c +++ b/src/doprnt.c @@ -29,9 +29,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ #include <float.h> #endif -#ifdef HAVE_UNISTD_H #include <unistd.h> -#endif #include "lisp.h" diff --git a/src/editfns.c b/src/editfns.c index b5ffb82e918..73abf779110 100644 --- a/src/editfns.c +++ b/src/editfns.c @@ -29,9 +29,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ #include <pwd.h> #endif -#ifdef HAVE_UNISTD_H #include <unistd.h> -#endif #ifdef HAVE_SYS_UTSNAME_H #include <sys/utsname.h> diff --git a/src/emacs.c b/src/emacs.c index 6a04eda9aa2..dca7245f986 100644 --- a/src/emacs.c +++ b/src/emacs.c @@ -28,10 +28,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ #include <sys/types.h> #include <sys/file.h> #include <setjmp.h> - -#ifdef HAVE_UNISTD_H #include <unistd.h> -#endif #ifdef WINDOWSNT #include <fcntl.h> diff --git a/src/fileio.c b/src/fileio.c index 9ec7a8a3449..f4f90658d3a 100644 --- a/src/fileio.c +++ b/src/fileio.c @@ -25,10 +25,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ #include <sys/types.h> #include <sys/stat.h> #include <setjmp.h> - -#ifdef HAVE_UNISTD_H #include <unistd.h> -#endif #if !defined (S_ISLNK) && defined (S_IFLNK) # define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK) diff --git a/src/filelock.c b/src/filelock.c index 4602c9dad7d..02c5eb05ac9 100644 --- a/src/filelock.c +++ b/src/filelock.c @@ -32,10 +32,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ #include <sys/file.h> #include <fcntl.h> - -#ifdef HAVE_UNISTD_H #include <unistd.h> -#endif #ifdef __FreeBSD__ #include <sys/sysctl.h> diff --git a/src/fns.c b/src/fns.c index 3b0a19e9239..cd95f6c27fd 100644 --- a/src/fns.c +++ b/src/fns.c @@ -21,9 +21,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ #include <config.h> -#ifdef HAVE_UNISTD_H #include <unistd.h> -#endif #include <time.h> #include <setjmp.h> diff --git a/src/getloadavg.c b/src/getloadavg.c index 779a0ef804c..3b25e691166 100644 --- a/src/getloadavg.c +++ b/src/getloadavg.c @@ -355,10 +355,7 @@ extern int errno; # define LDAV_SYMBOL "avenrun" # endif -# ifdef HAVE_UNISTD_H -# include <unistd.h> -# endif - +# include <unistd.h> # include <stdio.h> /* LOAD_AVE_TYPE should only get defined if we're going to use the diff --git a/src/getpagesize.h b/src/getpagesize.h index 407e5ad4674..174e5c4667c 100644 --- a/src/getpagesize.h +++ b/src/getpagesize.h @@ -19,9 +19,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ #ifndef HAVE_GETPAGESIZE -# ifdef HAVE_UNISTD_H -# include <unistd.h> -# endif +# include <unistd.h> # ifdef _SC_PAGESIZE # define getpagesize() sysconf(_SC_PAGESIZE) diff --git a/src/gmalloc.c b/src/gmalloc.c index 8314798b171..7a5e95c7435 100644 --- a/src/gmalloc.c +++ b/src/gmalloc.c @@ -72,9 +72,7 @@ Fifth Floor, Boston, MA 02110-1301, USA. #define CHAR_BIT 8 #endif -#ifdef HAVE_UNISTD_H #include <unistd.h> -#endif #ifdef USE_PTHREAD #include <pthread.h> diff --git a/src/image.c b/src/image.c index bb2ad20f5ff..023c9763abd 100644 --- a/src/image.c +++ b/src/image.c @@ -22,10 +22,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ #include <stdio.h> #include <math.h> #include <ctype.h> - -#ifdef HAVE_UNISTD_H #include <unistd.h> -#endif #ifdef HAVE_PNG #if defined HAVE_LIBPNG_PNG_H diff --git a/src/keyboard.c b/src/keyboard.c index 6ec8ba7ba23..a2ba83cdb67 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -58,10 +58,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ #include "syssignal.h" #include <sys/types.h> -#ifdef HAVE_UNISTD_H #include <unistd.h> -#endif - #include <fcntl.h> /* This is to get the definitions of the XK_ symbols. */ diff --git a/src/lisp.h b/src/lisp.h index eadbbacbff4..1f507123d83 100644 --- a/src/lisp.h +++ b/src/lisp.h @@ -2781,6 +2781,7 @@ extern void print_error_message (Lisp_Object, Lisp_Object, const char *, Lisp_Object); extern Lisp_Object internal_with_output_to_temp_buffer (const char *, Lisp_Object (*) (Lisp_Object), Lisp_Object); +#define FLOAT_TO_STRING_BUFSIZE 350 extern void float_to_string (unsigned char *, double); extern void syms_of_print (void); diff --git a/src/lread.c b/src/lread.c index bc371fc02b0..4c73cc36dcf 100644 --- a/src/lread.c +++ b/src/lread.c @@ -45,10 +45,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ #include "msdos.h" #endif -#ifdef HAVE_UNISTD_H #include <unistd.h> -#endif - #include <math.h> #ifdef HAVE_SETLOCALE diff --git a/src/mktime.c b/src/mktime.c deleted file mode 100644 index ede151981f4..00000000000 --- a/src/mktime.c +++ /dev/null @@ -1,544 +0,0 @@ -/* Convert a `struct tm' to a time_t value. - Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002, 2003, - 2004, 2005, 2006, 2007 Free Software Foundation, Inc. - Contributed by Paul Eggert (eggert@twinsun.com). - - NOTE: The canonical source of this file is maintained with the GNU C Library. - Bugs can be reported to bug-glibc@gnu.org. - - This program is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any - later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, - USA. */ - -/* Define this to have a standalone program to test this implementation of - mktime. */ -/* #define DEBUG 1 */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#ifdef _LIBC -# define HAVE_LIMITS_H 1 -# define STDC_HEADERS 1 -#endif - -/* Assume that leap seconds are possible, unless told otherwise. - If the host has a `zic' command with a `-L leapsecondfilename' option, - then it supports leap seconds; otherwise it probably doesn't. */ -#ifndef LEAP_SECONDS_POSSIBLE -# define LEAP_SECONDS_POSSIBLE 1 -#endif - -#include <sys/types.h> /* Some systems define `time_t' here. */ -#include <time.h> - -#if HAVE_LIMITS_H -# include <limits.h> -#endif - -#if DEBUG -# include <stdio.h> -# if STDC_HEADERS -# include <stdlib.h> -# endif -/* Make it work even if the system's libc has its own mktime routine. */ -# define mktime my_mktime -#endif /* DEBUG */ - -#ifndef CHAR_BIT -# define CHAR_BIT 8 -#endif - -/* The extra casts work around common compiler bugs. */ -#define TYPE_SIGNED(t) (! ((t) 0 < (t) -1)) -/* The outer cast is needed to work around a bug in Cray C 5.0.3.0. - It is necessary at least when t == time_t. */ -#define TYPE_MINIMUM(t) ((t) (TYPE_SIGNED (t) \ - ? ~ (t) 0 << (sizeof (t) * CHAR_BIT - 1) : (t) 0)) -#define TYPE_MAXIMUM(t) ((t) (~ (t) 0 - TYPE_MINIMUM (t))) - -#ifndef INT_MIN -# define INT_MIN TYPE_MINIMUM (int) -#endif -#ifndef INT_MAX -# define INT_MAX TYPE_MAXIMUM (int) -#endif - -#ifndef TIME_T_MIN -# define TIME_T_MIN TYPE_MINIMUM (time_t) -#endif -#ifndef TIME_T_MAX -# define TIME_T_MAX TYPE_MAXIMUM (time_t) -#endif - -#define TM_YEAR_BASE 1900 -#define EPOCH_YEAR 1970 - -#ifndef __isleap -/* Nonzero if YEAR is a leap year (every 4 years, - except every 100th isn't, and every 400th is). */ -# define __isleap(year) \ - ((year) % 4 == 0 && ((year) % 100 != 0 || (year) % 400 == 0)) -#endif - -/* How many days come before each month (0-12). */ -const unsigned short int __mon_yday[2][13] = - { - /* Normal years. */ - { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365 }, - /* Leap years. */ - { 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366 } - }; - - -#ifdef _LIBC -# define my_mktime_localtime_r __localtime_r -#else -/* If we're a mktime substitute in a GNU program, then prefer - localtime to localtime_r, since many localtime_r implementations - are buggy. */ -static struct tm * -my_mktime_localtime_r (const time_t *t, struct tm *tp) -{ - struct tm *l = localtime (t); - if (! l) - return 0; - *tp = *l; - return tp; -} -#endif /* ! _LIBC */ - - -/* Yield the difference between (YEAR-YDAY HOUR:MIN:SEC) and (*TP), - measured in seconds, ignoring leap seconds. - YEAR uses the same numbering as TM->tm_year. - All values are in range, except possibly YEAR. - If TP is null, return a nonzero value. - If overflow occurs, yield the low order bits of the correct answer. */ -static time_t -ydhms_tm_diff (int year, int yday, int hour, int min, int sec, const struct tm *tp) -{ - if (!tp) - return 1; - else - { - /* Compute intervening leap days correctly even if year is negative. - Take care to avoid int overflow. time_t overflow is OK, since - only the low order bits of the correct time_t answer are needed. - Don't convert to time_t until after all divisions are done, since - time_t might be unsigned. */ - int a4 = (year >> 2) + (TM_YEAR_BASE >> 2) - ! (year & 3); - int b4 = (tp->tm_year >> 2) + (TM_YEAR_BASE >> 2) - ! (tp->tm_year & 3); - int a100 = a4 / 25 - (a4 % 25 < 0); - int b100 = b4 / 25 - (b4 % 25 < 0); - int a400 = a100 >> 2; - int b400 = b100 >> 2; - int intervening_leap_days = (a4 - b4) - (a100 - b100) + (a400 - b400); - time_t years = year - (time_t) tp->tm_year; - time_t days = (365 * years + intervening_leap_days - + (yday - tp->tm_yday)); - return (60 * (60 * (24 * days + (hour - tp->tm_hour)) - + (min - tp->tm_min)) - + (sec - tp->tm_sec)); - } -} - -/* Use CONVERT to convert *T to a broken down time in *TP. - If *T is out of range for conversion, adjust it so that - it is the nearest in-range value and then convert that. */ -static struct tm * -ranged_convert (struct tm *(*convert) (const time_t *, struct tm *), - time_t *t, struct tm *tp) -{ - struct tm *r; - - if (! (r = (*convert) (t, tp)) && *t) - { - time_t bad = *t; - time_t ok = 0; - struct tm tm; - - /* BAD is a known unconvertible time_t, and OK is a known good one. - Use binary search to narrow the range between BAD and OK until - they differ by 1. */ - while (bad != ok + (bad < 0 ? -1 : 1)) - { - time_t mid = *t = (bad < 0 - ? bad + ((ok - bad) >> 1) - : ok + ((bad - ok) >> 1)); - if ((r = (*convert) (t, tp))) - { - tm = *r; - ok = mid; - } - else - bad = mid; - } - - if (!r && ok) - { - /* The last conversion attempt failed; - revert to the most recent successful attempt. */ - *t = ok; - *tp = tm; - r = tp; - } - } - - return r; -} - - -/* Convert *TP to a time_t value, inverting - the monotonic and mostly-unit-linear conversion function CONVERT. - Use *OFFSET to keep track of a guess at the offset of the result, - compared to what the result would be for UTC without leap seconds. - If *OFFSET's guess is correct, only one CONVERT call is needed. */ -time_t -__mktime_internal (struct tm *tp, struct tm *(*convert) (const time_t *, struct tm *), - time_t *offset) -{ - time_t t, dt, t0, t1, t2; - struct tm tm; - - /* The maximum number of probes (calls to CONVERT) should be enough - to handle any combinations of time zone rule changes, solar time, - leap seconds, and oscillations around a spring-forward gap. - POSIX.1 prohibits leap seconds, but some hosts have them anyway. */ - int remaining_probes = 6; - - /* Time requested. Copy it in case CONVERT modifies *TP; this can - occur if TP is localtime's returned value and CONVERT is localtime. */ - int sec = tp->tm_sec; - int min = tp->tm_min; - int hour = tp->tm_hour; - int mday = tp->tm_mday; - int mon = tp->tm_mon; - int year_requested = tp->tm_year; - int isdst = tp->tm_isdst; - - /* 1 if the previous probe was DST. */ - int dst2; - - /* Ensure that mon is in range, and set year accordingly. */ - int mon_remainder = mon % 12; - int negative_mon_remainder = mon_remainder < 0; - int mon_years = mon / 12 - negative_mon_remainder; - int year = year_requested + mon_years; - - /* The other values need not be in range: - the remaining code handles minor overflows correctly, - assuming int and time_t arithmetic wraps around. - Major overflows are caught at the end. */ - - /* Calculate day of year from year, month, and day of month. - The result need not be in range. */ - int yday = ((__mon_yday[__isleap (year + TM_YEAR_BASE)] - [mon_remainder + 12 * negative_mon_remainder]) - + mday - 1); - - int sec_requested = sec; - - /* Only years after 1970 are defined. - If year is 69, it might still be representable due to - timezone differences. */ - if (year < 69) - return -1; - -#if LEAP_SECONDS_POSSIBLE - /* Handle out-of-range seconds specially, - since ydhms_tm_diff assumes every minute has 60 seconds. */ - if (sec < 0) - sec = 0; - if (59 < sec) - sec = 59; -#endif - - /* Invert CONVERT by probing. First assume the same offset as last time. - Then repeatedly use the error to improve the guess. */ - - tm.tm_year = EPOCH_YEAR - TM_YEAR_BASE; - tm.tm_yday = tm.tm_hour = tm.tm_min = tm.tm_sec = 0; - t0 = ydhms_tm_diff (year, yday, hour, min, sec, &tm); - - for (t = t1 = t2 = t0 + *offset, dst2 = 0; - (dt = ydhms_tm_diff (year, yday, hour, min, sec, - ranged_convert (convert, &t, &tm))); - t1 = t2, t2 = t, t += dt, dst2 = tm.tm_isdst != 0) - if (t == t1 && t != t2 - && (tm.tm_isdst < 0 - || (isdst < 0 - ? dst2 <= (tm.tm_isdst != 0) - : (isdst != 0) != (tm.tm_isdst != 0)))) - /* We can't possibly find a match, as we are oscillating - between two values. The requested time probably falls - within a spring-forward gap of size DT. Follow the common - practice in this case, which is to return a time that is DT - away from the requested time, preferring a time whose - tm_isdst differs from the requested value. (If no tm_isdst - was requested and only one of the two values has a nonzero - tm_isdst, prefer that value.) In practice, this is more - useful than returning -1. */ - break; - else if (--remaining_probes == 0) - return -1; - - /* If we have a match, check whether tm.tm_isdst has the requested - value, if any. */ - if (dt == 0 && isdst != tm.tm_isdst && 0 <= isdst && 0 <= tm.tm_isdst) - { - /* tm.tm_isdst has the wrong value. Look for a neighboring - time with the right value, and use its UTC offset. - Heuristic: probe the previous three calendar quarters (approximately), - looking for the desired isdst. This isn't perfect, - but it's good enough in practice. */ - int quarter = 7889238; /* seconds per average 1/4 Gregorian year */ - int i; - - /* If we're too close to the time_t limit, look in future quarters. */ - if (t < TIME_T_MIN + 3 * quarter) - quarter = -quarter; - - for (i = 1; i <= 3; i++) - { - time_t ot = t - i * quarter; - struct tm otm; - ranged_convert (convert, &ot, &otm); - if (otm.tm_isdst == isdst) - { - /* We found the desired tm_isdst. - Extrapolate back to the desired time. */ - t = ot + ydhms_tm_diff (year, yday, hour, min, sec, &otm); - ranged_convert (convert, &t, &tm); - break; - } - } - } - - *offset = t - t0; - -#if LEAP_SECONDS_POSSIBLE - if (sec_requested != tm.tm_sec) - { - /* Adjust time to reflect the tm_sec requested, not the normalized value. - Also, repair any damage from a false match due to a leap second. */ - t += sec_requested - sec + (sec == 0 && tm.tm_sec == 60); - if (! (*convert) (&t, &tm)) - return -1; - } -#endif - - if (TIME_T_MAX / INT_MAX / 366 / 24 / 60 / 60 < 3) - { - /* time_t isn't large enough to rule out overflows in ydhms_tm_diff, - so check for major overflows. A gross check suffices, - since if t has overflowed, it is off by a multiple of - TIME_T_MAX - TIME_T_MIN + 1. So ignore any component of - the difference that is bounded by a small value. */ - - double dyear = (double) year_requested + mon_years - tm.tm_year; - double dday = 366 * dyear + mday; - double dsec = 60 * (60 * (24 * dday + hour) + min) + sec_requested; - - /* On Irix4.0.5 cc, dividing TIME_T_MIN by 3 does not produce - correct results, ie., it erroneously gives a positive value - of 715827882. Setting a variable first then doing math on it - seems to work. (ghazi@caip.rutgers.edu) */ - - const time_t time_t_max = TIME_T_MAX; - const time_t time_t_min = TIME_T_MIN; - - if (time_t_max / 3 - time_t_min / 3 < (dsec < 0 ? - dsec : dsec)) - return -1; - } - - if (year == 69) - { - /* If year was 69, need to check whether the time was representable - or not. */ - if (t < 0 || t > 2 * 24 * 60 * 60) - return -1; - } - - *tp = tm; - return t; -} - - -static time_t localtime_offset; - -/* Convert *TP to a time_t value. */ -time_t -mktime (tp) - struct tm *tp; -{ -#ifdef _LIBC - /* POSIX.1 8.1.1 requires that whenever mktime() is called, the - time zone names contained in the external variable `tzname' shall - be set as if the tzset() function had been called. */ - __tzset (); -#endif - - return __mktime_internal (tp, my_mktime_localtime_r, &localtime_offset); -} - -#ifdef weak_alias -weak_alias (mktime, timelocal) -#endif - -#if DEBUG - -static int -not_equal_tm (a, b) - struct tm *a; - struct tm *b; -{ - return ((a->tm_sec ^ b->tm_sec) - | (a->tm_min ^ b->tm_min) - | (a->tm_hour ^ b->tm_hour) - | (a->tm_mday ^ b->tm_mday) - | (a->tm_mon ^ b->tm_mon) - | (a->tm_year ^ b->tm_year) - | (a->tm_mday ^ b->tm_mday) - | (a->tm_yday ^ b->tm_yday) - | (a->tm_isdst ^ b->tm_isdst)); -} - -static void -print_tm (tp) - struct tm *tp; -{ - if (tp) - printf ("%04d-%02d-%02d %02d:%02d:%02d yday %03d wday %d isdst %d", - tp->tm_year + TM_YEAR_BASE, tp->tm_mon + 1, tp->tm_mday, - tp->tm_hour, tp->tm_min, tp->tm_sec, - tp->tm_yday, tp->tm_wday, tp->tm_isdst); - else - printf ("0"); -} - -static int -check_result (tk, tmk, tl, lt) - time_t tk; - struct tm tmk; - time_t tl; - struct tm *lt; -{ - if (tk != tl || !lt || not_equal_tm (&tmk, lt)) - { - printf ("mktime ("); - print_tm (&tmk); - printf (")\nyields ("); - print_tm (lt); - printf (") == %ld, should be %ld\n", (long) tl, (long) tk); - return 1; - } - - return 0; -} - -int -main (argc, argv) - int argc; - char **argv; -{ - int status = 0; - struct tm tm, tmk, tml; - struct tm *lt; - time_t tk, tl; - char trailer; - - if ((argc == 3 || argc == 4) - && (sscanf (argv[1], "%d-%d-%d%c", - &tm.tm_year, &tm.tm_mon, &tm.tm_mday, &trailer) - == 3) - && (sscanf (argv[2], "%d:%d:%d%c", - &tm.tm_hour, &tm.tm_min, &tm.tm_sec, &trailer) - == 3)) - { - tm.tm_year -= TM_YEAR_BASE; - tm.tm_mon--; - tm.tm_isdst = argc == 3 ? -1 : atoi (argv[3]); - tmk = tm; - tl = mktime (&tmk); - lt = localtime (&tl); - if (lt) - { - tml = *lt; - lt = &tml; - } - printf ("mktime returns %ld == ", (long) tl); - print_tm (&tmk); - printf ("\n"); - status = check_result (tl, tmk, tl, lt); - } - else if (argc == 4 || (argc == 5 && strcmp (argv[4], "-") == 0)) - { - time_t from = atol (argv[1]); - time_t by = atol (argv[2]); - time_t to = atol (argv[3]); - - if (argc == 4) - for (tl = from; tl <= to; tl += by) - { - lt = localtime (&tl); - if (lt) - { - tmk = tml = *lt; - tk = mktime (&tmk); - status |= check_result (tk, tmk, tl, tml); - } - else - { - printf ("localtime (%ld) yields 0\n", (long) tl); - status = 1; - } - } - else - for (tl = from; tl <= to; tl += by) - { - /* Null benchmark. */ - lt = localtime (&tl); - if (lt) - { - tmk = tml = *lt; - tk = tl; - status |= check_result (tk, tmk, tl, tml); - } - else - { - printf ("localtime (%ld) yields 0\n", (long) tl); - status = 1; - } - } - } - else - printf ("Usage:\ -\t%s YYYY-MM-DD HH:MM:SS [ISDST] # Test given time.\n\ -\t%s FROM BY TO # Test values FROM, FROM+BY, ..., TO.\n\ -\t%s FROM BY TO - # Do not test those values (for benchmark).\n", - argv[0], argv[0], argv[0]); - - return status; -} - -#endif /* DEBUG */ - -/* -Local Variables: -compile-command: "gcc -DDEBUG -DHAVE_LIMITS_H -DSTDC_HEADERS -Wall -W -O -g mktime.c -o mktime" -End: -*/ - diff --git a/src/print.c b/src/print.c index 10878d0f055..8de27fe811f 100644 --- a/src/print.c +++ b/src/print.c @@ -50,36 +50,12 @@ Lisp_Object Vfloat_output_format, Qfloat_output_format; #if STDC_HEADERS #include <float.h> #endif +#include <ftoastr.h> /* Default to values appropriate for IEEE floating point. */ -#ifndef FLT_RADIX -#define FLT_RADIX 2 -#endif -#ifndef DBL_MANT_DIG -#define DBL_MANT_DIG 53 -#endif #ifndef DBL_DIG #define DBL_DIG 15 #endif -#ifndef DBL_MIN -#define DBL_MIN 2.2250738585072014e-308 -#endif - -#ifdef DBL_MIN_REPLACEMENT -#undef DBL_MIN -#define DBL_MIN DBL_MIN_REPLACEMENT -#endif - -/* Define DOUBLE_DIGITS_BOUND, an upper bound on the number of decimal digits - needed to express a float without losing information. - The general-case formula is valid for the usual case, IEEE floating point, - but many compilers can't optimize the formula to an integer constant, - so make a special case for it. */ -#if FLT_RADIX == 2 && DBL_MANT_DIG == 53 -#define DOUBLE_DIGITS_BOUND 17 /* IEEE floating point */ -#else -#define DOUBLE_DIGITS_BOUND ((int) ceil (log10 (pow (FLT_RADIX, DBL_MANT_DIG)))) -#endif /* Avoid actual stack overflow in print. */ int print_depth; @@ -1078,6 +1054,7 @@ print_error_message (Lisp_Object data, Lisp_Object stream, const char *context, * case of -1e307 in 20d float_output_format. What is one to do (short of * re-writing _doprnt to be more sane)? * -wsr + * Given the above, the buffer must be least FLOAT_TO_STRING_BUFSIZE bytes. */ void @@ -1124,20 +1101,8 @@ float_to_string (unsigned char *buf, double data) lose: { /* Generate the fewest number of digits that represent the - floating point value without losing information. - The following method is simple but a bit slow. - For ideas about speeding things up, please see: - - Guy L Steele Jr & Jon L White, How to print floating-point numbers - accurately. SIGPLAN notices 25, 6 (June 1990), 112-126. - - Robert G Burger & R Kent Dybvig, Printing floating point numbers - quickly and accurately, SIGPLAN notices 31, 5 (May 1996), 108-116. */ - - width = fabs (data) < DBL_MIN ? 1 : DBL_DIG; - do - sprintf (buf, "%.*g", width, data); - while (width++ < DOUBLE_DIGITS_BOUND && atof (buf) != data); + floating point value without losing information. */ + dtoastr (buf, FLOAT_TO_STRING_BUFSIZE, 0, 0, data); } else /* oink oink */ { @@ -1528,7 +1493,7 @@ print_object (Lisp_Object obj, register Lisp_Object printcharfun, int escapeflag case Lisp_Float: { - char pigbuf[350]; /* see comments in float_to_string */ + char pigbuf[FLOAT_TO_STRING_BUFSIZE]; float_to_string (pigbuf, XFLOAT_DATA (obj)); strout (pigbuf, -1, -1, printcharfun, 0); diff --git a/src/process.c b/src/process.c index 976ed52ffec..0c8d0cab6d0 100644 --- a/src/process.c +++ b/src/process.c @@ -32,9 +32,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ #include <inttypes.h> #endif -#ifdef HAVE_UNISTD_H #include <unistd.h> -#endif #include <fcntl.h> /* Only MS-DOS does not define `subprocesses'. */ diff --git a/src/process.h b/src/process.h index 59e9a0ecb64..396319d4414 100644 --- a/src/process.h +++ b/src/process.h @@ -20,9 +20,8 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ #ifdef HAVE_SYS_TYPES_H #include <sys/types.h> #endif -#ifdef HAVE_UNISTD_H + #include <unistd.h> -#endif #ifdef HAVE_GNUTLS #include "gnutls.h" diff --git a/src/ralloc.c b/src/ralloc.c index 4f2e68976f2..d574893ca2e 100644 --- a/src/ralloc.c +++ b/src/ralloc.c @@ -30,9 +30,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ #include "lisp.h" /* Needed for VALBITS. */ #include "blockinput.h" -#ifdef HAVE_UNISTD_H #include <unistd.h> -#endif typedef POINTER_TYPE *POINTER; typedef size_t SIZE; diff --git a/src/regex.c b/src/regex.c index 318b8fe74b5..b39920a8af4 100644 --- a/src/regex.c +++ b/src/regex.c @@ -196,9 +196,7 @@ even if config.h says that we can. */ # undef REL_ALLOC -# ifdef HAVE_UNISTD_H -# include <unistd.h> -# endif +# include <unistd.h> /* When used in Emacs's lib-src, we need xmalloc and xrealloc. */ diff --git a/src/sysdep.c b/src/sysdep.c index feb9f7c2a14..0b1b3704566 100644 --- a/src/sysdep.c +++ b/src/sysdep.c @@ -30,9 +30,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ #ifdef HAVE_LIMITS_H #include <limits.h> #endif /* HAVE_LIMITS_H */ -#ifdef HAVE_UNISTD_H #include <unistd.h> -#endif #include "lisp.h" #include "sysselect.h" diff --git a/src/systty.h b/src/systty.h index 03a9db293a5..f6794191aa9 100644 --- a/src/systty.h +++ b/src/systty.h @@ -37,9 +37,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ #include <sys/pty.h> #endif /* AIX */ -#ifdef HAVE_UNISTD_H #include <unistd.h> -#endif /* Special cases - inhibiting the use of certain features. */ diff --git a/src/term.c b/src/term.c index 53c8d703209..ce3b26d21df 100644 --- a/src/term.c +++ b/src/term.c @@ -25,11 +25,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ #include <ctype.h> #include <errno.h> #include <sys/file.h> - -#ifdef HAVE_UNISTD_H #include <unistd.h> -#endif - #include <signal.h> #include <stdarg.h> #include <setjmp.h> diff --git a/src/termcap.c b/src/termcap.c index 4ad0cee6264..39ad08a66d3 100644 --- a/src/termcap.c +++ b/src/termcap.c @@ -22,9 +22,7 @@ Boston, MA 02110-1301, USA. */ #include <setjmp.h> #include <sys/file.h> #include <fcntl.h> -#ifdef HAVE_UNISTD_H #include <unistd.h> -#endif #include "lisp.h" diff --git a/src/xfns.c b/src/xfns.c index 8c4ac2210fc..bbec8759cd1 100644 --- a/src/xfns.c +++ b/src/xfns.c @@ -23,10 +23,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ #include <math.h> #include <setjmp.h> #include <ctype.h> - -#ifdef HAVE_UNISTD_H #include <unistd.h> -#endif /* This makes the fields of a Display accessible, in Xlib header files. */ diff --git a/src/xrdb.c b/src/xrdb.c index 5a46028556e..3d3aeb4ab57 100644 --- a/src/xrdb.c +++ b/src/xrdb.c @@ -22,10 +22,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ #include <config.h> -#ifdef HAVE_UNISTD_H #include <unistd.h> -#endif - #include <errno.h> #include <epaths.h> diff --git a/src/xselect.c b/src/xselect.c index 6c2224396cb..cca4117cb37 100644 --- a/src/xselect.c +++ b/src/xselect.c @@ -27,9 +27,8 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ #ifdef HAVE_SYS_TYPES_H #include <sys/types.h> #endif -#ifdef HAVE_UNISTD_H + #include <unistd.h> -#endif #include "lisp.h" #include "xterm.h" /* for all of the X includes */ diff --git a/src/xsmfns.c b/src/xsmfns.c index 44ae61947fc..d67166e48fa 100644 --- a/src/xsmfns.c +++ b/src/xsmfns.c @@ -26,10 +26,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ #include <X11/Xlib.h> #include <X11/Xutil.h> -#ifdef HAVE_UNISTD_H #include <unistd.h> -#endif - #include <sys/param.h> #include <stdio.h> #include <setjmp.h> diff --git a/src/xterm.c b/src/xterm.c index 4a19a6c36c9..c15539182f6 100644 --- a/src/xterm.c +++ b/src/xterm.c @@ -89,9 +89,8 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ #ifdef HAVE_SYS_TIME_H #include <sys/time.h> #endif -#ifdef HAVE_UNISTD_H + #include <unistd.h> -#endif #ifdef USE_GTK #include "gtkutil.h" |