X-Git-Url: http://git.chise.org/gitweb/?p=chise%2Fxemacs-chise.git.1;a=blobdiff_plain;f=src%2Fsysdep.c;h=a24221d7b40db8711db856ed7bbe03700a49ef7b;hp=c2b9800c79e668287e0953627b199198ff7054b2;hb=35adcaaeafb1fe93eaf00c39b48619e8f188ff3f;hpb=6883ee56ec887c2c48abe5b06b5e66aa74031910 diff --git a/src/sysdep.c b/src/sysdep.c index c2b9800..a24221d 100644 --- a/src/sysdep.c +++ b/src/sysdep.c @@ -212,11 +212,9 @@ set_descriptor_non_blocking (int fd) } #endif -#ifdef O_NONBLOCK /* The POSIX way */ +#ifdef F_SETFL fcntl (fd, F_SETFL, O_NONBLOCK); -#elif defined (O_NDELAY) - fcntl (fd, F_SETFL, O_NDELAY); -#endif /* O_NONBLOCK */ +#endif } #if defined (NO_SUBPROCESSES) @@ -456,8 +454,8 @@ child_setup_tty (int out) s.main.c_lflag |= ICANON; /* Enable erase/kill and eof processing */ s.main.c_cc[VEOF] = 04; /* ensure that EOF is Control-D */ - s.main.c_cc[VERASE] = CDISABLE; /* disable erase processing */ - s.main.c_cc[VKILL] = CDISABLE; /* disable kill processing */ + s.main.c_cc[VERASE] = _POSIX_VDISABLE; /* disable erase processing */ + s.main.c_cc[VKILL] = _POSIX_VDISABLE; /* disable kill processing */ #ifdef HPUX s.main.c_cflag = (s.main.c_cflag & ~CBAUD) | B9600; /* baud rate sanity */ @@ -485,12 +483,12 @@ child_setup_tty (int out) #else /* no TIOCGPGRP or no TIOCGLTC or no TIOCGETC */ /* TTY `special characters' work better as signals, so disable character forms */ - s.main.c_cc[VQUIT] = CDISABLE; - s.main.c_cc[VINTR] = CDISABLE; - s.main.c_cc[VSUSP] = CDISABLE; + s.main.c_cc[VQUIT] = _POSIX_VDISABLE; + s.main.c_cc[VINTR] = _POSIX_VDISABLE; + s.main.c_cc[VSUSP] = _POSIX_VDISABLE; s.main.c_lflag &= ~ISIG; #endif /* no TIOCGPGRP or no TIOCGLTC or no TIOCGETC */ - s.main.c_cc[VEOL] = CDISABLE; + s.main.c_cc[VEOL] = _POSIX_VDISABLE; #if defined (CBAUD) /* ### This is not portable. ### POSIX does not specify CBAUD, and 4.4BSD does not have it. @@ -749,7 +747,7 @@ get_eof_char (int fd) else return (Bufbyte) t.c_cc[VEOF]; #endif - return t.c_cc[VEOF] == CDISABLE ? ctrl_d : (Bufbyte) t.c_cc[VEOF]; + return t.c_cc[VEOF] == _POSIX_VDISABLE ? ctrl_d : (Bufbyte) t.c_cc[VEOF]; } #else /* ! HAVE_TERMIOS */ /* On Berkeley descendants, the following IOCTL's retrieve the @@ -1534,51 +1532,51 @@ tty_init_sys_modes_on_device (struct device *d) } else { - tty.main.c_cc[VINTR] = CDISABLE; - tty.main.c_cc[VQUIT] = CDISABLE; + tty.main.c_cc[VINTR] = _POSIX_VDISABLE; + tty.main.c_cc[VQUIT] = _POSIX_VDISABLE; } tty.main.c_cc[VMIN] = 1; /* Input should wait for at least 1 char */ tty.main.c_cc[VTIME] = 0; /* no matter how long that takes. */ #ifdef VSWTCH - tty.main.c_cc[VSWTCH] = CDISABLE; /* Turn off shell layering use - of C-z */ + tty.main.c_cc[VSWTCH] = _POSIX_VDISABLE; /* Turn off shell layering use + of C-z */ #endif /* VSWTCH */ /* There was some conditionalizing here on (mips or TCATTR), but I think that's wrong. There was one report of C-y (DSUSP) not being disabled on HP9000s700 systems, and this might fix it. */ #ifdef VSUSP - tty.main.c_cc[VSUSP] = CDISABLE;/* Turn off mips handling of C-z. */ + tty.main.c_cc[VSUSP] = _POSIX_VDISABLE; /* Turn off mips handling of C-z. */ #endif /* VSUSP */ #ifdef V_DSUSP - tty.main.c_cc[V_DSUSP] = CDISABLE; /* Turn off mips handling of C-y. */ + tty.main.c_cc[V_DSUSP] = _POSIX_VDISABLE; /* Turn off mips handling of C-y. */ #endif /* V_DSUSP */ #ifdef VDSUSP /* Some systems have VDSUSP, some have V_DSUSP. */ - tty.main.c_cc[VDSUSP] = CDISABLE; + tty.main.c_cc[VDSUSP] = _POSIX_VDISABLE; #endif /* VDSUSP */ #ifdef VLNEXT - tty.main.c_cc[VLNEXT] = CDISABLE; + tty.main.c_cc[VLNEXT] = _POSIX_VDISABLE; #endif /* VLNEXT */ #ifdef VREPRINT - tty.main.c_cc[VREPRINT] = CDISABLE; + tty.main.c_cc[VREPRINT] = _POSIX_VDISABLE; #endif /* VREPRINT */ #ifdef VWERASE - tty.main.c_cc[VWERASE] = CDISABLE; + tty.main.c_cc[VWERASE] = _POSIX_VDISABLE; #endif /* VWERASE */ #ifdef VDISCARD - tty.main.c_cc[VDISCARD] = CDISABLE; + tty.main.c_cc[VDISCARD] = _POSIX_VDISABLE; #endif /* VDISCARD */ #ifdef VSTART - tty.main.c_cc[VSTART] = CDISABLE; + tty.main.c_cc[VSTART] = _POSIX_VDISABLE; #endif /* VSTART */ #ifdef VSTRT - tty.main.c_cc[VSTRT] = CDISABLE; /* called VSTRT on some systems */ + tty.main.c_cc[VSTRT] = _POSIX_VDISABLE; /* called VSTRT on some systems */ #endif /* VSTART */ #ifdef VSTOP - tty.main.c_cc[VSTOP] = CDISABLE; + tty.main.c_cc[VSTOP] = _POSIX_VDISABLE; #endif /* VSTOP */ #ifdef SET_LINE_DISCIPLINE - /* Need to explicitely request TERMIODISC line discipline or + /* Need to explicitly request TERMIODISC line discipline or Ultrix's termios does not work correctly. */ tty.main.c_line = SET_LINE_DISCIPLINE; #endif @@ -2072,7 +2070,6 @@ hft_reset (struct console *con) /* limits of text/data segments */ /************************************************************************/ -/* Note that VMS compiler won't accept defined (CANNOT_DUMP). */ #ifndef CANNOT_DUMP #define NEED_STARTS #endif @@ -2137,7 +2134,7 @@ start_of_text (void) * at least on UniPlus, is temacs will have to be made unshared so * that text and data are contiguous. Then once loadup is complete, * unexec will produce a shared executable where the data can be - * at the normal shared text boundry and the startofdata variable + * at the normal shared text boundary and the startofdata variable * will be patched by unexec to the correct value. * */ @@ -2594,7 +2591,8 @@ sys_open (CONST char *path, int oflag, ...) { int rtnval; while ((rtnval = open (path, oflag, mode)) == -1 - && (errno == EINTR)); + && (errno == EINTR)) + DO_NOTHING; return rtnval; } #else @@ -2779,7 +2777,8 @@ sys_fopen (CONST char *path, CONST char *type) #elif defined (INTERRUPTIBLE_OPEN) { FILE *rtnval; - while (!(rtnval = fopen (path, type)) && (errno == EINTR)); + while (!(rtnval = fopen (path, type)) && (errno == EINTR)) + DO_NOTHING; return rtnval; } #else @@ -3682,7 +3681,7 @@ opendir (CONST char *filename) /* name of directory */ int fd; /* file descriptor for read */ struct stat sbuf; /* result of fstat */ - fd = sys_open (filename, 0); + fd = sys_open (filename, O_RDONLY); if (fd < 0) return 0; @@ -3799,24 +3798,24 @@ mkdir (CONST char *dpath, int dmode) { case -1: /* Error in fork() */ - return (-1); /* Errno is set already */ + return -1; /* Errno is set already */ case 0: /* Child process */ { /* - * Cheap hack to set mode of new directory. Since this - * child process is going away anyway, we zap its umask. - * ####, this won't suffice to set SUID, SGID, etc. on this - * directory. Does anybody care? - */ + * Cheap hack to set mode of new directory. Since this + * child process is going away anyway, we zap its umask. + * ####, this won't suffice to set SUID, SGID, etc. on this + * directory. Does anybody care? + */ status = umask (0); /* Get current umask */ status = umask (status | (0777 & ~dmode)); /* Set for mkdir */ - fd = sys_open ("/dev/null", 2); + fd = sys_open ("/dev/null", O_RDWR); if (fd >= 0) { - dup2 (fd, 0); - dup2 (fd, 1); - dup2 (fd, 2); + if (fd != STDIN_FILENO) dup2 (fd, STDIN_FILENO); + if (fd != STDOUT_FILENO) dup2 (fd, STDOUT_FILENO); + if (fd != STDERR_FILENO) dup2 (fd, STDERR_FILENO); } execl ("/bin/mkdir", "mkdir", dpath, (char *) 0); _exit (-1); /* Can't exec /bin/mkdir */ @@ -3857,12 +3856,12 @@ rmdir (CONST char *dpath) return (-1); /* Errno is set already */ case 0: /* Child process */ - fd = sys_open("/dev/null", 2); + fd = sys_open("/dev/null", O_RDWR); if (fd >= 0) { - dup2 (fd, 0); - dup2 (fd, 1); - dup2 (fd, 2); + if (fd != STDIN_FILENO) dup2 (fd, STDIN_FILENO); + if (fd != STDOUT_FILENO) dup2 (fd, STDOUT_FILENO); + if (fd != STDERR_FILENO) dup2 (fd, STDERR_FILENO); } execl ("/bin/rmdir", "rmdir", dpath, (char *) 0); _exit (-1); /* Can't exec /bin/mkdir */ @@ -3871,7 +3870,8 @@ rmdir (CONST char *dpath) wait_for_termination (cpid); } - if (synch_process_death != 0 || synch_process_retcode != 0) + if (synch_process_death != 0 || + synch_process_retcode != 0) { errno = EIO; /* We don't know why, but */ return -1; /* /bin/rmdir failed */