Merge from vendor branch NCURSES:
[dragonfly.git] / crypto / openssh-3.9p1 / openbsd-compat / bsd-nextstep.c
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 RCSID("$Id: bsd-nextstep.c,v 1.6 2003/06/01 03:23:57 mouring Exp $");
28
29 #ifdef HAVE_NEXT
30 #include <errno.h>
31 #include <sys/wait.h>
32 #include "bsd-nextstep.h"
33
34 pid_t 
35 posix_wait(int *status)
36 {
37         union wait statusp;
38         pid_t wait_pid;
39
40         #undef wait                     /* Use NeXT's wait() function */
41         wait_pid = wait(&statusp);
42         if (status)
43                 *status = (int) statusp.w_status;
44
45         return (wait_pid);
46 }
47
48 int
49 tcgetattr(int fd, struct termios *t)
50 {
51         return (ioctl(fd, TIOCGETA, t));
52 }
53
54 int
55 tcsetattr(int fd, int opt, const struct termios *t)
56 {
57         struct termios localterm;
58
59         if (opt & TCSASOFT) {
60                 localterm = *t;
61                 localterm.c_cflag |= CIGNORE;
62                 t = &localterm;
63         }
64         switch (opt & ~TCSASOFT) {
65         case TCSANOW:
66                 return (ioctl(fd, TIOCSETA, t));
67         case TCSADRAIN:
68                 return (ioctl(fd, TIOCSETAW, t));
69         case TCSAFLUSH:
70                 return (ioctl(fd, TIOCSETAF, t));
71         default:
72                 errno = EINVAL;
73                 return (-1);
74         }
75 }
76
77 int tcsetpgrp(int fd, pid_t pgrp)
78 {
79         return (ioctl(fd, TIOCSPGRP, &pgrp));
80 }
81
82 speed_t cfgetospeed(const struct termios *t)
83 {
84         return (t->c_ospeed);
85 }
86
87 speed_t cfgetispeed(const struct termios *t)
88 {
89         return (t->c_ispeed);
90 }
91
92 int
93 cfsetospeed(struct termios *t,int speed)
94 {
95         t->c_ospeed = speed;
96         return (0);
97 }
98
99 int
100 cfsetispeed(struct termios *t, int speed)
101 {
102         t->c_ispeed = speed;
103         return (0);
104 }
105 #endif /* HAVE_NEXT */