aboutsummaryrefslogtreecommitdiffstats
path: root/main/faac/fix-libc-internals.patch
diff options
context:
space:
mode:
Diffstat (limited to 'main/faac/fix-libc-internals.patch')
-rw-r--r--main/faac/fix-libc-internals.patch89
1 files changed, 89 insertions, 0 deletions
diff --git a/main/faac/fix-libc-internals.patch b/main/faac/fix-libc-internals.patch
new file mode 100644
index 0000000000..b28645a6f2
--- /dev/null
+++ b/main/faac/fix-libc-internals.patch
@@ -0,0 +1,89 @@
+--- faac-1.28.orig/common/mp4v2/mp4file_io.cpp
++++ faac-1.28/common/mp4v2/mp4file_io.cpp
+@@ -34,13 +34,11 @@
+ }
+ return fpos;
+ } else {
+- fpos_t fpos;
+- if (fgetpos(pFile, &fpos) < 0) {
++ off_t off = ftello(pFile);
++ if (off == -1) {
+ throw new MP4Error(errno, "MP4GetPosition");
+ }
+- uint64_t ret;
+- FPOS_TO_VAR(fpos, uint64_t, ret);
+- return ret;
++ return off;
+ }
+ } else {
+ return m_memoryBufferPosition;
+@@ -56,9 +54,7 @@
+ throw new MP4Error("setting position via Virtual I/O", "MP4SetPosition");
+ }
+ } else {
+- fpos_t fpos;
+- VAR_TO_FPOS(fpos, pos);
+- if (fsetpos(pFile, &fpos) < 0) {
++ if (fseeko(pFile, pos, SEEK_SET) < 0) {
+ throw new MP4Error(errno, "MP4SetPosition");
+ }
+ }
+--- faac-1.28.orig/common/mp4v2/mp4util.h
++++ faac-1.28/common/mp4v2/mp4util.h
+@@ -23,6 +23,10 @@
+ #define __MP4_UTIL_INCLUDED__
+ #include <assert.h>
+
++#ifndef __STRING
++#define __STRING(x) #x
++#endif
++
+ #ifndef ASSERT
+ #define ASSERT(expr) \
+ if (!(expr)) { \
+--- faac-1.28.orig/common/mp4v2/mpeg4ip.h
++++ faac-1.28/common/mp4v2/mpeg4ip.h
+@@ -153,14 +153,6 @@
+ #define TO_U64(a) (a##LLU)
+ #endif
+
+-#ifdef HAVE_FPOS_T___POS
+-#define FPOS_TO_VAR(fpos, typed, var) (var) = (typed)((fpos).__pos)
+-#define VAR_TO_FPOS(fpos, var) (fpos).__pos = (var)
+-#else
+-#define FPOS_TO_VAR(fpos, typed, var) (var) = (typed)(fpos)
+-#define VAR_TO_FPOS(fpos, var) (fpos) = (var)
+-#endif
+-
+ #define FOPEN_READ_BINARY "r"
+ #define FOPEN_WRITE_BINARY "w"
+ #define UINT64_TO_DOUBLE(a) ((double)(a))
+--- faac-1.28.orig/common/mp4v2/virtual_io.cpp
++++ faac-1.28/common/mp4v2/virtual_io.cpp
+@@ -38,21 +38,18 @@
+
+ int FILE_SetPosition(void *user, u_int64_t position)
+ {
+- FILE *fp = (FILE *)user;
+- fpos_t fpos;
+- VAR_TO_FPOS(fpos, position);
+- return fsetpos(fp, &fpos);
++ return fseeko((FILE *) user, position, SEEK_SET);
+ }
+
+ int FILE_GetPosition(void *user, u_int64_t *position)
+ {
+ FILE *fp = (FILE *)user;
+- fpos_t fpos;
+- if (fgetpos(fp, &fpos) < 0) {
++ off_t off;
++ off = ftello(fp);
++ if (off == -1) {
+ throw new MP4Error(errno, "MP4GetPosition");
+ }
+-
+- FPOS_TO_VAR(fpos, u_int64_t, *position);
++ *position = off;
+ return 0;
+ }
+