]> git.sesse.net Git - vlc/commitdiff
rar: + Support for up to 1001 volume old naming style archive.
authorJohn Peterson <john.peterson3@hotmail.com>
Sun, 22 Apr 2012 04:35:02 +0000 (06:35 +0200)
committerLaurent Aimar <fenrir@videolan.org>
Wed, 2 May 2012 22:59:45 +0000 (00:59 +0200)
modules/access/rar/rar.c

index ce3550495642645736aaf69681dc6875ecf026f2..0819755c426beb6583ca51e02e05f43e18294d9c 100644 (file)
@@ -289,7 +289,7 @@ static const rar_pattern_t *FindVolumePattern(const char *location)
         { ".part1.rar",   "%s.part%.1d.rar", 2,   9 },
         { ".part01.rar",  "%s.part%.2d.rar", 2,  99, },
         { ".part001.rar", "%s.part%.3d.rar", 2, 999 },
-        { ".rar",         "%s.r%.2d",        0,  99 },
+        { ".rar",         "%s.%c%.2d",       0, 999 },
         { NULL, NULL, 0, 0 },
     };
 
@@ -379,8 +379,14 @@ int RarParse(stream_t *s, int *count, rar_file_t ***file)
         }
 
         free(volume_mrl);
-        if (asprintf(&volume_mrl, pattern->format, volume_base, volume_index) < 0)
-            volume_mrl = NULL;
+        if (pattern->start) {
+            if (asprintf(&volume_mrl, pattern->format, volume_base, volume_index) < 0)
+                volume_mrl = NULL;
+        } else {
+            if (asprintf(&volume_mrl, pattern->format, volume_base,
+                         'r' + volume_index / 100, volume_index % 100) < 0)
+                volume_mrl = NULL;
+        }
         free(volume_base);
 
         if (!volume_mrl)