summaryrefslogtreecommitdiff
path: root/perlio.c
Commit message (Collapse)AuthorAgeFilesLines
* Rename PERLIO_BUFSIZ to PERLIOBUF_DEFAULT_BUFSIZ.Craig A. Berry2010-11-101-1/+1
| | | | | | | PERLIO_BUFSIZ was already in use by Encode::Unicode for the PerlIOEncode_xxx layer, so it makes sense to specify that this macro is for the PerlIOBuf_xxx layer and that it is a default value that may eventually be settable at run-time.
* Make the buffer size for the perlio layer a macro.Craig A. Berry2010-11-091-1/+1
| | | | | | | | | | | The 4K buffer size was chosen way back in bb9950b. Significant performance improvements are seen with larger buffer sizes, though the optimum size likely varies by architecture and workload. For starters, we'll leave the default as-is but make the buffer size a macro and thus user-configurable via: sh Configure -Accflags=-DPERLIO_BUFSIZ=<number> Choosing a better (larger) default is still TODO.
* localize $@ during binmode (RT#78844)David Golden2010-11-061-0/+3
|
* full API for cop hint hashesZefram2010-10-211-2/+1
| | | | | | | | | | | | | Expose cop hint hashes as a type COPHH, with a cophh_* API which is a macro layer over the refcounted_he_* API. The documentation for cophh_* describes purely API-visible behaviour, whereas the refcounted_he_* documentation describes the functions mainly in terms of the implementation. Revise the cop_hints_* API, using the flags parameter consistently and reimplementing in terms of cophh_*. Use the cophh_* and cop_hints_* functions consistently where appropriate. [Modified by the committer to update two calls to Perl_refcounted_he_fetch recently added to newPMOP.]
* [perl #73754] Better error message for PerlIO layer implementationsTye McQueen2010-09-261-3/+8
| | | | | | | | | | | | | | | | | | | | please find attached a patch against blead originating from [1] , that improves the "Layer does not match this perl" error message by telling the user which IO layer failed and how. I've tested the patch against a recent bleadperl and even without the modifications to perldiag.t all tests pass. Still, for completeness, I've patched perldiag.t as well. The code is not mine, it was written and posted by Tye McQueen, I've just tested it [2] and ferry the information. I'm aware that this patch is too late for 5.12 , but in the sense of improving Perl in the long run, I hope the change still makes it into a version of Perl. -max [1] http://perlmonks.org/?node_id=829815 [2] Certified Works On My Machine, 2010
* [perl #77684] Restore the 5.10/12 behaviour of open $fh, ">", \$glob_copyFather Chrysostomos2010-09-131-1/+1
| | | | | | | | | This restores the perl 5.10/12 behaviour, making open treat \$foo as a scalar reference if it is a glob copy (SvFAKE). It also fixes an existing assertion failure that the test now trig- gers. PerlIOScalar_pushed was not downgrading the sv before set- ting SvCUR.
* [perl #77492] open $fh, ">", \*glob causes SEGVFather Chrysostomos2010-09-011-1/+1
| | | | | PerlIO_layer_from_ref must not treat a real glob as a scalar. This function was not updated when SVt_PVGV was moved before SVt_PVLV.
* Make PerlIOUnix_open honor default permissions on VMS.Craig A. Berry2010-08-281-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When perlio became the default and unixio became the default bottom layer, the most common path for creating files from Perl became PerlIOUnix_open, which has always explicitly used 0666 as the permission mask. This has the following undesireable effects on VMS: 1.) The execute bit is lost regardless of whether it's in the default permissions. 2.) Delete permission (which doesn't exist in the Unix permission mask) is copied from write permission, so granting write permission also grants delete even if it's not in the default permission mask. This can result in an inadvertent widening of permissions. 3.) System permissions (which don't exist in the Unix permission mask) are copied from owner permissions, so any distinction between system and owner is lost. 4.) ACLs are not inherited. For example, setting a default_protection ACE on a directory such that all world access is disallowed will be ignored; world will have the intersection of RWD (the final 6 in 0666) and whatever the default permissions are regardless of what the ACL says. Thus not inheriting ACLs can result in the inadvertent widening of permissions. The way to avoid all of this is to pass 0777 as the permissions to open(). In the VMS CRTL, 0777 has a special meaning over and above intersecting with the current umask; specifically, it allows Unix syscalls to preserve native default permissions. Details currently documented at: http://h71000.www7.hp.com/doc/732final/5763/5763pro_060.html#umask_routine
* fix 'might be used uninitialized' in PerlIO_tmpfileDavid Mitchell2010-08-181-1/+1
| | | | | sv can't actually be used uninitialized, but set it to zero to shut up stupid compilers
* PL_in_load_module only has values 0 and 1, so can be a bool instead of int.Nicholas Clark2010-05-211-3/+2
|
* Possible undefined behaviour, spotted by gcc 4.5.0 and HP's updated compiler.Nicholas Clark2010-04-191-1/+1
|
* Unlink PerlIO's tempfiles for the case of no -T, but bogus $ENV{TMPDIR}Nicholas Clark2010-01-071-2/+4
| | | | | | When -T is enabled, or when $ENV{TMPDIR} is bogus, perlio.c used a pathname matching </tmp/PerlIO_??????>. However, it was only correctly unlinking the file for the case of -T enabled.
* SvREFCNT_dec already checks if the SV is non-NULL (continued)Vincent Pit2009-11-081-12/+6
|
* Add Perl_ck_warner(), which combines Perl_ckwarn() and Perl_warner().Nicholas Clark2009-10-121-13/+10
| | | | | | | Replace ckWARN{,2,3,4}() && Perl_warner() with it, which trades reduced code size (about 0.2%), for 1 more function call if warnings are not enabled. However, if we're now in the L1 or L2 cache when we weren't previously, that's still going to be a speed win.
* Remove the port to MiNT. It's a dead platform that hasn't had any love ↵Jesse Vincent2009-08-031-1/+1
| | | | since 5.005
* The attached patch to perlio.c fixes the problem of errno getting set.Jarkko Hietaniemi2009-06-141-12/+0
| | | | | | | | | | | | | While I am firmly in the school of "do not look at $! except immediately after a failure", I also agree that spuriously setting it is messy. But there is just no way of knowing where your errno might have been. The problem was that PerlIO_fast_gets() (and other nearby similar capability-checking PerlIO routines) set the errno (and it was being called a lot, from sv_gets()). I think setting the errno here was a mistake: checking for "can has FOO" should not set external state, such as the errno. The patch removes that errno trashing from all those routines.
* Do not honor TMPDIR for anonymous temporary files when taintingRafael Garcia-Suarez2009-06-101-6/+16
| | | | | | | Use a default of /tmp on Unixes when TMPDIR is unset or empty, or when creation of a temporary file in it fails This goes on top of commit 26e8050aaf2eeca2f04cdc7bc5df07f8dc4ff0f9
* [perl #66452] TMPDIR not honored when opening an anonymous temporary fileNiko Tyni2009-06-101-1/+3
|
* fix RT 39060, errno incorrectly set in perlioStepan Kasal2009-06-081-5/+7
|
* fileno() was failing when passed a NULL. I'm guessing that we don't really ↵Steve Peters2009-02-231-1/+3
| | | | need to increase the refcount on a NULL fd.
* Add get_cvs() as a shortcut for STR_WITH_LEN() and Perl_get_cvn_flags(), andNicholas Clark2009-01-211-1/+1
| | | | use it where possible.
* Silence compiler warning in perlio.cJerry D. Hedden2008-12-101-0/+2
| | | | | | From: "Jerry D. Hedden" <jdhedden@cpan.org> Message-ID: <1ff86f510812090909y11947acfy317e46417b9ae91d@mail.gmail.com> p4raw-id: //depot/perl@35073
* standardize save/restore of errno & vaxc$errnoChip Salzenberg2008-12-051-5/+5
| | | | | Message-ID: <20081127070141.GD17663@tytlal.topaz.cx> p4raw-id: //depot/perl@35018
* From change #34775, reverting perlio.c change for now. Also,Steve Peters2008-11-081-14/+3
| | | | | | setting the tests to TODO. p4raw-link: @34775 on //depot/perl: 2556f95e0f4f5e8e95c9766374614ab52edefe3d p4raw-id: //depot/perl@34778
* Re: [perl #56644] PerlIO resource leaks on open() and then :pop in :unix and ↵Goro Fuji2008-11-081-3/+14
| | | | | | | | :stdio From: "Goro Fuji" <gfuji@cpan.org> Message-ID: <efb9c59b0807061604q476025e9n85893f131a6bf23e@mail.gmail.com> p4raw-id: //depot/perl@34775
* [perl #54828] perlio.c has a problem (both 5.8 and 5.10) Goro Fuji2008-11-081-3/+1
| | | | | | | | | From: "Goro Fuji" (via RT) <perlbug-followup@perl.org> Message-ID: <rt-3.6.HEAD-11257-1211782242-1590.54828-75-0@perl.org> The second part of the patch. The first part was in change #33978. p4raw-link: @33978 on //depot/perl: 9d97e8b8cac47626e28c79994e7ab0d5c8589515 p4raw-id: //depot/perl@34774
* PATCH: Large omnibus patch to clean up the JRRT quotesTom Christiansen2008-11-021-0/+2
| | | | | | Message-ID: <25940.1225611819@chthon> Date: Sun, 02 Nov 2008 01:43:39 -0600 p4raw-id: //depot/perl@34698
* Add MUTABLE_GV(), and eliminate (V *) casts in *.c.Nicholas Clark2008-10-311-2/+2
| | | | | | Can't easily do gv.h, as GvGP() (at least) needs to split into two macros - one const for reading, one non-const for writing. p4raw-id: //depot/perl@34679
* Eliminate (SV *) casts from the rest of *.c, picking up one (further)Nicholas Clark2008-10-301-2/+2
| | | | | erroneous const in dump.c. p4raw-id: //depot/perl@34675
* Cope with brain damage in PerlIO::via, which will let you fclose() theNicholas Clark2008-10-261-1/+8
| | | | | | | same FILE * twice, thanks to it calling out to Perl space inside the close call tree, with the underlying PerlIO * already closed, but not unlinked. p4raw-id: //depot/perl@34596
* Update copyright years.Nicholas Clark2008-10-251-1/+1
| | | p4raw-id: //depot/perl@34585
* [perl #54828] perlio.c has a problem (both 5.8 and 5.10) Goro Fuji2008-06-011-1/+1
| | | | | | | | From: "Goro Fuji" (via RT) <perlbug-followup@perl.org> Message-ID: <rt-3.6.HEAD-11257-1211782242-1590.54828-75-0@perl.org> First chunk of the patch only p4raw-id: //depot/perl@33978
* Add two missing dVAR's.Marcus Holland-Moritz2008-04-131-0/+3
| | | p4raw-id: //depot/perl@33671
* Correct two spelling mistakes, and reformat some comments.Nicholas Clark2008-03-131-8/+8
| | | p4raw-id: //depot/perl@33504
* Change 33492 did not spread the protection wide enough. There wereNicholas Clark2008-03-121-13/+24
| | | | | | | | | | | | | still two more races to be lost. 1: The close() could still happen after the (premature) mutex release allowed another thread to dup() to that file descriptor. 2: The initial dup() could happen whilst another thread was in the mutex protected region, and had temporarily closed the file descriptor. Race conditions remain with any other thread that actually does I/O during the execution of the mutex protected region (as noted in a comment), and dup() failure is not handled gracefully (also noted). p4raw-id: //depot/perl@33498
* We need mutex protection in PerlIOStdio_close() for the duration ofNicholas Clark2008-03-121-1/+22
| | | | | | | | | | holding our true love file handle open, to stop anything else temporarily using it for a quick dup() fling, and then closing the file handle underneath us. I suspect that the lack of this protection was the cause of the threads free.t and blocks.t failures on OS X on 5.8.x, where usefaststdio is the default, and PerlIO is unable to "invalidate" the FILE *. p4raw-id: //depot/perl@33492
* Correct logic error in PerlIOStdio_close() - 0 is an acceptable valueNicholas Clark2008-03-121-2/+2
| | | | | from dup(), so it can't also be the "don't do anything later" value. p4raw-id: //depot/perl@33491
* Silence Borland compiler warnings (except for warnings from zlib) here:Steve Hay2008-02-251-1/+1
| | | | | http://www.nntp.perl.org/group/perl.daily-build.reports/2008/02/msg53937.html p4raw-id: //depot/perl@33370
* Unused var in perlio.c (revised)Jerry D. Hedden2008-02-131-0/+3
| | | | | | From: "Jerry D. Hedden" <jdhedden@cpan.org> Message-ID: <1ff86f510802120700q689fb457ya5939bb440626157@mail.gmail.com> p4raw-id: //depot/perl@33296
* assert() that every NN argument is not NULL. Otherwise we have theNicholas Clark2008-02-121-0/+6
| | | | | | | | | | | | ability to create landmines that will explode under someone in the future when they upgrade their compiler to one with better optimisation. We've already done this at least twice. (Yes, some of the assertions are after code that would already have SEGVd because it already deferences a pointer, but they are put in to make it easier to automate checking that each and every case is covered.) Add a tool, checkARGS_ASSERT.pl, to check that every case is covered. p4raw-id: //depot/perl@33291
* Remove an unneeded if statement.Steve Peters2008-02-081-3/+1
| | | p4raw-id: //depot/perl@33261
* Remove redundant checkRafael Garcia-Suarez2008-02-081-4/+2
| | | p4raw-id: //depot/perl@33248
* In XS_PerlIO_get_layers() take advantage of the implementation ofNicholas Clark2008-02-021-0/+5
| | | | | | PerlIO_get_layers(), by co-opting the new SVs it creates, rather than copying them. p4raw-id: //depot/perl@33182
* Disable debugging output in PerlIO_teardown;Dave Mitchell2007-11-071-0/+7
| | | | | it still relies on an interpreter being present. p4raw-id: //depot/perl@32235
* As reported in bug #46207, change 30633 to PerlIO_exportFILE() andNicholas Clark2007-11-051-1/+14
| | | | | | | | | | | | | PerlIO_releaseFILE() to manage the reference counts of fds correctly has the side effect of making some XS modules "leak" descriptors. This is because the typemap calls PerlIO_findFILE(), which sometimes (but not always) calls PerlIO_exportFILE(). To be consistent, PerlIO_fildFILE() needs to either always give you a reference, or always not give you a reference. It seems better to do the latter as the call to PerlIO_exportFILE() is only an implementation detail, so arrange for it to immediately free up the reference that PerlIO_exportFILE() created. p4raw-id: //depot/perl@32224
* Re: building mod_perl-2.0.3 with Perl 5.10.0 (DEVEL32096)Jarkko Hietaniemi2007-11-031-4/+11
| | | | | | | | Message-Id: <472BD128.9080105@iki.fi> PerlIO_teardown is called when there may no longer be an interpreter available p4raw-id: //depot/perl@32215
* Use vnewSVpvf() rather than sv_vcatpvf() onto a newly created emptyNicholas Clark2007-10-061-3/+3
| | | | | string. p4raw-id: //depot/perl@32044
* Directly create the SV with Perl_newSVpvf() rather than usingNicholas Clark2007-10-061-3/+2
| | | | | Perl_catSVpvf() to extend a zero-length SV. p4raw-id: //depot/perl@32042
* When dup'ing a filehandle, retain the :utf8 layerRafael Garcia-Suarez2007-03-301-0/+2
| | | p4raw-id: //depot/perl@30781
* PerlIO_exportFILE() and PerlIO_releaseFILE() should manage the fdNicholas Clark2007-03-191-0/+4
| | | | | reference counts correctly. p4raw-id: //depot/perl@30633