X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=src%2Fsysdep.c;h=54059496cc1d19d4b0ee8adbeb2c0d0f0702fc90;hb=3f711eea68ce5fd586297b43c8d9936cd2ba916f;hp=54e1bf2b16fb41bc60a5b5ad9c93281676a83338;hpb=3062d425fac0473eb5aa2efc0bb002f6ce0cb028;p=chise%2Fxemacs-chise.git.1 diff --git a/src/sysdep.c b/src/sysdep.c index 54e1bf2..5405949 100644 --- a/src/sysdep.c +++ b/src/sysdep.c @@ -30,23 +30,6 @@ Boston, MA 02111-1307, USA. */ #define DONT_ENCAPSULATE #include - -#ifdef WIN32_NATIVE -#ifdef MINGW -#include -#else -/* 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 +/* 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); } @@ -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 */