]> code.delx.au - gnu-emacs/commitdiff
* configure.in: Check for presence of cfmakeraw and cfsetspeed.
authorStefan Monnier <monnier@iro.umontreal.ca>
Fri, 20 Jun 2008 14:50:20 +0000 (14:50 +0000)
committerStefan Monnier <monnier@iro.umontreal.ca>
Fri, 20 Jun 2008 14:50:20 +0000 (14:50 +0000)
* sysdep.c (cfmakeraw): Provide fallback implementation.
(serial_configure): Provide fallback implementation of cfsetspeed.

ChangeLog
configure.in
src/ChangeLog
src/sysdep.c

index 7b2bb2ce79861b080c099a6d6fb11da470957f70..bcb9ffb21e4436c74fde0b0e10026f53d1fe7b2f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2008-06-20  Angelo Graziosi  <angelo.graziosi@alice.it>  (tiny change)
+
+       * configure.in: Check for presence of cfmakeraw and cfsetspeed.
+
 2008-06-15  Glenn Morris  <rgm@gnu.org>
 
        * info/dir: Add sasl.
index c6b17dc8ae84cbe69f3e12631c7804981d6d0636..944661707f9098cf2f87860b38b86a5c0041991e 100644 (file)
@@ -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)
 
index 52e8901ff87116e67d5fb43c06534ce1baea7c95..8acc50cccb065694934d80ff47676bbe0a6afe35 100644 (file)
@@ -1,3 +1,8 @@
+2008-06-20  Angelo Graziosi  <angelo.graziosi@alice.it>  (tiny change)
+
+       * sysdep.c (cfmakeraw): Provide fallback implementation.
+       (serial_configure): Provide fallback implementation of cfsetspeed.
+
 2008-06-20  Kenichi Handa  <handa@m17n.org>
 
        * xftfont.c (xftfont_open): Add FOUNDRY, SPACING, DPI, SCALABLE to
index 1ef5b512eea8747f2b5ecc7bcd6580332a19a985..38e4e0e95f7c276a0c6034a607662cba33c6d975 100644 (file)
@@ -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