Fix for bug #151 (missing LFNs for BSD style archives).
authorShamus Hammons <jlhamm@acm.org>
Fri, 28 Feb 2020 22:08:24 +0000 (16:08 -0600)
committerShamus Hammons <jlhamm@acm.org>
Fri, 28 Feb 2020 22:08:24 +0000 (16:08 -0600)
Yes boys and girls, while we checked for and read the long filename
record for *both* GNU and BSD style archives, we only checked the for
the GNU case because we thought the GNU and BSD identifiers were the
same.  :-/

rln.c

diff --git a/rln.c b/rln.c
index a117a86b27fc2e75fa0e4beb1ddf22230e4f57a3..b48764150ec30313ced1e459bd226b01011bb045 100644 (file)
--- a/rln.c
+++ b/rln.c
@@ -2448,7 +2448,8 @@ int LoadArchive(char * fname, int fd)
                }
 
                // Check to see if a long filename was requested
-               if (objName[0] == 0x20)
+               // N.B.: " " is for GNU archives, and "/" is for BSD archives
+               if ((objName[0] == 0x20) || (objName[0] == '/'))
                {
                        uint32_t fnSize = atoi(objName + 1);