XEmacs 21.4.17 "Jumbo Shrimp".
[chise/xemacs-chise.git.1] / src / sysdep.c
index 54e1bf2..5405949 100644 (file)
@@ -30,23 +30,6 @@ Boston, MA 02111-1307, USA.  */
 #define DONT_ENCAPSULATE
 
 #include <config.h>
-
-#ifdef WIN32_NATIVE
-#ifdef MINGW
-#include <mingw/process.h>
-#else
-/* <process.h> should not conflict with "process.h", as per ANSI definition.
-   This is not true with visual c though. The trick below works with
-   VC4.2b, 5.0 and 6.0. It assumes that VC is installed in a kind of
-   standard way, so include path ends with /include.
-
-   Unfortunately, this must go before lisp.h, since process.h defines abort()
-   which will conflict with the macro defined in lisp.h
-*/
-#include <../include/process.h>
-#endif /* MINGW */
-#endif /* WIN32_NATIVE */
-
 #include "lisp.h"
 
 /* ------------------------------- */
@@ -94,6 +77,19 @@ Boston, MA 02111-1307, USA.  */
 #include "nt.h"
 #endif
 
+#ifdef WIN32_NATIVE
+#ifdef MINGW
+#include <../mingw/process.h>
+#else
+/* <process.h> should not conflict with "process.h", as per ANSI definition.
+   This is not true with visual c though. The trick below works with
+   VC4.2b, 5.0 and 6.0. It assumes that VC is installed in a kind of
+   standard way, so include path ends with /include.
+*/
+#include <../include/process.h>
+#endif /* MINGW */
+#endif /* WIN32_NATIVE */
+
 /* ------------------------------- */
 /*         TTY definitions         */
 /* ------------------------------- */
@@ -975,7 +971,7 @@ init_baud_rate (struct device *d)
 
     sg.sg_ospeed = B9600;
     if (ioctl (input_fd, TIOCGETP, &sg) < 0)
-      abort ();
+      ABORT ();
     DEVICE_TTY_DATA (d)->ospeed = sg.sg_ospeed;
 #endif
   }
@@ -2337,7 +2333,11 @@ init_system_name (void)
 
        xzero (hints);
        hints.ai_flags = AI_CANONNAME;
+#ifdef IPV6_CANONICALIZE
        hints.ai_family = AF_UNSPEC;
+#else
+       hints.ai_family = PF_INET;
+#endif
        hints.ai_socktype = SOCK_STREAM;
        hints.ai_protocol = 0;
        if (!getaddrinfo (hostname, NULL, &hints, &res))
@@ -3154,9 +3154,11 @@ sys_rename (const char *old, const char *new)
   /* Windows rename fails if NEW exists */
   if (rename (old, new) == 0)
     return 0;
-  if (errno != EEXIST)
+  /* In some cases errno is EACCES if NEW exists */
+  if (errno != EEXIST && errno != EACCES)
+    return -1;
+  if (unlink (new) != 0)
     return -1;
-  unlink (new);
 #endif /* WIN32_NATIVE */
   return rename (old, new);
 }
@@ -3342,17 +3344,26 @@ gettimeofday (struct timeval *tp, struct timezone *tzp)
    access to those functions goes through the following. */
 
 int
-set_file_times (char *filename, EMACS_TIME atime, EMACS_TIME mtime)
+set_file_times (Lisp_Object path, EMACS_TIME atime, EMACS_TIME mtime)
 {
-#if defined (HAVE_UTIME)
+#if defined (WIN32_NATIVE)
+  struct utimbuf utb;
+  utb.actime = EMACS_SECS (atime);
+  utb.modtime = EMACS_SECS (mtime);
+  return mswindows_utime (path, &utb);
+#elif defined (HAVE_UTIME)
   struct utimbuf utb;
+  Extbyte *filename;
   utb.actime = EMACS_SECS (atime);
   utb.modtime = EMACS_SECS (mtime);
+  LISP_STRING_TO_EXTERNAL (path, filename, Qfile_name);
   return utime (filename, &utb);
 #elif defined (HAVE_UTIMES)
   struct timeval tv[2];
+  Extbyte *filename;
   tv[0] = atime;
   tv[1] = mtime;
+  LISP_STRING_TO_EXTERNAL (path, filename, Qfile_name);
   return utimes (filename, tv);
 #else
   /* No file times setting function available. */
@@ -3495,19 +3506,19 @@ long
 get_random (void)
 {
   long val = random ();
-#if VALBITS > RAND_BITS
+#if INT_VALBITS > RAND_BITS
   val = (val << RAND_BITS) ^ random ();
-#if VALBITS > 2*RAND_BITS
+#if INT_VALBITS > 2*RAND_BITS
   val = (val << RAND_BITS) ^ random ();
-#if VALBITS > 3*RAND_BITS
+#if INT_VALBITS > 3*RAND_BITS
   val = (val << RAND_BITS) ^ random ();
-#if VALBITS > 4*RAND_BITS
+#if INT_VALBITS > 4*RAND_BITS
   val = (val << RAND_BITS) ^ random ();
 #endif /* need at least 5 */
 #endif /* need at least 4 */
 #endif /* need at least 3 */
 #endif /* need at least 2 */
-  return val & ((1L << VALBITS) - 1);
+  return val & (EMACS_INT) ((1UL << INT_VALBITS) - 1);
 }
 
 \f
@@ -3569,7 +3580,7 @@ const char *sys_siglist[NSIG + 1] =
     DEFER_GETTEXT ("bad argument to system call"),     /* 12 SIGSYS */
     DEFER_GETTEXT ("write on a pipe with no one to read it"), /* 13 SIGPIPE */
     DEFER_GETTEXT ("alarm clock"),                     /* 14 SIGALRM */
-    DEFER_GETTEXT ("software termination signum"),     /* 15 SIGTERM */
+    DEFER_GETTEXT ("software termination signal"),     /* 15 SIGTERM */
     DEFER_GETTEXT ("user defined signal 1"),           /* 16 SIGUSR1 */
     DEFER_GETTEXT ("user defined signal 2"),           /* 17 SIGUSR2 */
     DEFER_GETTEXT ("death of a child"),                        /* 18 SIGCLD */
@@ -3608,7 +3619,7 @@ const char *sys_siglist[NSIG + 1] =
     DEFER_GETTEXT ("bad argument to system call"),     /* 12 SIGSYS */
     DEFER_GETTEXT ("write on a pipe with no one to read it"), /* 13 SIGPIPE */
     DEFER_GETTEXT ("alarm clock"),                     /* 14 SIGALRM */
-    DEFER_GETTEXT ("software termination signum"),     /* 15 SIGTERM */
+    DEFER_GETTEXT ("software termination signal"),     /* 15 SIGTERM */
     DEFER_GETTEXT ("user defined signal 1"),           /* 16 SIGUSR1 */
     DEFER_GETTEXT ("user defined signal 2"),           /* 17 SIGUSR2 */
     DEFER_GETTEXT ("death of a child"),                        /* 18 SIGCLD */