systemctl: delete REBOOT_PARAM_FILE if no parameter is specified
And move it to sperate function.
This commit is contained in:
committed by
Zbigniew Jędrzejewski-Szmek
parent
370c860f74
commit
c5220a940d
@@ -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
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user