build-sys: fixes for non-Linux systems
Signed-off-by: Karel Zak <kzak@redhat.com>
This commit is contained in:
parent
2ad2196349
commit
88e0f3df66
|
@ -324,6 +324,7 @@ AC_CHECK_FUNCS([ \
|
|||
strnlen \
|
||||
strtoull \
|
||||
sysconf \
|
||||
sysinfo \
|
||||
updwtmp \
|
||||
usleep \
|
||||
warn \
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue