| |
@@ -1,44 +0,0 @@
|
| |
- From d6248d2640efe3e40a1a9c0bb7bd8903f6beef98 Mon Sep 17 00:00:00 2001
|
| |
- From: John Reiser <jreiser@BitWagon.com>
|
| |
- Date: Fri, 26 Aug 2022 09:51:19 -0700
|
| |
- Subject: [PATCH] archive_entry_pathname() tries UTF-8 if MBS returns EILSEQ
|
| |
-
|
| |
- For better pathname portability across OS, in particular Windows to Linux.
|
| |
- Original bug: unrar in https://bugzilla.redhat.com/show_bug.cgi?id=2120926
|
| |
- modified: libarchive/archive_entry.c
|
| |
- ---
|
| |
- libarchive/archive_entry.c | 14 ++++++++++++++
|
| |
- 1 file changed, 14 insertions(+)
|
| |
-
|
| |
- diff --git a/libarchive/archive_entry.c b/libarchive/archive_entry.c
|
| |
- index ca7a4bdb5..ae6dc3336 100644
|
| |
- --- a/libarchive/archive_entry.c
|
| |
- +++ b/libarchive/archive_entry.c
|
| |
- @@ -568,6 +568,13 @@ archive_entry_nlink(struct archive_entry *entry)
|
| |
- return (entry->ae_stat.aest_nlink);
|
| |
- }
|
| |
-
|
| |
- +/* Instead, our caller could have chosen a specific encoding
|
| |
- + * (archive_mstring_get_mbs, archive_mstring_get_utf8,
|
| |
- + * archive_mstring_get_wcs). So we should try multiple
|
| |
- + * encodings. Try mbs first because of history, even though
|
| |
- + * utf8 might be better for pathname portability.
|
| |
- + * Also omit wcs because of type mismatch (char * versus wchar *)
|
| |
- + */
|
| |
- const char *
|
| |
- archive_entry_pathname(struct archive_entry *entry)
|
| |
- {
|
| |
- @@ -575,6 +582,13 @@ archive_entry_pathname(struct archive_entry *entry)
|
| |
- if (archive_mstring_get_mbs(
|
| |
- entry->archive, &entry->ae_pathname, &p) == 0)
|
| |
- return (p);
|
| |
- +#if HAVE_EILSEQ /*{*/
|
| |
- + if (errno == EILSEQ) {
|
| |
- + if (archive_mstring_get_utf8(
|
| |
- + entry->archive, &entry->ae_pathname, &p) == 0)
|
| |
- + return (p);
|
| |
- + }
|
| |
- +#endif /*}*/
|
| |
- if (errno == ENOMEM)
|
| |
- __archive_errx(1, "No memory");
|
| |
- return (NULL);
|
| |
Patch 2,3 were upstreamed
Resolves: #2152342