tar: fix misplaced --exclude long option definition
authorDenis Vlasenko <vda.linux@googlemail.com>
Mon, 27 Nov 2006 20:24:40 +0000 (20:24 -0000)
committerDenis Vlasenko <vda.linux@googlemail.com>
Mon, 27 Nov 2006 20:24:40 +0000 (20:24 -0000)
archival/tar.c

index be3df687edf320dff10ff0951b4db8595ab148d2..ca6c1696e0f59f3769e247475f5427f9988dd238 100644 (file)
@@ -704,7 +704,6 @@ static const struct option tar_long_options[] = {
 # if ENABLE_FEATURE_TAR_FROM
        { "files-from",         1,  NULL,   'T' },
        { "exclude-from",       1,  NULL,   'X' },
-       { "exclude",            1,  NULL,   0xfd },
 # endif
 # if ENABLE_FEATURE_TAR_GZIP
        { "gzip",               0,  NULL,   'z' },
@@ -712,8 +711,14 @@ static const struct option tar_long_options[] = {
 # if ENABLE_FEATURE_TAR_COMPRESS
        { "compress",           0,  NULL,   'Z' },
 # endif
-       { "no-same-owner",      0,  NULL,   0xfe },
-       { "no-same-permissions",0,  NULL,   0xff },
+       { "no-same-owner",      0,  NULL,   0xfd },
+       { "no-same-permissions",0,  NULL,   0xfe },
+       /* --exclude takes next bit position in option mask, */
+       /* therefore we have to either put it _after_ --no-same-perm */
+       /* or add OPT[BIT]_EXCLUDE before OPT[BIT]_NOPRESERVE_OWN */
+# if ENABLE_FEATURE_TAR_FROM
+       { "exclude",            1,  NULL,   0xff },
+# endif
        { 0,                    0, 0, 0 }
 };
 #else
@@ -741,7 +746,7 @@ int tar_main(int argc, char **argv)
                "tt:vv:" // count -t,-v
                "?:" // bail out with usage instead of error return
                "X::T::" // cumulative lists
-               "\xfd::" // cumulative lists for --exclude
+               "\xff::" // cumulative lists for --exclude
                USE_FEATURE_TAR_CREATE("c:") "t:x:" // at least one of these is reqd
                USE_FEATURE_TAR_CREATE("c--tx:t--cx:x--ct") // mutually exclusive
                SKIP_FEATURE_TAR_CREATE("t--x:x--t"); // mutually exclusive