[AVFS] unrar support for urar module

Mark <stopverf-irGDp5a2xbY/[email protected]> Mon, 13 Feb 2006 13:59:03 +0100
Newsgroups gmane.comp.file-systems.avfs.user
Message-ID <[email protected]>
Hi,

I attached a patch to make the urar module try unrar if rar failes to 
execute.

Mark
avfs-unrar.diff (text/plain, 828 B)
--- avfs/modules/urar.c	2006-02-13 11:09:25.000000000 +0100
+++ avfs-urar/modules/urar.c	2006-02-13 11:15:41.000000000 +0100
@@ -520,7 +520,6 @@
     if(res < 0)
         return res;
 
-    /* FIXME: if the program 'rar' doesn't exist, try 'unrar' */
     prog[0] = "rar";
     prog[1] = "p";
     prog[2] = "-c-";
@@ -541,6 +540,23 @@
     if(res == 0)
         res = av_wait_prog(&pri, 0, 0);
 
+    if(res == -EIO)
+    {
+        // rar failed, Try unrar
+        prog[0] = "unrar";
+        av_init_proginfo(&pri);
+        pri.prog = prog;
+        pri.ifd = open("/dev/null", O_RDONLY);
+        pri.ofd = fd;
+        pri.efd = pri.ifd;
+
+        res = av_start_prog(&pri);
+        close(pri.ifd);
+
+        if(res == 0)
+            res = av_wait_prog(&pri, 0, 0);
+    }
+
     av_unref_obj(rf);
 
     return res;