djerius has asked for the wisdom of the Perl Monks concerning the following question:
I've just released a module to cpan (IO::ReStoreFH) which stores and restores filehandles and file descriptors. (I'm using it to sandbox code which might mess up the main program's I/O).
It's failing on Windows (thanks, CPAN Testers!) because apparently fcntl on that platform can't be used to determine filehandle access modes. Those are needed to dup them using open according to the documentation:
You may also, in the Bourne shell tradition, specify an EXPR beginning with '>&', in which case the rest of the string is interpreted as the name of a filehandle (or file descriptor, if numeric) to be duped (as dup(2)) and opened. You may use "&" after ">", ">>", "<", "+>", "+>>", and "+<". The mode you specify should match the mode of the original filehandle.There doesn't seem to be a clean method for getting that info from a filehandle.
- I can poke at the underlying file descriptor using fcntl, which works on Linux & Mac OS X, but fails on Windows.
- I can use PerlIO::get_layers( $fh, details => 1) to get the filehandle flags, but the definition of the flags is in a C header and not available directly in Perl.
- I could use PerlIO::Layers, which gets me everything I need, but it uses XS and I'd like something that's pure Perl, as installing XS code on Windows boxes is not something I wish on anyone.
Is there another option that I've missed? I don't have any experience on Windows (and no machines on which to test code) so I'm kind of poking around in the dark.
Thanks,
Diab
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: Getting filehandle access modes on Windows
by BrowserUk (Patriarch) on Sep 28, 2012 at 20:54 UTC | |
by djerius (Beadle) on Sep 28, 2012 at 21:08 UTC | |
Re: Getting filehandle access modes on Windows
by CountZero (Bishop) on Sep 29, 2012 at 06:18 UTC | |
by djerius (Beadle) on Oct 01, 2012 at 15:26 UTC | |
by CountZero (Bishop) on Oct 01, 2012 at 18:45 UTC |
Back to
Seekers of Perl Wisdom