diff -up libmms-0.3/src/mmsio.h~ libmms-0.3/src/mmsio.h
--- libmms-0.3/src/mmsio.h~	2007-08-19 15:21:42.000000000 +0200
+++ libmms-0.3/src/mmsio.h	2007-08-19 15:21:42.000000000 +0200
@@ -1,12 +1,24 @@
 #ifndef __MMS_IO_H__
 #define __MMS_IO_H__
 
+/* On 64 bit file offset capable systems, like (Fedora) Linux (and this gets
+   patched into this header by a Fedora patch), libmms' configure script adds
+   -D_FILE_OFFSET_BITS=64 to the CFLAGS. This causes off_t to be 64 bit,
+   When an app which includes this header file gets compiled without
+   -D_FILE_OFFSET_BITS=64, it should still expect / pass 64 bit ints for
+   off_t, this acomplishes this: */
+#ifdef  __MMS_C__
+#define mms_off_t off_t
+#else
+#define mms_off_t int64_t
+#endif
+
 #ifdef __cplusplus
 extern "C" {
 #endif /* __cplusplus */
 
-typedef off_t (*mms_io_write_func)(void *data, int socket, char *buf, off_t num);
-typedef off_t (*mms_io_read_func)(void *data, int socket, char *buf, off_t num);
+typedef mms_off_t (*mms_io_write_func)(void *data, int socket, char *buf, mms_off_t num);
+typedef mms_off_t (*mms_io_read_func)(void *data, int socket, char *buf, mms_off_t num);
 
 /* select states */
 #define MMS_IO_READ_READY    1
diff -up libmms-0.3/src/mmsh.h~ libmms-0.3/src/mmsh.h
--- libmms-0.3/src/mmsh.h~	2007-08-19 15:22:07.000000000 +0200
+++ libmms-0.3/src/mmsh.h	2007-08-19 15:22:07.000000000 +0200
@@ -41,7 +41,7 @@ mmsh_t*   mmsh_connect (mms_io_t *io, vo
 
 int      mmsh_read (mms_io_t *io, mmsh_t *instance, char *data, int len);
 uint32_t mmsh_get_length (mmsh_t *instance);
-off_t    mmsh_get_current_pos (mmsh_t *instance);
+mms_off_t mmsh_get_current_pos (mmsh_t *instance);
 void     mmsh_close (mmsh_t *instance);
 
 int      mmsh_peek_header (mmsh_t *instance, char *data, int maxsize);
diff -up libmms-0.3/src/mms.c~ libmms-0.3/src/mms.c
--- libmms-0.3/src/mms.c~	2007-08-19 15:21:53.000000000 +0200
+++ libmms-0.3/src/mms.c	2007-08-19 15:21:53.000000000 +0200
@@ -61,6 +61,7 @@
 # define lprintf(x...)
 #endif
 
+#define __MMS_C__
 
 #include "bswap.h"
 #include "mms.h"
diff -up libmms-0.3/src/mms.h~ libmms-0.3/src/mms.h
--- libmms-0.3/src/mms.h~	2007-08-19 15:22:00.000000000 +0200
+++ libmms-0.3/src/mms.h	2007-08-19 15:22:00.000000000 +0200
@@ -67,7 +67,7 @@ int      mms_request_packet_seek (mms_io
  * Known BUG: Application must be compiled with 64-bit file offset
  * (-D_FILE_OFFSET_BITS=64) to use this function correctly.
  */
-off_t    mms_seek (mms_io_t *io, mms_t *instance, off_t offset, int origin);
+mms_off_t mms_seek (mms_io_t *io, mms_t *instance, mms_off_t offset, int origin);
 /* return total playback time in seconds */
 double   mms_get_time_length (mms_t *instance);
 /* return raw total playback time in 100 nanosecs (10^-7) */
@@ -77,7 +77,7 @@ void     mms_close (mms_t *instance);
 
 int      mms_peek_header (mms_t *instance, char *data, int maxsize);
 
-off_t    mms_get_current_pos (mms_t *instance);
+mms_off_t mms_get_current_pos (mms_t *instance);
 
 #ifdef __cplusplus
 }
