]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
build-sys: fixes for non-Linux systems
authorSamuel Thibault <samuel.thibault@ens-lyon.org>
Thu, 19 Jun 2014 08:35:23 +0000 (10:35 +0200)
committerKarel Zak <kzak@redhat.com>
Thu, 19 Jun 2014 08:35:23 +0000 (10:35 +0200)
Signed-off-by: Karel Zak <kzak@redhat.com>
configure.ac
lib/boottime.c
login-utils/sulogin.c
term-utils/agetty.c

index 1e9669ae90b807ab5c3c8221ec23d834dfa76be8..da73918113b87a82e44ab06105d42f3faeb1b16f 100644 (file)
@@ -324,6 +324,7 @@ AC_CHECK_FUNCS([ \
        strnlen \
        strtoull \
        sysconf \
+       sysinfo \
        updwtmp \
        usleep \
        warn \
index a2869a50ba1526e03dec003d821542a8c8d4e7f6..f9366bd33cf13a293467aa6f9e9117a476584736 100644 (file)
@@ -14,7 +14,9 @@ int get_boot_time(struct timeval *boot_time)
        struct timeval lores_uptime;
 #endif
        struct timeval now;
+#ifdef HAVE_SYSINFO
        struct sysinfo info;
+#endif
 
        if (gettimeofday(&now, NULL) != 0) {
                warn(_("gettimeofday failed"));
@@ -27,6 +29,7 @@ int get_boot_time(struct timeval *boot_time)
                return 0;
        }
 #endif
+#ifdef HAVE_SYSINFO
        /* fallback */
        if (sysinfo(&info) != 0)
                warn(_("sysinfo failed"));
@@ -34,4 +37,7 @@ int get_boot_time(struct timeval *boot_time)
        boot_time->tv_sec = now.tv_sec - info.uptime;
        boot_time->tv_usec = 0;
        return 0;
+#else
+       return -ENOSYS;
+#endif
 }
index 222d40ee899d0fba2a9564f4d3d08781326001bd..15fb28b6a6aa3ab034e37286b9bf9f25c1a2edaa 100644 (file)
@@ -81,6 +81,7 @@ static volatile sig_atomic_t sigchild;
 # define IUCLC         0
 #endif
 
+#ifdef TIOCGLCKTRMIOS
 /*
  * For the case plymouth is found on this system
  */
@@ -111,6 +112,7 @@ static int plymouth_command(const char* arg)
        }
        return 1;
 }
+#endif
 
 /*
  * Fix the tty modes and set reasonable defaults.
@@ -120,7 +122,9 @@ static void tcinit(struct console *con)
        int mode = 0, flags = 0;
        struct termios *tio = &con->tio;
        struct termios lock;
-       int fd = con->fd, i = (plymouth_command("--ping")) ? 20 : 0;
+       int fd = con->fd;
+#ifdef TIOCGLCKTRMIOS
+       int i = (plymouth_command("--ping")) ? 20 : 0;
 
        while (i-- > 0) {
                /*
@@ -138,6 +142,7 @@ static void tcinit(struct console *con)
        }
        memset(&lock, 0, sizeof(struct termios));
        ioctl(fd, TIOCSLCKTRMIOS, &lock);
+#endif
 
        errno = 0;
 
index e12b272050e0d47ca0b423a18f23c9c9c14b8aeb..2b5932d60de85339ece9c70bbefc6a0beabcd9ed 100644 (file)
@@ -942,6 +942,9 @@ static void open_tty(char *tty, struct termios *tp, struct options *op)
 {
        const pid_t pid = getpid();
        int closed = 0;
+#ifndef KDGKBMODE
+       int serial;
+#endif
 
        /* Set up new standard input, unless we are given an already opened port. */
 
@@ -1090,12 +1093,19 @@ static void open_tty(char *tty, struct termios *tp, struct options *op)
         * In case of a virtual console the ioctl KDGKBMODE succeeds
         * whereas on other lines it will fails.
         */
-       if (ioctl(STDIN_FILENO, KDGKBMODE, &op->kbmode) == 0) {
+#ifdef KDGKBMODE
+       if (ioctl(STDIN_FILENO, KDGKBMODE, &op->kbmode) == 0)
+#else
+       if (ioctl(STDIN_FILENO, TIOCMGET, &serial) < 0 && (errno == EINVAL))
+#endif
+       {
                op->flags |= F_VCONSOLE;
                if (!op->term)
                        op->term = DEFAULT_VCTERM;
        } else {
+#ifdef K_RAW
                op->kbmode = K_RAW;
+#endif
                if (!op->term)
                        op->term = DEFAULT_STERM;
        }
@@ -1109,6 +1119,7 @@ static void termio_init(struct options *op, struct termios *tp)
        speed_t ispeed, ospeed;
        struct winsize ws;
        struct termios lock;
+#ifdef TIOCGLCKTRMIOS
        int i =  (plymouth_command("--ping") == 0) ? 30 : 0;
 
        while (i-- > 0) {
@@ -1129,6 +1140,7 @@ static void termio_init(struct options *op, struct termios *tp)
        }
        memset(&lock, 0, sizeof(struct termios));
        ioctl(STDIN_FILENO, TIOCSLCKTRMIOS, &lock);
+#endif
 
        if (op->flags & F_VCONSOLE) {
 #if defined(IUTF8) && defined(KDGKBMODE)