]> andersk Git - openssh.git/blob - next-posix.c
- (djm) NeXT patch from Ben Lindstrom <mouring@pconline.com>
[openssh.git] / next-posix.c
1 #include "config.h"
2
3 #ifdef HAVE_NEXT
4 #include <errno.h>
5 #include <sys/wait.h>
6 #include "next-posix.h"
7
8 pid_t 
9 posix_wait(int *status)
10 {
11         #undef wait                     /* Use NeXT's wait() function */
12         union wait statusp;
13         pid_t wait_pid;
14
15         wait_pid = wait(&statusp);
16         status = (int *) statusp.w_status;
17
18         return wait_pid;
19 }
20
21
22 int                                          
23 posix_utime(char *filename,struct utimbuf *buf)
24 {                                            
25         time_t timep[2];                     
26                                              
27         timep[0] = buf->actime;              
28         timep[1] = buf->modtime;             
29
30         #undef utime                    /* Use NeXT's utime() function */ 
31         return utime(filename,timep);        
32 }                                            
33
34
35 int
36 waitpid(int     pid, int        *stat_loc, int  options)
37 {
38         if (pid <= 0) {
39                 if (pid != -1) {
40                         errno = EINVAL;
41                         return -1;
42                 }
43                 pid = 0;        /* wait4() expects pid=0 for indiscriminate wait. */
44         }
45         return wait4(pid, (union wait *)stat_loc, options, NULL);
46 }
47
48 pid_t setsid(void)
49 {
50         return setpgrp(0, getpid());
51 }
52
53 int
54 tcgetattr(int fd, struct termios *t)
55 {
56         return (ioctl(fd, TIOCGETA, t));
57 }
58
59 int
60 tcsetattr(int fd, int opt, const struct termios *t)
61 {
62         struct termios localterm;
63
64         if (opt & TCSASOFT) {
65                 localterm = *t;
66                 localterm.c_cflag |= CIGNORE;
67                 t = &localterm;
68         }
69         switch (opt & ~TCSASOFT) {
70         case TCSANOW:
71                 return (ioctl(fd, TIOCSETA, t));
72         case TCSADRAIN:
73                 return (ioctl(fd, TIOCSETAW, t));
74         case TCSAFLUSH:
75                 return (ioctl(fd, TIOCSETAF, t));
76         default:
77                 errno = EINVAL;
78                 return (-1);
79         }
80 }
81
82 int tcsetpgrp(int fd, pid_t pgrp)
83 {
84         int s;
85
86         s = pgrp;
87         return (ioctl(fd, TIOCSPGRP, &s));
88 }
89
90 speed_t cfgetospeed(const struct termios *t)
91 {
92         return (t->c_ospeed);
93 }
94
95 speed_t cfgetispeed(const struct termios *t)
96 {
97         return (t->c_ispeed);
98 }
99
100 int
101 cfsetospeed(struct termios *t,int speed)
102 {
103         t->c_ospeed = speed;
104         return (0);
105 }
106
107 int
108 cfsetispeed(struct termios *t, int speed)
109 {
110         t->c_ispeed = speed;
111         return (0);
112 }
113 #endif /* HAVE_NEXT */
This page took 0.057043 seconds and 5 git commands to generate.