Re: [PD] Large File Support on Linux

2013-03-17 Thread IOhannes m zmölnig
On 03/16/2013 23:42, Miller Puckette wrote:
> It's in the source - but Pd has to be compiled with '_LARGEFILE64_SOURCE'
> defined for this to work.  Through 0.43 the configure script I was using
> was checking for this somehow (too complicted for me to understand how).
> 
> Anyhow, this is a bug all right - thanks for reporting it!
> 
> ... and can you tell me what OS you're on so I can check if I'm actually
> fixing it?

it's in the source, the configure script already defines
_LARGEFILE64_SOURCE (iirc) but something still fails (yea, definitely a bug)

i confirmed that behaviour a few months ago on linux.

fgamr
IOhannes


fbgmasdr
IOhannes

___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Large File Support on Linux

2013-03-17 Thread Miller Puckette
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?

thanks
Miller

On Sun, Mar 17, 2013 at 10:27:41AM +0100, IOhannes m zmölnig wrote:
> On 03/16/2013 23:42, Miller Puckette wrote:
> > It's in the source - but Pd has to be compiled with '_LARGEFILE64_SOURCE'
> > defined for this to work.  Through 0.43 the configure script I was using
> > was checking for this somehow (too complicted for me to understand how).
> > 
> > Anyhow, this is a bug all right - thanks for reporting it!
> > 
> > ... and can you tell me what OS you're on so I can check if I'm actually
> > fixing it?
> 
> it's in the source, the configure script already defines
> _LARGEFILE64_SOURCE (iirc) but something still fails (yea, definitely a bug)
> 
> i confirmed that behaviour a few months ago on linux.
> 
> fgamr
> IOhannes
> 
> 
> fbgmasdr
> IOhannes
> 
> ___
> Pd-list@iem.at mailing list
> UNSUBSCRIBE and account-management -> 
> http://lists.puredata.info/listinfo/pd-list

___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Large File Support on Linux

2013-03-18 Thread Charles Goyard
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?

___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Large File Support on Linux

2013-03-18 Thread IOhannes m zmoelnig
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

On 2013-03-18 11:18, Charles Goyard wrote:
> 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:


nonono.
you MUST have "_LARGEFILE64_SOURCE" defined before including unistd.h,
else you won't have LFS support.
there are configure checks that test whether doing defining
_LARGEFILE64_SOURCE makes sense on your system.

having said that, i just noticed that these checks seem to have gone
from configure(.ac) during the 0.43 rewrite of the buildsystem. so
most likely this is the source of the bug.


fgasdrm
IOhannes
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.12 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAlFHBBYACgkQkX2Xpv6ydvSerACaAgihDxsR9kHRcW7CwXNxMDCE
f60AnA4PIofPX8M0ClZiu7Rf/RRGz6tK
=RFmt
-END PGP SIGNATURE-

___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Large File Support on Linux

2013-03-18 Thread IOhannes m zmoelnig
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

On 2013-03-18 13:10, IOhannes m zmoelnig wrote:
> On 2013-03-18 11:18, Charles Goyard wrote:
>> 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:
> 
> 
> nonono. you MUST have "_LARGEFILE64_SOURCE" defined before
> including unistd.h, else you won't have LFS support. there are
> configure checks that test whether doing defining 
> _LARGEFILE64_SOURCE makes sense on your system.
> 
> having said that, i just noticed that these checks seem to have
> gone from configure(.ac) during the 0.43 rewrite of the
> buildsystem. so most likely this is the source of the bug.
> 

so i rechecked and things are a bit more complicated than i originally
thought when it comes to large file support (LFS).

it is (well, should be) easy enough to open/read/write large (>2GB)
files within Pd.
simply using "_LARGEFILE64_SOURCE" or "_FILE_OFFSET_BITS=64" is the
recommended way.
those defines have to be set whenever unistd is included for
open/close/lseek/...

now Pd uses some magic in d_soundfile.c (e.g. redefining "open()" to
"open64()"), but that doesn't really help at all, since the files are
not opened in d_soundfile.c but instead are opened by open_via_path()
in s_path.c. open_via_path() currently does not handle LFS.

the easy way would obviously be to move LFS into s_path.c.

the problem with that is, that s_path implements an API available for
externals.
if open_via_path() returns a filehandle for an LFS file, and the
external has been compiled without LFS, the filehande will be
incompatible. see [1] for a discussion.

i guess the only clean way to solve that, is to provide a complete
wrapper around the file API, so an external has functions guaranteed
to work with the filehandle returned by Pd.
currently there are sys_open()/sys_close() and its f*-variants.
but we would need at least sys_(f)seek and sys_(f)stat, but
preferrably a complete wrapper around LFS-compatible file functions [2].

all this functionality (including the handilng of UTF filenames on
W32) is not really Pd-related, and could well be factored out into a
separate library.


fgasd,
IOhannes


[1] http://ohse.de/uwe/articles/lfs.html
[2] http://opengroup.org/platform/lfs.html
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.12 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAlFHDpoACgkQkX2Xpv6ydvQ+wACeMLeUFh9Bgfor7SV4YvcZokwL
MhwAn23vz/Zl6xpp+/EWQPvWrW8gyEm8
=AE4m
-END PGP SIGNATURE-

___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Large File Support on Linux

2013-03-18 Thread Ivica Ico Bukvic
> the problem with that is, that s_path implements an API available for
> externals.
> if open_via_path() returns a filehandle for an LFS file, and the
> external has been compiled without LFS, the filehande will be
> incompatible. see [1] for a discussion.
> 
> i guess the only clean way to solve that, is to provide a complete
> wrapper around the file API, so an external has functions guaranteed
> to work with the filehandle returned by Pd.
> currently there are sys_open()/sys_close() and its f*-variants.
> but we would need at least sys_(f)seek and sys_(f)stat, but
> preferrably a complete wrapper around LFS-compatible file functions [2].
> 
> all this functionality (including the handilng of UTF filenames on
> W32) is not really Pd-related, and could well be factored out into a
> separate library.

Thanks for the clear explanation of the matter, IOhannes.

Why not simply recompile externals after fixing s_path? Pd-extended already
comes with most externals recompiled for every new release and adding legacy
stuff just creates more confusion in maintaining the source down the road.
In other words, FWIW and IMHO I think there is way too much effort the
community is trying to pour into binary compatibility for a system that
clearly begs for further enhancements in the core API.

Best wishes,

Ico


___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Large File Support on Linux

2013-03-18 Thread Miller Puckette
To answer Ico's question, the trouble I forsee is musician A gives
musician B a patch, containing compiled externs - and then musician B
runs it and gets a crash instead of music.  Sub-optimal in my opinion :)

I now think that it should be OK to use open64() only in the file d_soundfile.c
and only for linux - so putting at the head of the file,

#ifdef __linux__
#define _LARGEFILE64_SOURCE
#endif

... then, because opening soundfiles currently uses open_via_path, simply
closing the file and re-opening it via open64().  There's a similar hack
to open "binbufs" via paths in the function binbuf_read_via_canvas().

There are two other festering problems in open_via_path() that all should
probably be fixed in one go by defining an updated function call:

1.  externs further down the path are chosen in front of abstractions that
should be taken instead;

2.  open_via_path isn't thread safe - d_soundfile.c could call it at the same
moment someone in the "Pd" thread is changing the path.  This should almost
never hapen but should be fixed.

This is a big enough change that I think it should wait for 0.45, whereas the
hack described above could go in right now as a local bug-fix.

BTW I've got a couple of other bug-fixes underway; wil push to git now.

cheers
Miller

Oe Mon, Mar 18, 2013 at 12:47:47PM -0400, Ivica Ico Bukvic wrote:
> > the problem with that is, that s_path implements an API available for
> > externals.
> > if open_via_path() returns a filehandle for an LFS file, and the
> > external has been compiled without LFS, the filehande will be
> > incompatible. see [1] for a discussion.
> > 
> > i guess the only clean way to solve that, is to provide a complete
> > wrapper around the file API, so an external has functions guaranteed
> > to work with the filehandle returned by Pd.
> > currently there are sys_open()/sys_close() and its f*-variants.
> > but we would need at least sys_(f)seek and sys_(f)stat, but
> > preferrably a complete wrapper around LFS-compatible file functions [2].
> > 
> > all this functionality (including the handilng of UTF filenames on
> > W32) is not really Pd-related, and could well be factored out into a
> > separate library.
> 
> Thanks for the clear explanation of the matter, IOhannes.
> 
> Why not simply recompile externals after fixing s_path? Pd-extended already
> comes with most externals recompiled for every new release and adding legacy
> stuff just creates more confusion in maintaining the source down the road.
> In other words, FWIW and IMHO I think there is way too much effort the
> community is trying to pour into binary compatibility for a system that
> clearly begs for further enhancements in the core API.
> 
> Best wishes,
> 
> Ico
> 
> 
> ___
> Pd-list@iem.at mailing list
> UNSUBSCRIBE and account-management -> 
> http://lists.puredata.info/listinfo/pd-list

___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Large File Support on Linux

2013-03-18 Thread Ivica Ico Bukvic
I completely agree with your example, Miller, as far as pd vanilla is
concerned. OTOH pd-extended ships with all its externals compiled with each
version, so this would be for the most part a non-issue unless:

1) users A or B are using different versions of pd (which could be
elaborated upon in the documentation when sharing patches which is rather
common in other software environments), or

2) if A is using custom externals that are not found in pd-extended (in
which case B would not want to use those anyways unless both A and B are
using the same platform, which is the only scenario where it would make
sense to keep this as a workaround)

Either way FWIW I still feel this is too much of a workaround for little
gain and potentially a lot of headache down the road.

Best wishes,

Ico

> -Original Message-
> From: Miller Puckette [mailto:m...@ucsd.edu]
> Sent: Monday, March 18, 2013 2:47 PM
> To: Ivica Ico Bukvic
> Cc: 'IOhannes m zmoelnig'; pd-list@iem.at
> Subject: Re: [PD] Large File Support on Linux
> 
> To answer Ico's question, the trouble I forsee is musician A gives
> musician B a patch, containing compiled externs - and then musician B
> runs it and gets a crash instead of music.  Sub-optimal in my opinion :)
> 
> I now think that it should be OK to use open64() only in the file
d_soundfile.c
> and only for linux - so putting at the head of the file,
> 
> #ifdef __linux__
> #define _LARGEFILE64_SOURCE
> #endif
> 
> ... then, because opening soundfiles currently uses open_via_path, simply
> closing the file and re-opening it via open64().  There's a similar hack
> to open "binbufs" via paths in the function binbuf_read_via_canvas().
> 
> There are two other festering problems in open_via_path() that all should
> probably be fixed in one go by defining an updated function call:
> 
> 1.  externs further down the path are chosen in front of abstractions that
> should be taken instead;
> 
> 2.  open_via_path isn't thread safe - d_soundfile.c could call it at the
same
> moment someone in the "Pd" thread is changing the path.  This should
> almost
> never hapen but should be fixed.
> 
> This is a big enough change that I think it should wait for 0.45, whereas
the
> hack described above could go in right now as a local bug-fix.
> 
> BTW I've got a couple of other bug-fixes underway; wil push to git now.
> 
> cheers
> Miller
> 
> Oe Mon, Mar 18, 2013 at 12:47:47PM -0400, Ivica Ico Bukvic wrote:
> > > the problem with that is, that s_path implements an API available for
> > > externals.
> > > if open_via_path() returns a filehandle for an LFS file, and the
> > > external has been compiled without LFS, the filehande will be
> > > incompatible. see [1] for a discussion.
> > >
> > > i guess the only clean way to solve that, is to provide a complete
> > > wrapper around the file API, so an external has functions guaranteed
> > > to work with the filehandle returned by Pd.
> > > currently there are sys_open()/sys_close() and its f*-variants.
> > > but we would need at least sys_(f)seek and sys_(f)stat, but
> > > preferrably a complete wrapper around LFS-compatible file functions
[2].
> > >
> > > all this functionality (including the handilng of UTF filenames on
> > > W32) is not really Pd-related, and could well be factored out into a
> > > separate library.
> >
> > Thanks for the clear explanation of the matter, IOhannes.
> >
> > Why not simply recompile externals after fixing s_path? Pd-extended
> already
> > comes with most externals recompiled for every new release and adding
> legacy
> > stuff just creates more confusion in maintaining the source down the
road.
> > In other words, FWIW and IMHO I think there is way too much effort the
> > community is trying to pour into binary compatibility for a system that
> > clearly begs for further enhancements in the core API.
> >
> > Best wishes,
> >
> > Ico
> >
> >
> > ___
> > Pd-list@iem.at mailing list
> > UNSUBSCRIBE and account-management ->
> http://lists.puredata.info/listinfo/pd-list


