develooper Front page | perl.perl5.porters | Postings from August 2008

[perl #57688] PerlIO::via suggest pre-CLOSE method

Kevin Ryde
August 7, 2008 02:30
[perl #57688] PerlIO::via suggest pre-CLOSE method
Message ID:
# New Ticket Created by  Kevin Ryde 
# Please include the string:  [perl #57688]
# in the subject line of all future correspondence about this issue. 
# <URL: >

I'm making a layer using PerlIO::via where I'd like to print an "erase"
down through the sub-layer(s) when my layer is either removed by
binmode() or the stream is closed.  The POPPED method covers binmode,
but via calls the CLOSE method after it has closed the sublayers (with
the usual PerlIOBase_close()), so it's too late to say goodbye.

It'd be great if there was some sort of PRECLOSE method, or maybe a way
to say that your CLOSE method will take care of closing the sublayers
itself when it's good and ready (as opposed to PerlIOVia_close() doing
that as its first thing).

(I know FLUSH is called before close, but there doesn't seem any way to
know that a particular FLUSH is the last-ever, as opposed to a mere
force-output with the stream staying open.)

[Please do not change anything below this line]
Site configuration information for perl 5.10.0:

Configured by Debian Project at Wed Jul 16 16:15:58 UTC 2008.

Summary of my perl5 (revision 5 version 10 subversion 0) configuration:
    osname=linux, osvers=, archname=i486-linux-gnu-thread-multi
    uname='linux ninsei #1 smp preempt tue jul 8 15:47:50 pdt 2008 i686 gnulinux '
    config_args='-Dusethreads -Duselargefiles -Dccflags=-DDEBIAN -Dcccdlflags=-fPIC -Darchname=i486-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.10 -Darchlib=/usr/lib/perl/5.10 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/perl5 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.10.0 -Dsitearch=/usr/local/lib/perl/5.10.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -DDEBUGGING=-g -Doptimize=-O2 -Duseshrplib -Dd_dosuid -des'
    hint=recommended, useposix=true, d_sigaction=define
    useithreads=define, usemultiplicity=define
    useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
    use64bitint=undef, use64bitall=undef, uselongdouble=undef
    usemymalloc=n, bincompat5005=undef
    cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
    optimize='-O2 -g',
    cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fno-strict-aliasing -pipe -I/usr/local/include'
    ccversion='', gccversion='4.3.1', gccosandvers=''
    intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
    d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12
    ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
    alignbytes=4, prototype=define
  Linker and Libraries:
    ld='cc', ldflags =' -L/usr/local/lib'
    libpth=/usr/local/lib /lib /usr/lib /usr/lib64
    libs=-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt
    perllibs=-ldl -lm -lpthread -lc -lcrypt
    libc=/lib/, so=so, useshrplib=true,
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E'
    cccdlflags='-fPIC', lddlflags='-shared -O2 -g -L/usr/local/lib'

Locally applied patches: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at | Group listing | About