summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog4
-rw-r--r--acconfig.h5
-rw-r--r--auth1.c9
-rw-r--r--auth2.c11
-rw-r--r--configure.ac7
-rw-r--r--defines.h14
-rw-r--r--includes.h8
-rw-r--r--loginrec.c6
-rw-r--r--openbsd-compat/bsd-cray.c4
-rw-r--r--openbsd-compat/bsd-cray.h4
-rw-r--r--serverloop.c2
-rw-r--r--session.c27
-rw-r--r--sshd.c2
-rw-r--r--sshpty.c8
14 files changed, 86 insertions, 25 deletions
diff --git a/ChangeLog b/ChangeLog
index a42c010af..24074d183 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,8 @@
120020925 120020925
2 - (bal) Fix issue where successfull login does not clear failure counts 2 - (bal) Fix issue where successfull login does not clear failure counts
3 in AIX. Patch by dtucker@zip.com.au ok by djm 3 in AIX. Patch by dtucker@zip.com.au ok by djm
4 - (tim) Cray fixes (bug 367) based on patch from Wendy Palm @ cray.
5 This does not include the deattack.c fixes.
4 6
520020923 720020923
6 - (djm) OpenBSD CVS Sync 8 - (djm) OpenBSD CVS Sync
@@ -719,4 +721,4 @@
719 save auth method before monitor_reset_key_state(); bugzilla bug #284; 721 save auth method before monitor_reset_key_state(); bugzilla bug #284;
720 ok provos@ 722 ok provos@
721 723
722$Id: ChangeLog,v 1.2481 2002/09/25 23:14:14 mouring Exp $ 724$Id: ChangeLog,v 1.2482 2002/09/26 00:38:46 tim Exp $
diff --git a/acconfig.h b/acconfig.h
index f8fc650d7..3e058f3ea 100644
--- a/acconfig.h
+++ b/acconfig.h
@@ -1,4 +1,4 @@
1/* $Id: acconfig.h,v 1.144 2002/07/14 20:36:50 tim Exp $ */ 1/* $Id: acconfig.h,v 1.145 2002/09/26 00:38:48 tim Exp $ */
2 2
3#ifndef _CONFIG_H 3#ifndef _CONFIG_H
4#define _CONFIG_H 4#define _CONFIG_H
@@ -150,6 +150,9 @@
150/* Define if you don't want to use lastlog */ 150/* Define if you don't want to use lastlog */
151#undef DISABLE_LASTLOG 151#undef DISABLE_LASTLOG
152 152
153/* Define if you don't want to use lastlog in session.c */
154#undef NO_SSH_LASTLOG
155
153/* Define if you don't want to use utmp */ 156/* Define if you don't want to use utmp */
154#undef DISABLE_UTMP 157#undef DISABLE_UTMP
155 158
diff --git a/auth1.c b/auth1.c
index 4d2b92a22..676c8a667 100644
--- a/auth1.c
+++ b/auth1.c
@@ -304,6 +304,15 @@ do_authloop(Authctxt *authctxt)
304 fatal("INTERNAL ERROR: authenticated invalid user %s", 304 fatal("INTERNAL ERROR: authenticated invalid user %s",
305 authctxt->user); 305 authctxt->user);
306 306
307#ifdef _UNICOS
308 if (type == SSH_CMSG_AUTH_PASSWORD && !authenticated)
309 cray_login_failure(authctxt->user, IA_UDBERR);
310 if (authenticated && cray_access_denied(authctxt->user)) {
311 authenticated = 0;
312 fatal("Access denied for user %s.",authctxt->user);
313 }
314#endif /* _UNICOS */
315
307#ifdef HAVE_CYGWIN 316#ifdef HAVE_CYGWIN
308 if (authenticated && 317 if (authenticated &&
309 !check_nt_auth(type == SSH_CMSG_AUTH_PASSWORD, pw)) { 318 !check_nt_auth(type == SSH_CMSG_AUTH_PASSWORD, pw)) {
diff --git a/auth2.c b/auth2.c
index 1cb9769ff..17c58552a 100644
--- a/auth2.c
+++ b/auth2.c
@@ -216,6 +216,13 @@ userauth_finish(Authctxt *authctxt, int authenticated, char *method)
216 authenticated = 0; 216 authenticated = 0;
217#endif /* USE_PAM */ 217#endif /* USE_PAM */
218 218
219#ifdef _UNICOS
220 if (authenticated && cray_access_denied(authctxt->user)) {
221 authenticated = 0;
222 fatal("Access denied for user %s.",authctxt->user);
223 }
224#endif /* _UNICOS */
225
219 /* Log before sending the reply */ 226 /* Log before sending the reply */
220 auth_log(authctxt, authenticated, method, " ssh2"); 227 auth_log(authctxt, authenticated, method, " ssh2");
221 228
@@ -235,6 +242,10 @@ userauth_finish(Authctxt *authctxt, int authenticated, char *method)
235 if (authctxt->failures++ > AUTH_FAIL_MAX) { 242 if (authctxt->failures++ > AUTH_FAIL_MAX) {
236 packet_disconnect(AUTH_FAIL_MSG, authctxt->user); 243 packet_disconnect(AUTH_FAIL_MSG, authctxt->user);
237 } 244 }
245#ifdef _UNICOS
246 if (strcmp(method, "password") == 0)
247 cray_login_failure(authctxt->user, IA_UDBERR);
248#endif /* _UNICOS */
238 methods = authmethods_get(); 249 methods = authmethods_get();
239 packet_start(SSH2_MSG_USERAUTH_FAILURE); 250 packet_start(SSH2_MSG_USERAUTH_FAILURE);
240 packet_put_cstring(methods); 251 packet_put_cstring(methods);
diff --git a/configure.ac b/configure.ac
index f88d993e6..5fe50e56b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,4 +1,4 @@
1# $Id: configure.ac,v 1.88 2002/09/23 23:54:12 tim Exp $ 1# $Id: configure.ac,v 1.89 2002/09/26 00:38:47 tim Exp $
2 2
3AC_INIT 3AC_INIT
4AC_CONFIG_SRCDIR([ssh.c]) 4AC_CONFIG_SRCDIR([ssh.c])
@@ -303,6 +303,7 @@ mips-sony-bsd|mips-sony-newsos4)
303 no_libnsl=1 303 no_libnsl=1
304 AC_DEFINE(USE_PIPES) 304 AC_DEFINE(USE_PIPES)
305 AC_DEFINE(DISABLE_FD_PASSING) 305 AC_DEFINE(DISABLE_FD_PASSING)
306 AC_DEFINE(NO_SSH_LASTLOG)
306 LDFLAGS="$LDFLAGS -Wl,-Dmsglevel=334:fatal" 307 LDFLAGS="$LDFLAGS -Wl,-Dmsglevel=334:fatal"
307 LIBS="$LIBS -lgen -lrsc -lshare -luex -lacm" 308 LIBS="$LIBS -lgen -lrsc -lshare -luex -lacm"
308 MANTYPE=cat 309 MANTYPE=cat
@@ -376,14 +377,14 @@ AC_ARG_WITH(libs,
376 377
377# Checks for header files. 378# Checks for header files.
378AC_CHECK_HEADERS(bstring.h crypt.h endian.h floatingpoint.h \ 379AC_CHECK_HEADERS(bstring.h crypt.h endian.h floatingpoint.h \
379 getopt.h glob.h lastlog.h limits.h login.h \ 380 getopt.h glob.h ia.h lastlog.h limits.h login.h \
380 login_cap.h maillock.h netdb.h netgroup.h \ 381 login_cap.h maillock.h netdb.h netgroup.h \
381 netinet/in_systm.h paths.h pty.h readpassphrase.h \ 382 netinet/in_systm.h paths.h pty.h readpassphrase.h \
382 rpc/types.h security/pam_appl.h shadow.h stddef.h stdint.h \ 383 rpc/types.h security/pam_appl.h shadow.h stddef.h stdint.h \
383 strings.h sys/bitypes.h sys/bsdtty.h sys/cdefs.h \ 384 strings.h sys/bitypes.h sys/bsdtty.h sys/cdefs.h \
384 sys/mman.h sys/select.h sys/stat.h \ 385 sys/mman.h sys/select.h sys/stat.h \
385 sys/stropts.h sys/sysmacros.h sys/time.h \ 386 sys/stropts.h sys/sysmacros.h sys/time.h \
386 sys/un.h time.h ttyent.h usersec.h \ 387 sys/un.h time.h tmpdir.h ttyent.h usersec.h \
387 util.h utime.h utmp.h utmpx.h) 388 util.h utime.h utmp.h utmpx.h)
388 389
389# Checks for libraries. 390# Checks for libraries.
diff --git a/defines.h b/defines.h
index 42b12e9a4..ab19a077c 100644
--- a/defines.h
+++ b/defines.h
@@ -1,7 +1,7 @@
1#ifndef _DEFINES_H 1#ifndef _DEFINES_H
2#define _DEFINES_H 2#define _DEFINES_H
3 3
4/* $Id: defines.h,v 1.95 2002/08/21 02:54:12 mouring Exp $ */ 4/* $Id: defines.h,v 1.96 2002/09/26 00:38:48 tim Exp $ */
5 5
6 6
7/* Constants */ 7/* Constants */
@@ -124,7 +124,7 @@ typedef char int8_t;
124# if (SIZEOF_SHORT_INT == 2) 124# if (SIZEOF_SHORT_INT == 2)
125typedef short int int16_t; 125typedef short int int16_t;
126# else 126# else
127# if defined(_CRAY) && !defined(_CRAYSV2) 127# ifdef _UNICOS
128# if (SIZEOF_SHORT_INT == 4) 128# if (SIZEOF_SHORT_INT == 4)
129typedef short int16_t; 129typedef short int16_t;
130# else 130# else
@@ -132,16 +132,16 @@ typedef long int16_t;
132# endif 132# endif
133# else 133# else
134# error "16 bit int type not found." 134# error "16 bit int type not found."
135# endif /* _CRAY */ 135# endif /* _UNICOS */
136# endif 136# endif
137# if (SIZEOF_INT == 4) 137# if (SIZEOF_INT == 4)
138typedef int int32_t; 138typedef int int32_t;
139# else 139# else
140# if defined(_CRAY) && !defined(_CRAYSV2) 140# ifdef _UNICOS
141typedef long int32_t; 141typedef long int32_t;
142# else 142# else
143# error "32 bit int type not found." 143# error "32 bit int type not found."
144# endif /* _CRAY */ 144# endif /* _UNICOS */
145# endif 145# endif
146#endif 146#endif
147 147
@@ -161,7 +161,7 @@ typedef unsigned char u_int8_t;
161# if (SIZEOF_SHORT_INT == 2) 161# if (SIZEOF_SHORT_INT == 2)
162typedef unsigned short int u_int16_t; 162typedef unsigned short int u_int16_t;
163# else 163# else
164# if defined(_CRAY) && !defined(_CRAYSV2) 164# ifdef _UNICOS
165# if (SIZEOF_SHORT_INT == 4) 165# if (SIZEOF_SHORT_INT == 4)
166typedef unsigned short u_int16_t; 166typedef unsigned short u_int16_t;
167# else 167# else
@@ -174,7 +174,7 @@ typedef unsigned long u_int16_t;
174# if (SIZEOF_INT == 4) 174# if (SIZEOF_INT == 4)
175typedef unsigned int u_int32_t; 175typedef unsigned int u_int32_t;
176# else 176# else
177# if defined(_CRAY) && !defined(_CRAYSV2) 177# ifdef _UNICOS
178typedef unsigned long u_int32_t; 178typedef unsigned long u_int32_t;
179# else 179# else
180# error "32 bit int type not found." 180# error "32 bit int type not found."
diff --git a/includes.h b/includes.h
index f6aa2ae67..d7b875c52 100644
--- a/includes.h
+++ b/includes.h
@@ -149,6 +149,14 @@ static /**/const char *const rcsid[] = { (char *)rcsid, "\100(#)" msg }
149# include <readpassphrase.h> 149# include <readpassphrase.h>
150#endif 150#endif
151 151
152#ifdef HAVE_IA_H
153# include <ia.h>
154#endif
155
156#ifdef HAVE_TMPDIR_H
157# include <tmpdir.h>
158#endif
159
152#include <openssl/opensslv.h> /* For OPENSSL_VERSION_NUMBER */ 160#include <openssl/opensslv.h> /* For OPENSSL_VERSION_NUMBER */
153 161
154#include "defines.h" 162#include "defines.h"
diff --git a/loginrec.c b/loginrec.c
index 6dc608a4e..02c3106a3 100644
--- a/loginrec.c
+++ b/loginrec.c
@@ -163,7 +163,7 @@
163#include "log.h" 163#include "log.h"
164#include "atomicio.h" 164#include "atomicio.h"
165 165
166RCSID("$Id: loginrec.c,v 1.43 2002/07/22 23:34:25 mouring Exp $"); 166RCSID("$Id: loginrec.c,v 1.44 2002/09/26 00:38:49 tim Exp $");
167 167
168#ifdef HAVE_UTIL_H 168#ifdef HAVE_UTIL_H
169# include <util.h> 169# include <util.h>
@@ -622,13 +622,13 @@ construct_utmp(struct logininfo *li,
622 switch (li->type) { 622 switch (li->type) {
623 case LTYPE_LOGIN: 623 case LTYPE_LOGIN:
624 ut->ut_type = USER_PROCESS; 624 ut->ut_type = USER_PROCESS;
625#if defined(_CRAY) && !defined(_CRAYSV2) 625#ifdef _UNICOS
626 cray_set_tmpdir(ut); 626 cray_set_tmpdir(ut);
627#endif 627#endif
628 break; 628 break;
629 case LTYPE_LOGOUT: 629 case LTYPE_LOGOUT:
630 ut->ut_type = DEAD_PROCESS; 630 ut->ut_type = DEAD_PROCESS;
631#if defined(_CRAY) && !defined(_CRAYSV2) 631#ifdef _UNICOS
632 cray_retain_utmp(ut, li->pid); 632 cray_retain_utmp(ut, li->pid);
633#endif 633#endif
634 break; 634 break;
diff --git a/openbsd-compat/bsd-cray.c b/openbsd-compat/bsd-cray.c
index 8a14b0807..edb3112b3 100644
--- a/openbsd-compat/bsd-cray.c
+++ b/openbsd-compat/bsd-cray.c
@@ -1,5 +1,5 @@
1/* 1/*
2 * $Id: bsd-cray.c,v 1.7 2002/07/23 21:00:18 mouring Exp $ 2 * $Id: bsd-cray.c,v 1.8 2002/09/26 00:38:51 tim Exp $
3 * 3 *
4 * bsd-cray.c 4 * bsd-cray.c
5 * 5 *
@@ -34,7 +34,7 @@
34 * on UNICOS systems. 34 * on UNICOS systems.
35 * 35 *
36 */ 36 */
37#if defined(_CRAY) && !defined(_CRAYSV2) 37#ifdef _UNICOS
38 38
39#include <udb.h> 39#include <udb.h>
40#include <tmpdir.h> 40#include <tmpdir.h>
diff --git a/openbsd-compat/bsd-cray.h b/openbsd-compat/bsd-cray.h
index 0b75b2268..8868b4364 100644
--- a/openbsd-compat/bsd-cray.h
+++ b/openbsd-compat/bsd-cray.h
@@ -1,5 +1,5 @@
1/* 1/*
2 * $Id: bsd-cray.h,v 1.4 2002/07/23 21:00:18 mouring Exp $ 2 * $Id: bsd-cray.h,v 1.5 2002/09/26 00:38:51 tim Exp $
3 * 3 *
4 * bsd-cray.h 4 * bsd-cray.h
5 * 5 *
@@ -37,7 +37,7 @@
37#ifndef _BSD_CRAY_H 37#ifndef _BSD_CRAY_H
38#define _BSD_CRAY_H 38#define _BSD_CRAY_H
39 39
40#if defined(_CRAY) && !defined(_CRAYSV2) 40#ifdef _UNICOS
41void cray_init_job(struct passwd *); /* init cray job */ 41void cray_init_job(struct passwd *); /* init cray job */
42void cray_job_termination_handler(int); /* process end of job signal */ 42void cray_job_termination_handler(int); /* process end of job signal */
43void cray_login_failure(char *username, int errcode); 43void cray_login_failure(char *username, int errcode);
diff --git a/serverloop.c b/serverloop.c
index 5112de680..58e20dfb9 100644
--- a/serverloop.c
+++ b/serverloop.c
@@ -144,7 +144,9 @@ sigchld_handler(int sig)
144 int save_errno = errno; 144 int save_errno = errno;
145 debug("Received SIGCHLD."); 145 debug("Received SIGCHLD.");
146 child_terminated = 1; 146 child_terminated = 1;
147#ifndef _UNICOS
147 mysignal(SIGCHLD, sigchld_handler); 148 mysignal(SIGCHLD, sigchld_handler);
149#endif
148 notify_parent(); 150 notify_parent();
149 errno = save_errno; 151 errno = save_errno;
150} 152}
diff --git a/session.c b/session.c
index 0ccd2006d..9074525a4 100644
--- a/session.c
+++ b/session.c
@@ -512,10 +512,17 @@ do_exec_no_pty(Session *s, const char *command)
512 perror("dup2 stderr"); 512 perror("dup2 stderr");
513#endif /* USE_PIPES */ 513#endif /* USE_PIPES */
514 514
515#ifdef _UNICOS
516 cray_init_job(s->pw); /* set up cray jid and tmpdir */
517#endif
518
515 /* Do processing for the child (exec command etc). */ 519 /* Do processing for the child (exec command etc). */
516 do_child(s, command); 520 do_child(s, command);
517 /* NOTREACHED */ 521 /* NOTREACHED */
518 } 522 }
523#ifdef _UNICOS
524 signal(WJSIGNAL, cray_job_termination_handler);
525#endif /* _UNICOS */
519#ifdef HAVE_CYGWIN 526#ifdef HAVE_CYGWIN
520 if (is_winnt) 527 if (is_winnt)
521 cygwin_set_impersonation_token(INVALID_HANDLE_VALUE); 528 cygwin_set_impersonation_token(INVALID_HANDLE_VALUE);
@@ -603,8 +610,12 @@ do_exec_pty(Session *s, const char *command)
603 610
604 /* record login, etc. similar to login(1) */ 611 /* record login, etc. similar to login(1) */
605#ifndef HAVE_OSF_SIA 612#ifndef HAVE_OSF_SIA
606 if (!(options.use_login && command == NULL)) 613 if (!(options.use_login && command == NULL)) {
614#ifdef _UNICOS
615 cray_init_job(s->pw); /* set up cray jid and tmpdir */
616#endif /* _UNICOS */
607 do_login(s, command); 617 do_login(s, command);
618 }
608# ifdef LOGIN_NEEDS_UTMPX 619# ifdef LOGIN_NEEDS_UTMPX
609 else 620 else
610 do_pre_login(s); 621 do_pre_login(s);
@@ -615,6 +626,9 @@ do_exec_pty(Session *s, const char *command)
615 do_child(s, command); 626 do_child(s, command);
616 /* NOTREACHED */ 627 /* NOTREACHED */
617 } 628 }
629#ifdef _UNICOS
630 signal(WJSIGNAL, cray_job_termination_handler);
631#endif /* _UNICOS */
618#ifdef HAVE_CYGWIN 632#ifdef HAVE_CYGWIN
619 if (is_winnt) 633 if (is_winnt)
620 cygwin_set_impersonation_token(INVALID_HANDLE_VALUE); 634 cygwin_set_impersonation_token(INVALID_HANDLE_VALUE);
@@ -755,6 +769,7 @@ do_login(Session *s, const char *command)
755 printf("%s\n", aixloginmsg); 769 printf("%s\n", aixloginmsg);
756#endif /* WITH_AIXAUTHENTICATE */ 770#endif /* WITH_AIXAUTHENTICATE */
757 771
772#ifndef NO_SSH_LASTLOG
758 if (options.print_lastlog && s->last_login_time != 0) { 773 if (options.print_lastlog && s->last_login_time != 0) {
759 time_string = ctime(&s->last_login_time); 774 time_string = ctime(&s->last_login_time);
760 if (strchr(time_string, '\n')) 775 if (strchr(time_string, '\n'))
@@ -765,6 +780,7 @@ do_login(Session *s, const char *command)
765 printf("Last login: %s from %s\r\n", time_string, 780 printf("Last login: %s from %s\r\n", time_string,
766 s->hostname); 781 s->hostname);
767 } 782 }
783#endif /* NO_SSH_LASTLOG */
768 784
769 do_motd(); 785 do_motd();
770} 786}
@@ -1024,6 +1040,11 @@ do_setup_env(Session *s, const char *shell)
1024 child_set_env(&env, &envsize, "SSH_ORIGINAL_COMMAND", 1040 child_set_env(&env, &envsize, "SSH_ORIGINAL_COMMAND",
1025 original_command); 1041 original_command);
1026 1042
1043#ifdef _UNICOS
1044 if (cray_tmpdir[0] != '\0')
1045 child_set_env(&env, &envsize, "TMPDIR", cray_tmpdir);
1046#endif /* _UNICOS */
1047
1027#ifdef _AIX 1048#ifdef _AIX
1028 { 1049 {
1029 char *cp; 1050 char *cp;
@@ -1275,6 +1296,10 @@ do_child(Session *s, const char *command)
1275 if (options.use_login && command != NULL) 1296 if (options.use_login && command != NULL)
1276 options.use_login = 0; 1297 options.use_login = 0;
1277 1298
1299#ifdef _UNICOS
1300 cray_setup(pw->pw_uid, pw->pw_name, command);
1301#endif /* _UNICOS */
1302
1278 /* 1303 /*
1279 * Login(1) does this as well, and it needs uid 0 for the "-h" 1304 * Login(1) does this as well, and it needs uid 0 for the "-h"
1280 * switch, so we let login(1) to this for us. 1305 * switch, so we let login(1) to this for us.
diff --git a/sshd.c b/sshd.c
index 17f001669..37026dc2e 100644
--- a/sshd.c
+++ b/sshd.c
@@ -940,7 +940,7 @@ main(int ac, char **av)
940 SYSLOG_FACILITY_AUTH : options.log_facility, 940 SYSLOG_FACILITY_AUTH : options.log_facility,
941 !inetd_flag); 941 !inetd_flag);
942 942
943#if defined(_CRAY) && !defined(_CRAYSV2) 943#ifdef _UNICOS
944 /* Cray can define user privs drop all prives now! 944 /* Cray can define user privs drop all prives now!
945 * Not needed on PRIV_SU systems! 945 * Not needed on PRIV_SU systems!
946 */ 946 */
diff --git a/sshpty.c b/sshpty.c
index e3027ca2e..28d0e310c 100644
--- a/sshpty.c
+++ b/sshpty.c
@@ -162,7 +162,7 @@ pty_allocate(int *ptyfd, int *ttyfd, char *namebuf, int namebuflen)
162 } 162 }
163 return 1; 163 return 1;
164#else /* HAVE_DEV_PTS_AND_PTC */ 164#else /* HAVE_DEV_PTS_AND_PTC */
165#if defined(_CRAY) && !defined(_CRAYSV2) 165#ifdef _UNICOS
166 char buf[64]; 166 char buf[64];
167 int i; 167 int i;
168 int highpty; 168 int highpty;
@@ -268,7 +268,7 @@ pty_make_controlling_tty(int *ttyfd, const char *ttyname)
268 void *old; 268 void *old;
269#endif /* USE_VHANGUP */ 269#endif /* USE_VHANGUP */
270 270
271#if defined(_CRAY) && !defined(_CRAYSV2) 271#ifdef _UNICOS
272 if (setsid() < 0) 272 if (setsid() < 0)
273 error("setsid: %.100s", strerror(errno)); 273 error("setsid: %.100s", strerror(errno));
274 274
@@ -290,7 +290,7 @@ pty_make_controlling_tty(int *ttyfd, const char *ttyname)
290 error("%.100s: %.100s", ttyname, strerror(errno)); 290 error("%.100s: %.100s", ttyname, strerror(errno));
291 close(*ttyfd); 291 close(*ttyfd);
292 *ttyfd = fd; 292 *ttyfd = fd;
293#else /* _CRAY */ 293#else /* _UNICOS */
294 294
295 /* First disconnect from the old controlling tty. */ 295 /* First disconnect from the old controlling tty. */
296#ifdef TIOCNOTTY 296#ifdef TIOCNOTTY
@@ -345,7 +345,7 @@ pty_make_controlling_tty(int *ttyfd, const char *ttyname)
345 strerror(errno)); 345 strerror(errno));
346 else 346 else
347 close(fd); 347 close(fd);
348#endif /* _CRAY */ 348#endif /* _UNICOS */
349} 349}
350 350
351/* Changes the window size associated with the pty. */ 351/* Changes the window size associated with the pty. */