aboutsummaryrefslogtreecommitdiff
path: root/toys/posix
diff options
context:
space:
mode:
Diffstat (limited to 'toys/posix')
-rw-r--r--toys/posix/cp.c8
-rw-r--r--toys/posix/find.c6
-rw-r--r--toys/posix/rm.c10
3 files changed, 12 insertions, 12 deletions
diff --git a/toys/posix/cp.c b/toys/posix/cp.c
index 5a55f40b..2b032fe6 100644
--- a/toys/posix/cp.c
+++ b/toys/posix/cp.c
@@ -173,7 +173,7 @@ int cp_node(struct dirtree *try)
fprintf(stderr, "%s: overwrite '%s'", toys.which->name,
s = dirtree_path(try, 0));
free(s);
- if (!yesno("", 1)) return 0;
+ if (!yesno(1)) return 0;
}
}
@@ -348,11 +348,11 @@ void cp_main(void)
// Try to interpret as letters, commas won't set anything this doesn't.
for (s = TT.c.preserve; *s; s++) {
for (i=0; i<ARRAY_LEN(preserve); i++)
- if (*s == *preserve[i]) TT.pflags |= 1<<i;
+ if (*s == *preserve[i]) break;
if (i == ARRAY_LEN(preserve)) {
if (*s == 'a') TT.pflags = ~0;
else break;
- }
+ } else TT.pflags |= 1<<i;
}
if (*s) error_exit("bad --preserve=%s", pre);
@@ -381,7 +381,7 @@ void cp_main(void)
&& ((toys.optflags & FLAG_i) || !(st.st_mode & 0222)))
{
fprintf(stderr, "%s: overwrite '%s'", toys.which->name, TT.destname);
- if (!yesno("", 1)) rc = 0;
+ if (!yesno(1)) rc = 0;
else unlink(TT.destname);
}
}
diff --git a/toys/posix/find.c b/toys/posix/find.c
index 99cf5e2f..10585294 100644
--- a/toys/posix/find.c
+++ b/toys/posix/find.c
@@ -421,10 +421,8 @@ static int do_find(struct dirtree *new)
if (aa->dir) aa->prev = (void *)1;
if (*s == 'o') {
- char *prompt = xmprintf("[%s] %s", ss1, name);
- test = yesno(prompt, 0);
- free(prompt);
- if (!test) {
+ fprintf(stderr, "[%s] %s", ss1, name);
+ if (!(test = yesno(0))) {
free(name);
goto cont;
}
diff --git a/toys/posix/rm.c b/toys/posix/rm.c
index 5523a98c..f591c64d 100644
--- a/toys/posix/rm.c
+++ b/toys/posix/rm.c
@@ -39,9 +39,10 @@ static int do_rm(struct dirtree *try)
&& (!S_ISLNK(try->st.st_mode) && faccessat(fd, try->name, W_OK, 0))) or++;
if (!(dir && try->again) && ((or && isatty(0)) || (flags & FLAG_i))) {
char *s = dirtree_path(try, 0);
- fprintf(stderr, "rm %s%s", or ? "ro " : "", dir ? "dir " : "");
- or = yesno(s, 0);
+
+ fprintf(stderr, "rm %s%s%s", or ? "ro " : "", dir ? "dir " : "", s);
free(s);
+ or = yesno(0);
if (!or) goto nodelete;
}
@@ -57,10 +58,11 @@ static int do_rm(struct dirtree *try)
if (try->symlink) goto skip;
if (flags & FLAG_i) {
char *s = dirtree_path(try, 0);
+
// This is the section 2(d) prompt. (Yes, posix says to prompt twice.)
- fprintf(stderr, "rmdir ");
- or = yesno(s, 0);
+ fprintf(stderr, "rmdir %s", s);
free(s);
+ or = yesno(0);
if (!or) goto nodelete;
}
}