diff options
Diffstat (limited to 'multimedia/lxdvdrip/files/patch-lxdvdrip.c')
| -rw-r--r-- | multimedia/lxdvdrip/files/patch-lxdvdrip.c | 130 |
1 files changed, 38 insertions, 92 deletions
diff --git a/multimedia/lxdvdrip/files/patch-lxdvdrip.c b/multimedia/lxdvdrip/files/patch-lxdvdrip.c index 2132de964d39..ed7826011cd3 100644 --- a/multimedia/lxdvdrip/files/patch-lxdvdrip.c +++ b/multimedia/lxdvdrip/files/patch-lxdvdrip.c @@ -1,94 +1,40 @@ ---- lxdvdrip.c.orig Wed Jan 12 23:31:49 2005 -+++ lxdvdrip.c Wed Jan 26 21:31:51 2005 -@@ -229,6 +229,11 @@ - #include <string.h> - #include <sys/stat.h> - #include <sys/types.h> -+#include <sys/param.h> -+#include <sys/mount.h> -+#ifndef __FreeBSD__ -+#include <sys/statfs.h> -+#endif - #include <stdio.h> - #include <stdlib.h> - #include <unistd.h> -@@ -621,16 +626,19 @@ - // Gibt die Groesse einer Datei zurueck, ohne die stat Beschraenkung auf < 2 GB - long long filesize64 (char * szFileName) - { -+#ifdef __FreeBSD__ -+ struct stat buf; -+ -+ if (stat(szFileName, &buf) < 0) -+ return 0LL; -+ -+ return buf.st_size; -+#else - FILE * fp; - long long lSize; - char szBuffer[128]; - char szTempl[32] = "/tmp/groesse.lxdvdrip"; --// FreeBSD hat fopen64 als Standard --#ifdef _FREEBSD -- fp = (FILE*)fopen (szFileName, "rb"); --#else - fp = (FILE*)fopen64 (szFileName, "rb"); --#endif - if (!fp) - { - return (long long)0; -@@ -644,39 +652,28 @@ - system ("rm /tmp/groesse.lxdvdrip"); - lSize = atoll (szBuffer); - return lSize; -+#endif - } +--- lxdvdrip.c.orig Tue May 31 23:26:37 2005 ++++ lxdvdrip.c Wed Jul 6 18:34:10 2005 +@@ -763,6 +763,9 @@ + FILE *filehandle = 0; + int i; - // Berechnet freien Festplattenplatz - long long calculate_discfree (char * szPfad, long lSprache) - { -- char szTempl[32] = "/tmp/lxdf.lxdvdrip"; -- char szBefehl[1024]; -+ struct statfs buf; - long long lGroesse=0; -- sprintf (szBefehl, "stat -f %s -c ", szPfad); -- strcat (szBefehl, "'%a %s' > "); -- strcat (szBefehl, szTempl); -- if (system (szBefehl) == 0) -+ -+ if (statfs(szPfad, &buf) < 0) -+ return 0; -+ -+ lGroesse = buf.f_bavail*buf.f_bsize; ++#define DVD_SEC_SIZ 2048 ++ char tempBuf[DVD_SEC_SIZ]; + -+ switch (lSprache) - { -- FILE * fTmp; -- long long lFrei; -- long long lBlockGroesse; -- fTmp = fopen(szTempl,"r"); -- if (fTmp) -- { -- fscanf (fTmp, "%lld %lld", &lFrei, &lBlockGroesse); -- fclose (fTmp); -- lGroesse = lFrei * lBlockGroesse; -- } -- system ("rm /tmp/lxdf.lxdvdrip"); -- switch (lSprache) -- { -- case 0: printf ("Frei in %s: %lld Bytes\n", szPfad, lGroesse); -- break; -- case 1: printf ("Free in %s: %lld Bytes\n", szPfad, lGroesse); -- break; -- case 2: printf ("Espace libre sur %s: %lld octets\n", szPfad, lGroesse); -- break; -- } -+ case 0: printf ("Frei in %s: %lld Bytes\n", szPfad, lGroesse); -+ break; -+ case 1: printf ("Free in %s: %lld Bytes\n", szPfad, lGroesse); -+ break; -+ case 2: printf ("Espace libre sur %s: %lld octets\n", szPfad, lGroesse); -+ break; - } - return lGroesse; - } + if (!(filehandle = fopen (dvd_device, "r"))) + { + switch (lSprache) +@@ -782,7 +785,7 @@ + return -1; + } + +- if (fseek (filehandle, 32808, SEEK_SET)) ++ if (fseek (filehandle, 32768, SEEK_SET)) + { + fclose (filehandle); + switch (lSprache) +@@ -802,7 +805,7 @@ + return -1; + } + +- if (32 != (i = fread (title, 1, 32, filehandle))) ++ if (DVD_SEC_SIZ != fread (tempBuf, 1, DVD_SEC_SIZ, filehandle)) + { + fclose (filehandle); + switch (lSprache) +@@ -820,7 +823,8 @@ + strcpy (title, "unknown"); + return -1; + } +- ++ snprintf( title, 32, "%s", tempBuf + 40 ); ++ i=32; + fclose (filehandle); + + title[32] = '\0'; |
