ctrlaltdel: use reboot() provided by libc, assuming it is 1-adic.

This commit is contained in:
Casper Ti. Vector 2015-11-19 10:52:14 +08:00 committed by Karel Zak
parent f98d9641a3
commit e52b58e627
2 changed files with 12 additions and 2 deletions

View File

@ -378,6 +378,7 @@ AC_CHECK_FUNCS([ioperm iopl], [have_io=yes])
AC_CHECK_FUNCS([futimens], [have_futimens=yes])
AC_CHECK_FUNCS([inotify_init1], [have_inotify_init1=yes])
AC_CHECK_FUNCS([open_memstream], [have_open_memstream=yes],[have_open_memstream=no])
AC_CHECK_FUNCS([reboot], [have_reboot=yes],[have_reboot=no])
dnl lib/mononotic.c may require -lrt
AC_CHECK_FUNCS([clock_gettime], [],
@ -1420,6 +1421,11 @@ AM_CONDITIONAL([BUILD_DMESG], [test "x$build_dmesg" = xyes])
UL_BUILD_INIT([ctrlaltdel], [check])
UL_REQUIRES_LINUX([ctrlaltdel])
dnl we assume reboot() to be the 1-argument variant, because even considering
dnl widely used alternative C libraries like uclibc, dietlibc and musl,
dnl reboot() with multiple arguments is yet only found in glibc versions
dnl earlier than 2.x.
UL_REQUIRES_HAVE([ctrlaltdel], [reboot])
AM_CONDITIONAL([BUILD_CTRLALTDEL], [test "x$build_ctrlaltdel" = xyes])
UL_BUILD_INIT([fsfreeze], [check])

View File

@ -10,13 +10,17 @@
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include "linux_reboot.h"
#include <unistd.h>
#include <sys/reboot.h>
#include "nls.h"
#include "c.h"
#include "closestream.h"
#include "pathnames.h"
#include "path.h"
#define LINUX_REBOOT_CMD_CAD_ON 0x89ABCDEF
#define LINUX_REBOOT_CMD_CAD_OFF 0x00000000
static void __attribute__ ((__noreturn__)) usage(FILE * out)
{
fprintf(out, USAGE_HEADER);
@ -67,7 +71,7 @@ static int set_cad(const char *arg)
warnx(_("unknown argument: %s"), arg);
return EXIT_FAILURE;
}
if (my_reboot(cmd) < 0) {
if (reboot(cmd) < 0) {
warnx("reboot");
return EXIT_FAILURE;
}