bd929b4
diff -up openssh-5.5p1/ssh-keygen.0.keygen openssh-5.5p1/ssh-keygen.0
bd929b4
--- openssh-5.5p1/ssh-keygen.0.keygen	2010-04-16 02:17:11.000000000 +0200
bd929b4
+++ openssh-5.5p1/ssh-keygen.0	2010-05-04 08:19:22.000000000 +0200
bd929b4
@@ -4,7 +4,7 @@ NAME
bd929b4
      ssh-keygen - authentication key generation, management and conversion
bd929b4
 
bd929b4
 SYNOPSIS
bd929b4
-     ssh-keygen [-q] [-b bits] -t type [-N new_passphrase] [-C comment]
bd929b4
+     ssh-keygen [-q] [-o] [-b bits] -t type [-N new_passphrase] [-C comment]
bd929b4
                 [-f output_keyfile]
bd929b4
      ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]
bd929b4
      ssh-keygen -i [-f input_keyfile]
bd929b4
@@ -222,6 +222,8 @@ DESCRIPTION
bd929b4
 
bd929b4
      -q      Silence ssh-keygen.  Used by /etc/rc when creating a new key.
bd929b4
 
bd929b4
+     -o      Overwrite the key without prompting user.
bd929b4
+
bd929b4
      -R hostname
bd929b4
              Removes all keys belonging to hostname from a known_hosts file.
bd929b4
              This option is useful to delete hashed hosts (see the -H option
bd929b4
diff -up openssh-5.5p1/ssh-keygen.1.keygen openssh-5.5p1/ssh-keygen.1
bd929b4
--- openssh-5.5p1/ssh-keygen.1.keygen	2010-03-21 19:57:49.000000000 +0100
bd929b4
+++ openssh-5.5p1/ssh-keygen.1	2010-05-04 08:19:22.000000000 +0200
bd929b4
@@ -47,6 +47,7 @@
bd929b4
 .Nm ssh-keygen
bd929b4
 .Bk -words
bd929b4
 .Op Fl q
bd929b4
+.Op Fl o
bd929b4
 .Op Fl b Ar bits
bd929b4
 .Fl t Ar type
bd929b4
 .Op Fl N Ar new_passphrase
bd929b4
@@ -370,6 +371,8 @@ Silence
bd929b4
 Used by
bd929b4
 .Pa /etc/rc
bd929b4
 when creating a new key.
bd929b4
+.It Fl o
bd929b4
+Overwrite the key without prompting user.
bd929b4
 .It Fl R Ar hostname
bd929b4
 Removes all keys belonging to
bd929b4
 .Ar hostname
bd929b4
diff -up openssh-5.5p1/ssh-keygen.c.keygen openssh-5.5p1/ssh-keygen.c
bd929b4
--- openssh-5.5p1/ssh-keygen.c.keygen	2010-03-21 19:58:24.000000000 +0100
bd929b4
+++ openssh-5.5p1/ssh-keygen.c	2010-05-04 08:22:22.000000000 +0200
bd929b4
@@ -72,6 +72,7 @@ int change_passphrase = 0;
bd929b4
 int change_comment = 0;
bd929b4
 
bd929b4
 int quiet = 0;
bd929b4
+int overwrite = 0;
bd929b4
 
bd929b4
 int log_level = SYSLOG_LEVEL_INFO;
bd929b4
 
bd929b4
@@ -1540,7 +1541,7 @@ main(int argc, char **argv)
bd929b4
 		exit(1);
bd929b4
 	}
bd929b4
 
bd929b4
-	while ((opt = getopt(argc, argv, "degiqpclBHLhvxXyF:b:f:t:D:I:P:N:n:"
bd929b4
+	while ((opt = getopt(argc, argv, "degiqopclBHLhvxXyF:b:f:t:D:I:P:N:n:"
bd929b4
 	    "O:C:r:g:R:T:G:M:S:s:a:V:W:")) != -1) {
bd929b4
 		switch (opt) {
bd929b4
 		case 'b':
bd929b4
@@ -1605,6 +1606,9 @@ main(int argc, char **argv)
bd929b4
 		case 'q':
bd929b4
 			quiet = 1;
bd929b4
 			break;
bd929b4
+		case 'o':
bd929b4
+			overwrite = 1;
bd929b4
+			break;
bd929b4
 		case 'e':
bd929b4
 		case 'x':
bd929b4
 			/* export key */
bd929b4
@@ -1835,7 +1839,7 @@ main(int argc, char **argv)
bd929b4
 			printf("Created directory '%s'.\n", dotsshdir);
bd929b4
 	}
bd929b4
 	/* If the file already exists, ask the user to confirm. */
bd929b4
-	if (stat(identity_file, &st) >= 0) {
bd929b4
+	if (!overwrite && stat(identity_file, &st) >= 0) {
bd929b4
 		char yesno[3];
bd929b4
 		printf("%s already exists.\n", identity_file);
bd929b4
 		printf("Overwrite (y/n)? ");