summaryrefslogtreecommitdiff
path: root/multimedia/lxdvdrip/files/patch-lxdvdrip.c
diff options
context:
space:
mode:
Diffstat (limited to 'multimedia/lxdvdrip/files/patch-lxdvdrip.c')
-rw-r--r--multimedia/lxdvdrip/files/patch-lxdvdrip.c130
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';