]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
ctrlaltdel: use reboot() provided by libc, assuming it is 1-adic.
authorCasper Ti. Vector <caspervector@gmail.com>
Thu, 19 Nov 2015 02:52:14 +0000 (10:52 +0800)
committerKarel Zak <kzak@redhat.com>
Thu, 19 Nov 2015 11:07:04 +0000 (12:07 +0100)
configure.ac
sys-utils/ctrlaltdel.c

index 6748dd2a5fe59d6ce470b8706009c7c5a10a433a..6075f72077ed0e739da48aebf845f32a9c1289b1 100644 (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])
index 438892585d0bf79f1589781ab299f9e2ad2a2e0c..4a6958485b5a35d9a3ca18a266466e1561b5aecc 100644 (file)
 #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;
        }