___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Large File Support on Linux

2013-03-19 Thread Charles Goyard
Hi,

I am in favour of breaking binary compatibility and keeping the code
simple. People that compile their externals themselves can understand
and cope with it. Other people mostly won't notice.

My intuition is that if the LFS project was unable to provide a transparent
API in the first place, there's no reason we will be able to do anything
clean.

Just communicate enough about the breakage and enjoy :).

Miller Puckette wrote:
> To answer Ico's question, the trouble I forsee is musician A gives
> musician B a patch, containing compiled externs - and then musician B
> runs it and gets a crash instead of music.  Sub-optimal in my opinion :)


___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Large File Support on Linux

2013-03-20 Thread Miller Puckette
On further thought, I don't think it's even possible to change open_via_path()
to use open64() and maintain even source compatibility for externs - if
one of them calls lseek or fstat we're sunk - and I don't see any robust
way of aliasing those calls to lseek64() etc.

I'm now realizing too that I don't know what approaches the Mac and Microsoft
pltforms are taking to large file support - I think any solution will have to
somehow address all of the platforms.

For right now I'd like a way to fix 0.44's sfread~ - I'm thinking I can do
that internally to d_soundfile.c so as to cause the least possible disruption
in a 'bugfix' pd release (probably 0.44-3).

cheers
Miller
On Tue, Mar 19, 2013 at 08:55:07PM +0100, Charles Goyard wrote:
> Hi,
> 
> I am in favour of breaking binary compatibility and keeping the code
> simple. People that compile their externals themselves can understand
> and cope with it. Other people mostly won't notice.
> 
> My intuition is that if the LFS project was unable to provide a transparent
> API in the first place, there's no reason we will be able to do anything
> clean.
> 
> Just communicate enough about the breakage and enjoy :).
> 
> Miller Puckette wrote:
> > To answer Ico's question, the trouble I forsee is musician A gives
> > musician B a patch, containing compiled externs - and then musician B
> > runs it and gets a crash instead of music.  Sub-optimal in my opinion :)
> 
> 
> ___
> Pd-list@iem.at mailing list
> UNSUBSCRIBE and account-management -> 
> http://lists.puredata.info/listinfo/pd-list

___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Large File Support on Linux

2013-03-20 Thread IOhannes m zmölnig
On 03/20/2013 18:02, Miller Puckette wrote:
> On further thought, I don't think it's even possible to change open_via_path()
> to use open64() and maintain even source compatibility for externs - if
> one of them calls lseek or fstat we're sunk - and I don't see any robust
> way of aliasing those calls to lseek64() etc.

yep.
that's why i said that the only real solution would be to provide a
more-or-less complete set of fileIO-functions: sys_lseek, sys_stat
(including f-variants).

> 
> I'm now realizing too that I don't know what approaches the Mac and Microsoft
> pltforms are taking to large file support - I think any solution will have to
> somehow address all of the platforms.

which would be possible if we provided the full set. of file accessors.
(but to repeat, this is not really a Pd-problem, and could (and maybe
should) be solved in an auxiliary lib).

> For right now I'd like a way to fix 0.44's sfread~ - I'm thinking I can do
> that internally to d_soundfile.c so as to cause the least possible disruption
> in a 'bugfix' pd release (probably 0.44-3).

which i think is a good enough approach.
but of course there's a catch: sys_open() will gracefully handle UTF-8
filenames, whereas on some platforms open() will not.
so with your solution, soundfiles with non-ascii chars will fail to open
on W32.

since open_via_path() is so often used to determine the full path of a
file somewhere in the searchpath, it might be a good idea to wrap that
functionality into a find_via_path() function that returns the
canonicalized filename. it would be great if that filename would be
mangled in a way so UTF8 doesn't make problems any more, but i think
this is simply not possible with the way w32 handles opening such filenames.


fgmadsr
IOhannes

___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Large File Support on Linux

2013-03-20 Thread Miller Puckette
OK.. I think I'm sold (for 0.45 :) on trying to get sys_open, etc., to do
the "right" thing.  I guess on Windows this would have to be somehow both
UTF8 and 64-bit safe - all the more reason to do as you suggest and hide the
whole mes behind sys_this_and_that() variants.

I thought exactly the same thing about a find_via_path routine.  It seems to
me that open_via_path, which tries not just to verify that the file exists but
also that it can actually be opened, is perhaps working too hard; if a file
that proves impossible to open is in an earlier spot on the path, the best
thing might be to try and fail to open it instead of going out to another,
perhaps incorrect, version of the file.

Also, it could be fixed to take the path as an argument so that d_soundfile.c
can call it from other threads safely (using separate copies of the path).

cheers
Miller

On Wed, Mar 20, 2013 at 09:42:42PM +0100, IOhannes m zmölnig wrote:
> On 03/20/2013 18:02, Miller Puckette wrote:
> > On further thought, I don't think it's even possible to change 
> > open_via_path()
> > to use open64() and maintain even source compatibility for externs - if
> > one of them calls lseek or fstat we're sunk - and I don't see any robust
> > way of aliasing those calls to lseek64() etc.
> 
> yep.
> that's why i said that the only real solution would be to provide a
> more-or-less complete set of fileIO-functions: sys_lseek, sys_stat
> (including f-variants).
> 
> > 
> > I'm now realizing too that I don't know what approaches the Mac and 
> > Microsoft
> > pltforms are taking to large file support - I think any solution will have 
> > to
> > somehow address all of the platforms.
> 
> which would be possible if we provided the full set. of file accessors.
> (but to repeat, this is not really a Pd-problem, and could (and maybe
> should) be solved in an auxiliary lib).
> 
> > For right now I'd like a way to fix 0.44's sfread~ - I'm thinking I can do
> > that internally to d_soundfile.c so as to cause the least possible 
> > disruption
> > in a 'bugfix' pd release (probably 0.44-3).
> 
> which i think is a good enough approach.
> but of course there's a catch: sys_open() will gracefully handle UTF-8
> filenames, whereas on some platforms open() will not.
> so with your solution, soundfiles with non-ascii chars will fail to open
> on W32.
> 
> since open_via_path() is so often used to determine the full path of a
> file somewhere in the searchpath, it might be a good idea to wrap that
> functionality into a find_via_path() function that returns the
> canonicalized filename. it would be great if that filename would be
> mangled in a way so UTF8 doesn't make problems any more, but i think
> this is simply not possible with the way w32 handles opening such filenames.
> 
> 
> fgmadsr
> IOhannes
> 
> ___
> Pd-list@iem.at mailing list
> UNSUBSCRIBE and account-management -> 
> http://lists.puredata.info/listinfo/pd-list

