upstream: factor out confirm_overwrite(); ok markus@
OpenBSD-Commit-ID: 304e95381b39c774c8fced7e5328b106a3ff0400
This commit is contained in:
parent
9a396e3368
commit
85443f165b
38
ssh-keygen.c
38
ssh-keygen.c
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: ssh-keygen.c,v 1.342 2019/09/02 23:46:46 djm Exp $ */
|
||||
/* $OpenBSD: ssh-keygen.c,v 1.343 2019/09/03 08:27:52 djm Exp $ */
|
||||
/*
|
||||
* Author: Tatu Ylonen <ylo@cs.hut.fi>
|
||||
* Copyright (c) 1994 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
|
||||
|
@ -222,6 +222,30 @@ type_bits_valid(int type, const char *name, u_int32_t *bitsp)
|
|||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
* Checks whether a file exists and, if so, asks the user whether they wish
|
||||
* to overwrite it.
|
||||
* Returns nonzero if the file does not already exist or if the user agrees to
|
||||
* overwrite, or zero otherwise.
|
||||
*/
|
||||
static int
|
||||
confirm_overwrite(const char *filename)
|
||||
{
|
||||
char yesno[3];
|
||||
struct stat st;
|
||||
|
||||
if (stat(filename, &st) != 0)
|
||||
return 1;
|
||||
printf("%s already exists.\n", filename);
|
||||
printf("Overwrite (y/n)? ");
|
||||
fflush(stdout);
|
||||
if (fgets(yesno, sizeof(yesno), stdin) == NULL)
|
||||
return 0;
|
||||
if (yesno[0] != 'y' && yesno[0] != 'Y')
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void
|
||||
ask_filename(struct passwd *pw, const char *prompt)
|
||||
{
|
||||
|
@ -2881,16 +2905,8 @@ main(int argc, char **argv)
|
|||
}
|
||||
}
|
||||
/* If the file already exists, ask the user to confirm. */
|
||||
if (stat(identity_file, &st) >= 0) {
|
||||
char yesno[3];
|
||||
printf("%s already exists.\n", identity_file);
|
||||
printf("Overwrite (y/n)? ");
|
||||
fflush(stdout);
|
||||
if (fgets(yesno, sizeof(yesno), stdin) == NULL)
|
||||
exit(1);
|
||||
if (yesno[0] != 'y' && yesno[0] != 'Y')
|
||||
exit(1);
|
||||
}
|
||||
if (!confirm_overwrite(identity_file))
|
||||
exit(1);
|
||||
/* Ask for a passphrase (twice). */
|
||||
if (identity_passphrase)
|
||||
passphrase1 = xstrdup(identity_passphrase);
|
||||
|
|
Loading…
Reference in New Issue