Re: [PATCH] largefile fixups

2008-12-29 Thread Miguel de Icaza
This patch looks OK to go in.

 
 ___
 Mc-devel mailing list
 http://mail.gnome.org/mailman/listinfo/mc-devel

___
Mc-devel mailing list
http://mail.gnome.org/mailman/listinfo/mc-devel


[PATCH] largefile fixups

2008-12-25 Thread Enrico Weigelt


-- 
-
 Enrico Weigelt==   metux IT service - http://www.metux.de/
-
 Please visit the OpenSource QM Taskforce:
http://wiki.metux.de/public/OpenSource_QM_Taskforce
 Patches / Fixes for a lot dozens of packages in dozens of versions:
http://patches.metux.de/
-
#
# Some fixups for large file support (64bit sizes) on 32bit systems
#
# Source:   Gentoo Portage
# Reference:4.6.1
# Submit-By:Enrico Weigelt, metux IT service weig...@metux.de
# Submit-Date:  2008-12-26
# Submit-State: new
#
diff -Naur mc-4.6.1.orig/intl/loadmsgcat.c mc-4.6.1/intl/loadmsgcat.c
--- mc-4.6.1.orig/intl/loadmsgcat.c 2005-07-23 18:52:57.0 +0200
+++ mc-4.6.1/intl/loadmsgcat.c  2006-03-19 17:11:14.0 +0100
@@ -1002,7 +1002,7 @@
   /* The magic number is wrong: not a message catalog file.  */
 #ifdef HAVE_MMAP
   if (use_mmap)
-   munmap ((caddr_t) data, size);
+   munmap ((void *) data, size);
   else
 #endif
free (data);
@@ -1271,7 +1271,7 @@
free (domain-malloced);
 #ifdef HAVE_MMAP
   if (use_mmap)
-   munmap ((caddr_t) data, size);
+   munmap ((void *) data, size);
   else
 #endif
free (data);
@@ -1306,7 +1306,7 @@
 
 # ifdef _POSIX_MAPPED_FILES
   if (domain-use_mmap)
-munmap ((caddr_t) domain-data, domain-mmap_size);
+munmap ((void *) domain-data, domain-mmap_size);
   else
 # endif/* _POSIX_MAPPED_FILES */
 free ((void *) domain-data);
diff -Naur mc-4.6.1.orig/src/view.c mc-4.6.1/src/view.c
--- mc-4.6.1.orig/src/view.c2005-05-27 16:19:18.0 +0200
+++ mc-4.6.1/src/view.c 2006-03-19 17:10:34.0 +0100
@@ -76,6 +76,12 @@
 #define vwidth (view-widget.cols - (view-have_frame ? 2 : 0))
 #define vheight (view-widget.lines - (view-have_frame ? 2 : 0))
 
+#if GLIB_MAJOR_VERSION = 2
+#  define my_g_malloc g_try_malloc
+#else
+#  define my_g_malloc g_malloc
+#endif
+
 /* Offset in bytes into a file */
 typedef unsigned long offset_type;
 #define INVALID_OFFSET ((offset_type) -1)
@@ -560,8 +566,8 @@
view-data = mc_mmap (0, view-s.st_size, PROT_READ,
  MAP_FILE | MAP_SHARED, view-file, 0);
 else
-   view-data = (caddr_t) -1;
-if ((caddr_t) view-data != (caddr_t) - 1) {
+   view-data = (void *) -1;
+if (view-data != (void *)-1) {
/* mmap worked */
view-first = 0;
view-bytes_read = view-s.st_size;
@@ -573,6 +579,9 @@
 /* For the OSes that don't provide mmap call, try to load all the
  * file into memory (a...@bcs.zaporizhzhe.ua).  Also, mmap can fail
  * for any reason, so we use this as fallback (pa...@ucw.cz) */
+ 
+/* If large file support is enabled, st_size is a 64 bit value and
+ * will thus on 32 bit platforms possibly be beyond the range of gulong */
 
 /* Make sure view-s.st_size is not truncated when passed to g_malloc */
 if ((gulong) view-s.st_size == view-s.st_size)
diff -Naur mc-4.6.1.orig/vfs/local.c mc-4.6.1/vfs/local.c
--- mc-4.6.1.orig/vfs/local.c   2004-09-25 01:00:18.0 +0200
+++ mc-4.6.1/vfs/local.c2006-03-19 17:00:45.0 +0100
@@ -243,8 +243,8 @@
 }
 
 #ifdef HAVE_MMAP
-caddr_t
-local_mmap (struct vfs_class *me, caddr_t addr, size_t len, int prot, int 
flags, void *data, off_t offset)
+void *
+local_mmap (struct vfs_class *me, void *addr, size_t len, int prot, int flags, 
void *data, off_t offset)
 {
 int fd = * (int *)data;
 
@@ -252,7 +252,7 @@
 }
 
 int
-local_munmap (struct vfs_class *me, caddr_t addr, size_t len, void *data)
+local_munmap (struct vfs_class *me, void *addr, size_t len, void *data)
 {
 return munmap (addr, len);
 }
diff -Naur mc-4.6.1.orig/vfs/local.h mc-4.6.1/vfs/local.h
--- mc-4.6.1.orig/vfs/local.h   2004-08-17 11:17:43.0 +0200
+++ mc-4.6.1/vfs/local.h2006-03-19 17:01:35.0 +0100
@@ -13,9 +13,9 @@
 extern int local_errno (struct vfs_class *me);
 extern int local_lseek (void *data, off_t offset, int whence);
 #ifdef HAVE_MMAP
-extern caddr_t local_mmap (struct vfs_class *me, caddr_t addr, size_t len,
+extern void *local_mmap (struct vfs_class *me, void *addr, size_t len,
int prot, int flags, void *data, off_t offset);
-extern int local_munmap (struct vfs_class *me, caddr_t addr, size_t len, void 
*data);
+extern int local_munmap (struct vfs_class *me, void *addr, size_t len, void 
*data);
 #endif
 
 #endif
diff -Naur mc-4.6.1.orig/vfs/samba/lib/util.c mc-4.6.1/vfs/samba/lib/util.c
--- mc-4.6.1.orig/vfs/samba/lib/util.c  2005-05-27 16:19:19.0 +0200
+++ mc-4.6.1/vfs/samba/lib/util.c   2006-03-19 17:06:39.0 +0100
@@ -1836,7 +1836,7 @@

   /* Look up the host address in the address list we just got. */
   for (i = 0; hp-h_addr_list[i]; i++) {
-