___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Large File Support on Linux

2013-03-20 Thread Ivica Ico Bukvic
Miller,

Does this mean if one were not so concerned with backwards compatibility and
included define you listed below in the s_path.c that this would fix the LFS
issue albeit at the expense of backwards/cross-platform compatibility? Also,
in Linux is open64 safe for both 32-bit and 64-bit OS variants?

> -Original Message-
> From: pd-list-boun...@iem.at [mailto:pd-list-boun...@iem.at] On Behalf Of
> Miller Puckette
> Sent: Wednesday, March 20, 2013 6:46 PM
> To: IOhannes m zmölnig
> Cc: pd-list@iem.at
> Subject: Re: [PD] Large File Support on Linux
> 
> OK.. I think I'm sold (for 0.45 :) on trying to get sys_open, etc., to do
> the "right" thing.  I guess on Windows this would have to be somehow both
> UTF8 and 64-bit safe - all the more reason to do as you suggest and hide
the
> whole mes behind sys_this_and_that() variants.
> 
> I thought exactly the same thing about a find_via_path routine.  It seems
to
> me that open_via_path, which tries not just to verify that the file exists
but
> also that it can actually be opened, is perhaps working too hard; if a
file
> that proves impossible to open is in an earlier spot on the path, the best
> thing might be to try and fail to open it instead of going out to another,
> perhaps incorrect, version of the file.
> 
> Also, it could be fixed to take the path as an argument so that
d_soundfile.c
> can call it from other threads safely (using separate copies of the path).
> 
> cheers
> Miller
> 
> On Wed, Mar 20, 2013 at 09:42:42PM +0100, IOhannes m zmölnig wrote:
> > On 03/20/2013 18:02, Miller Puckette wrote:
> > > On further thought, I don't think it's even possible to change
> open_via_path()
> > > to use open64() and maintain even source compatibility for externs -
if
> > > one of them calls lseek or fstat we're sunk - and I don't see any
robust
> > > way of aliasing those calls to lseek64() etc.
> >
> > yep.
> > that's why i said that the only real solution would be to provide a
> > more-or-less complete set of fileIO-functions: sys_lseek, sys_stat
> > (including f-variants).
> >
> > >
> > > I'm now realizing too that I don't know what approaches the Mac and
> Microsoft
> > > pltforms are taking to large file support - I think any solution will
have to
> > > somehow address all of the platforms.
> >
> > which would be possible if we provided the full set. of file accessors.
> > (but to repeat, this is not really a Pd-problem, and could (and maybe
> > should) be solved in an auxiliary lib).
> >
> > > For right now I'd like a way to fix 0.44's sfread~ - I'm thinking I
can do
> > > that internally to d_soundfile.c so as to cause the least possible
disruption
> > > in a 'bugfix' pd release (probably 0.44-3).
> >
> > which i think is a good enough approach.
> > but of course there's a catch: sys_open() will gracefully handle UTF-8
> > filenames, whereas on some platforms open() will not.
> > so with your solution, soundfiles with non-ascii chars will fail to open
> > on W32.
> >
> > since open_via_path() is so often used to determine the full path of a
> > file somewhere in the searchpath, it might be a good idea to wrap that
> > functionality into a find_via_path() function that returns the
> > canonicalized filename. it would be great if that filename would be
> > mangled in a way so UTF8 doesn't make problems any more, but i think
> > this is simply not possible with the way w32 handles opening such
> filenames.
> >
> >
> > fgmadsr
> > IOhannes
> >
> > ___
> > Pd-list@iem.at mailing list
> > UNSUBSCRIBE and account-management ->
> http://lists.puredata.info/listinfo/pd-list
> 
> ___
> Pd-list@iem.at mailing list
> UNSUBSCRIBE and account-management ->
> http://lists.puredata.info/listinfo/pd-list


___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Large File Support on Linux

2013-03-20 Thread Miller Puckette
I believe not - every extern that used open_bia_path0 would have to be
fixed at the source level to use lseek64(), fstat64() in place of
lseek() and fstat().  I can't see any way to "fix" this source-compatibly.

I checked open64() on 32-bit Raspbian (ARM) and it worked fine - so I think
it's save to say open64 exists on all modern linuxes, both 64 and 32 bit.

