parent
29150bceb2
commit
58a5102338
@ -0,0 +1,32 @@ |
|||||||
|
From: Lasse Collin <lasse.collin@tukaani.org>
|
||||||
|
Date: Fri, 4 Feb 2011 09:29:47 +0000 (+0200)
|
||||||
|
Subject: xz: Check if the file already has custom suffix when compressing.
|
||||||
|
X-Git-Url: http://repo.or.cz/w/xz.git/commitdiff_plain/8930c7ae3f82bdae15aa129f01de08be23d7e8d7
|
||||||
|
|
||||||
|
xz: Check if the file already has custom suffix when compressing.
|
||||||
|
|
||||||
|
Now "xz -S .test foo.test" refuses to compress the
|
||||||
|
file because it already has the suffix .test. The man
|
||||||
|
page had it documented this way already.
|
||||||
|
---
|
||||||
|
|
||||||
|
diff --git a/src/xz/suffix.c b/src/xz/suffix.c
|
||||||
|
index ea86c1a..f795e2a 100644
|
||||||
|
--- a/src/xz/suffix.c
|
||||||
|
+++ b/src/xz/suffix.c
|
||||||
|
@@ -183,6 +183,15 @@ compressed_name(const char *src_name, const size_t src_len)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
+ if (custom_suffix != NULL) {
|
||||||
|
+ if (test_suffix(custom_suffix, src_name, src_len) != 0) {
|
||||||
|
+ message_warning(_("%s: File already has `%s' "
|
||||||
|
+ "suffix, skipping"), src_name,
|
||||||
|
+ custom_suffix);
|
||||||
|
+ return NULL;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
// TODO: Hmm, maybe it would be better to validate this in args.c,
|
||||||
|
// since the suffix handling when decoding is weird now.
|
||||||
|
if (opt_format == FORMAT_RAW && custom_suffix == NULL) {
|
@ -0,0 +1,105 @@ |
|||||||
|
From: Lasse Collin <lasse.collin@tukaani.org>
|
||||||
|
Date: Fri, 4 Feb 2011 20:49:31 +0000 (+0200)
|
||||||
|
Subject: xz: Clean up suffix.c.
|
||||||
|
X-Git-Url: http://repo.or.cz/w/xz.git/commitdiff_plain/96f94bc925d579a700147fa5d7793b64d69cfc18
|
||||||
|
|
||||||
|
xz: Clean up suffix.c.
|
||||||
|
|
||||||
|
struct suffix_pair isn't needed in compresed_name()
|
||||||
|
so get rid of it there.
|
||||||
|
---
|
||||||
|
|
||||||
|
diff --git a/src/xz/suffix.c b/src/xz/suffix.c
|
||||||
|
index f795e2a..c89f67f 100644
|
||||||
|
--- a/src/xz/suffix.c
|
||||||
|
+++ b/src/xz/suffix.c
|
||||||
|
@@ -21,12 +21,6 @@
|
||||||
|
static char *custom_suffix = NULL;
|
||||||
|
|
||||||
|
|
||||||
|
-struct suffix_pair {
|
||||||
|
- const char *compressed;
|
||||||
|
- const char *uncompressed;
|
||||||
|
-};
|
||||||
|
-
|
||||||
|
-
|
||||||
|
/// \brief Test if the char is a directory separator
|
||||||
|
static bool
|
||||||
|
is_dir_sep(char c)
|
||||||
|
@@ -86,7 +80,10 @@ test_suffix(const char *suffix, const char *src_name, size_t src_len)
|
||||||
|
static char *
|
||||||
|
uncompressed_name(const char *src_name, const size_t src_len)
|
||||||
|
{
|
||||||
|
- static const struct suffix_pair suffixes[] = {
|
||||||
|
+ static const struct {
|
||||||
|
+ const char *compressed;
|
||||||
|
+ const char *uncompressed;
|
||||||
|
+ } suffixes[] = {
|
||||||
|
{ ".xz", "" },
|
||||||
|
{ ".txz", ".tar" }, // .txz abbreviation for .txt.gz is rare.
|
||||||
|
{ ".lzma", "" },
|
||||||
|
@@ -145,25 +142,25 @@ static char *
|
||||||
|
compressed_name(const char *src_name, const size_t src_len)
|
||||||
|
{
|
||||||
|
// The order of these must match the order in args.h.
|
||||||
|
- static const struct suffix_pair all_suffixes[][3] = {
|
||||||
|
+ static const char *const all_suffixes[][3] = {
|
||||||
|
{
|
||||||
|
- { ".xz", "" },
|
||||||
|
- { ".txz", ".tar" },
|
||||||
|
- { NULL, NULL }
|
||||||
|
+ ".xz",
|
||||||
|
+ ".txz",
|
||||||
|
+ NULL
|
||||||
|
}, {
|
||||||
|
- { ".lzma", "" },
|
||||||
|
- { ".tlz", ".tar" },
|
||||||
|
- { NULL, NULL }
|
||||||
|
+ ".lzma",
|
||||||
|
+ ".tlz",
|
||||||
|
+ NULL
|
||||||
|
/*
|
||||||
|
}, {
|
||||||
|
- { ".gz", "" },
|
||||||
|
- { ".tgz", ".tar" },
|
||||||
|
- { NULL, NULL }
|
||||||
|
+ ".gz",
|
||||||
|
+ ".tgz",
|
||||||
|
+ NULL
|
||||||
|
*/
|
||||||
|
}, {
|
||||||
|
// --format=raw requires specifying the suffix
|
||||||
|
// manually or using stdout.
|
||||||
|
- { NULL, NULL }
|
||||||
|
+ NULL
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
@@ -171,14 +168,13 @@ compressed_name(const char *src_name, const size_t src_len)
|
||||||
|
assert(opt_format != FORMAT_AUTO);
|
||||||
|
|
||||||
|
const size_t format = opt_format - 1;
|
||||||
|
- const struct suffix_pair *const suffixes = all_suffixes[format];
|
||||||
|
+ const char *const *suffixes = all_suffixes[format];
|
||||||
|
|
||||||
|
- for (size_t i = 0; suffixes[i].compressed != NULL; ++i) {
|
||||||
|
- if (test_suffix(suffixes[i].compressed, src_name, src_len)
|
||||||
|
- != 0) {
|
||||||
|
+ for (size_t i = 0; suffixes[i] != NULL; ++i) {
|
||||||
|
+ if (test_suffix(suffixes[i], src_name, src_len) != 0) {
|
||||||
|
message_warning(_("%s: File already has `%s' "
|
||||||
|
"suffix, skipping"), src_name,
|
||||||
|
- suffixes[i].compressed);
|
||||||
|
+ suffixes[i]);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@@ -202,7 +198,7 @@ compressed_name(const char *src_name, const size_t src_len)
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *suffix = custom_suffix != NULL
|
||||||
|
- ? custom_suffix : suffixes[0].compressed;
|
||||||
|
+ ? custom_suffix : suffixes[0];
|
||||||
|
const size_t suffix_len = strlen(suffix);
|
||||||
|
|
||||||
|
char *dest_name = xmalloc(src_len + suffix_len + 1);
|
Loading…
Reference in new issue