Enable LFS
diff --git a/src/libmtp.c b/src/libmtp.c
index ff14041..c740296 100644
--- a/src/libmtp.c
+++ b/src/libmtp.c
@@ -33,6 +33,8 @@
  * The files libusb-glue.c/.h are just what they say: an
  * interface to libusb for the actual, physical USB traffic.
  */
+#define _LARGEFILE_SOURCE
+#define _LARGEFILE64_SOURCE
 
 #include "libmtp.h"
 #include "unicode.h"
@@ -3236,8 +3238,12 @@
   if ( (fd = open(path, O_RDWR|O_CREAT|O_TRUNC|O_BINARY,S_IRWXU|S_IRGRP)) == -1 ) {
 #endif
 #else
+#ifdef __USE_LARGEFILE64
+  if ( (fd = open64(path, O_RDWR|O_CREAT|O_TRUNC|O_LARGEFILE,S_IRWXU|S_IRGRP)) == -1) {
+#else
   if ( (fd = open(path, O_RDWR|O_CREAT|O_TRUNC,S_IRWXU|S_IRGRP)) == -1) {
 #endif
+#endif
     add_error_to_errorstack(device, LIBMTP_ERROR_GENERAL, "LIBMTP_Get_File_To_File(): Could not create file.");
     return -1;
   }
@@ -3416,8 +3422,12 @@
   if ( (fd = open(path, O_RDONLY|O_BINARY) == -1 ) {
 #endif
 #else
+#ifdef __USE_LARGEFILE64
+  if ( (fd = open64(path, O_RDONLY|O_LARGEFILE)) == -1) {
+#else
   if ( (fd = open(path, O_RDONLY)) == -1) {
 #endif
+#endif
     printf("LIBMTP_Send_Track_From_File(): Could not open source file \"%s\"\n", path);
     return -1;
   }
@@ -3610,8 +3620,12 @@
   if ( (fd = open(path, O_RDONLY|O_BINARY) == -1 ) {
 #endif
 #else
+#ifdef __USE_LARGEFILE64
+  if ( (fd = open64(path, O_RDONLY|O_LARGEFILE)) == -1) {
+#else
   if ( (fd = open(path, O_RDONLY)) == -1) {
 #endif
+#endif
     add_error_to_errorstack(device, LIBMTP_ERROR_GENERAL, "LIBMTP_Send_File_From_File(): Could not open source file.");
     return -1;
   }