cheers
Miller
On Wed, Mar 20, 2013 at 09:14:42PM -0400, Ivica Ico Bukvic wrote:
> Miller,
> 
> Does this mean if one were not so concerned with backwards compatibility and
> included define you listed below in the s_path.c that this would fix the LFS
> issue albeit at the expense of backwards/cross-platform compatibility? Also,
> in Linux is open64 safe for both 32-bit and 64-bit OS variants?
> 
> > -Original Message-
> > From: pd-list-boun...@iem.at [mailto:pd-list-boun...@iem.at] On Behalf Of
> > Miller Puckette
> > Sent: Wednesday, March 20, 2013 6:46 PM
> > To: IOhannes m zmölnig
> > Cc: pd-list@iem.at
> > Subject: Re: [PD] Large File Support on Linux
> > 
> > OK.. I think I'm sold (for 0.45 :) on trying to get sys_open, etc., to do
> > the "right" thing.  I guess on Windows this would have to be somehow both
> > UTF8 and 64-bit safe - all the more reason to do as you suggest and hide
> the
> > whole mes behind sys_this_and_that() variants.
> > 
> > I thought exactly the same thing about a find_via_path routine.  It seems
> to
> > me that open_via_path, which tries not just to verify that the file exists
> but
> > also that it can actually be opened, is perhaps working too hard; if a
> file
> > that proves impossible to open is in an earlier spot on the path, the best
> > thing might be to try and fail to open it instead of going out to another,
> > perhaps incorrect, version of the file.
> > 
> > Also, it could be fixed to take the path as an argument so that
> d_soundfile.c
> > can call it from other threads safely (using separate copies of the path).
> > 
> > cheers
> > Miller
> > 
> > On Wed, Mar 20, 2013 at 09:42:42PM +0100, IOhannes m zmölnig wrote:
> > > On 03/20/2013 18:02, Miller Puckette wrote:
> > > > On further thought, I don't think it's even possible to change
> > open_via_path()
> > > > to use open64() and maintain even source compatibility for externs -
> if
> > > > one of them calls lseek or fstat we're sunk - and I don't see any
> robust
> > > > way of aliasing those calls to lseek64() etc.
> > >
> > > yep.
> > > that's why i said that the only real solution would be to provide a
> > > more-or-less complete set of fileIO-functions: sys_lseek, sys_stat
> > > (including f-variants).
> > >
> > > >
> > > > I'm now realizing too that I don't know what approaches the Mac and
> > Microsoft
> > > > pltforms are taking to large file support - I think any solution will
> have to
> > > > somehow address all of the platforms.
> > >
> > > which would be possible if we provided the full set. of file accessors.
> > > (but to repeat, this is not really a Pd-problem, and could (and maybe
> > > should) be solved in an auxiliary lib).
> > >
> > > > For right now I'd like a way to fix 0.44's sfread~ - I'm thinking I
> can do
> > > > that internally to d_soundfile.c so as to cause the least possible
> disruption
> > > > in a 'bugfix' pd release (probably 0.44-3).
> > >
> > > which i think is a good enough approach.
> > > but of course there's a catch: sys_open() will gracefully handle UTF-8
> > > filenames, whereas on some platforms open() will not.
> > > so with your solution, soundfiles with non-ascii chars will fail to open
> > > on W32.
> > >
> > > since open_via_path() is so often used to determine the full path of a
> > > file somewhere in the searchpath, it might be a good idea to wrap that
> > > functionality into a find_via_path() function that returns the
> > > canonicalized filename. it would be great if that filename would be
> > > mangled in a way so UTF8 doesn't make problems any more, but i think
> > > this is simply not possible with the way w32 handles opening such
> > filenames.
> > >
> > >
> > > fgmadsr
> > > IOhannes
> > >
> > > ___
> > > Pd-list@iem.at mailing list
> > > UNSUBSCRIBE and account-management ->
> > http://lists.puredata.info/listinfo/pd-list
> > 
> > ___
> > Pd-list@iem.at mailing list
> > UNSUBSCRIBE and account-management ->
> > http://lists.puredata.info/listinfo/pd-list
> 

___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Large File Support on Linux

2013-03-20 Thread Ivica Ico Bukvic
Could one simply redefine lseek and fstat to use lseek64 and fstat64 instead
and be done with it (again, assuming one is not concerned with backwards
and/or x-platform compatibility)?

Best wishes,

Ico

> -Original Message-
> From: Miller Puckette [mailto:m...@ucsd.edu]
> Sent: Wednesday, March 20, 2013 9:21 PM
> To: Ivica Ico Bukvic
> Cc: 'IOhannes m zmölnig'; pd-list@iem.at
> Subject: Re: [PD] Large File Support on Linux
> 
> I believe not - every extern that used open_bia_path0 would have to be
> fixed at the source level to use lseek64(), fstat64() in place of
> lseek() and fstat().  I can't see any way to "fix" this source-compatibly.
> 
> I checked open64() on 32-bit Raspbian (ARM) and it worked fine - so I
think
> it's save to say open64 exists on all modern linuxes, both 64 and 32 bit.
> 
> cheers
> Miller
> On Wed, Mar 20, 2013 at 09:14:42PM -0400, Ivica Ico Bukvic wrote:
> > Miller,
> >
> > Does this mean if one were not so concerned with backwards compatibility
> and
> > included define you listed below in the s_path.c that this would fix the
LFS
> > issue albeit at the expense of backwards/cross-platform compatibility?
> Also,
> > in Linux is open64 safe for both 32-bit and 64-bit OS variants?
> >
> > > -Original Message-
> > > From: pd-list-boun...@iem.at [mailto:pd-list-boun...@iem.at] On
> Behalf Of
> > > Miller Puckette
> > > Sent: Wednesday, March 20, 2013 6:46 PM
> > > To: IOhannes m zmölnig
> > > Cc: pd-list@iem.at
> > > Subject: Re: [PD] Large File Support on Linux
> > >
> > > OK.. I think I'm sold (for 0.45 :) on trying to get sys_open, etc., to
do
> > > the "right" thing.  I guess on Windows this would have to be somehow
> both
> > > UTF8 and 64-bit safe - all the more reason to do as you suggest and
hide
> > the
> > > whole mes behind sys_this_and_that() variants.
> > >
> > > I thought exactly the same thing about a find_via_path routine.  It
seems
> > to
> > > me that open_via_path, which tries not just to verify that the file
exists
> > but
> > > also that it can actually be opened, is perhaps working too hard; if a
> > file
> > > that proves impossible to open is in an earlier spot on the path, the
best
> > > thing might be to try and fail to open it instead of going out to
another,
> > > perhaps incorrect, version of the file.
> > >
> > > Also, it could be fixed to take the path as an argument so that
> > d_soundfile.c
> > > can call it from other threads safely (using separate copies of the
path).
> > >
> > > cheers
> > > Miller
> > >
> > > On Wed, Mar 20, 2013 at 09:42:42PM +0100, IOhannes m zmölnig wrote:
> > > > On 03/20/2013 18:02, Miller Puckette wrote:
> > > > > On further thought, I don't think it's even possible to change
> > > open_via_path()
> > > > > to use open64() and maintain even source compatibility for externs
-
> > if
> > > > > one of them calls lseek or fstat we're sunk - and I don't see any
> > robust
> > > > > way of aliasing those calls to lseek64() etc.
> > > >
> > > > yep.
> > > > that's why i said that the only real solution would be to provide a
> > > > more-or-less complete set of fileIO-functions: sys_lseek, sys_stat
> > > > (including f-variants).
> > > >
> > > > >
> > > > > I'm now realizing too that I don't know what approaches the Mac
and
> > > Microsoft
> > > > > pltforms are taking to large file support - I think any solution
will
> > have to
> > > > > somehow address all of the platforms.
> > > >
> > > > which would be possible if we provided the full set. of file
accessors.
> > > > (but to repeat, this is not really a Pd-problem, and could (and
maybe
> > > > should) be solved in an auxiliary lib).
> > > >
> > > > > For right now I'd like a way to fix 0.44's sfread~ - I'm thinking
I
> > can do
> > > > > that internally to d_soundfile.c so as to cause the least possible
> > disruption
> > > > > in a 'bugfix' pd release (probably 0.44-3).
> > > >
> > > > which i think is a good enough approach.
> > > > but of course there's a catch: sys_open() will gracefully handle
UTF-8
> > > > filenames, whereas on some platforms open() will not.
> > > >

