From 5470bc9f78247e48e50ce471a7939390c0f0639e Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Mon, 7 Dec 1998 13:36:03 +0000 Subject: Update. 1998-12-07 Ulrich Drepper * sysdeps/unix/sysv/linux/speed.c (cfsetispeed): Make a real function. Don't set speed is SPEED parameter is zero since this means set it to the output speed. * version.h (VERSION): Bump to 2.0.106. 1998-12-07 12:06 Ulrich Drepper * po/de.po: Update from translation team. * po/ko.po: Likewise. 1998-12-07 Richard Henderson * sysdeps/unix/sysv/linux/alpha/select.S: Save a4 through both paths. --- sysdeps/unix/sysv/linux/alpha/select.S | 6 +++++- sysdeps/unix/sysv/linux/speed.c | 27 ++++++++++++++++++++++++--- 2 files changed, 29 insertions(+), 4 deletions(-) (limited to 'sysdeps/unix/sysv/linux') diff --git a/sysdeps/unix/sysv/linux/alpha/select.S b/sysdeps/unix/sysv/linux/alpha/select.S index 704e71d753..1876e2f947 100644 --- a/sysdeps/unix/sysv/linux/alpha/select.S +++ b/sysdeps/unix/sysv/linux/alpha/select.S @@ -50,6 +50,11 @@ LEAF(SELECT, 64) .prologue 1 ldl t0, __libc_missing_axp_tv64 + + /* Save timeout early, since we'll need to recover this after + the system call. */ + stq a4, 48(sp) + bne t0, $do32 /* Save arguments in case we do need to fall back. */ @@ -57,7 +62,6 @@ LEAF(SELECT, 64) stq a1, 16(sp) stq a2, 24(sp) stq a3, 32(sp) - stq a4, 48(sp) ldi v0, SYS_ify(select) callsys diff --git a/sysdeps/unix/sysv/linux/speed.c b/sysdeps/unix/sysv/linux/speed.c index 6a1b243da5..a0aefd805a 100644 --- a/sysdeps/unix/sysv/linux/speed.c +++ b/sysdeps/unix/sysv/linux/speed.c @@ -1,5 +1,5 @@ /* `struct termios' speed frobnication functions. Linux version. - Copyright (C) 1991, 92, 93, 95, 96, 97 Free Software Foundation, Inc. + Copyright (C) 1991, 92, 93, 95, 96, 97, 98 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -54,5 +54,26 @@ cfsetospeed (termios_p, speed) } /* Set the input baud rate stored in *TERMIOS_P to SPEED. - For Linux there is no difference between input and output speed. */ -strong_alias (cfsetospeed, cfsetispeed); + Although for Linux there is no difference between input and output + speed, the numerical 0 is a special case for the input baud rate. It + should set the input baud rate to the output baud rate. */ +int +cfsetispeed (termios_p, speed) + struct termios *termios_p; + speed_t speed; +{ + if ((speed & ~CBAUD) != 0 + && (speed < B57600 || speed > B460800)) + { + __set_errno (EINVAL); + return -1; + } + + if (speed != 0) + { + termios_p->c_cflag &= ~(CBAUD | CBAUDEX); + termios_p->c_cflag |= speed; + } + + return 0; +} -- cgit v1.2.3-70-g09d2