Hi,
thanks for taking that up.
On my machine (archlinux, Linux 3.7.10-1-ARCH i686 GNU/Linux, glibc 2.17), changing the LARGEFILE define to __linux__ (or __gnu_linux__ yields:
git pull
./autogen.sh
./configure --prefix=/opt/pd-vanilla/git --enable-jack
make prefix=/opt/pd-vanilla-git
[...]
gcc -DPACKAGE_NAME="pd" -DPACKAGE_TARNAME="pd"
-DPACKAGE_VERSION="0.44.0" -DPACKAGE_STRING="pd\ 0.44.0"
-DPACKAGE_BUGREPORT="" -DPACKAGE_URL="" -DPACKAGE="pd"
-DVERSION="0.44.0" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1
-DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1
-DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1
-DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1
-DLT_OBJDIR=".libs/" -DHAVE_LIBDL=1 -DSTDC_HEADERS=1 -DHAVE_ALLOCA_H=1
-DHAVE_ALLOCA=1 -DHAVE_FCNTL_H=1 -DHAVE_LIMITS_H=1 -DHAVE_MALLOC_H=1
-DHAVE_NETDB_H=1 -DHAVE_NETINET_IN_H=1 -DHAVE_STDDEF_H=1
-DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_SYS_IOCTL_H=1
-DHAVE_SYS_PARAM_H=1 -DHAVE_SYS_SOCKET_H=1 -DHAVE_SYS_SOUNDCARD_H=1
-DHAVE_SYS_TIME_H=1 -DHAVE_SYS_TIMEB_H=1 -DHAVE_UNISTD_H=1 -DHAVE_FORK=1
-DHAVE_VFORK=1 -DHAVE_WORKING_VFORK=1 -DHAVE_WORKING_FORK=1
-DHAVE_STDLIB_H=1 -DHAVE_MALLOC=1 -DHAVE_STDLIB_H=1 -DHAVE_REALLOC=1
-DRETSIGTYPE=void -DHAVE_DUP2=1 -DHAVE_GETCWD=1 -DHAVE_GETHOSTBYNAME=1
-DHAVE_GETTIMEOFDAY=1 -DHAVE_MEMMOVE=1 -DHAVE_MEMSET=1 -DHAVE_REGCOMP=1
-DHAVE_SELECT=1 -DHAVE_SOCKET=1 -DHAVE_STRCHR=1 -DHAVE_STRERROR=1
-DHAVE_STRRCHR=1 -DHAVE_STRSTR=1 -DHAVE_STRTOL=1 -I. -DPD
-DINSTALL_PREFIX="/opt/pd-vanilla-git" -DUSEAPI_ALSA -DUSEAPI_JACK
-DJACK_XRUN -DUSEAPI_OSS -DUSEAPI_PORTAUDIO -I../portaudio/include
-O6 -funroll-loops -fomit-frame-pointer -MT pd-s_path.o -MD -MP -MF
.deps/pd-s_path.Tpo -c -o pd-s_path.o test -f 's_path.c' || echo './'
s_path.c
s_path.c: In function ‘sys_trytoopenone’:
s_path.c:290:21: error: storage size of ‘statbuf’ isn’t known
[...]
And that can make sense since stat is now stat64, the structure name: struct stat statbuf is struct stat64 statbuf;
So I tried with these defines instead : #ifdef __gnu_linux__ # define open(x, ...) open64(x ,__VA_ARGS__) # define lseek(x, ...) lseek64(x ,__VA_ARGS__) # define fstat(x, ...) fstat64(x ,__VA_ARGS__) # define stat(x, ...) stat64(x ,__VA_ARGS__) #endif
but opening a large file still fails.
Miller Puckette wrote:
So a quick (and perhaps stupid) question - can I just use #idfef __linux__ to alias open to open64, etc? It works on my x86_64 machine and on my Raspberry Pi so I'm guessing all modern linuxes define an open64(). My main fear is that android might define __linux__ but not open64() - anyone know about that?