1/* 2 * Copyright (c) 2000,2001 Ben Lindstrom. All rights reserved. 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions 6 * are met: 7 * 1. Redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer. 9 * 2. Redistributions in binary form must reproduce the above copyright 10 * notice, this list of conditions and the following disclaimer in the 11 * documentation and/or other materials provided with the distribution. 12 * 13 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 14 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 15 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 16 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 17 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 18 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 19 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 20 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 21 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 22 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 23 */ 24 25#include "includes.h" 26 27#ifdef HAVE_NEXT 28#include <errno.h> 29#include <sys/wait.h> 30#include "bsd-nextstep.h" 31 32pid_t 33posix_wait(int *status) 34{ 35 union wait statusp; 36 pid_t wait_pid; 37 38 #undef wait /* Use NeXT's wait() function */ 39 wait_pid = wait(&statusp); 40 if (status) 41 *status = (int) statusp.w_status; 42 43 return (wait_pid); 44} 45 46int 47tcgetattr(int fd, struct termios *t) 48{ 49 return (ioctl(fd, TIOCGETA, t)); 50} 51 52int 53tcsetattr(int fd, int opt, const struct termios *t) 54{ 55 struct termios localterm; 56 57 if (opt & TCSASOFT) { 58 localterm = *t; 59 localterm.c_cflag |= CIGNORE; 60 t = &localterm; 61 } 62 switch (opt & ~TCSASOFT) { 63 case TCSANOW: 64 return (ioctl(fd, TIOCSETA, t)); 65 case TCSADRAIN: 66 return (ioctl(fd, TIOCSETAW, t)); 67 case TCSAFLUSH: 68 return (ioctl(fd, TIOCSETAF, t)); 69 default: 70 errno = EINVAL; 71 return (-1); 72 } 73} 74 75int tcsetpgrp(int fd, pid_t pgrp) 76{ 77 return (ioctl(fd, TIOCSPGRP, &pgrp)); 78} 79 80speed_t cfgetospeed(const struct termios *t) 81{ 82 return (t->c_ospeed); 83} 84 85speed_t cfgetispeed(const struct termios *t) 86{ 87 return (t->c_ispeed); 88} 89 90int 91cfsetospeed(struct termios *t,int speed) 92{ 93 t->c_ospeed = speed; 94 return (0); 95} 96 97int 98cfsetispeed(struct termios *t, int speed) 99{ 100 t->c_ispeed = speed; 101 return (0); 102} 103#endif /* HAVE_NEXT */ 104