1
0
Fork 0
mirror of git://git.code.sf.net/p/zsh/code synced 2025-09-03 10:21:46 +02:00

37946: make rm * warnings more informative.

Now count files that would be deleted up to 100.
This commit is contained in:
Peter Stephenson 2016-02-11 15:23:57 +00:00
parent 10cf74deee
commit 6d82ce161a
2 changed files with 31 additions and 3 deletions

View file

@ -1,3 +1,8 @@
2016-02-11 Peter Stephenson <p.stephenson@samsung.com>
* 37946: Src/utils.c: make rm * warnings more informative about
files being deleted.
2016-02-09 Peter Stephenson <p.stephenson@samsung.com>
* 37893: Doc/Zsh/builtins.yo: document behaviour of typeset -U

View file

@ -2634,13 +2634,36 @@ zsleep_random(long max_us, time_t end_time)
int
checkrmall(char *s)
{
DIR *rmd;
int count = 0;
if (!shout)
return 1;
fprintf(shout, "zsh: sure you want to delete all the files in ");
if (*s != '/') {
nicezputs(pwd[1] ? pwd : "", shout);
fputc('/', shout);
if (pwd[1])
s = zhtricat(pwd, "/", s);
else
s = dyncat("/", s);
}
const int max_count = 100;
if ((rmd = opendir(unmeta(s)))) {
int ignoredots = !isset(GLOBDOTS);
while (zreaddir(rmd, ignoredots)) {
count++;
if (count > max_count)
break;
}
closedir(rmd);
}
if (count > max_count)
fprintf(shout, "zsh: sure you want to delete more than %d files in ",
max_count);
else if (count == 1)
fprintf(shout, "zsh: sure you want to delete the only file in ");
else if (count > 0)
fprintf(shout, "zsh: sure you want to delete all %d files in ",
count);
else
fprintf(shout, "zsh: sure you want to delete all the files in ");
nicezputs(s, shout);
if(isset(RMSTARWAIT)) {
fputs("? (waiting ten seconds)", shout);