diff options
author | Lasse Collin <lasse.collin@tukaani.org> | 2010-12-12 23:13:22 +0200 |
---|---|---|
committer | Lasse Collin <lasse.collin@tukaani.org> | 2010-12-12 23:13:22 +0200 |
commit | 4f2c69a4e3e0aee2e37b0b1671d34086e20c8ac6 (patch) | |
tree | d9d5d9713bc0f868506c0830da45535c825ed5ab /src | |
parent | Merge branch 'v5.0' (diff) | |
parent | Build: Enable ASM on DJGPP by default. (diff) | |
download | xz-4f2c69a4e3e0aee2e37b0b1671d34086e20c8ac6.tar.xz |
Merge branch 'v5.0'
Diffstat (limited to 'src')
-rw-r--r-- | src/common/sysdefs.h | 9 | ||||
-rw-r--r-- | src/xz/suffix.c | 33 |
2 files changed, 38 insertions, 4 deletions
diff --git a/src/common/sysdefs.h b/src/common/sysdefs.h index c74c6212..51f06cf0 100644 --- a/src/common/sysdefs.h +++ b/src/common/sysdefs.h @@ -65,6 +65,9 @@ #ifndef PRIu32 # define PRIu32 "u" #endif +#ifndef PRIx32 +# define PRIx32 "x" +#endif #ifndef PRIX32 # define PRIX32 "X" #endif @@ -76,6 +79,9 @@ # ifndef PRIu64 # define PRIu64 "llu" # endif +# ifndef PRIx64 +# define PRIx64 "llx" +# endif # ifndef PRIX64 # define PRIX64 "llX" # endif @@ -86,6 +92,9 @@ # ifndef PRIu64 # define PRIu64 "lu" # endif +# ifndef PRIx64 +# define PRIx64 "lx" +# endif # ifndef PRIX64 # define PRIX64 "lX" # endif diff --git a/src/xz/suffix.c b/src/xz/suffix.c index f2a2da27..ea86c1a3 100644 --- a/src/xz/suffix.c +++ b/src/xz/suffix.c @@ -27,6 +27,30 @@ struct suffix_pair { }; +/// \brief Test if the char is a directory separator +static bool +is_dir_sep(char c) +{ +#ifdef TUKLIB_DOSLIKE + return c == '/' || c == '\\' || c == ':'; +#else + return c == '/'; +#endif +} + + +/// \brief Test if the string contains a directory separator +static bool +has_dir_sep(const char *str) +{ +#ifdef TUKLIB_DOSLIKE + return strpbrk(str, "/\\:") != NULL; +#else + return strchr(str, '/') != NULL; +#endif +} + + /// \brief Checks if src_name has given compressed_suffix /// /// \param suffix Filename suffix to look for @@ -44,7 +68,8 @@ test_suffix(const char *suffix, const char *src_name, size_t src_len) // The filename must have at least one character in addition to // the suffix. src_name may contain path to the filename, so we // need to check for directory separator too. - if (src_len <= suffix_len || src_name[src_len - suffix_len - 1] == '/') + if (src_len <= suffix_len + || is_dir_sep(src_name[src_len - suffix_len - 1])) return 0; if (strcmp(suffix, src_name + src_len - suffix_len) == 0) @@ -199,9 +224,9 @@ suffix_get_dest_name(const char *src_name) extern void suffix_set(const char *suffix) { - // Empty suffix and suffixes having a slash are rejected. Such - // suffixes would break things later. - if (suffix[0] == '\0' || strchr(suffix, '/') != NULL) + // Empty suffix and suffixes having a directory separator are + // rejected. Such suffixes would break things later. + if (suffix[0] == '\0' || has_dir_sep(suffix)) message_fatal(_("%s: Invalid filename suffix"), optarg); // Replace the old custom_suffix (if any) with the new suffix. |