summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristoph Egger <christoph@debian.org>2014-08-24 18:04:43 +0200
committerKarel Zak <kzak@redhat.com>2014-10-24 10:10:31 +0200
commit19c5345538c64e6878b6c2dca962c95cfd033852 (patch)
tree9d3319752253694db6964564ac2b7589cdaaad49
parent66244ca41b739e6a3e909b9bfa7e844a08efb217 (diff)
downloadutil-linux-19c5345538c64e6878b6c2dca962c95cfd033852.tar.gz
agetty: fixing FTBFS on !linux (Debian util-linux 2.20.1-1.2)
Handle vc flags missing on FreeBSD Fix tty creation on kFreeBSD taking patch from 2.19 Addresses-Debian-Bug: #650185
-rw-r--r--include/ttyutils.h40
-rw-r--r--term-utils/Makemodule.am1
-rw-r--r--term-utils/agetty.c16
3 files changed, 57 insertions, 0 deletions
diff --git a/include/ttyutils.h b/include/ttyutils.h
index 4f2fd8848..e842f9f0d 100644
--- a/include/ttyutils.h
+++ b/include/ttyutils.h
@@ -74,6 +74,46 @@ static inline void reset_virtual_console(struct termios *tp, int flags)
/* Sane setting, allow eight bit characters, no carriage return delay
* the same result as `stty sane cr0 pass8'
*/
+#ifndef IUCLC
+# define IUCLC 0
+#endif
+#ifndef NL0
+# define NL0 0
+#endif
+#ifndef CR0
+# define CR0 0
+#endif
+#ifndef BS0
+# define BS0 0
+#endif
+#ifndef VT0
+# define VT0 0
+#endif
+#ifndef FF0
+# define FF0 0
+#endif
+#ifndef OLCUC
+# define OLCUC 0
+#endif
+#ifndef OFILL
+# define OFILL 0
+#endif
+#ifndef NLDLY
+# define NLDLY 0
+#endif
+#ifndef CRDLY
+# define CRDLY 0
+#endif
+#ifndef BSDLY
+# define BSDLY 0
+#endif
+#ifndef VTDLY
+# define VTDLY 0
+#endif
+#ifndef FFDLY
+# define FFDLY 0
+#endif
+
tp->c_iflag |= (BRKINT | ICRNL | IMAXBEL);
tp->c_iflag &= ~(IGNBRK | INLCR | IGNCR | IXOFF | IUCLC | IXANY | ISTRIP);
tp->c_oflag |= (OPOST | ONLCR | NL0 | CR0 | TAB0 | BS0 | VT0 | FF0);
diff --git a/term-utils/Makemodule.am b/term-utils/Makemodule.am
index 5c73f3e5e..627aca049 100644
--- a/term-utils/Makemodule.am
+++ b/term-utils/Makemodule.am
@@ -23,6 +23,7 @@ sbin_PROGRAMS += agetty
dist_man_MANS += term-utils/agetty.8
agetty_SOURCES = term-utils/agetty.c
agetty_LDADD = $(LDADD) libcommon.la
+agetty_LDADD += -lutil
endif # BUILD_AGETTY
diff --git a/term-utils/agetty.c b/term-utils/agetty.c
index 2b5932d60..0caeeb375 100644
--- a/term-utils/agetty.c
+++ b/term-utils/agetty.c
@@ -10,6 +10,7 @@
*
* This program is freely distributable.
*/
+
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
@@ -44,6 +45,12 @@
#include "widechar.h"
#include "ttyutils.h"
+#if defined(__FreeBSD_kernel__)
+#include <pty.h>
+#include <sys/param.h>
+#endif
+
+
#ifdef __linux__
# include <sys/kd.h>
# include <sys/param.h>
@@ -76,6 +83,10 @@
# endif
#endif
+#ifdef __FreeBSD_kernel__
+#define USE_SYSLOG
+#endif
+
/* If USE_SYSLOG is undefined all diagnostics go to /dev/console. */
#ifdef USE_SYSLOG
# include <syslog.h>
@@ -1088,6 +1099,11 @@ static void open_tty(char *tty, struct termios *tp, struct options *op)
op->term = DEFAULT_TTYS1;
}
#endif
+
+#if defined(__FreeBSD_kernel__)
+ login_tty (0);
+#endif
+
/*
* Detect if this is a virtual console or serial/modem line.
* In case of a virtual console the ioctl KDGKBMODE succeeds