← Commit list

30d7a346e

Denis Vlasenko
Denis Vlasenko
2006-11-27
FAILED Duration: 4s

Subject

tar: fix misplaced --exclude long option definition

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

(log yok)

Commit Diff GitHub →

archival/tar.c+9 -4
@@ -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