| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
It only does anything under PERL_GLOBAL_STRUCT, which is gone.
Keep the dNOOP defintion for CPAN back-compat
|
|
|
|
|
|
|
| |
This replaces strchr("list", c) calls throughout the core. They don't
work properly when 'c' is a NUL, returning the position of the
terminating NUL in "list" instead of failure. This could lead to
segfaults or even security issues.
|
|
|
|
|
|
|
|
|
|
| |
Bits of exec code were putting the constructed commands into globals
PL_Argv and PL_Cmd, which could then be clobbered by reentrancy.
These are only global in order to manage their freeing, but that's
better managed by using the scope stack. So replace them with automatic
variables, with ENTER/SAVEFREEPV/LEAVE to free the memory. Also copy
the strings acquired from SVs, to avoid magic clobbering the buffers of
SVs already read. Fixes [perl #129888].
|
|
|
|
|
|
|
|
|
|
| |
The original names are confusing.
See thread beginning with
http://nntp.perl.org/group/perl.perl5.porters/244335
The two macros are mapped into just that one, complementing the result
for the few cases where strNEs was used.
|
| |
|
|
|
|
|
|
|
|
|
| |
Merges amigaos_popen / amigaos_pclose with the amigaos specific
version of the Perl_my_popen / Perl_my_pclose functions and uses PerlIO
directly for the perl facing end of the PIPE:s thus avoid the issues
of PerlIO_findFILE() completely.
Also fixes a couple of warnings.
|
|
|
|
|
|
|
| |
popen(): handle better the case where the popened external
might exit before the child process manages to start.
pclose(): protect with a semaphore.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
myexecvp()
Replaces alloca() in execvp() with IExec->AllocVecTags() with the memory
type explicitly set to MEMF_SHARED (alloca allocating on the stack which is
MEMF_PRIVATE and in theory at least you can't share that with the sub
process (in practice this isn't enforced yet, too much old software would
break, but one of these days)).
amigaos_popen()
Alters file opening order to ensure that the write end of the pipe is always
opened first.
Now attempts to pass Input() out Output() (stdin or stout) to the non-pipe
file handles rather than NIL: reverting to NIL: if the above can't be
DupFileHandled() (say if they were redirected to a file opened with an
exclusive lock).
|
| |
|
| |
|
|
|
|
|
| |
Using kill() on the same task that called kill() circumvents
Perl's signal handlers, but raise() doesn't, so use that instead.
|
|
|
|
|
|
|
|
| |
Consistent formatting (and using "Andy Broad" style) for the amigaos4 code:
astyle --style=bsd --indent=tab=4 amigaos4/*.[hc]
(amigaos patch preparation script automates this)
|
| |
|
|
|
|
| |
(the underlying UNIX emulation has changed)
|
|
|
|
|
| |
Beware: not an exact implementation, the locks follow the OS level
filehandle not the process.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Largely reimplements 839a9f02, 54fa14d7, e8432c63, 40262ff4.
The upside is that now doio.c and pp_sys.c have much less AmigaOS
specific ifdefs. As a downside, the exec code is now forked (pun
only partially accidental.)
The earlier story regarding fork+exec, that the AmigaOS creating
thread doesn't terminate but instead continues running is both true
and false. The more detailed story is that the user-observable
behaviour is as with POSIX/UNIX. The thread that created the new
"task" (to use the AmigaOS terms) does hang around -- but all it
does is to wait for the new task to terminate, and more importantly,
it holds on to the resources like filehandles. If the task were to
immediately terminate, the resources would be reclaimed by the kernel.
|
| |
|
|
|
|
|
| |
amigaos.c: pure amigaos code
amigaio.c: bridge code between perl and amigaos
|
|
|