On 2023-02-02 15:14, tito wrote:
On Thu, 02 Feb 2023 12:55:23 +0800
Hi,
But Posix says:

If file is of type directory, the following steps shall be taken:

If neither the -R option nor the -r option is specified, rm shall write a diagnostic message to standard error, do nothing more with file, and go on to any remaining files.

If the -f option is not specified, and either the permissions of file do not permit writing and the standard input is a terminal or the -i option is specified, rm shall write
   a prompt to standard error and read a line from the standard input.
If the response is not affirmative, rm shall do nothing more with the current file and go on to any remaining files.

so my question is: does your patch remove the dir only with -rf options
or with all option combinations?

Ciao,
Tito

Sorry, my last mail was sent to Tito only.

The patch only removes the directory with -r specified. However, it does
not give an additional prompt when -i is specified.

Maybe the following patch is better.

---
diff --git a/libbb/remove_file.c b/libbb/remove_file.c
index 1505e62..7b60ab3 100644
--- a/libbb/remove_file.c
+++ b/libbb/remove_file.c
@@ -46,8 +46,8 @@ int FAST_FUNC remove_file(const char *path, int flags)
                }

                dp = opendir(path);
-               if (dp == NULL) {
-                       return -1;
+               if (!dp) {
+                       goto tryRemoveDir;
                }

                while ((d = readdir(dp)) != NULL) {
@@ -62,7 +62,8 @@ int FAST_FUNC remove_file(const char *path, int flags)
                }
                closedir(dp);

-               if (flags & FILEUTILS_INTERACTIVE) {
+tryRemoveDir:
+               if ((flags & FILEUTILS_INTERACTIVE)) {
                        fprintf(stderr, "%s: remove directory '%s'? ",
                                        applet_name, path);
                        if (!bb_ask_y_confirmation())

--
Ziyao
_______________________________________________
busybox mailing list
busybox@busybox.net
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to