From 25241b4d5a359f3b25e672b9a19b15968cacc107 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Fri, 20 Jun 2008 14:50:20 +0000 Subject: [PATCH] * configure.in: Check for presence of cfmakeraw and cfsetspeed. * sysdep.c (cfmakeraw): Provide fallback implementation. (serial_configure): Provide fallback implementation of cfsetspeed. --- ChangeLog | 4 ++++ configure.in | 3 ++- src/ChangeLog | 5 +++++ src/sysdep.c | 21 +++++++++++++++++++++ 4 files changed, 32 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 7b2bb2ce79..bcb9ffb21e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2008-06-20 Angelo Graziosi (tiny change) + + * configure.in: Check for presence of cfmakeraw and cfsetspeed. + 2008-06-15 Glenn Morris * info/dir: Add sasl. diff --git a/configure.in b/configure.in index c6b17dc8ae..944661707f 100644 --- a/configure.in +++ b/configure.in @@ -2300,7 +2300,8 @@ utimes setrlimit setpgid getcwd getwd shutdown getaddrinfo \ __fpending mblen mbrlen mbsinit strsignal setitimer ualarm index rindex \ sendto recvfrom getsockopt setsockopt getsockname getpeername \ gai_strerror mkstemp getline getdelim mremap memmove fsync sync bzero \ -memset memcmp difftime memcpy mempcpy mblen mbrlen posix_memalign) +memset memcmp difftime memcpy mempcpy mblen mbrlen posix_memalign \ +cfmakeraw cfsetspeed) AC_CHECK_HEADERS(sys/un.h) diff --git a/src/ChangeLog b/src/ChangeLog index 52e8901ff8..8acc50cccb 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2008-06-20 Angelo Graziosi (tiny change) + + * sysdep.c (cfmakeraw): Provide fallback implementation. + (serial_configure): Provide fallback implementation of cfsetspeed. + 2008-06-20 Kenichi Handa * xftfont.c (xftfont_open): Add FOUNDRY, SPACING, DPI, SCALABLE to diff --git a/src/sysdep.c b/src/sysdep.c index 1ef5b512ee..38e4e0e95f 100644 --- a/src/sysdep.c +++ b/src/sysdep.c @@ -244,6 +244,10 @@ void hft_reset P_ ((struct tty_display_info *)); SIGMASKTYPE sigprocmask_set; +#if !defined (HAVE_CFMAKERAW) +void cfmakeraw(struct termios *); +#endif /* !defined (HAVE_CFMAKERAW */ + #if !defined (HAVE_GET_CURRENT_DIR_NAME) || defined (BROKEN_GET_CURRENT_DIR_NAME) @@ -5447,7 +5451,12 @@ serial_configure (struct Lisp_Process *p, else tem = Fplist_get (p->childp, QCspeed); CHECK_NUMBER (tem); +#ifdef HAVE_CFSETSPEED err = cfsetspeed (&attr, XINT (tem)); +#else + err = cfsetispeed(&attr, XINT (tem)); + err = err + cfsetospeed(&attr, XINT (tem)); +#endif if (err != 0) error ("cfsetspeed(%d) failed: %s", XINT (tem), emacs_strerror (errno)); childp2 = Fplist_put (childp2, QCspeed, tem); @@ -5577,6 +5586,18 @@ serial_configure (struct Lisp_Process *p, p->childp = childp2; } +#if !defined (HAVE_CFMAKERAW) +/* Workaround for targets which are missing cfmakeraw */ +/* Pasted from man page; added in serial.c arbitrarily */ +void cfmakeraw(struct termios *termios_p) +{ + termios_p->c_iflag &= ~(IGNBRK|BRKINT|PARMRK|ISTRIP|INLCR|IGNCR|ICRNL|IXON); + termios_p->c_oflag &= ~OPOST; + termios_p->c_lflag &= ~(ECHO|ECHONL|ICANON|ISIG|IEXTEN); + termios_p->c_cflag &= ~(CSIZE|PARENB); + termios_p->c_cflag |= CS8; +} +#endif /* !defined (HAVE_CFMAKERAW */ #endif /* TERMIOS */ /* arch-tag: edb43589-4e09-4544-b325-978b5b121dcf -- 2.20.1