Hi!

----

Attached is a patch
("ksh93_libcmd_rmdir_add_s_suppress_switch001.diff.txt") which adds a
"-s" switch (to "suppress" error messages when "-p" is used) for
compatibility with the native Solaris version of /usr/bin/rmdir ...

----

Bye,
Roland

-- 
  __ .  . __
 (o.\ \/ /.o) roland.mainz at nrubsig.org
  \__\/\/__/  MPEG specialist, C&&JAVA&&Sun&&Unix programmer
  /O /==\ O\  TEL +49 641 7950090
 (;O/ \/ \O;)
-------------- next part --------------
Index: src/lib/libcmd/common/rmdir.c
===================================================================
--- src/lib/libcmd/common/rmdir.c       (revision 394)
+++ src/lib/libcmd/common/rmdir.c       (working copy)
@@ -38,6 +38,8 @@
        "to remove it.]"
 "[p:parents?Remove each explicit \adirectory\a argument directory that "
        "becomes empty after its child directories are removed.]"
+"[s:suppress?Suppress the message printed on the standard error when "
+        "\b-p\b is in effect. ]"
 "\n"
 "\ndirectory ...\n"
 "\n"
@@ -45,7 +47,7 @@
         "[+0?All directories deleted successfully.]"
         "[+>0?One or more directories could not be deleted.]"
 "}"
-"[+SEE ALSO?\bmkdir\b(1), \brm\b(1)]"
+"[+SEE ALSO?\bmkdir\b(1), \brm\b(1), \brmdir\b(2), \bunlink\b(2)]"
 ;
 
 #include <cmdlib.h>
@@ -56,7 +58,8 @@
        register char*  dir;
        register char*  end;
        register int    n;
-       int             pflag = 0;
+       int             pflag = 0,
+                       sflag = 0;
 
        NoP(argc);
        cmdinit(argv, context, ERROR_CATALOG, 0);
@@ -65,6 +68,9 @@
        case 'p':
                pflag = 1;
                break;
+       case 's':
+               sflag = 1;
+               break;
        case ':':
                error(2, "%s", opt_info.arg);
                break;
@@ -84,8 +90,11 @@
                {
                        if (rmdir(dir) < 0)
                        {
-                               error(ERROR_system(0), "%s: cannot remove", 
dir);
-                               break;
+                               if (!(sflag && pflag))
+                               {
+                                       error(ERROR_system(0), "%s: cannot 
remove", dir);
+                                       break;
+                               }
                        }
                        if (n) *end = '/';
                        else n = 1;

Reply via email to