termios: Added cfsetspeed function.

BSD extension to set both the input and output speed of a termios
structure.

Fixes #18220.

Change-Id: I8c4a06b4be4aa55b8ce35cb7f62552fc47a8e8d0
Reviewed-on: https://review.haiku-os.org/c/haiku/+/6049
Reviewed-by: Jérôme Duval <[email protected]>
This commit is contained in:
vaibhavg20comp
2023-02-17 16:16:39 +00:00
committed by Adrien Destugues
parent 8aadf2e84a
commit ba9ce9c13b
3 changed files with 58 additions and 0 deletions
+30
View File
@@ -0,0 +1,30 @@
/*
* Copyright 2023 Haiku, Inc. All Rights Reserved.
* Distributed under the terms of the MIT License.
*/
#ifndef _BSD_TERMIOS_H_
#define _BSD_TERMIOS_H_
#include_next <termios.h>
#include <features.h>
#ifdef _DEFAULT_SOURCE
#ifdef __cplusplus
extern "C" {
#endif
extern int cfsetspeed(struct termios *termios, speed_t speed);
#ifdef __cplusplus
}
#endif
#endif
#endif /* _BSD_TERMIOS_H_ */
+1
View File
@@ -24,6 +24,7 @@ for architectureObject in [ MultiArchSubDirSetup ] {
signal.c
string.cpp
stringlist.c
termios.c
unvis.c
usershell.c
vis.c
+27
View File
@@ -0,0 +1,27 @@
/*
* Copyright 2023, Haiku, inc.
*
* Distributed under the terms of the MIT License.
*/
#include <termios.h>
int
cfsetspeed(struct termios *termios, speed_t speed)
{
/* Custom speed values are stored in c_ispeed and c_ospeed.
* Standard values are inlined in c_cflag. */
if (speed > B31250) {
termios->c_cflag |= CBAUD;
termios->c_ispeed = speed;
termios->c_ospeed = speed;
return 0;
}
termios->c_cflag &= ~CBAUD;
termios->c_cflag |= speed;
return 0;
}