| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
| |
We changed to use symbols not likely to be used by non-Perl code that
could conflict, and which have trailing underbars, so they don't look
like a regular Perl #define.
See https://rt.perl.org/Ticket/Display.html?id=131110
There are many more header files which are not guarded.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
These 2 macros were created for the Symbian port in commit
"Symbian port of Perl" to replace a direct "extern" token. I guess the
author was unaware of PERL_CALLCONV.
PERL_CALLCONV is the official macro to use. PERL_XS_EXPORT_C and
PERL_EXPORT_C have no usage on cpan grep except for modules with direct
copies of core headers. A defect of using PERL_EXPORT_C and
PERL_XS_EXPORT_C instead of PERL_CALLCONV is that win32/win32.h has no
knowledge of the 2 macros and doesn't set them, and os/os2ish.h doesn't
either. On Win32, since the unix defaults are used instead of Win32
specific "__declspec(dllimport)" token, XS modules use indirect function
stubs in each XS module placed by the CC to call into perl5**.dll instead
of directly calls the core C functions. I observed this in in XS-Typemap's
DLL. To simplify the API, and to decrease the amount of macros needing to
implemented to support each platform, just remove the 2 macros.
Since perl.h's fallback defaults for PERL_CALLCONV are very late in perl.h,
they need to be moved up before function declarations start in perlio.h
(perlio.h is included from iperlsys.h).
win32iop.h contains the "PerlIO" and SV" tokens, so perlio.h must be
included before win32iop.h is. Including perlio.h so early in win32.h,
causes PERL_CALLCONV not be defined since Win32 platform uses the
fallback in perl.h, since win32.h doesn't always define PERL_CALLCONV and
sometimes relies on the fallback. Since win32iop.h contains alot of
declarations, it belongs with other declarations such as those in proto.h
so move it from win32.h to perl.h.
the "free" token in struct regexp_engine conflicts with win32iop's
"#define free win32_free" so rename that member.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
An empty cpan/.dir-locals.el stops Emacs using the core defaults for
code imported from CPAN.
Committer's work:
To keep t/porting/cmp_version.t and t/porting/utils.t happy, $VERSION needed
to be incremented in many files, including throughout dist/PathTools.
perldelta entry for module updates.
Add two Emacs control files to MANIFEST; re-sort MANIFEST.
For: RT #124119.
|
|
|
|
|
|
| |
This reverts commit 0c2c3d000e799a35bdc2bdd24feaf77cf854a2dd.
It's not needed after 400638aa931c47.
|
|
|
|
|
|
|
|
|
|
|
| |
f0e5c859d36afe5 broke the build because it caused the PerlIO_funcs
declarations to be const in perlio.h and EXTPERLIO in perliol.h
and on VMS, EXTPERLIO was EXTCONST which is globalref. The compiler
considers globalref and const to be incompatible.
As a workaround, make EXTPERLIO "extern const" on VMS only. The
whole custom global data model on VMS probably needs a rethink,
but this gets the build working again.
|
| |
|
|
|
|
|
| |
This was mostly for XS functions defined in the core, but also
for a handful of functions in the :stdio layer.
|
| |
|
|
|
|
|
|
| |
Eliminate their function prototypes. Eliminate references in perlio.sym and
makedef.pl which caused them to still be added to the Win32 linker
definitions.
|
|
|
|
|
| |
This updates the editor hints in our files for Emacs and vim to request
that tabs be inserted as spaces.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
or on close() in either thread.
close() in one thread blocks until close() is called in the other
thread, because both closes are waiting for the child process to end.
Since we have a reference-counting mechanism for the underlying
fileno, we can use that to determine whether close() should wait.
This does not solve the problem of close $OUT block when it has been
duplicated via open $OUT2, ">&" and $OUT2 is still in scope.
|
|
|
|
| |
Follow-up to ecfd064986aef03b9b7d8b56da83ae37ff435721.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Currently if an operation on a file handle is interrupted, and if
the signal handler accesses that same file handle (e.g. closes it),
then perl will crash. See [perl #75556].
This commit provides some basic infrastructure to avoid segfaults.
Basically it adds a lock count field to each handle (by re-purposing the
unused flags field in the PL_perlio array), then each time a signal
handler is called, the count is incremented. Then various parts of PerlIO
use a positive count to change behaviour. Most importantly, when layers
are popped, the PerlIOl structure is cleared, but not freed, and is left
in the chain of layers. This means that callers still holding pointers to
the various layers won't access freed structures. It does however mean
that PerlIOl structs may be leaked, and possibly slots in PL_perlio. But
this is better than crashing.
Not much has been done to give sensible behaviour on re-entrancy; for
example, a buffer that has already been written once might get written
again. Fixing this sort of thing would require a large-scale audit of
perlio.c.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This allows any layer to find the top of the layer stack,
or more specifically, the entry in PL_perlio that points to
the top.
Needed for the next commit, which will implement a reference counting
scheme.
There's currently a bug in MakeMaker which causes several extensions to
miss the dependency on perliol.h having changed, so this commit includes
a gratuitous whitespace change to perl.h to hopefully force recompilation.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Layers in PerlIO are implemented as a linked list of PerlIOl structs;
eaxch one has a 'next' field pointing to the next layer. Now here's the
clever bit: When PerlIO* pointers are passed around to refer to a
particular handle, these are actually pointers to the 'next' field of the
*parent* layer (so to access the flags field say of a PerlIOl, you have to
double-defref it, e.g. (*f)->flags). The big advantage of this is that
it's easy for a layer to pop itself; when you call PerlIO_pop(f), f is a
pointer to the parent's 'next' field, so pop(f) can just do
*f = (*f)->next.
This means that there has to be a fake 'next' field above the topmost
layer. This is where PL_perlio comes in: it's a pointer to an arena of
arrays of pointers, each one capable of pointing to a PerlIOl structure.
When a new handle is created, a spare arena slot is grabbed, and the
address of that slot is returned. This also allows for a handle with no
layers.
What this commit does is change PL_perlio from being an array of
PerlIO* into an array of PerlIOl structures - i.e. each element in the
array goes from being a single pointer, to having several fields. These
will be made used of in follow-up commits.
|
|
|
|
|
| |
http://www.nntp.perl.org/group/perl.daily-build.reports/2008/02/msg53937.html
p4raw-id: //depot/perl@33370
|
|
|
| |
p4raw-id: //depot/perl@32793
|
|
|
|
|
|
|
|
| |
Message-Id: <472BD128.9080105@iki.fi>
PerlIO_teardown is called when there may no longer be an
interpreter available
p4raw-id: //depot/perl@32215
|
|
|
|
|
| |
Message-Id: <20070130022021.6051443A67@anubis.hut.fi>
p4raw-id: //depot/perl@30079
|
|
|
| |
p4raw-id: //depot/perl@29060
|
|
|
|
|
| |
Message-ID: <20050501200755.GA30259@petdance.com>
p4raw-id: //depot/perl@24365
|
|
|
|
|
| |
Message-ID: <20050427150243.GA21883@petdance.com>
p4raw-id: //depot/perl@24338
|
|
|
|
|
| |
Message-ID: <B356D8F434D20B40A8CEDAEC305A1F2453D653@esebe105.NOE.Nokia.com>
p4raw-id: //depot/perl@24271
|
|
|
|
|
| |
Message-Id: <2f14220e7101a03f7659dbe79a03b115@petdance.com>
p4raw-id: //depot/perl@24074
|
|
|
| |
p4raw-id: //depot/perl@20267
|
|
|
| |
p4raw-id: //depot/perl@20260
|
|
|
|
|
|
|
|
| |
Win32's lseek claims to have succeeded in pipes etc. Which confuses :perlio
and derived layers. So have :unix's "pushed" method stat() the fd and
cache non S_ISREG nature. Have Unix_seek fail if fd is NOT S_ISREG to match
UNIX behaviour.
p4raw-id: //depot/perlio@19475
|
|
|
|
|
|
|
|
|
| |
- Inspired by Nick C's suggestion add size of function table to the table
as a validation check.
- also optimize pseudo-layer code to avoid malloc/link of something
destined to be immediately popped & freed.
- Minor addition to pod/perliol.pod
p4raw-id: //depot/perlio@17330
|
|
|
|
|
|
|
| |
New function table entry so all layer definitions need tweaking.
Extra function table entry allows a layer to remain on a binmode stack
New PerlIOBase_binmode allows easy implementation of default policy.
p4raw-id: //depot/perlio@17309
|
|
|
|
|
|
|
|
| |
- PerlIO_importFILE and PerlIO_exportFILE now documented as taking
const char *mode.
- Other 'flags' field changed to U32
- Discouraging words written about ":raw".
p4raw-id: //depot/perlio@17258
|
|
|
|
|
|
|
| |
Message-Id: <200206131403.g5DE3Sk21964@crypt.compulink.co.uk>
(go U32 based on NI-S since it's a flags field)
p4raw-id: //depot/perl@17222
|
|
|
|
|
|
|
|
| |
- actually a generic PerlIOBuf_xxx derived leak-on-pop, but :crlf
flagged it because it is more often popped without stream
being closed.
- Define non-noop PerlIOBuf_popped(), use it and export it.
p4raw-id: //depot/perlio@16657
|
|
|
|
|
|
|
| |
Finish implementing PerlIOVia_open().
Export more guts of PerlIO_* so Via_open() can work.
Fix various PerlIO_allocate() features exposed by above.
p4raw-id: //depot/perlio@16207
|
|
|
|
|
| |
if PerlIONext is NULL.
p4raw-id: //depot/perlio@13975
|
|
|
|
|
| |
consistency of PerlIO layers.
p4raw-id: //depot/perlio@13808
|
|
|
| |
p4raw-id: //depot/perl@13637
|
|
|
|
|
|
|
| |
which are not DOSish, BeOS being one of such platforms.
Ideally this should be a Configure test, not a hardwired
cpp symbol test...
p4raw-id: //depot/perl@13621
|
|
|
| |
p4raw-id: //depot/perlio@13530
|
|
|
| |
p4raw-id: //depot/perlio@13072
|
|
|
|
|
|
|
| |
Message-ID: <20011029215235.K41204@plum.flirble.org>
Add prototype.
p4raw-id: //depot/perl@12779
|
|
|
|
|
|
|
|
| |
for them. Call explicit cleanup during destruct process.
- one binmode test is failing
- also ext/threads/t/basic.t fails under make test, and is noisy under
harness. (Threads results are intermingled and don't match order expected.)
p4raw-id: //depot/perlio@12547
|
|
|
|
|
| |
Still-passes all tests non-threaded (well it would wouldn't it!)
p4raw-id: //depot/perlio@12451
|
|
|
| |
p4raw-id: //depot/perlio@12447
|
|
|
|
|
|
|
|
|
| |
indent -kr -nce -psl -sc -TSV -TAV -THV -TGV -TIV -TUV -TNV -TMAGIC -TFILE -TPerlIO -TPerlIO_list_t -TPerlIO_funcs -TPerlIO_pair_t
(GNU indent). Note that wholesale re-indenting might
be nice, but that would break nice formatting/alignment
of assignments, equality testing, and complex boolean
expressions with lots of &s and |s.
p4raw-id: //depot/perl@12052
|
|
|
|
|
| |
for UNIX breakage.
p4raw-id: //depot/perlio@10632
|
|
|
|
|
| |
and using that instead (name lookups are sequential search for now).
p4raw-id: //depot/perlio@10564
|
|
|
|
|
| |
Message-Id: <a05100e0ab734816701a5@[172.16.52.1]>
p4raw-id: //depot/perl@10218
|
|
|
| |
p4raw-id: //depot/perlio@9361
|