2 * ctrlaltdel.c - Set the function of the Ctrl-Alt-Del combination
3 * Created 4-Jul-92 by Peter Orbaek <poe@daimi.aau.dk>
4 * 1999-02-22 Arkadiusz MiĆkiewicz <misiek@pld.ORG.PL>
5 * - added Native Language Support
13 #include "linux_reboot.h"
16 #include "closestream.h"
17 #include "pathnames.h"
19 static void __attribute__ ((__noreturn__
)) usage(FILE * out
)
21 fprintf(out
, USAGE_HEADER
);
22 fprintf(out
, _(" %s hard|soft\n"), program_invocation_short_name
);
24 fprintf(out
, USAGE_SEPARATOR
);
25 fprintf(out
, _("Set the function of the Ctrl-Alt-Del combination.\n"));
27 fprintf(out
, USAGE_OPTIONS
);
28 fprintf(out
, USAGE_HELP
);
29 fprintf(out
, USAGE_VERSION
);
30 fprintf(out
, USAGE_MAN_TAIL("ctrlaltdel(8)"));
31 exit(out
== stderr
? EXIT_FAILURE
: EXIT_SUCCESS
);
34 static int get_cad(void)
39 if (!(fp
= fopen(_PATH_PROC_CTRL_ALT_DEL
, "r"))) {
40 warn("%s", _PATH_PROC_CTRL_ALT_DEL
);
43 if (fscanf(fp
, "%d", &val
) != 1)
48 fputs("soft\n", stdout
);
51 fputs("hard\n", stdout
);
54 printf("%s hard\n", _("implicit"));
55 warnx(_("unexpected value in %s: %d"), _PATH_PROC_CTRL_ALT_DEL
, val
);
61 static int set_cad(const char *arg
)
66 warnx(_("You must be root to set the Ctrl-Alt-Del behavior"));
69 if (!strcmp("hard", arg
))
70 cmd
= LINUX_REBOOT_CMD_CAD_ON
;
71 else if (!strcmp("soft", arg
))
72 cmd
= LINUX_REBOOT_CMD_CAD_OFF
;
74 warnx(_("unknown argument: %s"), arg
);
77 if (my_reboot(cmd
) < 0) {
84 int main(int argc
, char **argv
)
87 static const struct option longopts
[] = {
88 {"version", no_argument
, NULL
, 'V'},
89 {"help", no_argument
, NULL
, 'h'},
93 setlocale(LC_ALL
, "");
94 bindtextdomain(PACKAGE
, LOCALEDIR
);
98 while ((ch
= getopt_long(argc
, argv
, "Vh", longopts
, NULL
)) != -1)
101 printf(UTIL_LINUX_VERSION
);
112 ret
= set_cad(argv
[1]);