printf("-- Press any key to proceed --");
fflush(stdout);
- read_one_char(stdin, &k, (usec_t) -1, &need_nl);
+ (void) read_one_char(stdin, &k, USEC_INFINITY, &need_nl);
if (need_nl)
putchar('\n');
for (;;) {
_cleanup_free_ char *a = NULL, *b = NULL;
- r = ask_password_tty(msg1, 0, NULL, &a);
+ r = ask_password_tty(msg1, 0, false, NULL, &a);
if (r < 0) {
log_error("Failed to query root password: %s", strerror(-r));
return r;
break;
}
- r = ask_password_tty(msg2, 0, NULL, &b);
+ r = ask_password_tty(msg2, 0, false, NULL, &b);
if (r < 0) {
log_error("Failed to query root password: %s", strerror(-r));
clear_string(a);
assert(path);
assert(p);
- mkdir_parents(path, 0755);
- f = fopen(path, "wex");
+ RUN_WITH_UMASK(0777)
+ f = fopen(path, "wex");
if (!f)
return -errno;
.sp_expire = -1,
.sp_flag = (unsigned long) -1, /* this appears to be what everybody does ... */
};
+
+ _cleanup_close_ int lock = -1;
char salt[3+16+1+1];
uint8_t raw[16];
unsigned i;
if (faccessat(AT_FDCWD, etc_shadow, F_OK, AT_SYMLINK_NOFOLLOW) >= 0)
return 0;
+ mkdir_parents(etc_shadow, 0755);
+
+ lock = take_password_lock(arg_root);
+ if (lock < 0)
+ return lock;
+
if (arg_copy_root_password && arg_root) {
struct spwd *p;
return 0;
}
-static int help(void) {
-
+static void help(void) {
printf("%s [OPTIONS...]\n\n"
"Configures basic settings of the system.\n\n"
" -h --help Show this help\n"
" --copy-timezone Copy timezone from host\n"
" --copy-root-password Copy root password from host\n"
" --copy Copy locale, timezone, root password\n"
- " --setup-machine-id Generate a new random machine ID\n",
- program_invocation_short_name);
-
- return 0;
+ " --setup-machine-id Generate a new random machine ID\n"
+ , program_invocation_short_name);
}
static int parse_argv(int argc, char *argv[]) {
assert(argc >= 0);
assert(argv);
- while ((c = getopt_long(argc, argv, "h", options, NULL)) >= 0) {
+ while ((c = getopt_long(argc, argv, "h", options, NULL)) >= 0)
switch (c) {
case 'h':
- return help();
+ help();
+ return 0;
case ARG_VERSION:
puts(PACKAGE_STRING);
case ARG_COPY:
arg_copy_locale = arg_copy_timezone = arg_copy_root_password = true;
+ break;
case ARG_COPY_LOCALE:
arg_copy_locale = true;
default:
assert_not_reached("Unhandled option");
}
- }
return 1;
}