Re: [PD] Large File Support on Linux

2013-03-21 Thread IOhannes m zmoelnig
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

On 2013-03-21 04:22, Ivica Ico Bukvic wrote:
> Could one simply redefine lseek and fstat to use lseek64 and
> fstat64 instead and be done with it (again, assuming one is not
> concerned with backwards and/or x-platform compatibility)?

if you are talking about redefining (as in "#define open open64") in
m_pd.h, than please: no NO!

that will break compilation of a number of externals immediately.
one that comes to my mind is any C++-external (including Gem) that
uses "open" methods in classes.
e.g.
 foo::open(s);
will expand to
 foo::open64(s);
which will break binary compatibility when linking to any library
providing foo::open() simply by including m_pd.h

gfmasdr
IOhannes
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.12 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAlFKw88ACgkQkX2Xpv6ydvTaoQCePKd61yXxx88XAUP/n1KGDTVQ
v0MAnjHVvlDkaewjStLr5vov8xyZNF/6
=wWiI
-END PGP SIGNATURE-

___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Large File Support on Linux

2013-03-21 Thread Charles Goyard
Hi,

Here's a small summary of what has to be done, from
http://users.suse.com/~aj/linux_lfs.html :

"
In a nutshell for using LFS you can choose either of the following:

Compile your programs with "gcc -D_FILE_OFFSET_BITS=64". This forces
all file access calls to use the 64 bit variants. Several types
change also, e.g. off_t becomes off64_t. It's therefore important to
always use the correct types and to not use e.g. int instead of
off_t. For portability with other platforms you should use getconf
LFS_CFLAGS which will return -D_FILE_OFFSET_BITS=64 on Linux
platforms but might return something else on e.g. Solaris. For
linking, you should use the link flags that are reported via getconf
LFS_LDFLAGS. On Linux systems, you do not need special link flags.
Define _LARGEFILE_SOURCE and _LARGEFILE64_SOURCE. With these
defines you can use the LFS functions like open64 directly.
Use the O_LARGEFILE flag with open to operate on large
files.

A complete documentation of the feature test macros like
_FILE_OFFSET_BITS and _LARGEFILE_SOURCE is in the glibc
manual (run e.g. "info libc 'Feature Test Macros'").

The LFS API is also documented in the LFS standard which is
available at
http://ftp.sas.com/standards/large.file/x_open.20Mar96.html.
"


Note than open_via_file returns int and not off_t, so the automagic
stuff will fail.

I guess Miller is right and it should be targeted to 0.45 or 0.46,
that's not a small change.

Cheers,
Charles

Ivica Ico Bukvic wrote:
> Could one simply redefine lseek and fstat to use lseek64 and fstat64 instead
> and be done with it (again, assuming one is not concerned with backwards
> and/or x-platform compatibility)?

___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Large File Support on Linux

2013-03-21 Thread Charles Goyard
Ivica Ico Bukvic wrote:
> Also, in Linux is open64 safe for both 32-bit and 64-bit OS variants?

Yes, you don't have to switch back to open() on 64-bits systems. So
basically switching everything to the 64-bits variants works on most
Linux systems installed since about 2002/2003.



___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Large File Support on Linux

2013-03-21 Thread IOhannes m zmoelnig
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

On 2013-03-21 09:37, Charles Goyard wrote:
> Note than open_via_file returns int and not off_t, so the
> automagic stuff will fail.

that's wrong.
the declaration of open64 is:
> int open64(const char *pathname, int oflag,...);
so it returns an int, not an off_t, just like open_via_file().

iiuc, the problem is, that the file descriptor cannot be used by an
ordinary lseek(), but only with lseek64().

that's what i was referring to when i said that one would need to
provide sys_lseek().

if you go the way of simply defining _FILE_OFFSET_BITS=64 for
compiling Pd, you must compile all externals using
_FILE_OFFSET_BITS=64 as well, else they won't be able to the
file-handle internally.
i think this is **very** bad style, as it forces the use of some
obscure and potentially harmful compiler flags in order get externals
to work.

gamsdr
IOhannes
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.12 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAlFK/qsACgkQkX2Xpv6ydvTAbgCgxWfPNZniRrsQ5vYLjcHtzQ3t
2g0An0I6ELjXXHJNTWcMu/mYLCz6kYqQ
=43Zn
-END PGP SIGNATURE-

___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Large File Support on Linux

2013-03-21 Thread Charles Goyard
IOhannes m zmoelnig wrote:
> On 2013-03-21 09:37, Charles Goyard wrote:
> > Note than open_via_file returns int and not off_t, so the
> > automagic stuff will fail.
> 
> that's wrong.
> the declaration of open64 is:
> > int open64(const char *pathname, int oflag,...);
> so it returns an int, not an off_t, just like open_via_file().

Yes, I got mixed up somewhere between filehandles and file positions.

However, that's true of lseek(), that returns an off_t, when
d_soundfile.c uses long.

Sorry for the confusion.

-- 
Charles

___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Large File Support on Linux

2013-03-23 Thread Miller Puckette
OK... now I'm trying to fix the bug but I can't reproduce it.  I made a
5 GB soundfile (wave format, 60 channels, 4-bit floats, 450 seconds long)
and opened and am reading it using readsf~.  This is on a 64 bit linux
box.

Question for Charles Goyard: were you on a 32-bit linux machine?  Or did
you do something else besides just read the file from its beginning?

thanks
Miller

