- provide win33_popenlist() - non-functional as yet.
- avoid need for aTHX in PerlIO_debug calls - even if not
enabled args are still evaluated so Win32 has trouble during fork().
- Add PerlIO/Scalar to list of extensions in win32/makefile.mk
- Fixup makedef.pl for latest set of symbols.
p4raw-id: //depot/perlio@9321
typedef int (*LPProcPauseProc)(struct IPerlProc*);
typedef PerlIO* (*LPProcPopen)(struct IPerlProc*, const char*,
const char*);
+typedef PerlIO* (*LPProcPopenList)(struct IPerlProc*, const char*,
+ IV narg, SV **args);
typedef int (*LPProcPclose)(struct IPerlProc*, PerlIO*);
typedef int (*LPProcPipe)(struct IPerlProc*, int*);
typedef int (*LPProcSetuid)(struct IPerlProc*, uid_t);
LPProcASpawn pASpawn;
#endif
LPProcLastHost pLastHost;
+ LPProcPopenList pPopenList;
};
struct IPerlProcInfo
PerlIOBase_eof
PerlIOBase_error
PerlIOBase_fileno
+ PerlIOBase_setlinebuf
+ PerlIOBase_pushed
+ PerlIOBase_read
PerlIOBuf_bufsiz
- PerlIOBuf_fdopen
PerlIOBuf_fill
PerlIOBuf_flush
PerlIOBuf_get_cnt
PerlIOBuf_open
PerlIOBuf_pushed
PerlIOBuf_read
- PerlIOBuf_reopen
PerlIOBuf_seek
PerlIOBuf_set_ptrcnt
- PerlIOBuf_setlinebuf
PerlIOBuf_tell
PerlIOBuf_unread
PerlIOBuf_write
PerlIO_define_layer
+ PerlIO_arg_fetch
PerlIO_pending
+ PerlIO_allocate
PerlIO_push
PerlIO_unread
);
PerlIOBuf_get_cnt
PerlIOBuf_get_ptr
PerlIOBuf_bufsiz
-PerlIOBuf_setlinebuf
PerlIOBase_clearerr
+PerlIOBase_setlinebuf
+PerlIOBase_pushed
+PerlIOBase_read
PerlIOBase_error
PerlIOBase_eof
PerlIOBuf_tell
PerlIOBuf_write
PerlIOBuf_unread
PerlIOBuf_read
-PerlIOBuf_reopen
PerlIOBuf_open
-PerlIOBuf_fdopen
PerlIOBase_fileno
PerlIOBuf_pushed
PerlIOBuf_fill
PerlIO_pending
PerlIO_unread
PerlIO_push
+PerlIO_allocate
+PerlIO_arg_fetch
PerlIO_apply_layers
perlsio_binmode
PerlIO_binmode
l->next = *f;
l->tab = tab;
*f = l;
- PerlIO_debug("PerlIO_push f=%p %s %s '%s'\n",f,tab->name,
- (mode) ? mode : "(Null)",(arg) ? SvPV_nolen(arg) : "(Null)");
+ PerlIO_debug("PerlIO_push f=%p %s %s %p\n",f,tab->name,
+ (mode) ? mode : "(Null)",arg);
if ((*l->tab->Pushed)(f,mode,arg) != 0)
{
PerlIO_pop(aTHX_ f);
{
if (!PerlIO_push(aTHX_ f,tab,mode,PerlIOArg))
{
- code -1;
+ code = -1;
break;
}
}
PerlIOBuf *b = PerlIOSelf(f,PerlIOBuf);
int fd = PerlIO_fileno(f);
Off_t posn;
+ dTHX;
if (fd >= 0 && PerlLIO_isatty(fd))
{
PerlIOBase(f)->flags |= PERLIO_F_LINEBUF;
DYNAMIC_EXT = Socket IO Fcntl Opcode SDBM_File POSIX attrs Thread B re \
Data/Dumper Devel/Peek ByteLoader Devel/DProf File/Glob \
- Sys/Hostname Storable Filter/Util/Call Encode
+ Sys/Hostname Storable Filter/Util/Call Encode PerlIO/Scalar
STATIC_EXT = DynaLoader
NONXS_EXT = Errno
B = $(EXTDIR)\B\B
RE = $(EXTDIR)\re\re
DUMPER = $(EXTDIR)\Data\Dumper\Dumper
+SCALAR = $(EXTDIR)\PerlIO\Scalar\Scalar
ERRNO = $(EXTDIR)\Errno\Errno
PEEK = $(EXTDIR)\Devel\Peek\Peek
BYTELOADER = $(EXTDIR)\ByteLoader\ByteLoader
THREAD_DLL = $(AUTODIR)\Thread\Thread.dll
B_DLL = $(AUTODIR)\B\B.dll
DUMPER_DLL = $(AUTODIR)\Data\Dumper\Dumper.dll
+SCALAR_DLL = $(AUTODIR)\PerlIO\Scalar\Scalar.dll
PEEK_DLL = $(AUTODIR)\Devel\Peek\Peek.dll
RE_DLL = $(AUTODIR)\re\re.dll
BYTELOADER_DLL = $(AUTODIR)\ByteLoader\ByteLoader.dll
$(THREAD).c \
$(RE).c \
$(DUMPER).c \
+ $(SCALARR).c \
$(PEEK).c \
$(B).c \
$(BYTELOADER).c \
$(POSIX_DLL) \
$(ATTRS_DLL) \
$(DUMPER_DLL) \
+ $(SCALAR_DLL) \
$(PEEK_DLL) \
$(B_DLL) \
$(RE_DLL) \
..\..\..\miniperl -I..\..\..\lib Makefile.PL INSTALLDIRS=perl
cd $(EXTDIR)\Data\$(*B) && $(MAKE)
+$(SCALAR_DLL): $(PERLDEP) $(SCALAR).xs
+ cd $(EXTDIR)\PerlIO\$(*B) && \
+ ..\..\..\miniperl -I..\..\..\lib Makefile.PL INSTALLDIRS=perl
+ cd $(EXTDIR)\PerlIO\$(*B) && $(MAKE)
+
$(DPROF_DLL): $(PERLDEP) $(DPROF).xs
cd $(EXTDIR)\Devel\$(*B) && \
..\..\..\miniperl -I..\..\..\lib Makefile.PL INSTALLDIRS=perl
-del /f $(LIBDIR)\SDBM_File.pm $(LIBDIR)\Socket.pm $(LIBDIR)\POSIX.pm
-del /f $(LIBDIR)\B.pm $(LIBDIR)\O.pm $(LIBDIR)\re.pm
-del /f $(LIBDIR)\Data\Dumper.pm $(LIBDIR)\ByteLoader.pm
+ -del /f $(LIBDIR)\PerlIO\Scalar.pm
-del /f $(LIBDIR)\Devel\Peek.pm $(LIBDIR)\Devel\DProf.pm
-del /f $(LIBDIR)\File\Glob.pm
-del /f $(LIBDIR)\Storable.pm
return win32_popen(command, mode);
}
+PerlIO*
+PerlProcPopenList(struct IPerlProc* piPerl, const char *mode, IV narg, SV **args)
+{
+ dTHXo;
+ PERL_FLUSHALL_FOR_CHILD;
+ return win32_popenlist(mode, narg, args);
+}
+
int
PerlProcPclose(struct IPerlProc* piPerl, PerlIO *stream)
{
PerlProcSpawn,
PerlProcSpawnvp,
PerlProcASpawn,
- PerlProcLastHost
+ PerlProcLastHost,
+ PerlProcPopenList
};
return _pipe(pfd, size, mode);
}
+DllExport PerlIO*
+win32_popenlist(const char *mode, IV narg, SV **args)
+{
+ dTHX;
+ Perl_croak(aTHX_ "List form of pipe open not implemented");
+ return NULL;
+}
+
/*
* a popen() clone that respects PERL5SHELL
*
DllExport int win32_stat(const char *name,struct stat *sbufptr);
DllExport int win32_pipe( int *phandles, unsigned int psize, int textmode );
DllExport PerlIO* win32_popen( const char *command, const char *mode );
+DllExport PerlIO* win32_popenlist(const char *mode, IV narg, SV **args);
DllExport int win32_pclose( PerlIO *pf);
DllExport int win32_rename( const char *oname, const char *newname);
DllExport int win32_setmode( int fd, int mode);