systemctl: delete REBOOT_PARAM_FILE if no parameter is specified

And move it to sperate function.
This commit is contained in:
Michael Olbrich
2014-04-21 09:58:53 -04:00
committed by Zbigniew Jędrzejewski-Szmek
parent 370c860f74
commit c5220a940d
3 changed files with 23 additions and 8 deletions
+16
View File
@@ -6397,3 +6397,19 @@ void hexdump(FILE *f, const void *p, size_t s) {
s -= 16;
}
}
int update_reboot_param_file(const char *param)
{
int r = 0;
if (param) {
r = write_string_file(REBOOT_PARAM_FILE, param);
if (r < 0)
log_error("Failed to write reboot param to "
REBOOT_PARAM_FILE": %s", strerror(-r));
} else
unlink(REBOOT_PARAM_FILE);
return r;
}
+4 -2
View File
@@ -917,6 +917,8 @@ char* mount_test_option(const char *haystack, const char *needle);
void hexdump(FILE *f, const void *p, size_t s);
union file_handle_union {
struct file_handle handle;
char padding[sizeof(struct file_handle) + MAX_HANDLE_SZ];
struct file_handle handle;
char padding[sizeof(struct file_handle) + MAX_HANDLE_SZ];
};
int update_reboot_param_file(const char *param);
+3 -6
View File
@@ -6018,13 +6018,10 @@ static int halt_parse_argv(int argc, char *argv[]) {
}
}
if (arg_action == ACTION_REBOOT && argc == optind + 1) {
r = write_string_file(REBOOT_PARAM_FILE, argv[optind]);
if (r < 0) {
log_error("Failed to write reboot param to "
REBOOT_PARAM_FILE": %s", strerror(-r));
if (arg_action == ACTION_REBOOT && (argc == optind || argc == optind + 1)) {
r = update_reboot_param_file(argc == optind + 1 ? argv[optind] : NULL);
if (r < 0)
return r;
}
} else if (optind < argc) {
log_error("Too many arguments.");
return -EINVAL;