On Wed, Mar 20, 2013 at 06:20:59PM -0700, Miller Puckette wrote:
> I believe not - every extern that used open_bia_path0 would have to be
> fixed at the source level to use lseek64(), fstat64() in place of
> lseek() and fstat().  I can't see any way to "fix" this source-compatibly.
> 
> I checked open64() on 32-bit Raspbian (ARM) and it worked fine - so I think
> it's save to say open64 exists on all modern linuxes, both 64 and 32 bit.
> 
> cheers
> Miller
> On Wed, Mar 20, 2013 at 09:14:42PM -0400, Ivica Ico Bukvic wrote:
> > Miller,
> > 
> > Does this mean if one were not so concerned with backwards compatibility and
> > included define you listed below in the s_path.c that this would fix the LFS
> > issue albeit at the expense of backwards/cross-platform compatibility? Also,
> > in Linux is open64 safe for both 32-bit and 64-bit OS variants?
> > 
> > > -Original Message-
> > > From: pd-list-boun...@iem.at [mailto:pd-list-boun...@iem.at] On Behalf Of
> > > Miller Puckette
> > > Sent: Wednesday, March 20, 2013 6:46 PM
> > > To: IOhannes m zmölnig
> > > Cc: pd-list@iem.at
> > > Subject: Re: [PD] Large File Support on Linux
> > > 
> > > OK.. I think I'm sold (for 0.45 :) on trying to get sys_open, etc., to do
> > > the "right" thing.  I guess on Windows this would have to be somehow both
> > > UTF8 and 64-bit safe - all the more reason to do as you suggest and hide
> > the
> > > whole mes behind sys_this_and_that() variants.
> > > 
> > > I thought exactly the same thing about a find_via_path routine.  It seems
> > to
> > > me that open_via_path, which tries not just to verify that the file exists
> > but
> > > also that it can actually be opened, is perhaps working too hard; if a
> > file
> > > that proves impossible to open is in an earlier spot on the path, the best
> > > thing might be to try and fail to open it instead of going out to another,
> > > perhaps incorrect, version of the file.
> > > 
> > > Also, it could be fixed to take the path as an argument so that
> > d_soundfile.c
> > > can call it from other threads safely (using separate copies of the path).
> > > 
> > > cheers
> > > Miller
> > > 
> > > On Wed, Mar 20, 2013 at 09:42:42PM +0100, IOhannes m zmölnig wrote:
> > > > On 03/20/2013 18:02, Miller Puckette wrote:
> > > > > On further thought, I don't think it's even possible to change
> > > open_via_path()
> > > > > to use open64() and maintain even source compatibility for externs -
> > if
> > > > > one of them calls lseek or fstat we're sunk - and I don't see any
> > robust
> > > > > way of aliasing those calls to lseek64() etc.
> > > >
> > > > yep.
> > > > that's why i said that the only real solution would be to provide a
> > > > more-or-less complete set of fileIO-functions: sys_lseek, sys_stat
> > > > (including f-variants).
> > > >
> > > > >
> > > > > I'm now realizing too that I don't know what approaches the Mac and
> > > Microsoft
> > > > > pltforms are taking to large file support - I think any solution will
> > have to
> > > > > somehow address all of the platforms.
> > > >
> > > > which would be possible if we provided the full set. of file accessors.
> > > > (but to repeat, this is not really a Pd-problem, and could (and maybe
> > > > should) be solved in an auxiliary lib).
> > > >
> > > > > For right now I'd like a way to fix 0.44's sfread~ - I'm thinking I
> > can do
> > > > > that internally to d_soundfile.c so as to cause the least possible
> > disruption
> > > > > in a 'bugfix' pd release (probably 0.44-3).
> > > >
> > > > which i think is a good enough approach.
> > > > but of course there's a catch: sys_open() will gracefully handle UTF-8
> > > > filenames, whereas on some platforms open() will not.
> > > > so with your solution, s

Re: [PD] Large File Support on Linux

2013-03-23 Thread Miller Puckette
Never mind - it stopped after 74 seconds (instead of 450) - presumably 4GB
early.  But I don't believe this has anything at all to do with my using open()
instead of open64() - apparently writesf~ put the wrong number in the
soundfile header.

cheers
Miller

On Sat, Mar 23, 2013 at 08:15:47PM -0700, Miller Puckette wrote:
> OK... now I'm trying to fix the bug but I can't reproduce it.  I made a
> 5 GB soundfile (wave format, 60 channels, 4-bit floats, 450 seconds long)
> and opened and am reading it using readsf~.  This is on a 64 bit linux
> box.
> 
> Question for Charles Goyard: were you on a 32-bit linux machine?  Or did
> you do something else besides just read the file from its beginning?
> 
> thanks
> Miller
> 

___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Large File Support on Linux

2013-03-24 Thread Charles Goyard
Hi Miller,

Yes I am on 32bit linux. For what I understand on 64 bits Linux LFS is
out of the box. The problem stands only for 32 bits hosts it seems.

I can follow a branch on git and test for you if you wish.

Alternatively I recall there's debian package to host a 32 bits linux in
a 64 bits linux.

Thanks
Charles


Miller Puckette wrote:
> OK... now I'm trying to fix the bug but I can't reproduce it.  I made a
> 5 GB soundfile (wave format, 60 channels, 4-bit floats, 450 seconds long)
> and opened and am reading it using readsf~.  This is on a 64 bit linux
> box.
> 
> Question for Charles Goyard: were you on a 32-bit linux machine?  Or did
> you do something else besides just read the file from its beginning?


___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Large File Support on Linux

2013-03-24 Thread Miller Puckette
No worries  I'll just go crank up an old 32 bit linux box myself :)

M

On Sun, Mar 24, 2013 at 04:07:12PM +0100, Charles Goyard wrote:
> Hi Miller,
> 
> Yes I am on 32bit linux. For what I understand on 64 bits Linux LFS is
> out of the box. The problem stands only for 32 bits hosts it seems.
> 
> I can follow a branch on git and test for you if you wish.
> 
> Alternatively I recall there's debian package to host a 32 bits linux in
> a 64 bits linux.
> 
> Thanks
> Charles
> 
> 
> Miller Puckette wrote:
> > OK... now I'm trying to fix the bug but I can't reproduce it.  I made a
> > 5 GB soundfile (wave format, 60 channels, 4-bit floats, 450 seconds long)
> > and opened and am reading it using readsf~.  This is on a 64 bit linux
> > box.
> > 
> > Question for Charles Goyard: were you on a 32-bit linux machine?  Or did
> > you do something else besides just read the file from its beginning?
> 
> 
> ___
> Pd-list@iem.at mailing list
> UNSUBSCRIBE and account-management -> 
> http://lists.puredata.info/listinfo/pd-list

