Ignore:
Timestamp:
Dec 8, 2006, 5:14:44 AM (19 years ago)
Author:
bird
Message:

ignore-fail-on-not-exist

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/gmake/kmkbuiltin/rmdir.c

    r684 r685  
    6262static int vflag;
    6363static int ignore_fail_on_non_empty;
     64static int ignore_fail_on_not_exist;
    6465
    6566static struct option long_options[] =
    6667{
    6768    { "ignore-fail-on-non-empty",   no_argument, 0, 260 },
     69    { "ignore-fail-on-not-exist",   no_argument, 0, 261 },
    6870    { "parents",                    no_argument, 0, 'p' },
    6971    { "verbose",                    no_argument, 0, 'v' },
     
    7880
    7981        /* reinitialize globals */
    80         ignore_fail_on_non_empty = vflag = pflag = 0;
     82        ignore_fail_on_not_exist = ignore_fail_on_non_empty = vflag = pflag = 0;
    8183       
    8284        /* kmk: reset getopt and set progname */
     
    102104                        ignore_fail_on_non_empty = 1;
    103105                        break;
     106                case 261:
     107                        ignore_fail_on_not_exist = 1;
     108                        break;
    104109                case '?':
    105110                default:
     
    114119        for (errors = 0; *argv; argv++) {
    115120                if (rmdir(*argv) < 0) {
    116                         if (!ignore_fail_on_non_empty || errno != ENOTEMPTY) {
     121                        if (    (!ignore_fail_on_non_empty || errno != ENOTEMPTY)
     122                                &&      (!ignore_fail_on_not_exist || errno != ENOENT)) {
    117123                                warn("%s", *argv);
    118124                                errors = 1;
     
    162168
    163169                if (rmdir(path) < 0) {
    164                         if (ignore_fail_on_non_empty && errno != ENOTEMPTY)
     170                        if (ignore_fail_on_non_empty && errno == ENOTEMPTY)
    165171                                break;
    166                         warn("%s", path);
    167                         return (1);
     172                        if (!ignore_fail_on_not_exist || errno != ENOENT) {
     173                                warn("%s", path);
     174                                return (1);
     175                        }
    168176                }
    169177                if (vflag)
     
    178186{
    179187
    180         (void)fprintf(stderr, "usage: rmdir [-pv] directory ...\n");
     188        (void)fprintf(stderr, "usage: rmdir [-pv --ignore-fail-on-non-empty --ignore-fail-on-not-exist] directory ...\n");
    181189        return 1;
    182190}
Note: See TracChangeset for help on using the changeset viewer.