--- src/view.c +++ src/view.c @@ -77,6 +77,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 + /* The growing buffers data types */ typedef struct block_ptr_t { unsigned char *data; @@ -308,7 +314,7 @@ get_byte (WView *view, unsigned int byte view->block_ptr = g_realloc (view->block_ptr, sizeof (block_ptr_t) * page); for (i = view->blocks; i < page; i++) { - char *p = g_malloc (VIEW_PAGE_SIZE); + char *p = my_g_malloc (VIEW_PAGE_SIZE); view->block_ptr[i].data = p; if (!p) return '\n'; @@ -576,7 +582,7 @@ load_view_file (WView *view, int fd) view->data = mc_mmap (0, view->s.st_size, PROT_READ, MAP_FILE | MAP_SHARED, view->file, 0); - if ((caddr_t) view->data != (caddr_t) - 1) { + if (view->data != (void *)-1) { /* mmap worked */ view->first = 0; view->bytes_read = view->s.st_size; @@ -585,11 +591,18 @@ load_view_file (WView *view, int fd) } #endif /* HAVE_MMAP */ - /* For those OS that dont provide mmap call. Try to load all the + /* For those OS's that don't provide mmap call. Try to load all the * file into memory (alex@bcs.zaporizhzhe.ua). Also, mmap can fail * for any reason, so we use this as fallback (pavel@ucw.cz) */ - view->data = (unsigned char *) g_malloc (view->s.st_size); + /* 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 */ + + if ((gulong) view->s.st_size == view->s.st_size) + view->data = (unsigned char*) my_g_malloc (view->s.st_size); + else + view->data = NULL; + if (view->data == NULL || mc_lseek (view->file, 0, SEEK_SET) != 0 || mc_read (view->file, view->data, --- vfs/local.c +++ vfs/local.c @@ -282,8 +282,8 @@ local_ungetlocalcopy (vfs *me, char *pat } #ifdef HAVE_MMAP -caddr_t -local_mmap (vfs *me, caddr_t addr, size_t len, int prot, int flags, void *data, off_t offset) +void * +local_mmap (vfs *me, void *addr, size_t len, int prot, int flags, void *data, off_t offset) { int fd = * (int *)data; @@ -291,7 +291,7 @@ local_mmap (vfs *me, caddr_t addr, size_ } int -local_munmap (vfs *me, caddr_t addr, size_t len, void *data) +local_munmap (vfs *me, void *addr, size_t len, void *data) { return munmap (addr, len); } --- vfs/local.h +++ vfs/local.h @@ -7,8 +7,8 @@ extern int local_fstat (void *data, stru extern int local_errno (vfs *me); extern int local_lseek (void *data, off_t offset, int whence); #ifdef HAVE_MMAP -extern caddr_t local_mmap (vfs *me, caddr_t addr, size_t len, int prot, int flags, void *data, off_t offset); -extern int local_munmap (vfs *me, caddr_t addr, size_t len, void *data); +extern void *local_mmap (vfs *me, void *addr, size_t len, int prot, int flags, void *data, off_t offset); +extern int local_munmap (vfs *me, void *addr, size_t len, void *data); #endif #endif --- vfs/samba/lib/util.c +++ vfs/samba/lib/util.c @@ -1830,7 +1830,7 @@ BOOL matchname(char *remotehost,struct i /* Look up the host address in the address list we just got. */ for (i = 0; hp->h_addr_list[i]; i++) { - if (memcmp(hp->h_addr_list[i], (caddr_t) & addr, sizeof(addr)) == 0) + if (memcmp(hp->h_addr_list[i], &addr, sizeof(addr)) == 0) return True; } --- vfs/vfs.c +++ vfs/vfs.c @@ -996,27 +996,27 @@ MC_NAMEOP (mknod, (char *path, int mode, #ifdef HAVE_MMAP static struct mc_mmapping { - caddr_t addr; + void *addr; void *vfs_info; vfs *vfs; struct mc_mmapping *next; } *mc_mmaparray = NULL; -caddr_t -mc_mmap (caddr_t addr, size_t len, int prot, int flags, int fd, off_t offset) +void * +mc_mmap (void *addr, size_t len, int prot, int flags, int fd, off_t offset) { vfs *vfs; - caddr_t result; + void *result; struct mc_mmapping *mcm; if (fd == -1) - return (caddr_t) -1; + return (void *)-1; vfs = vfs_op (fd); - result = vfs->mmap ? (*vfs->mmap)(vfs, addr, len, prot, flags, vfs_info (fd), offset) : (caddr_t)-1; - if (result == (caddr_t)-1){ + result = vfs->mmap ? (*vfs->mmap)(vfs, addr, len, prot, flags, vfs_info (fd), offset) : (void *)-1; + if (result == (void *)-1){ errno = ferrno (vfs); - return (caddr_t)-1; + return (void *)-1; } mcm =g_new (struct mc_mmapping, 1); mcm->addr = result; @@ -1028,7 +1028,7 @@ mc_mmap (caddr_t addr, size_t len, int p } int -mc_munmap (caddr_t addr, size_t len) +mc_munmap (void *addr, size_t len) { struct mc_mmapping *mcm, *mcm2 = NULL; --- vfs/vfs.h +++ vfs/vfs.h @@ -88,9 +88,9 @@ int (*ctl) (void *vfs_info, int ctlop, int arg); int (*setctl) (vfs *me, char *path, int ctlop, char *arg); #ifdef HAVE_MMAP - caddr_t (*mmap) (vfs *me, caddr_t addr, size_t len, int prot, + void *(*mmap) (vfs *me, void *addr, size_t len, int prot, int flags, void *vfs_info, off_t offset); - int (*munmap) (vfs *me, caddr_t addr, size_t len, + int (*munmap) (vfs *me, void *addr, size_t len, void *vfs_info); #endif }; @@ -208,9 +208,9 @@ int mc_ctl (int fd, int ctlop, int arg); int mc_setctl (char *path, int ctlop, char *arg); #ifdef HAVE_MMAP - caddr_t mc_mmap (caddr_t, size_t, int, int, int, off_t); - int mc_unmap (caddr_t, size_t); - int mc_munmap (caddr_t addr, size_t len); + void *mc_mmap (void *, size_t, int, int, int, off_t); + int mc_unmap (void *, size_t); + int mc_munmap (void *addr, size_t len); #endif /* HAVE_MMAP */ #else