___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Large File Support on Linux (was: readsf fails to read 32 bits float wav)

2013-03-16 Thread Charles Goyard
Hi,

after some research, it seems more related to the size of the file after
all. I thought the problem was 32 bits files because it worked when I
converted them to 16 bits. But it was just the file size dropped under
2gb.

To sum up: a file over about 2Gb fails to open. This is related to how
Linux handles large files on 32 bits systems.

On my test patch I get the "done" bang as soon as I send the "start"
message.

Reading the code, it looks like the s_path.c/sys_open() oflags is
missing O_LARGEFILE support. pd-extended and pd-l2ork suffer from the
same.

Am I right there's no Large File Support for pd on 32 bits Linux ? If so
that's a major shortcoming, and something a bit heavy to fix. Does it
work out of the box on 64 bits linux ?

Thanks,

-- 
Charles

Hans-Christoph Steiner wrote:
> 
> Sounds like it, especially if you can reproduce it everytime.  File a
> bug report and include as simple a patch as possible to reproduce the
> issue, and the soundfile.
> 
> > today I noticed a readsf~ (on vanilla) opening a 5 wave file containing
> > 32 bits float audio fails silently. The doc says 4 bytes is unavailable
> > for AIFF, but I use WAVE.
> > 
> > The file is a 5 channels WAVE file with 5 tracks 32bits float at 48kHz.
> > 
> > Converting the audio to 16 bits PCM works.
> > 
> > Is that a bug ? On vanilla 0.44.

___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Large File Support on Linux (was: readsf fails to read 32 bits float wav)

2013-03-16 Thread Charles Goyard
Darn, I just found there's a feature request for just that from IOhannes
pending since 2007.

https://sourceforge.net/tracker/index.php?func=detail&aid=1638701&group_id=55736&atid=478073

Cheers,
-- 
Charles


Charles Goyard wrote:
> Hi,
> 
> after some research, it seems more related to the size of the file after
> all. I thought the problem was 32 bits files because it worked when I
> converted them to 16 bits. But it was just the file size dropped under
> 2gb.
> 
> To sum up: a file over about 2Gb fails to open. This is related to how
> Linux handles large files on 32 bits systems.
> 
> On my test patch I get the "done" bang as soon as I send the "start"
> message.
> 
> Reading the code, it looks like the s_path.c/sys_open() oflags is
> missing O_LARGEFILE support. pd-extended and pd-l2ork suffer from the
> same.
> 
> Am I right there's no Large File Support for pd on 32 bits Linux ? If so
> that's a major shortcoming, and something a bit heavy to fix. Does it
> work out of the box on 64 bits linux ?
> 
> Thanks,
> 
> -- 
> Charles
> 
> Hans-Christoph Steiner wrote:
> > 
> > Sounds like it, especially if you can reproduce it everytime.  File a
> > bug report and include as simple a patch as possible to reproduce the
> > issue, and the soundfile.
> > 
> > > today I noticed a readsf~ (on vanilla) opening a 5 wave file containing
> > > 32 bits float audio fails silently. The doc says 4 bytes is unavailable
> > > for AIFF, but I use WAVE.
> > > 
> > > The file is a 5 channels WAVE file with 5 tracks 32bits float at 48kHz.
> > > 
> > > Converting the audio to 16 bits PCM works.
> > > 
> > > Is that a bug ? On vanilla 0.44.

___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Large File Support on Linux (was: readsf fails to read 32 bits float wav)

2013-03-16 Thread Miller Puckette
It's in the source - but Pd has to be compiled with '_LARGEFILE64_SOURCE'
defined for this to work.  Through 0.43 the configure script I was using
was checking for this somehow (too complicted for me to understand how).

Anyhow, this is a bug all right - thanks for reporting it!

... and can you tell me what OS you're on so I can check if I'm actually
fixing it?

thanks
Miller



On Sat, Mar 16, 2013 at 10:57:46PM +0100, Charles Goyard wrote:
> Darn, I just found there's a feature request for just that from IOhannes
> pending since 2007.
> 
> https://sourceforge.net/tracker/index.php?func=detail&aid=1638701&group_id=55736&atid=478073
> 
> Cheers,
> -- 
> Charles
> 
> 
> Charles Goyard wrote:
> > Hi,
> > 
> > after some research, it seems more related to the size of the file after
> > all. I thought the problem was 32 bits files because it worked when I
> > converted them to 16 bits. But it was just the file size dropped under
> > 2gb.
> > 
> > To sum up: a file over about 2Gb fails to open. This is related to how
> > Linux handles large files on 32 bits systems.
> > 
> > On my test patch I get the "done" bang as soon as I send the "start"
> > message.
> > 
> > Reading the code, it looks like the s_path.c/sys_open() oflags is
> > missing O_LARGEFILE support. pd-extended and pd-l2ork suffer from the
> > same.
> > 
> > Am I right there's no Large File Support for pd on 32 bits Linux ? If so
> > that's a major shortcoming, and something a bit heavy to fix. Does it
> > work out of the box on 64 bits linux ?
> > 
> > Thanks,
> > 
> > -- 
> > Charles
> > 
> > Hans-Christoph Steiner wrote:
> > > 
> > > Sounds like it, especially if you can reproduce it everytime.  File a
> > > bug report and include as simple a patch as possible to reproduce the
> > > issue, and the soundfile.
> > > 
> > > > today I noticed a readsf~ (on vanilla) opening a 5 wave file containing
> > > > 32 bits float audio fails silently. The doc says 4 bytes is unavailable
> > > > for AIFF, but I use WAVE.
> > > > 
> > > > The file is a 5 channels WAVE file with 5 tracks 32bits float at 48kHz.
> > > > 
> > > > Converting the audio to 16 bits PCM works.
> > > > 
> > > > Is that a bug ? On vanilla 0.44.
> 
> ___
> Pd-list@iem.at mailing list
> UNSUBSCRIBE and account-management -> 
> http://lists.puredata.info/listinfo/pd-list

___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list