static const char *arg_dest = "/tmp";
static int generate_symlink(void) {
- struct stat st;
- char *p;
+ const char *p = NULL;
- if (lstat("/system-update", &st) < 0) {
+ if (access("/system-update", F_OK) < 0) {
if (errno == ENOENT)
return 0;
return -EINVAL;
}
- p = strappend(arg_dest, "/default.target");
- if (!p) {
- log_error("Out of memory.");
- return -ENOMEM;
- }
-
+ p = strappenda(arg_dest, "/default.target");
if (symlink(SYSTEM_DATA_UNIT_PATH "/system-update.target", p) < 0) {
- free(p);
- log_error("Failed to create symlink: %m");
+ log_error("Failed to create symlink %s: %m", p);
return -errno;
}
- free(p);
-
return 0;
}
int main(int argc, char *argv[]) {
int r;
- if (argc > 2) {
- log_error("This program takes one or no arguments.");
+ if (argc > 1 && argc != 4) {
+ log_error("This program takes three or no arguments.");
return EXIT_FAILURE;
}
if (argc > 1)
- arg_dest = argv[1];
+ arg_dest = argv[2];
log_set_target(LOG_TARGET_SAFE);
log_parse_environment();