diff toys/cp.c @ 503:3b9dea897dc0

Upgrade yesno() and make cp -i use it.
author Rob Landley <rob@landley.net>
date Mon, 27 Feb 2012 21:56:49 -0600
parents da73bb464ce8
children 878b94b32866
line wrap: on
line diff
--- a/toys/cp.c	Sun Feb 26 22:04:37 2012 -0600
+++ b/toys/cp.c	Mon Feb 27 21:56:49 2012 -0600
@@ -58,18 +58,11 @@
 void cp_file(char *src, char *dst, struct stat *srcst)
 {
 	int fdout = -1;
-	char overwrite;
 
-	if ((toys.optflags & FLAG_i) && access(dst, R_OK) == 0) {
-		// -i flag is specified and dst file exists.
-		// If user does not confirm, don't copy the file
-		// Ideally I'd use perror here, but it always appends a newline
-		// to the string, resulting in the input prompt being displayed
-		// on the next line.
-		fprintf(stderr, "cp: overwrite '%s'? ", dst);
-		(void)scanf("%c", &overwrite);
-		if (!(overwrite == 'y' || overwrite == 'Y')) return;
-	}
+	// -i flag is specified and dst file exists.
+	if ((toys.optflags&FLAG_i) && !access(dst, R_OK)
+		&& !yesno("cp: overwrite", 1))
+			return;
 
 	if (toys.optflags & FLAG_v)
 		printf("'%s' -> '%s'\n", src, dst);