diff options
author | Nick Ing-Simmons <nik@tiuk.ti.com> | 2000-10-29 21:05:04 +0000 |
---|---|---|
committer | Nick Ing-Simmons <nik@tiuk.ti.com> | 2000-10-29 21:05:04 +0000 |
commit | 4c26942a369632c790d266d8d26f6495e6383c3e (patch) | |
tree | baee4425f5ac95ec510e9d8846ed17d6aee674e3 | |
parent | b1ef6e3bd726972447a8b536231f096656903bb3 (diff) | |
parent | 39ca283eb96f3f63e2aa42b33b559e2ab96b0231 (diff) | |
download | perl-4c26942a369632c790d266d8d26f6495e6383c3e.tar.gz |
Integrate mainline to perlio branch
p4raw-id: //depot/perlio@7486
143 files changed, 5855 insertions, 2960 deletions
@@ -1,138 +1,513 @@ -# Two sections: the real one and the virtual one. -# The real section has three \t+ fields: alias, name, email. -# The sections are separated by one or more empty lines. -# The virtual section (each record two \t+ separated fields) builds -# meta-aliases based on the real section. +# To give due honor to those who have made Perl 5 what is is today, +# here the easily-extractable people and their (hopefully) current +# and preferred email addresses (as of October 2000, if known) from +# the Changes files. These people have either submitted patches +# or suggestions, or their bug reports or comments have inspired +# the appropriate patches. Corrections and additions welcome. -alan.burlison Alan Burlison Alan.Burlison@UK.Sun.com -allen Norton T. Allen allen@huarp.harvard.edu -bradapp Brad Appleton bradapp@enteract.com -cbail Charles Bailey bailey@newman.upenn.edu -dgris Daniel Grisinger dgris@dimensional.com -dmulholl Daniel Yacob dmulholl@cs.indiana.edu -dogcow Tom Spindler dogcow@merit.edu -domo Dominic Dunlop domo@computer.org -doug Doug MacEachern dougm@covalent.net -doughera Andy Dougherty doughera@lafcol.lafayette.edu -efifer Eric Fifer EFifer@sanwaint.com -francois Francois Desarmenien desar@club-internet.fr -gbarr Graham Barr gbarr@ti.com -gerben Gerben Wierda Gerben_Wierda@RnA.nl -gerti Gerd Knops gerti@BITart.com -gibreel Stephen Zander gibreel@pobox.com -gnat Nathan Torkington gnat@frii.com -gsar Gurusamy Sarathy gsar@activestate.com -hansmu Hans Mulder hansmu@xs4all.nl -hops Mike Hopkirk hops@sco.com -hugo Hugo van der Sanden hv@crypt.demon.co.uk -ilya Ilya Zakharevich ilya@math.ohio-state.edu -jbuehler Joe Buehler jbuehler@hekimian.com -jfs John Stoffel jfs@fluent.com -jhi Jarkko Hietaniemi jhi@iki.fi -jon Jon Orwant orwant@oreilly.com -jvromans Johan Vromans jvromans@squirrel.nl -k Andreas König a.koenig@mind.de -kjahds Kenneth Albanowski kjahds@kjahds.com -krishna Krishna Sethuraman krishna@sgi.com -kstar Kurt D. Starsinic kstar@chapin.edu -lane Charles Lane lane@DUPHY4.Physics.Drexel.Edu -lstein Lincoln D. Stein lstein@genome.wi.mit.edu -lutherh Luther Huffman lutherh@stratcom.com -lutz Mark P. Lutz mark.p.lutz@boeing.com -lwall Larry Wall larry@wall.org -makemaker MakeMaker list makemaker@franz.ww.tu-berlin.de -mbiggar Mark A Biggar mab@wdl.loral.com -mbligh Martin J. Bligh mbligh@sequent.com -mikestok Mike Stok mike@stok.co.uk -millert Todd Miller millert@openbsd.org -mkvale Mark Kvale kvale@phy.ucsf.edu -mjd Mark-Jason Dominus mjd@plover.com -mjtg Mike Guy mjtg@cam.ac.uk -laszlo.molnar Laszlo Molnar Laszlo.Molnar@eth.ericsson.se -mpeix Mark Bixby markb@cccd.edu -muir David Muir Sharnoff muir@idiom.com -neale Neale Ferguson neale@VMA.TABNSW.COM.AU -nik Nick Ing-Simmons nik@tiuk.ti.com -okamoto Jeff Okamoto okamoto@corp.hp.com -paul_green Paul Green Paul_Green@stratus.com -pmarquess Paul Marquess Paul.Marquess@btinternet.com -pomeranz Hal Pomeranz pomeranz@netcom.com -pudge Chris Nandor pudge@pobox.com -pueschel Norbert Pueschel pueschel@imsdd.meb.uni-bonn.de -pvhp Peter Prymmer pvhp@forte.com -raphael Raphael Manfredi Raphael.Manfredi@pobox.com -rdieter Rex Dieter rdieter@math.unl.edu -richard Richard Foley Richard.Foley@m.dasa.de -rra Russ Allbery rra@stanford.edu -rsanders Robert Sanders Robert.Sanders@linux.org -roberto Ollivier Robert roberto@keltia.freenix.fr -roderick Roderick Schertler roderick@argon.org -roehrich Dean Roehrich roehrich@cray.com -tsanders Tony Sanders sanders@bsdi.com -schinder Paul Schinder schinder@pobox.com -scotth Scott Henry scotth@sgi.com -seibert Greg Seibert seibert@Lynx.COM -simon Simon Cozens simon@brecon.co.uk -spider Spider Boardman spider@Orb.Nashua.NH.US -smccam Stephen McCamant smccam@uclink4.berkeley.edu -sthoenna Yitzchak Scott-Thoennes sthoenna@efn.org -sugalskd Dan Sugalski dan@sidhe.org -sundstrom David Sundstrom sunds@asictest.sc.ti.com -tchrist Tom Christiansen tchrist@perl.com -thomas.dorner Dorner Thomas Thomas.Dorner@start.de -tjenness Tim Jenness t.jenness@jach.hawaii.edu -timb Tim Bunce Tim.Bunce@ig.co.uk -tom.horsley Tom Horsley Tom.Horsley@mail.ccur.com -tye Tye McQueen tye@metronet.com -wayne.thompson Wayne Thompson Wayne.Thompson@Ebay.sun.com -wilfredo Wilfredo Sánchez wsanchez@apple.com - -PUMPKING jhi -aix jhi -amiga pueschel -beos dogcow -bsdos tsanders -cfg jhi -cgi lstein -complex jhi,raphael -cpan k -cxux tom.horsley -cygwin win32 -dec_osf jhi,spider -dgux roderick -doc tchrist -dos laszlo.molnar -dynix/ptx mbligh -ebcdic os390,vmesa,posix-bc -filespec kjahds -freebsd roberto -hpux okamoto,jhi -irix scotth,krishna,jfs,kstar -jpl gibreel -lexwarn pmarquess -linux kjahds,kstar -locale jhi,domo -machten domo -mm makemaker -netbsd jhi -next gerben,hansmu -openbsd millert -os2 ilya -os390 pvhp -plan9 lutherl -posix-bc thomas.dorner -powerux tom.horsley -qnx allen -regex ilya,jfriedl,hugo,mjd -sco francois,hops -solaris doughera,alan.burlison -step gerti,hansmu,rdieter -sunos4 doughera -svr4 tye -unicos jhi,lutz -uwin jbuehler -vmesa neale -vms sugalskd,cbail -vos paul_green -warn pmarquess -win32 gsar +Aaron B. Dossett <aaron@iglou.com> +Abigail <abigail@foad.org> +Achim Bohnet <ach@mpe.mpg.de> +Adam Krolnik <adamk@gypsy.cyrix.com> +Akim Demaille <akim@epita.fr> +Alan Burlison <Alan.Burlison@uk.sun.com> +Alan Champion <achampio@lehman.com> +Alan Harder <Alan.Harder@Ebay.Sun.COM> +Alan Modra +Albert Dvornik <bert@genscan.com> +Alexander Smishlajev <als@turnhere.com> +Ambrose Kofi Laing +Andreas Klussmann <andreas@infosys.heitec.de> +Andreas König <a.koenig@mind.de> +Andreas Schwab +Andrew Bettison <andrewb@zip.com.au> +Andrew Cohen <cohen@andy.bu.edu> +Andrew M. Langmead <aml@world.std.com> +Andrew Pimlott <pimlott@abel.math.harvard.edu> +Andrew Vignaux +Andrew Wilcox +Andy Dougherty <doughera@lafcol.lafayette.edu> +Anno Siegel <<anno4000@lublin.zrz.tu-berlin.de> +Anthony David <adavid@netinfo.com.au> +Anton Berezin <tobez@plab.ku.dk> +Art Green <Art_Green@mercmarine.com> +Artur <artur@vogon-solutions.com> +Barrie Slaymaker <barries@slaysys.com> +Barry Friedman +Ben Tilly <ben_tilly@hotmail.com> +Benjamin Low <b.d.low@unsw.edu.au> +Benjamin Stuhl <sho_pi@hotmail.com> +Benjamin Sugars <bsugars@canoe.ca> +Bernard Quatermass <bernard@quatermass.co.uk> +Bill Campbell <bill@celestial.com> +Bill Glicker <billg@burrelles.com> +Billy Constantine <wdconsta@cs.adelaide.edu.au> +Blair Zajac <bzajac@geostaff.com> +Boyd Gerber <gerberb@zenez.com> +Brad Appleton <bradapp@enteract.com> +Brad Hughes <brad@tgsmc.com> +Brad Lanam <bll@gentoo.com> +Brent B. Powers <powers@ml.com> +Brian Callaghan <callagh@itginc.com> +Brian Clarke <clarke@appliedmeta.com> +Brian Grossman +Brian Harrison <brie@corp.home.net> +Brian Jepson <bjepson@home.com> +Brian Katzung +Brian Reichert +Brian S. Cashman <bsc@umich.edu> +Bruce Barnett <barnett@grymoire.crd.ge.com> +Bruce J. Keeler <bkeelerx@iwa.dp.intel.com> +Bruce P. Schuck <bruce@aps.org> +Byron Brummer <byron@omix.com> +Calle Dybedahl <calle@lysator.liu.se> +Carl Witty +Cary D. Renzema <caryr@mxim.com> +Casey R. Tweten <crt@kiski.net> +Castor Fu +Chaim Frenkel +Charles Bailey <bailey@newman.upenn.edu> +Charles F. Randall <crandall@free.click-n-call.com> +Charles Lane <lane@DUPHY4.Physics.Drexel.Edu> +Chip Salzenberg <chip@pobox.com> +Chris Faylor <cgf@bbc.com> +Chris Nandor <pudge@pobox.com> +Chris Wick <cwick@lmc.com> +Christian Kirsch <ck@held.mind.de> +Christopher Davis <ckd@loiosh.kei.com> +Chuck D. Phillips <cdp@hpescdp.fc.hp.com> +Chunhui Teng <cteng@nortel.ca> +Clark Cooper +Clinton Pierce <cpierce1@ford.com> +Colin Kuskie <ckuskie@cadence.com> +Conrad Augustin +Conrad E. Kimball <cek@tblv021.ca.boeing.com> +Craig A. Berry <craig.berry@psinetcs.com> +Dale Amon +Damian Conway <damian@cs.monash.edu.au> +Damon Atkins <Damon.Atkins@nabaus.com.au> +Dan Boorstein <dan_boo@bellsouth.net> +Dan Carson +Dan Schmidt <dfan@harmonixmusic.com> +Dan Sugalski <dan@sidhe.org> +Daniel Chetlin <daniel@chetlin.com> +Daniel Grisinger <dgris@dimensional.com> +Daniel Muiño <dmuino@afip.gov.ar> +Daniel S. Lewart <lewart@vadds.cvm.uiuc.edu> +Daniel Yacob <dmulholl@cs.indiana.edu> +Danny R. Faught <faught@mailhost.rsn.hp.com> +Danny Sadinoff <sadinoff@olf.com> +Darrell Kindred <dkindred+@cmu.edu> +Darrell Schiebel +Darren/Torin/Who Ever... <torin@daft.com> +Dave Bianchi +Dave Hartnoll <Dave_Hartnoll@3b2.com> +Dave Nelson <David.Nelson@bellcow.com> +Dave Schweisguth +David Billinghurst <David.Billinghurst@riotinto.com.au> +David Campbell +David Couture +David Dyck <dcd@tc.fluke.com> +David F. Haertig <dfh@dwroll.lucent.com> +David Filo +David Glasser <me@davidglasser.net> +David Hammen <hammen@gothamcity.jsc.nasa.gov> +David J. Fiander <davidf@mks.com> +David Kerry <davidk@tor.securecomputing.com> +David Muir Sharnoff <muir@idiom.com> +David R. Favor <dfavor@austin.ibm.com> +David Sparks <daves@ActiveState.com> +David Sundstrom <sunds@asictest.sc.ti.com> +Davin Milun <milun@cs.Buffalo.EDU> +Dean Roehrich <roehrich@cray.com> +Dennis Marsa <dennism@cyrix.com> +dive <dive@ender.com> +Dominic Dunlop <domo@computer.org> +Dominique Dumont <Dominique_Dumont@grenoble.hp.com> +Doug Campbell +Doug MacEachern <dougm@covalent.net> +Douglas E. Wegscheid <wegscd@whirlpool.com> +Douglas Lankshear <dougl@activestate.com> +Dov Grobgeld +Drago Goricanec <drago@raptor.otsd.ts.fujitsu.co.jp> +Ed Peschko <epeschko@den-mdev1> +Elaine -HFB- Ashton <elaine@chaos.wustl.edu> +Eric Arnold +Eric Bartley <bartley@icd.cc.purdue.edu> +Eric E. Coe <Eric.Coe@oracle.com> +Eric Fifer <EFifer@sanwaint.com> +Erich Rickheit +Eryq <eryq@zeegee.com> +Eugene Alterman <Eugene.Alterman@bremer-inc.com> +Fabien Tassin +Fabien Tassin <tassin@eerie.fr> +Fisher Mark <fisherm@tce.com> +Florent Guillaume +Frank Crawford +Frank Ridderbusch <Frank.Ridderbusch@pdb.siemens.de> +Frank Tobin <ftobin@uiuc.edu> +François Désarménien <desar@club-internet.fr> +Frederic Chauveau +G. Del Merritt <del@intranetics.com> +Gabe Schaffer +Gary Clark <GaryC@mail.jeld-wen.com> +Gary Ng <71564.1743@compuserve.com> +Gerben Wierda <G.C.Th.Wierda@AWT.nl> +Gerd Knops <gerti@BITart.com> +Giles Lean <giles@nemeton.com.au> +Gisle Aas <gisle@aas.no> +Grace Lee +Graham Barr <gbarr@pobox.com> +Graham TerMarsch <grahamt@ActiveState.com> +Greg Bacon <gbacon@itsc.uah.edu> +Greg Chapman <glc@well.com> +Greg Earle +Greg Kuperberg +Greg Seibert <seibert@Lynx.COM> +Greg Ward +Gregory Martin Pfeil <pfeilgm@technomadic.org> +Gurusamy Sarathy <gsar@activestate.com> +Gustaf Neumann +Guy Decoux <decoux@moulon.inra.fr> +H.Merijn Brand <h.m.brand@hccnet.nl> +Hal Pomeranz <pomeranz@netcom.com> +Hallvard B Furuseth <h.b.furuseth@usit.uio.no> +Hans Mulder <hansmu@xs4all.nl> +Hans de Graaff +Harold O Morris +Harry Edmon +Helmut Jarausch <jarausch@numa1.igpm.rwth-aachen.de> +Henrik Tougaard <ht.000@foa.dk> +Holger Bechtold +Horst von Brand <vonbrand@sleipnir.valparaiso.cl> +Hubert Feyrer <hubert.feyrer@informatik.fh-regensburg.de> +Hugo van der Sanden <hv@crypt.demon.co.uk> +Hunter Kelly <retnuh@zule.pixar.com> +Huw Rogers +Ian Maloney <ian.malonet@ubs.com> +Ian Phillipps <ian@dial.pipex.com> +Ignasi Roca <ignasi.roca@fujitsu.siemens.es> +Ilya Sandler <Ilya.Sandler@etak.com> +Ilya Zakharevich <ilya@math.ohio-state.edu> +Inaba Hiroto <inaba@st.rim.or.jp> +Irving Reid <irving@tor.securecomputing.com> +J. David Blackstone <jdb@dfwnet.sbms.sbc.com> +J. van Krieken <John.van.Krieken@ATComputing.nl> +JD Laub <jdl@access-health.com> +Jack Shirazi +Jacqui Caren <Jacqui.Caren@ig.co.uk> +James FitzGibbon <james@ican.net> +Jamshid Afshar +Jan D. <jan.djarv@mbox200.swipnet.se> +Jan Dubois <jand@activestate.com> +Jan Pazdziora <adelton@fi.muni.cz> +Jan-Pieter Cornet <johnpc@xs4all.nl> +Jared Rhine +Jarkko Hietaniemi <jhi@iki.fi> +Jason A. Smith <smithj4@rpi.edu> +Jason Shirk +Jason Stewart <jasons@cs.unm.edu> +Jason Varsoke <jjv@caesun10.msd.ray.com> +Jay Rogers +Jeff Bouis +Jeff McDougal <jmcdo@cris.com> +Jeff Okamoto <okamoto@corp.hp.com> +Jeff Pinyan <jeffp@crusoe.net> +Jeff Urlwin <jurlwin@access.digex.net> +Jeffrey Friedl <jfriedl@yahoo-inc.com> +Jeffrey S. Haemer <jsh@woodcock.boulder.qms.com> +Jens Hamisch <jens@Strawberry.COM> +Jens T. Berger Thielemann <jensthi@ifi.uio.no> +Jens Thomsen <jens@fiend.cis.com> +Jens-Uwe Mager <jum@helios.de> +Jeremy D. Zawodny <jzawodn@wcnet.org> +Jerome Abela <abela@hsc.fr> +Jim Anderson <jander@ml.com> +Jim Avera +Jim Balter +Jim Meyering <meyering@asic.sc.ti.com> +Jim Miner <jfm@winternet.com> +Jim Richardson +Joachim Huober +Jochen Wiedmann <joe@ispsoft.de> +Joe Buehler <jhpb@hekimian.com> +Joe Smith <jsmith@inwap.com> +Joerg Porath <Joerg.Porath@informatik.tu-chemnitz.de> +Joergen Haegg +Johan Holtman +Johan Vromans <jvromans@squirrel.nl> +Johann Klasek <jk@auto.tuwien.ac.at> +John Bley <jbb6@acpub.duke.edu> +John Borwick <jhborwic@unity.ncsu.edu> +John Cerney <j-cerney1@ti.com> +John D Groenveld <groenvel@cse.psu.edu> +John Hughes <john@AtlanTech.COM> +John L. Allen <allen@grumman.com> +John Macdonald <jmm@revenge.elegant.com> +John Nolan <jpnolan@Op.Net> +John Peacock <JPeacock@UnivPress.com> +John Q. Linux <jql@accessone.com> +John Rowe +John Stoffel <jfs@fluent.com> +John Tobey <jtobey@john-edwin-tobey.org> +Jon Orwant <orwant@oreilly.com> +Jonathan Biggar <jon@sems.com> +Jonathan D Johnston <jdjohnston2@juno.com> +Jonathan Fine <jfine@borders.com> +Jonathan I. Kamens <jik@kamens.brookline.ma.us> +Jonathan Roy <roy@idle.com> +Joseph N. Hall <joseph@cscaper.com> +Joseph S. Myers <jsm28@hermes.cam.ac.uk> +Joshua Pritikin <joshua.pritikin@db.com> +Juan Gallego <Little.Boss@physics.mcgill.ca> +Julian Yip <julian@imoney.com> +Ka-Ping Yee +Karl Glazebrook +Karl Heuer <kwzh@gnu.org> +Karl Simon Berg +Karsten Sperling <spiff@phreax.net> +Keith Neufeld <neufeld@fast.pvi.org> +Keith Thompson +Ken Estes <estes@ms.com> +Ken Fox <kfox@ford.com> +Ken MacLeod +Ken Shan <ken@digitas.harvard.edu> +Kenneth Albanowski <kjahds@kjahds.com> +Kenneth Duda <kjd@cisco.com> +Keong Lim <Keong.Lim@sr.com.au> +Kim Frutiger +Kragen Sitaker <kragen@dnaco.net> +Krishna Sethuraman <krishna@sgi.com> +Kurt D. Starsinic <kstar@chapin.edu> +Kyriakos Georgiou +Larry Parmelee <parmelee@CS.Cornell.EDU> +Larry Schuler +Larry Schwimmer <rosebud@cyclone.Stanford.EDU> +Larry W. Virden <lvirden@cas.org> +Larry Wall <larry@wall.org> +Lars Hecking <lhecking@nmrc.ucc.ie> +Laszlo Molnar <laszlo.molnar@eth.ericsson.se> +Les Peters <lpeters@aol.net> +Lincoln D. Stein <lstein@cshl.org> +Lionel Cons <lionel.cons@cern.ch> +Luca Fini +Lupe Christoph <lupe@lupe-christoph.de> +Luther Huffman <lutherh@stratcom.com> +M. J. T. Guy <mjtg@cam.ac.uk> +Major Sébastien <sebastien.major@crdp.ac-caen.fr> +Makoto MATSUSHITA <matusita@ics.es.osaka-u.ac.jp> +Malcolm Beattie <mbeattie@sable.ox.ac.uk> +Marc Lehmann <pcg@goof.com> +Marc Paquette +Marcel Grunauer <marcel@codewerk.com> +Mark A Biggar <mab@wdl.loral.com> +Mark Bixby <mark@bixby.org> +Mark Dickinson <dickins3@fas.harvard.edu> +Mark Hanson +Mark K Trettin <mkt@lucent.com> +Mark Kaehny +Mark Kettenis <kettenis@wins.uva.nl> +Mark Knutsen +Mark Kvale <kvale@phy.ucsf.edu> +Mark P. Lutz <mark.p.lutz@boeing.com> +Mark R. Levinson <mrl@isc.upenn.edu> +Mark-Jason Dominus <mjd@plover.com> +Martijn Koster <mak@excitecorp.com> +Martin J. Bligh <mbligh@sequent.com> +Martin Jost +Martin Lichtin <lichtin@bivio.com> +Martin Plechsmid <plechsmi@karlin.mff.cuni.cz> +Marty Lucich <marty@netcom.com> +Martyn Pearce +Masahiro KAJIURA <masahiro.kajiura@toshiba.co.jp> +Mathias Koerber <mathias@dnssec1.singnet.com.sg> +Matt Kimball +Matthew Green <mrg@splode.eterna.com.au> +Matthew T Harden <mthard@mthard1.monsanto.com> +Matthias Ulrich Neeracher <neeri@iis.ee.ethz.ch> +Matthias Urlichs <smurf@noris.net> +Maurizio Loreti <maurizio.loreti@pd.infn.it> +Michael Cook <mcook@cognex.com> +Michael De La Rue <mikedlr@tardis.ed.ac.uk> +Michael Engel <engel@nms1.cc.huji.ac.il> +Michael G Schwern <schwern@pobox.com> +Michael H. Moran <mhm@austin.ibm.com> +Michael Mahan <mahanm@nextwork.rose-hulman.edu> +Michael Stevens <mstevens@globnix.org> +Michele Sardo +Mik Firestone <fireston@lexmark.com> +Mike Fletcher +Mike Hopkirk <hops@sco.com> +Mike Rogers +Mike Stok <mike@stok.co.uk> +Mike W Ellwood <mwe@rl.ac.uk> +Milton Hankins <webtools@uewrhp03.msd.ray.com> +Milton L. Hankins <mlh@swl.msd.ray.com> +Molnar Laszlo <molnarl@cdata.tvnet.hu> +Murray Nesbitt <mjn@pathcom.com> +Nathan Kurz <nate@valleytel.net> +Nathan Torkington <gnat@frii.com> +Neale Ferguson <neale@VMA.TABNSW.COM.AU> +Neil Bowers <neilb@cre.canon.co.uk> +Nicholas Clark <nick@ccl4.org> +Nick Duffek +Nick Gianniotis +Nick Ing-Simmons <nick@ing-simmons.net> +Norbert Pueschel <pueschel@imsdd.meb.uni-bonn.de> +Norton T. Allen <allen@huarp.harvard.edu> +Olaf Flebbe <olaf@science-computing.de> +Olaf Titz <olaf@bigred.inka.de> +Ollivier Robert <roberto@keltia.freenix.fr> +Owen Taylor <owt1@cornell.edu> +Patrick Hayes <Patrick.Hayes.CAP_SESA@renault.fr> +Patrick O'Brien <pdo@cs.umd.edu> +Paul A Sand +Paul David Fardy <pdf@morgan.ucs.mun.ca> +Paul Green <Paul_Green@stratus.com> +Paul Hoffman <phoffman@proper.com> +Paul Holser <Paul.Holser.pholser@nortelnetworks.com> +Paul Johnson <pjcj@transeda.com> +Paul Marquess <Paul.Marquess@btinternet.com> +Paul Moore <Paul.Moore@uk.origin-it.com> +Paul Moore <gustav@morpheus.demon.co.uk> +Paul Rogers +Paul Saab <ps@yahoo-inc.com> +Paul Schinder <schinder@pobox.com> +Pete Peterson +Peter Chines <pchines@nhgri.nih.gov> +Peter Gordon +Peter Haworth <pmh@edison.ioppublishing.com> +Peter J. Farley III <pjfarley@banet.net> +Peter Jaspers-Fayer +Peter Prymmer <pvhp@forte.com> +Peter Scott <Peter@PSDT.com> +Peter Wolfe <wolfe@teloseng.com> +Peter van Heusden <pvh@junior.uwc.ac.za> +Petter Reinholdtsen <pere@hungry.com> +Phil Lobbes <phil@finchcomputer.com> +Philip Hazel +Philip Newton <Philip.Newton@gmx.net> +Piers Cawley <pdcawley@bofh.org.uk> +Piotr Klaban <makler@oryl.man.torun.pl> +Prymmer/Kahn <pvhp@best.com> +Quentin Fennessy +Radu Greab <radu@netsoft.ro> +Ralf S. Engelschall <rse@engelschall.com> +Randal L. Schwartz <merlyn@stonehenge.com> +Randy J. Ray <rjray@redhat.com> +Raphael Manfredi <Raphael.Manfredi@pobox.com> +Raymund Will <ray@caldera.de> +Rex Dieter <rdieter@math.unl.edu> +Rich Morin <rdm@cfcl.com> +Richard A. Wells <Rwells@uhs.harvard.edu> +Richard Foley <Richard.Foley@m.dasa.de> +Richard L. England <richard_england@mentorg.com> +Richard L. Maus, Jr. <rmaus@monmouth.com> +Richard Soderberg <rs@crystalflame.net> +Rick Delaney <rick@consumercontact.com> +Rick Pluta +Rickard Westman +Rob Henderson <robh@cs.indiana.edu> +Robert Partington +Robert Sanders <Robert.Sanders@linux.org> +Robert Spier <rspier@pobox.com> +Robin Barker <rmb1@cise.npl.co.uk> +Robin Houston <robin@nml.guardian.co.uk> +Rocco Caputo <troc@netrus.net> +Roderick Schertler <roderick@argon.org> +Rodger Anderson +Ronald F. Guilmette <rfg@monkeys.com> +Ronald J. Kimball <rjk@linguist.dartmouth.edu> +Ruben Schattevoy <schattev@imb-jena.de> +Rujith S. de Silva <desilva@netbox.com> +Russ Allbery <rra@stanford.edu> +Russell Fulton <russell@ccu1.auckland.ac.nz> +Russell Mosemann +Ryan Herbert <rherbert@sycamorehq.com> +SAKAI Kiyotaka <ksakai@netwk.ntt-at.co.jp> +Samuli Kärkkäinen +Scott Gifford <sgifford@tir.com> +Scott Henry <scotth@sgi.com> +Sean Robinson <robinson_s@sc.maricopa.edu> +Sean Sheedy <seans@ncube.com> +Shigeya Suzuki <shigeya@foretune.co.jp> +Shishir Gundavaram <shishir@ruby.ora.com> +Simon Cozens <simon@cozens.net> +Simon Leinen +Simon Parsons +Slaven Rezic <eserte@cs.tu-berlin.de> +Spider Boardman <spider@orb.nashua.nh.us> +Stephane Payrard <stef@francenet.fr> +Stephen McCamant <alias@mcs.com> +Stephen O. Lidie <lusol@turkey.cc.Lehigh.EDU> +Stephen P. Potter <spp@ds.net> +Stephen Zander <gibreel@pobox.com> +Steve A Fink <sfink@cs.berkeley.edu> +Steve Kelem <steve.kelem@xilinx.com> +Steve McDougall +Steve Nielsen <spn@enteract.com> +Steve Pearlmutter +Steve Vinoski +Steven Knight <knight@theopera.baldmt.citilink.com> +Steven N. Hirsch <hirschs@stargate.btv.ibm.com> +Steven Parkes <parkes@sierravista.com> +Sven Verdoolaege <skimo@breughel.ufsia.ac.be> +SynaptiCAD, Inc. <sales@syncad.com> +Taro KAWAGISHI +Ted Ashton <ashted@southern.edu> +Ted Law <tedlaw@cibcwg.com> +Thad Floryan <thad@thadlabs.com> +The Man +Thomas Bowditch <bowditch@inmet.com> +Thomas Conté <tom@fr.uu.net> +Thomas Dorner <Thomas.Dorner@start.de> +Thomas Kofler +Thomas König +Tim Ayers <tayers@bridge.com> +Tim Bunce <Tim.Bunce@ig.co.uk> +Tim Conrow <tim@spindrift.srl.caltech.edu> +Tim Freeman +Tim Jenness <t.jenness@jach.hawaii.edu> +Tim Mooney <mooney@dogbert.cc.ndsu.NoDak.edu> +Tim Witham <twitham@pcocd2.intel.com> +Tkil <tkil@reptile.scrye.com> +Todd C. Miller <Todd.Miller@courtesan.com> +Todd Miller <millert@openbsd.org> +Tom Christiansen <tchrist@perl.com> +Tom Horsley <Tom.Horsley@mail.ccur.com> +Tom Hughes <tom@compton.nu> +Tom Phoenix <rootbeer@teleport.com> +Tom Spindler <dogcow@merit.edu> +Tony Camas +Tony Cook <tony@develop-help.com> +Tony Sanders <sanders@bsdi.com> +Tor Lillqvist +Trevor Blackwell <tlb@viaweb.com> +Tuomas J. Lukka <tjl@lukka.student.harvard.edu> +Tye McQueen <tye@metronet.com> +Ulrich Kunitz +Ulrich Pfeifer <pfeifer@wait.de> +Vadim Konovalov <vkonovalov@lucent.com> +Valeriy E. Ushakov <uwe@ptc.spbu.ru> +Vishal Bhatia <vishal@deja.com> +Vlad Harchev <hvv@hippo.ru> +Vladimir Alexiev <vladimir@cs.ualberta.ca> +W. Phillip Moore <wpm@ms.com> +Warren Hyde <whyde@pezz.sps.mot.com> +Warren Jones <wjones@tc.fluke.com> +Wayne Berke +Wayne Scott +Wayne Thompson <Wayne.Thompson@Ebay.sun.com> +Wilfredo Sánchez <wsanchez@apple.com> +William Mann <wmann@avici.com> +William Middleton +William R Ward <hermit@BayView.COM> +William Setzer +Winfried König <win@in.rhein-main.de> +Wolfgang Laun <Wolfgang.Laun@alcatel.at> +Yary Hluchan +Yasushi Nakajima <sey@jkc.co.jp> +Yitzchak Scott-Thoennes <sthoenna@efn.org> +Yutaka OIWA <oiwa@is.s.u-tokyo.ac.jp> +Yutao Feng +Zachary Miller <zcmiller@simon.er.usgs.gov> @@ -6,85 +6,7 @@ individual change may also be obtained through ftp and rsync--see perlhack.pod for the details. - --------------- - CAST AND CREW - --------------- - -To give due honor to those who have made Perl what is is today, -here are some of the more common names in the Changes file, and their -current addresses (as of September 2000): - - Gisle Aas <gisle@aas.no> - Abigail <abigail@foad.org> - Kenneth Albanowski <kjahds@kjahds.com> - Russ Allbery <rra@stanford.edu> - Brad Appleton <bradapp@enteract.com> - Greg Bacon <gbacon@itsc.uah.edu> - Robin Barker <rmb1@cise.npl.co.uk> - Vishal Bhatia <vishal@gol.com> - Spider Boardman <spider@orb.nashua.nh.us> - Daniel Chetlin <daniel@chetlin.com> - Tom Christiansen <tchrist@perl.com> - Lupe Christoph <lupe@lupe-christoph.de> - Nicholas Clark <nick@Bagpuss.unfortu.net> - Simon Cozens <simon@brecon.co.uk> - Francois Desarmenien <desar@club-internet.fr> - Mark-Jason Dominus <mjd@plover.com> - Jan Dubois <jand@activestate.com> - Dominic Dunlop <domo@computer.org> - Eric Fifer <efifer@sanwaint.com> - Richard Foley <Richard.Foley@m.dasa.de> - Jeffrey Friedl <jfriedl@yahoo-inc.com> - Hallvard B Furuseth <h.b.furuseth@usit.uio.no> - M. J. T. Guy <mjtg@cam.ac.uk> - Tom Hughes <tom@compton.nu> - Nick Ing-Simmons <nik@tiuk.ti.com> - Tim Jenness <timj@jach.hawaii.edu> - Andreas König <a.koenig@mind.de> - Charles Lane <lane@DUPHY4.Physics.Drexel.Edu> - Douglas Lankshear <dougl@activestate.com> - Doug MacEachern <dougm@covalent.net> - Raphael Manfredi <Raphael.Manfredi@pobox.com> - Paul Marquess <Paul.Marquess@btinternet.com> - Stephen McCamant <alias@mcs.com> - Laszlo Molnar <laszlo.molnar@eth.ericsson.se> - Hans Mulder <hansmu@xs4all.nl> - Chris Nandor <pudge@pobox.com> - Matthias Neeracher <neeri@iis.ee.ethz.ch> - Jeff Okamoto <okamoto@hpcc123.corp.hp.com> - Ulrich Pfeifer <pfeifer@charly.informatik.uni-dortmund.de> - Tom Phoenix <rootbeer@teleport.com> - Stephen Potter <spp@ds.net> - Joshua Pritikin <joshua.pritikin@db.com> - Peter Prymmer <pvhp@forte.com> - Norbert Pueschel <pueschel@imsdd.meb.uni-bonn.de> - Dean Roehrich <roehrich@cray.com> - Hugo van der Sanden <hv@crypt.demon.co.uk> - Michael G Schwern <schwern@pobox.com> - Roderick Schertler <roderick@argon.org> - Yitzchak Scott-Thoennes <sthoenna@efn.org> - Kurt D. Starsinic <kstar@chapin.edu> - Benjamin Stuhl <sho_pi@hotmail.com> - Dan Sugalski <dan@sidhe.org> - Nathan Torkington <gnat@frii.com> - Larry W. Virden <lvirden@cas.org> - Johan Vromans <jvromans@squirrel.nl> - Ilya Zakharevich <ilya@math.ohio-state.edu> - -And the Keepers of the Patch Pumpkin: - - Charles Bailey <bailey@newman.upenn.edu> - Graham Barr <gbarr@ti.com> - Malcolm Beattie <mbeattie@sable.ox.ac.uk> - Tim Bunce <Tim.Bunce@ig.co.uk> - Andy Dougherty <doughera@lafcol.lafayette.edu> - Jarkko Hietaniemi <jhi@iki.fi> - Gurusamy Sarathy <gsar@activestate.com> - Chip Salzenberg <chip@perl.com> - -And, of course, the Author of Perl: - - Larry Wall <larry@wall.org> +[The "CAST AND CREW" list has been moved to AUTHORS.] NOTE: Each change entry shows the change number; who checked it into the repository; when; description of the change; which branch the change @@ -106,6 +28,682 @@ Version v5.7.0 Development release working toward v5.8 -------------- ____________________________________________________________________________ +[ 7481] By: jhi on 2000/10/29 17:02:37 + Log: UTF-8 decoder tweak. + Branch: perl + ! utf8.c +____________________________________________________________________________ +[ 7478] By: jhi on 2000/10/29 02:04:01 + Log: Add also emailless people. + Branch: perl + ! AUTHORS +____________________________________________________________________________ +[ 7477] By: jhi on 2000/10/29 01:36:00 + Log: The #7476 needs a MANIFEST change, too. + Branch: perl + ! MANIFEST +____________________________________________________________________________ +[ 7476] By: jhi on 2000/10/29 01:35:21 + Log: Have only one master list of AUTHORS, drop unmaintained MAINTAIN. + Branch: perl + - MAINTAIN + ! AUTHORS Changes +____________________________________________________________________________ +[ 7475] By: jhi on 2000/10/28 23:57:25 + Log: De-quoted-unreadable to ISO Latin 1. + (There's one ISO-2022-JP name in Changes5.004.) + Branch: perl + ! Changes Changes5.6 +____________________________________________________________________________ +[ 7474] By: jhi on 2000/10/28 19:13:06 + Log: Subject: [ID 20001027.007] uniq array in perlfaq + From: Hans Ginzel <hans@kolej.mff.cuni.cz> + Date: Fri, 27 Oct 2000 19:28:30 +0200 + Message-Id: <20001027192830.A1564@kolej.mff.cuni.cz> + Branch: perl + ! pod/perlfaq4.pod +____________________________________________________________________________ +[ 7473] By: jhi on 2000/10/28 18:02:05 + Log: Locking null mutexes is not recommendable. + + Subject: Re: [ID 20001027.008] Not OK: perl v5.7.0 +DEVEL7462 on i386-freebsd-thread-64all 4.1-stable (UNINSTALLED) + From: Hugo <hv@crypt.compulink.co.uk> + Date: Sat, 28 Oct 2000 18:41:12 +0100 + Message-Id: <200010281741.SAA31327@crypt.compulink.co.uk> + Branch: perl + ! op.c +____________________________________________________________________________ +[ 7472] By: jhi on 2000/10/28 17:52:58 + Log: Better create a true mailing list for the repository keepers. + Branch: perl + ! Porting/repository.pod +____________________________________________________________________________ +[ 7471] By: jhi on 2000/10/28 17:28:24 + Log: Add the repository doc by Malcolm, Sarathy, and by Simon, + name as suggested by Michael Bletzinger <mbletzin@ncsa.uiuc.edu>. + Branch: perl + + Porting/repository.pod + ! MANIFEST +____________________________________________________________________________ +[ 7470] By: jhi on 2000/10/28 17:20:54 + Log: Subject: DOC PATCH 5.6.0 + From: mjd@plover.com + Date: 27 Oct 2000 17:32:44 -0000 + Message-ID: <20001027173244.23754.qmail@plover.com> + Branch: perl + ! pod/perlfunc.pod +____________________________________________________________________________ +[ 7469] By: jhi on 2000/10/28 17:16:45 + Log: Subject: [ID 20001027.010] [PATCH] Add info on building CPAN modules to README.dos + From: "Peter J. Farley III" <pjfarley@banet.net> + Date: Fri, 27 Oct 2000 20:32:56 -0400 + Message-Id: <4.3.1.0.20001027202303.00ad8900@pop5.banet.net> + Branch: perl + ! README.dos +____________________________________________________________________________ +[ 7468] By: jhi on 2000/10/28 17:07:18 + Log: Make target reordering to avoid pointless re-makes. + + Subject: Re: Total re-make of 'make okfile' after 7451 ? + From: Nicholas Clark <nick@ccl4.org> + Date: Sat, 28 Oct 2000 00:31:02 +0100 + Message-ID: <20001028003101.A54517@plum.flirble.org> + Branch: perl + ! Makefile.SH +____________________________________________________________________________ +[ 7467] By: jhi on 2000/10/28 17:05:31 + Log: Subject: [ID 20001027.005] Nit in perlos2.pod - space needs deleted on line 118 + From: lvirden@cas.org + Date: Fri, 27 Oct 2000 13:14:41 -0400 (EDT) + Message-Id: <200010271714.NAA22015@lwv26awu.cas.org> + Branch: perl + ! README.os2 +____________________________________________________________________________ +[ 7466] By: jhi on 2000/10/28 16:09:16 + Log: Upgrade to CPAN 1.58_55. + + Subject: CPAN.pm status + From: andreas.koenig@anima.de (Andreas J. Koenig) + Date: 28 Oct 2000 08:18:00 +0200 + Message-ID: <m3n1fpa3qf.fsf@ak-71.mind.de> + Branch: perl + ! lib/CPAN.pm lib/CPAN/FirstTime.pm +____________________________________________________________________________ +[ 7465] By: jhi on 2000/10/28 16:02:47 + Log: The reëntrant version shouldn't be needed unless USE_PURE_BISON. + Branch: perl + ! embed.h embed.pl perl.h proto.h toke.c +____________________________________________________________________________ +[ 7464] By: nick on 2000/10/28 10:43:44 + Log: Fix for sv_2iv() on "shared" value from keys %hash. + Branch: perl + ! sv.c +____________________________________________________________________________ +[ 7463] By: jhi on 2000/10/27 16:18:29 + Log: Update Changes. + Branch: perl + ! Changes patchlevel.h +____________________________________________________________________________ +[ 7461] By: jhi on 2000/10/27 15:37:38 + Log: Retract #7459, the script needs more work. + Branch: perl + - mkreef + ! MANIFEST +____________________________________________________________________________ +[ 7459] By: jhi on 2000/10/27 15:02:07 + Log: (Retracted by #7461) + + Add a shell script for creating/removing symbolic link farms, + useful for keeping the source code read-only and doing the + builds somewhere else. + Branch: perl + + mkreef + ! MANIFEST +____________________________________________________________________________ +[ 7458] By: jhi on 2000/10/27 14:42:20 + Log: Do away with the fix_pl. + Branch: perl + - fix_pl + ! MANIFEST Makefile.SH +____________________________________________________________________________ +[ 7457] By: jhi on 2000/10/27 12:43:13 + Log: Subject: [ID 20001027.002] Patch 7380 followup - Perl_modfl *must* be defined + From: Jens Hamisch <jens@Strawberry.COM> + Date: Fri, 27 Oct 2000 14:38:21 +0200 + Message-Id: <20001027143821.B3366@Strawberry.COM> + Branch: perl + ! perl.h +____________________________________________________________________________ +[ 7456] By: jhi on 2000/10/27 12:33:42 + Log: Subject: [PATCH] todo + From: Nicholas Clark <nick@ccl4.org> + Date: Thu, 26 Oct 2000 22:32:29 +0100 + Message-ID: <20001026223229.A44540@plum.flirble.org> + Branch: perl + ! pod/perltodo.pod +____________________________________________________________________________ +[ 7455] By: jhi on 2000/10/27 12:02:21 + Log: Subject: Re: [PATCH bleadperl] ripples from constsub patch + From: John Tobey <jtobey@john-edwin-tobey.org> + Date: Thu, 26 Oct 2000 22:29:53 -0400 (EDT) + Message-Id: <m13ozHF-000FObC@feynman.localnet> + Branch: perl + ! op.c t/pragma/sub_lval.t +____________________________________________________________________________ +[ 7454] By: jhi on 2000/10/27 11:59:42 + Log: Subject: [ID 20001026.006] C<use integer; $x += 1> gives uninitialized warning + From: sthoenna@efn.org + Date: Thu, 26 Oct 2000 14:00:03 -0700 (PDT) + Message-Id: <200010262100.e9QL03U06386@garcia.efn.org> + Branch: perl + ! pp.c t/op/assignwarn.t +____________________________________________________________________________ +[ 7453] By: jhi on 2000/10/27 00:15:08 + Log: Upgrade to Storable 1.0.5, from Raphael Manfredi. + Branch: perl + ! ext/Storable/ChangeLog ext/Storable/Storable.pm + ! ext/Storable/Storable.xs t/lib/st-lock.t +____________________________________________________________________________ +[ 7452] By: jhi on 2000/10/26 13:05:52 + Log: Undo #7451, this seems to be a deficiency in Perforce, + there is no per-file line-terminator type, only per-client. + Branch: perl + ! README.dos README.win32 djgpp/configure.bat win32/Makefile + ! win32/makefile.mk +____________________________________________________________________________ +[ 7451] By: jhi on 2000/10/26 04:56:03 + Log: Experimenting in DOS arcana. + Branch: perl + ! README.dos README.win32 djgpp/configure.bat win32/Makefile + ! win32/makefile.mk +____________________________________________________________________________ +[ 7450] By: jhi on 2000/10/26 04:50:52 + Log: Subject: [ID 20001025.011] [PATCH] t/io/open.t perl@7369[ 7350] breaks VMS perl + From: "Peter J. Farley III" <pjfarley@banet.net> + Date: Wed, 25 Oct 2000 23:10:18 -0400 + Message-Id: <4.3.1.0.20001025230222.00accba0@pop5.banet.net> + Branch: perl + ! t/io/open.t +____________________________________________________________________________ +[ 7449] By: jhi on 2000/10/26 04:49:16 + Log: Subject: Re: [PATCH 5.6.0]Add non-blocking thread doneness checking + From: Hugo <hv@crypt.compulink.co.uk> + Date: Thu, 26 Oct 2000 01:55:17 +0100 + Message-Id: <200010260055.BAA27869@crypt.compulink.co.uk> + + minus one unneeded mutex lock/unlock pointed out by Dan Sugalski. + Branch: perl + ! ext/Thread/Thread.pm ext/Thread/Thread.xs t/lib/thr5005.t +____________________________________________________________________________ +[ 7448] By: jhi on 2000/10/26 04:38:36 + Log: Subject: [PATCH: perl@7446] restore missing d_stdio_cnt_lval to VMS + From: Peter Prymmer <pvhp@forte.com> + Date: Wed, 25 Oct 2000 18:23:56 -0700 (PDT) + Message-ID: <Pine.OSF.4.10.10010251816200.247618-100000@aspara.forte.com> + Branch: perl + ! configure.com +____________________________________________________________________________ +[ 7447] By: jhi on 2000/10/25 23:20:02 + Log: Remains of the old UTF-8 API, utf8_to_uv_chk(): didn't link + in platforms that strictly require all the symbols being present + at link time. + Branch: perl + ! handy.h +____________________________________________________________________________ +[ 7446] By: jhi on 2000/10/25 21:55:57 + Log: Update Changes. + Branch: perl + ! Changes patchlevel.h +____________________________________________________________________________ +[ 7445] By: jhi on 2000/10/25 21:27:08 + Log: Integrate with vmsperl #7430 by Charles Bailey: + + Cleanup from prior patch (Charles Lane?): + - improve handling of MFDs in Basename and Path + - default to no xsubpp line # munging when building debug images + Branch: perl + !> lib/ExtUtils/MM_VMS.pm lib/File/Basename.pm lib/File/Path.pm +____________________________________________________________________________ +[ 7444] By: jhi on 2000/10/25 21:03:50 + Log: Subject: [PATCH] Zero-padded Numerics in Perl Format + From: John Peacock <JPeacock@UnivPress.com> + Date: Thu, 18 May 2000 11:55:27 -0400 + Message-ID: <3924126F.A58BE57A@UnivPress.com> + Branch: perl + ! form.h pod/perldelta.pod pod/perlform.pod pp_ctl.c + ! t/op/write.t +____________________________________________________________________________ +[ 7443] By: jhi on 2000/10/25 20:43:10 + Log: Temporary stopgap for the self-tying issue: for now only + array and hash self-ties are verboten. The real fix, of + course, would be to comprehensively test (and implement?) + and debug (and document) self-ties. + Branch: perl + ! pod/perldiag.pod pp_sys.c t/op/tie.t +____________________________________________________________________________ +[ 7442] By: jhi on 2000/10/25 20:14:30 + Log: Subject: [PATCH 5.6.0]Add non-blocking thread doneness checking + From: Dan Sugalski <dan@sidhe.org> + Date: Wed, 25 Oct 2000 13:36:35 -0400 + Message-Id: <5.0.0.25.0.20001025133504.01ef1e20@24.8.96.48> + + plus regen global.sym. + Branch: perl + ! ext/Thread/Thread.pm ext/Thread/Thread.xs global.sym perl.c + ! thrdvar.h util.c +____________________________________________________________________________ +[ 7441] By: jhi on 2000/10/25 20:12:20 + Log: buildtoc target tweaks. + Branch: perl + ! pod/Makefile.SH +____________________________________________________________________________ +[ 7440] By: jhi on 2000/10/25 20:03:53 + Log: A new version of making the syslog test more robust. + (Replaces #7421.) + + Subject: Re: [ID 20001022.001] Not OK: perl v5.7.0 +DEVEL7368 on i686-linux 2.2.16 + From: "Kurt D. Starsinic" <kstar@chapin.edu> + Date: Wed, 25 Oct 2000 12:13:54 -0400 + Message-ID: <20001025121354.B2264@O2.chapin.edu> + Branch: perl + ! t/lib/syslog.t +____________________________________________________________________________ +[ 7439] By: jhi on 2000/10/25 20:00:48 + Log: Continue the internal UTF-8 API tweaking. + Rename utf8_to_uv_chk() back to utf8_to_uv() because it's + used much more than the simpler API, now called utf8_to_uv_simple(). + Still not quite happy with API, too much partial duplication + of functionality. + Branch: perl + ! doop.c embed.h embed.pl handy.h objXSUB.h op.c perlapi.c + ! pod/perlapi.pod pod/perlunicode.pod pp.c pp_ctl.c proto.h + ! regcomp.c regexec.c sv.c toke.c utf8.c +____________________________________________________________________________ +[ 7438] By: jhi on 2000/10/25 18:52:30 + Log: Allow poking holes at the UTF-8 decoding strictness. + Branch: perl + ! embed.pl pp.c proto.h sv.c t/pragma/utf8.t toke.c utf8.c + ! utf8.h +____________________________________________________________________________ +[ 7437] By: jhi on 2000/10/25 13:53:05 + Log: Rename UTF8LEN() to be UNISKIP(), too confusing to have + UTF8LEN() and UTF8SKIP(). + Branch: perl + ! pp.c utf8.c utf8.h +____________________________________________________________________________ +[ 7436] By: jhi on 2000/10/25 13:51:37 + Log: Subject: [PATCH] Re: PerlIO - Configure tweak for Linux/glibc? + From: Nicholas Clark <nick@ccl4.org> + Date: Wed, 25 Oct 2000 14:44:05 +0100 + Message-ID: <20001025144404.D27253@plum.flirble.org> + Branch: perl + ! pod/perlrun.pod +____________________________________________________________________________ +[ 7435] By: jhi on 2000/10/25 13:49:32 + Log: Subject: [ID 20001024.007] [PATCH] "Dump local *FH" causes SEGV + From: Mike Guy <mjtg@cam.ac.uk> + Date: Tue, 24 Oct 2000 14:59:40 +0100 + Message-Id: <E13o4c8-00076u-00@libra.cus.cam.ac.uk> + Branch: perl + ! scope.c +____________________________________________________________________________ +[ 7434] By: jhi on 2000/10/25 13:48:41 + Log: AIX is picky about its symbol exports. Solution for now + is to include the deb.o explicitly to the re extension build. + + Subject: Re: introduce missing .Perl_deb symbol to aix build (Questions) + From: Peter Prymmer <pvhp@forte.com> + Date: Tue, 24 Oct 2000 12:57:22 -0700 (PDT) + Message-ID: <Pine.OSF.4.10.10010241252180.127055-100000@aspara.forte.com> + Branch: perl + ! ext/re/Makefile.PL hints/aix.sh +____________________________________________________________________________ +[ 7433] By: jhi on 2000/10/25 13:46:49 + Log: Subject: patch 7416 breaks sv.c on AIX and HP-UX (patch included) + From: "H.Merijn Brand" <h.m.brand@hccnet.nl> + Date: Wed, 25 Oct 2000 12:02:20 +0200 + Message-Id: <20001025114712.C9F9.H.M.BRAND@hccnet.nl> + Branch: perl + ! perlsdio.h +____________________________________________________________________________ +[ 7432] By: jhi on 2000/10/25 13:44:28 + Log: Subject: Minor update to find2perl, for portability + From: "Moore, Paul" <Paul.Moore@uk.origin-it.com> + Date: Wed, 25 Oct 2000 12:05:47 +0100 + Message-ID: <714DFA46B9BBD0119CD000805FC1F53B012A8355@UKRUX002.rundc.uk.origin-it.com> + Branch: perl + ! x2p/find2perl.PL +____________________________________________________________________________ +[ 7431] By: jhi on 2000/10/25 13:40:39 + Log: Add targets to Makefile.SH, most importantly + 'regen_all' which also remembers to update vms/perly*. + Branch: perl + ! Makefile.SH +____________________________________________________________________________ +[ 7429] By: jhi on 2000/10/24 20:03:40 + Log: Podify README.epoc and README.vos. + Branch: perl + ! README.epoc README.vos pod/buildtoc.PL pod/perl.pod + ! pod/perlport.pod pod/perltoc.pod +____________________________________________________________________________ +[ 7428] By: jhi on 2000/10/24 19:10:33 + Log: Stratus VOS updates from Paul Green. + Branch: perl + + vos/config.alpha.def vos/config.alpha.h vos/config.ga.def + + vos/config.ga.h vos/configure_perl.cm vos/install_perl.cm + - vos/config.def vos/config.h vos/config_h.SH_orig + ! MANIFEST README.vos pod/perlport.pod vos/Changes vos/build.cm + ! vos/compile_perl.cm vos/config.pl vos/perl.bind vos/vosish.h +____________________________________________________________________________ +[ 7426] By: jhi on 2000/10/24 17:57:44 + Log: Missed the header file changes from #7425. + Branch: perl + ! embed.h embed.pl objXSUB.h proto.h +____________________________________________________________________________ +[ 7425] By: jhi on 2000/10/24 17:55:17 + Log: Fix the bug reported in + + From: andreas.koenig@anima.de (Andreas J. Koenig) + Subject: Encode bug? + Date: 24 Oct 2000 14:01:26 +0200 + Message-ID: <m3lmveqwh5.fsf@ak-71.mind.de> + + Also make is_utf8_char() stricter. + Branch: perl + ! ext/Encode/Encode.xs utf8.c +____________________________________________________________________________ +[ 7424] By: jhi on 2000/10/24 15:15:39 + Log: Subject: Re: [ID 20001023.003] PATCH perlfaq5 [perl-current] + From: Peter Scott <Peter@PSDT.com> + Date: Mon, 23 Oct 2000 19:46:01 -0700 + Message-Id: <4.3.2.7.2.20001023194324.00ab7220@psdt.com> + Branch: perl + ! pod/perlfaq5.pod +____________________________________________________________________________ +[ 7423] By: jhi on 2000/10/24 14:25:30 + Log: Test tweak to avoid pulling in the whole Config. + Branch: perl + ! t/lib/st-lock.t +____________________________________________________________________________ +[ 7422] By: jhi on 2000/10/24 14:03:16 + Log: Fix the bug ID 20001024.005, the bug introduced by #7416. + Branch: perl + ! pp.c +____________________________________________________________________________ +[ 7421] By: jhi on 2000/10/24 13:32:09 + Log: (Replaced by #7440.) + + Subject: Re: [ID 20001022.001] Not OK: perl v5.7.0 +DEVEL7368 on i686-linux 2.2.16 + From: "Kurt D. Starsinic" <kstar@chapin.edu> + Date: Mon, 23 Oct 2000 16:40:54 -0400 + Message-ID: <20001023164054.B14491@O2.chapin.edu> + Branch: perl + ! t/lib/syslog.t +____________________________________________________________________________ +[ 7420] By: jhi on 2000/10/24 13:30:53 + Log: Subject: [PATCH 5.7.0] static linking with uninstalled perl + From: Ilya Zakharevich <ilya@math.ohio-state.edu> + Date: Mon, 23 Oct 2000 17:29:03 -0400 + Message-ID: <20001023172903.A18749@monk.mps.ohio-state.edu> + Branch: perl + ! lib/ExtUtils/MM_Unix.pm +____________________________________________________________________________ +[ 7419] By: jhi on 2000/10/24 13:29:57 + Log: Subject: Re: [PATCH 5.7.0] h2xs not documenting the created module + From: Ilya Zakharevich <ilya@math.ohio-state.edu> + Date: Mon, 23 Oct 2000 19:01:32 -0400 + Message-ID: <20001023190132.A19791@monk.mps.ohio-state.edu> + Branch: perl + ! utils/h2xs.PL +____________________________________________________________________________ +[ 7418] By: jhi on 2000/10/24 13:26:04 + Log: Replace #7409 with + + Subject: Re: [PATCH] Re: [ID 20001020.009] Not OK: perl v5.7.0 +DEVEL7368 on dos-djgpp djgp + From: Raphael Manfredi <Raphael_Manfredi@pobox.com> + Date: Mon, 23 Oct 2000 20:08:56 +0200 + Message-ID: <20001023200855.A14850@nice.ram.loc> + Branch: perl + ! ext/Storable/Storable.pm t/lib/st-lock.t +____________________________________________________________________________ +[ 7417] By: jhi on 2000/10/24 13:17:52 + Log: Run vms/vms_yfix.pl, should have done that after changing + perly.c in #7382. + Branch: perl + ! vms/perly_c.vms vms/perly_h.vms +____________________________________________________________________________ +[ 7416] By: jhi on 2000/10/24 02:55:33 + Log: Make the UTF-8 decoding stricter and more verbose when + malformation happens. This involved adding an argument + to utf8_to_uv_chk(), which involved changing its prototype, + and prefer STRLEN over I32 for the UTF-8 length, which as + a domino effect necessitated changing the prototypes of + scan_bin(), scan_oct(), scan_hex(), and reg_uni(). + The stricter UTF-8 decoding checking uses Markus Kuhn's + UTF-8 Decode Stress Tester from + http://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-test.txt + Branch: perl + ! doop.c embed.h embed.pl handy.h objXSUB.h op.c perl.c + ! perlapi.c pod/perlapi.pod pod/perldiag.pod pod/perlunicode.pod + ! pp.c pp_ctl.c proto.h regcomp.c regexec.c sv.c t/pragma/utf8.t + ! t/pragma/warn/utf8 toke.c utf8.c utf8.h util.c +____________________________________________________________________________ +[ 7415] By: jhi on 2000/10/23 14:06:06 + Log: Update Changes. + Branch: perl + ! Changes patchlevel.h +____________________________________________________________________________ +[ 7414] By: jhi on 2000/10/23 12:39:52 + Log: Undo the basename() part of #7412 since the lib/basename + tests would need upgrading too. + Branch: perl + ! lib/File/Basename.pm +____________________________________________________________________________ +[ 7413] By: jhi on 2000/10/23 12:19:27 + Log: Document PERL_INSTALL_ROOT of #7210. + Branch: perl + ! lib/ExtUtils/Install.pm +____________________________________________________________________________ +[ 7412] By: jhi on 2000/10/23 12:16:47 + Log: Miscellaneous MacOS Classic library updates from Matthias Neeracher. + Branch: perl + ! lib/ExtUtils/Mksymlists.pm lib/File/Basename.pm + ! lib/File/Path.pm lib/Term/ReadLine.pm lib/perl5db.pl +____________________________________________________________________________ +[ 7411] By: jhi on 2000/10/23 12:07:41 + Log: Subject: [PATCH: perl@7386] miscellaneous typos in 3 pods + From: Prymmer/Kahn <pvhp@best.com> + Date: Sun, 22 Oct 2000 22:18:40 -0700 (PDT) + Message-ID: <Pine.BSF.4.21.0010222214150.11774-100000@shell8.ba.best.com> + Branch: perl + ! README.aix pod/perlebcdic.pod vms/ext/Stdio/Stdio.pm +____________________________________________________________________________ +[ 7410] By: jhi on 2000/10/23 04:10:11 + Log: The change #7187 was not so good on VMS. + + Subject: [PATCH perl@7369] VMS perldoc.PL fix for double quoted temp filename + From: "Craig A. Berry" <craig.berry@psinetcs.com> + Date: Sun, 22 Oct 2000 23:03:08 -0500 + Message-Id: <p04330102b617d093470b@[172.16.52.1]> + Branch: perl + ! utils/perldoc.PL +____________________________________________________________________________ +[ 7409] By: jhi on 2000/10/23 03:57:36 + Log: Avoid Storable locking on DJGPP for now. + + Subject: [PATCH] Re: [ID 20001020.009] Not OK: perl v5.7.0 +DEVEL7368 on dos-djgpp djgpp + From: "Peter J. Farley III" <pjfarley@banet.net> + Date: Sun, 22 Oct 2000 20:00:00 -0400 + Message-Id: <4.3.1.0.20001022194247.00acfee0@pop5.banet.net> + Branch: perl + ! ext/Storable/Storable.pm t/lib/st-lock.t +____________________________________________________________________________ +[ 7408] By: jhi on 2000/10/23 03:50:24 + Log: Subject: Re: [20000731.007] potential syntax error not detected [PATCH] + From: Ronald J Kimball <rjk@linguist.dartmouth.edu> + Date: Sun, 22 Oct 2000 21:12:22 -0400 + Message-ID: <20001022211222.A1062496@linguist.dartmouth.edu> + Branch: perl + ! lib/vars.pm +____________________________________________________________________________ +[ 7407] By: jhi on 2000/10/23 03:43:12 + Log: Subject: Re: [ID 20001021.005] SEGV with regex match + From: Hugo <hv@crypt.compulink.co.uk> + Date: Mon, 23 Oct 2000 00:47:22 +0100 + Message-Id: <200010222347.AAA09697@crypt.compulink.co.uk> + Branch: perl + ! regexec.c t/op/pat.t +____________________________________________________________________________ +[ 7406] By: jhi on 2000/10/23 03:40:29 + Log: Retract #7404 with a patch from Robin Barker, via Andy Dougherty. + Branch: perl + ! lib/ExtUtils/MakeMaker.pm +____________________________________________________________________________ +[ 7405] By: jhi on 2000/10/22 21:32:00 + Log: Doc patch. + + Subject: [ID 19991128.002] \&{'foo'} not caught by strict refs + From: rspier@pobox.com (Robert Spier) + Date: Sun, 22 Oct 2000 15:24:32 -0400 (EDT) + Message-ID: <14835.16112.13457.447971@rls.cx> + Branch: perl + ! lib/strict.pm +____________________________________________________________________________ +[ 7404] By: jhi on 2000/10/22 21:30:51 + Log: Subject: [PATCH] Re: [ID 20000121.007] XXX documentation in man ExtUtils::MakeMaker + From: rspier@pobox.com (Robert Spier) + Date: Sun, 22 Oct 2000 15:43:03 -0400 (EDT) + Message-ID: <14835.17223.72448.705566@rls.cx> + Branch: perl + ! lib/ExtUtils/MakeMaker.pm +____________________________________________________________________________ +[ 7403] By: jhi on 2000/10/22 21:24:11 + Log: Subject: [PATCH bleadperl] ripples from constsub patch + From: John Tobey <jtobey@john-edwin-tobey.org> + Date: Sun, 22 Oct 2000 17:10:43 -0400 (EDT) + Message-Id: <m13nSOB-000FObC@feynman.localnet> + Branch: perl + ! dump.c ext/B/B.pm ext/B/B.xs ext/B/B/Deparse.pm t/lib/b.t +____________________________________________________________________________ +[ 7402] By: jhi on 2000/10/22 20:59:35 + Log: Support s?printf parameter reordering. + Branch: perl + ! pod/perldelta.pod pod/perlfunc.pod sv.c t/op/sprintf.t +____________________________________________________________________________ +[ 7401] By: jhi on 2000/10/22 19:19:14 + Log: Expand Config variables only if explicitly so requested. + + Subject: Re: PATCH $Config::Config{ldlibpthname} in ext/DynaLoader/DynaLoader_pm.PL + From: Gurusamy Sarathy <gsar@ActiveState.com> + Date: Sun, 22 Oct 2000 11:47:32 -0700 + Message-Id: <200010221847.LAA02167@smtp3.ActiveState.com> + Branch: perl + ! Makefile.SH lib/lib_pm.PL +____________________________________________________________________________ +[ 7400] By: jhi on 2000/10/22 18:24:10 + Log: Move the #7390 test from warn/op to comp/redef. + + Subject: Re: Creating const subs for constants. + From: John Tobey <jtobey@john-edwin-tobey.org> + Date: Sun, 22 Oct 2000 04:04:12 -0400 (EDT) + Message-Id: <m13nG72-000FObC@feynman.localnet> + Branch: perl + ! t/comp/redef.t t/pragma/warn/op +____________________________________________________________________________ +[ 7399] By: jhi on 2000/10/22 17:49:59 + Log: Subject: PATCH $Config::Config{ldlibpthname} in ext/DynaLoader/DynaLoader_pm.PL + From: Nicholas Clark <nick@ccl4.org> + Date: Sat, 21 Oct 2000 22:23:19 +0100 + Message-ID: <20001021222319.B45586@plum.flirble.org> + Branch: perl + ! ext/DynaLoader/DynaLoader_pm.PL +____________________________________________________________________________ +[ 7398] By: jhi on 2000/10/22 17:47:35 + Log: Subject: [PATCH bleadperl] -MO=C falls over on package <none> + From: Hugo <hv@crypt.compulink.co.uk> + Date: Sat, 21 Oct 2000 18:19:59 +0100 + Message-Id: <200010211719.SAA02087@crypt.compulink.co.uk> + Branch: perl + ! ext/B/B.pm ext/B/B/C.pm +____________________________________________________________________________ +[ 7397] By: jhi on 2000/10/22 17:35:18 + Log: Subject: [ID 20001021.003] updated hints/openbsd.sh + From: "Todd C. Miller" <Todd.Miller@courtesan.com> + Date: Sat, 21 Oct 2000 13:55:50 -0600 (MDT) + Message-Id: <200010211955.e9LJton24170@xerxes.courtesan.com> + Branch: perl + ! hints/openbsd.sh +____________________________________________________________________________ +[ 7396] By: jhi on 2000/10/22 17:19:46 + Log: Subject: installman go-faster stripes + From: Nicholas Clark <nick@talking.bollo.cx> + Date: Sat, 21 Oct 2000 17:24:53 +0100 + Message-ID: <20001021172452.A20371@Bagpuss.unfortu.net> + + Subject: Re: installman go-faster stripes + From: Russ Allbery <rra@stanford.edu> + Date: 21 Oct 2000 11:04:13 -0700 + Message-ID: <ylbswe5aw2.fsf@windlord.stanford.edu> + Branch: perl + ! installman pod/pod2man.PL +____________________________________________________________________________ +[ 7395] By: jhi on 2000/10/22 17:17:35 + Log: Hints tweak from Anton Berezin. + Branch: perl + ! hints/freebsd.sh +____________________________________________________________________________ +[ 7394] By: jhi on 2000/10/22 04:50:04 + Log: Tweak the Is* definitions of Unicode character classes + to better match the official categorizations; embrace + the official categorizations; add the combining marks + as alpha (and -numeric); fix DCinital (a typo and edito) + to be DCmedial. + Branch: perl + + lib/unicode/Is/DCmedial.pl + - lib/unicode/Is/DCinital.pl + ! MANIFEST lib/unicode/Is/Alnum.pl lib/unicode/Is/Alpha.pl + ! lib/unicode/Is/Graph.pl lib/unicode/Is/Print.pl + ! lib/unicode/Is/Punct.pl lib/unicode/Is/Space.pl + ! lib/unicode/Is/Word.pl lib/unicode/mktables.PL +____________________________________________________________________________ +[ 7393] By: jhi on 2000/10/21 18:06:05 + Log: Subject: [PATCH@blead Tie/Array.pm] Re: [ID 20001020.002] Tie::Array SPLICE method is buggy + From: Daniel Chetlin <daniel@chetlin.com> + Date: Sat, 21 Oct 2000 02:57:03 -0700 + Message-ID: <20001021025703.A2115@darkstar.chetlin.org> + Branch: perl + + t/lib/tie-splice.t + ! MANIFEST lib/Tie/Array.pm +____________________________________________________________________________ +[ 7391] By: jhi on 2000/10/21 14:37:49 + Log: Testcases for a #7383,#7385 related bug. + + Subject: PATCH Re: [ID 20001020.006] "$2$utf8" == modification of read-only-variable + From: Nicholas Clark <nick@ccl4.org> + Date: Sat, 21 Oct 2000 15:04:51 +0100 + Message-ID: <20001021150451.A51566@plum.flirble.org> + Branch: perl + ! t/pragma/utf8.t +____________________________________________________________________________ +[ 7390] By: jhi on 2000/10/21 14:35:57 + Log: Add a testcase for #7389. + Branch: perl + ! t/pragma/warn/op +____________________________________________________________________________ +[ 7389] By: jhi on 2000/10/21 14:26:45 + Log: Subject: Re: Creating const subs for constants. + From: John Tobey <jtobey@john-edwin-tobey.org> + Date: Fri, 20 Oct 2000 22:03:27 -0400 (EDT) + Message-Id: <m13mo0N-000FObC@feynman.localnet> + Branch: perl + ! cv.h embed.h embed.pl objXSUB.h op.c perlapi.c pod/perlapi.pod + ! proto.h sv.c +____________________________________________________________________________ +[ 7386] By: jhi on 2000/10/21 01:31:12 + Log: Update Changes. + Branch: perl + ! Changes patchlevel.h +____________________________________________________________________________ [ 7385] By: jhi on 2000/10/21 01:28:42 Log: The #7383 was right only in the context of the original bug report, not in more general case. @@ -6411,7 +7009,7 @@ ____________________________________________________________________________ ____________________________________________________________________________ [ 6450] By: jhi on 2000/07/26 18:41:40 Log: Subject: Minor doc patch: handy.h - From: Daniel =?iso-8859-1?Q?Mui=F1o?= <dmuino@afip.gov.ar> + From: Daniel Muiño <dmuino@afip.gov.ar> Date: Wed, 26 Jul 2000 15:34:25 -0300 Message-ID: <397F2F31.F3F9F4F3@afip.gov.ar> Branch: perl diff --git a/Changes5.6 b/Changes5.6 index 3dc17bc113..47adbffdb5 100644 --- a/Changes5.6 +++ b/Changes5.6 @@ -13319,7 +13319,7 @@ ____________________________________________________________________________ [ 3914] By: jhi on 1999/08/03 21:11:11 Log: The op/filetest.t failed subtest 7 if testing as root. - From: =?iso-8859-1?Q?Fran=E7ois=20D=E9sarm=E9nien?= <desar@club-internet.fr> + From: François Désarménien <desar@club-internet.fr> To: perl5-porters@perl.org Subject: [ID 19990727.039] Not OK: perl 5.00558 on i386-sco 3.2v5.0.4 Date: Tue, 27 Jul 1999 22:54:05 +0200 @@ -20,7 +20,7 @@ # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $ # -# Generated on Thu Oct 19 22:28:50 EET DST 2000 [metaconfig 3.0 PL70] +# Generated on Fri Oct 27 18:57:46 EET DST 2000 [metaconfig 3.0 PL70] # (with additional metaconfig patches by perlbug@perl.org) cat >/tmp/c1$$ <<EOF @@ -536,6 +536,8 @@ d_fstatvfs='' d_statvfs='' d_stdio_cnt_lval='' d_stdio_ptr_lval='' +d_stdio_ptr_lval_nochange_cnt='' +d_stdio_ptr_lval_sets_cnt='' d_stdiobase='' d_stdstdio='' stdio_base='' @@ -2906,7 +2908,7 @@ if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1 then echo "Looks kind of like an OSF/1 system, but we'll see..." echo exit 0 >osf1 -elif test `echo abc | tr a-z A-Z` = Abc ; then +elif test `echo abc | $tr a-z A-Z` = Abc ; then xxx=`./loc addbib blurfl $pth` if $test -f $xxx; then echo "Looks kind of like a USG system with BSD features, but we'll see..." @@ -3286,7 +3288,7 @@ esac case "$fn" in *\(*) - expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok + expr $fn : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok fn=`echo $fn | sed 's/(.*)//'` ;; esac @@ -4739,7 +4741,7 @@ unknown) s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g G s/\n/ /' | \ - sort | $sed -e 's/^.* //'` + $sort | $sed -e 's/^.* //'` eval set \$$# done $test -r $1 || set /usr/ccs/lib/libc.$so @@ -4799,7 +4801,7 @@ compiler, or your machine supports multiple models), you can override it here. EOM else dflt='' - echo $libpth | tr ' ' $trnl | sort | uniq > libpath + echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath cat >&4 <<EOM I can't seem to find your C library. I've looked in the following places: @@ -4817,7 +4819,7 @@ rp='Where is your C library?' libc="$ans" echo " " -echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames +echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames set X `cat libnames` shift xxx=files @@ -11479,6 +11481,82 @@ esac set d_stdio_cnt_lval eval $setvar + +: test whether setting _ptr sets _cnt as a side effect +d_stdio_ptr_lval_sets_cnt="$undef" +d_stdio_ptr_lval_nochange_cnt="$undef" +case "$d_stdio_ptr_lval$d_stdstdio" in +$define$define) + echo "Checking to see what happens if we set the stdio ptr..." >&4 +$cat >try.c <<EOP +#include <stdio.h> +/* Can we scream? */ +/* Eat dust sed :-) */ +#define FILE_ptr(fp) $stdio_ptr +#define FILE_cnt(fp) $stdio_cnt +int main() { + FILE *fp = fopen("try.c", "r"); + char c = getc(fp); + char *ptr; + size_t cnt; + if (!( + 18 <= FILE_cnt(fp) && + strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0 + )) { + puts("Fail even to read"); + exit (1); + } + ptr = FILE_ptr(fp); + cnt = FILE_cnt(fp); + + FILE_ptr(fp)+= 42; + + if (FILE_ptr(fp) != (ptr + 42)) { + printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42)); + exit (1); + } + if (FILE_cnt(fp) <= 20) { + printf ("Fail (<20 chars to test)"); + exit (1); + } + if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) { + puts("Fail compare"); + exit (1); + } + if (cnt == FILE_cnt(fp)) { + puts("Pass_unchanged"); + exit (0); + } + if (FILE_cnt(fp) == (cnt - 42)) { + puts("Pass_changed"); + exit (0); + } + printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp)); + return 1; + +} +EOP + set try + if eval $compile; then + case `./try$exe_ext` in + Pass_changed) + echo "Increasing ptr in your stdio decreases cnt by the same amount. Good." >&4 + d_stdio_ptr_lval_sets_cnt="$define" ;; + Pass_unchanged) + echo "Increasing ptr in your stdio leaves cnt unchanged. Good." >&4 + d_stdio_ptr_lval_nochange_cnt="$define" ;; + Fail*) + echo "Increasing ptr in your stdio didn't do exactly what I expected. We'll not be doing that then." >&4 ;; + *) + echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;; + esac + else + echo "It seems we can't set ptr in your stdio. Nevermind." >&4 + fi + $rm -f try.c try + ;; +esac + : see if _base is also standard val="$undef" case "$d_stdstdio" in @@ -14514,7 +14592,7 @@ EOSH ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b $cat Cppsym.know > Cppsym.c -$cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | sort | uniq > Cppsym.know +$cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know $rm -f Cppsym.a Cppsym.b Cppsym.c cat <<EOSH > Cppsym $startsh @@ -15580,6 +15658,8 @@ d_statfs_s='$d_statfs_s' d_statvfs='$d_statvfs' d_stdio_cnt_lval='$d_stdio_cnt_lval' d_stdio_ptr_lval='$d_stdio_ptr_lval' +d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt' +d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt' d_stdio_stream_array='$d_stdio_stream_array' d_stdiobase='$d_stdiobase' d_stdstdio='$d_stdstdio' @@ -16057,9 +16137,9 @@ echo "CONFIGDOTSH=true" >>config.sh : propagate old symbols if $test -f UU/config.sh; then - <UU/config.sh sort | uniq >UU/oldconfig.sh + <UU/config.sh $sort | $uniq >UU/oldconfig.sh sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\ - sort | uniq -u >UU/oldsyms + $sort | $uniq -u >UU/oldsyms set X `cat UU/oldsyms` shift case $# in diff --git a/MAINTAIN b/MAINTAIN deleted file mode 100644 index cd1e4ed3c3..0000000000 --- a/MAINTAIN +++ /dev/null @@ -1,904 +0,0 @@ -# In addition to actual maintainers this file also lists "interested parties". -# -# The maintainer aliases come from AUTHORS. They may be defined in -# a layered way: 'doc' expands to tchrist which expands to Tom Christiansen. -# -# A file that is in MANIFEST need not be here at all. -# In any case, if nobody else is listed as maintainer, -# PUMPKING (from AUTHORS) should be it. -# -# Filenames can contain * which means qr(.*) on the filenames found -# using File::Find (it's _not_ filename glob). -# -# Maintainership definitions are of course cumulative: if A maintains -# X/* and B maintains X/Y/Z, if X/Y/Z is changed, both A and B should -# be notified. -# -# The filename(glob) and the maintainer(s) are separated by one or more tabs. - -Artistic -Changes -Changes5.000 -Changes5.001 -Changes5.002 -Changes5.003 -Changes5.004 -Changes5.005 -Configure cfg -Copying -EXTERN.h -INSTALL -INTERN.h -MANIFEST -Makefile.SH -Makefile.micro simon -objXSUB.h -Policy_sh.SH -Porting/* cfg -Porting/Contract -Porting/Glossary -Porting/config.sh -Porting/config_H -Porting/findvars -Porting/fixCORE -Porting/fixvars -Porting/genlog -Porting/makerel -Porting/p4d2p -Porting/p4desc -Porting/patching.pod dgris -Porting/patchls -Porting/pumpkin.pod -README -README.amiga amiga -README.beos beos -README.cygwin cygwin -README.dos dos -README.hpux hpux -README.lexwarn lexwarn -README.machten machten -README.micro simon -README.mpeix mpeix -README.os2 os2 -README.os390 os390 -README.plan9 plan9 -README.posix-bc posix-bc -README.qnx qnx -README.threads -README.vmesa vmesa -README.vms vms -README.vos vos -README.win32 win32 -Todo -Todo-5.005 -Todo.micro simon -XSlock.h -XSUB.h -av.c -av.h -beos/* beos -bytecode.h -bytecode.pl -byterun.c -byterun.h -cc_runtime.h -cflags.SH -config_h.SH cfg -configpm -configure.com vms -configure.gnu -cop.h -cv.h -cygwin/* cygwin -deb.c -djgpp/* dos -doio.c -doop.c -dosish.h -dump.c -ebcdic.c -eg/ADB -eg/README -eg/cgi/* cgi -eg/changes -eg/client -eg/down -eg/dus -eg/findcp -eg/findtar -eg/g/gcp -eg/g/gcp.man -eg/g/ged -eg/g/ghosts -eg/g/gsh -eg/g/gsh.man -eg/muck -eg/muck.man -eg/myrup -eg/nih -eg/relink -eg/rename -eg/rmfrom -eg/scan/scan_df -eg/scan/scan_last -eg/scan/scan_messages -eg/scan/scan_passwd -eg/scan/scan_ps -eg/scan/scan_sudo -eg/scan/scan_suid -eg/scan/scanner -eg/server -eg/shmkill -eg/sysvipc/README -eg/sysvipc/ipcmsg -eg/sysvipc/ipcsem -eg/sysvipc/ipcshm -eg/travesty -eg/unuc -eg/uudecode -eg/van/empty -eg/van/unvanish -eg/van/vanexp -eg/van/vanish -eg/who -eg/wrapsuid -emacs/* ilya -embed.h -embed.pl -embedvar.h -ext/*/hints* cfg -ext/B/* nik -ext/B/B/Deparse.pm smccam -ext/DB_File* pmarquess -ext/DB_File/hints/dynixptx.pl dynix/ptx -ext/Data/Dumper/* gsar -ext/Devel/DProf/* -ext/Devel/Peek/* ilya -ext/DynaLoader/DynaLoader_pm.PL -ext/DynaLoader/Makefile.PL -ext/DynaLoader/README -ext/DynaLoader/dl_aix.xs aix -ext/DynaLoader/dl_dld.xs rsanders -ext/DynaLoader/dl_dlopen.xs timb -ext/DynaLoader/dl_hpux.xs hpux -ext/DynaLoader/dl_mpeix.xs mpeix -ext/DynaLoader/dl_next.xs next -ext/DynaLoader/dl_none.xs -ext/DynaLoader/dl_vms.xs vms -ext/DynaLoader/dl_vmesa.xs vmesa -ext/DynaLoader/dlutils.c -ext/DynaLoader/hints/linux.pl linux -ext/Errno/* gbarr -ext/Fcntl/* jhi -ext/GDBM_File/GDBM_File.pm -ext/GDBM_File/GDBM_File.xs -ext/GDBM_File/Makefile.PL -ext/GDBM_File/typemap -ext/IO/* -ext/IPC/SysV/* gbarr -ext/NDBM_File/Makefile.PL -ext/NDBM_File/NDBM_File.pm -ext/NDBM_File/NDBM_File.xs -ext/NDBM_File/hints/dec_osf.pl dec_osf -ext/NDBM_File/hints/dynixptx.pl dynix/ptx -ext/NDBM_File/hints/solaris.pl solaris -ext/NDBM_File/hints/svr4.pl svr4 -ext/NDBM_File/typemap -ext/ODBM_File/Makefile.PL -ext/ODBM_File/ODBM_File.pm -ext/ODBM_File/ODBM_File.xs -ext/ODBM_File/hints/dec_osf.pl dec_osf -ext/ODBM_File/hints/hpux.pl hpux -ext/ODBM_File/hints/sco.pl sco -ext/ODBM_File/hints/solaris.pl solaris -ext/ODBM_File/hints/svr4.pl svr4 -ext/ODBM_File/hints/ultrix.pl -ext/ODBM_File/typemap -ext/Opcode/Makefile.PL -ext/Opcode/Opcode.pm -ext/Opcode/Opcode.xs -ext/Opcode/Safe.pm -ext/Opcode/ops.pm -ext/POSIX/Makefile.PL -ext/POSIX/POSIX.pm -ext/POSIX/POSIX.pod -ext/POSIX/POSIX.xs -ext/POSIX/hints/bsdos.pl bsdos -ext/POSIX/hints/dynixptx.pl dynix/ptx -ext/POSIX/hints/freebsd.pl freebsd -ext/POSIX/hints/linux.pl linux -ext/POSIX/hints/netbsd.pl netbsd -ext/POSIX/hints/next_3.pl next -ext/POSIX/hints/openbsd.pl openbsd -ext/POSIX/hints/sunos_4.pl sunos4 -ext/POSIX/typemap -ext/SDBM_File/Makefile.PL -ext/SDBM_File/SDBM_File.pm -ext/SDBM_File/SDBM_File.xs -ext/SDBM_File/sdbm/CHANGES -ext/SDBM_File/sdbm/COMPARE -ext/SDBM_File/sdbm/Makefile.PL -ext/SDBM_File/sdbm/README -ext/SDBM_File/sdbm/README.too -ext/SDBM_File/sdbm/biblio -ext/SDBM_File/sdbm/dba.c -ext/SDBM_File/sdbm/dbd.c -ext/SDBM_File/sdbm/dbe.1 -ext/SDBM_File/sdbm/dbe.c -ext/SDBM_File/sdbm/dbm.c -ext/SDBM_File/sdbm/dbm.h -ext/SDBM_File/sdbm/dbu.c -ext/SDBM_File/sdbm/grind -ext/SDBM_File/sdbm/hash.c -ext/SDBM_File/sdbm/linux.patches -ext/SDBM_File/sdbm/makefile.sdbm -ext/SDBM_File/sdbm/pair.c -ext/SDBM_File/sdbm/pair.h -ext/SDBM_File/sdbm/readme.ms -ext/SDBM_File/sdbm/sdbm.3 -ext/SDBM_File/sdbm/sdbm.c -ext/SDBM_File/sdbm/sdbm.h -ext/SDBM_File/sdbm/tune.h -ext/SDBM_File/sdbm/util.c -ext/SDBM_File/typemap -ext/Socket/Makefile.PL -ext/Socket/Socket.pm -ext/Socket/Socket.xs -ext/Thread/Makefile.PL -ext/Thread/Notes -ext/Thread/README -ext/Thread/Thread.pm -ext/Thread/Thread.xs -ext/Thread/Thread/Queue.pm -ext/Thread/Thread/Semaphore.pm -ext/Thread/Thread/Signal.pm -ext/Thread/Thread/Specific.pm -ext/Thread/create.t -ext/Thread/die.t -ext/Thread/die2.t -ext/Thread/io.t -ext/Thread/join.t -ext/Thread/join2.t -ext/Thread/list.t -ext/Thread/lock.t -ext/Thread/queue.t -ext/Thread/specific.t -ext/Thread/sync.t -ext/Thread/sync2.t -ext/Thread/typemap -ext/Thread/unsync.t -ext/Thread/unsync2.t -ext/Thread/unsync3.t -ext/Thread/unsync4.t -ext/attrs/Makefile.PL -ext/attrs/attrs.pm -ext/attrs/attrs.xs -ext/re/Makefile.PL -ext/re/hints/mpeix.pl mpeix -ext/re/re.pm regex -ext/re/re.xs regex -ext/util/make_ext -ext/util/mkbootstrap -fakethr.h -form.h -global.sym -globals.c -globvar.sym -gv.c -gv.h -h2pl/README -h2pl/cbreak.pl -h2pl/cbreak2.pl -h2pl/eg/sizeof.ph -h2pl/eg/sys/errno.pl -h2pl/eg/sys/ioctl.pl -h2pl/eg/sysexits.pl -h2pl/getioctlsizes -h2pl/mksizes -h2pl/mkvars -h2pl/tcbreak -h2pl/tcbreak2 -handy.h -hints/* cfg -hints/3b1.sh -hints/3b1cc -hints/README.hints -hints/aix.sh aix -hints/altos486.sh -hints/amigaos.sh amiga -hints/apollo.sh -hints/aux_3.sh -hints/beos.sh beos -hints/broken-db.msg -hints/bsdos.sh bsdos -hints/convexos.sh -hints/cxux.sh cxux -hints/cygwin.sh cygwin -hints/dcosx.sh -hints/dec_osf.sh dec_osf -hints/dgux.sh dgux -hints/dos_djgpp.sh dos -hints/dynix.sh dynix/ptx -hints/dynixptx.sh dynix/ptx -hints/epix.sh -hints/esix4.sh -hints/fps.sh -hints/freebsd.sh freebsd -hints/genix.sh -hints/greenhills.sh -hints/hpux.sh hpux -hints/i386.sh -hints/irix* irix -hints/isc.sh -hints/isc_2.sh -hints/linux.sh linux -hints/lynxos.sh -hints/machten.sh machten -hints/machten_2.sh -hints/mips.sh -hints/mpc.sh -hints/mpeix.sh mpeix -hints/ncr_tower.sh -hints/netbsd.sh netbsd -hints/newsos4.sh -hints/next* step -hints/openbsd.sh openbsd -hints/opus.sh -hints/os2.sh os2 -hints/os390.sh os390 -hints/posix-bc.sh posix-bc -hints/powerux.sh powerux -hints/qnx.sh qnx -hints/sco.sh -hints/sco_2_3_0.sh -hints/sco_2_3_1.sh -hints/sco_2_3_2.sh -hints/sco_2_3_3.sh -hints/sco_2_3_4.sh -hints/solaris_2.sh solaris -hints/stellar.sh -hints/sunos_4* sunos4 -hints/svr4.sh svr4 -hints/ti1500.sh -hints/titanos.sh -hints/ultrix_4.sh ultrix -hints/umips.sh -hints/unicos* unicos -hints/unisysdynix.sh -hints/utekv.sh -hints/uts.sh -hints/uwin.sh uwin -hints/vmesa.sh vmesa -hv.c -hv.h -installhtml -installman -installperl -intrpvar.h -iperlsys.h -jpl/* jpl -keywords.h -keywords.pl -lib/AnyDBM_File.pm -lib/AutoLoader.pm -lib/AutoSplit.pm -lib/Benchmark.pm jhi,timb -lib/CGI* cgi -lib/CPAN* cpan -lib/Carp.pm -lib/Class/Struct.pm tchrist -lib/Cwd.pm -lib/Devel/SelfStubber.pm -lib/DirHandle.pm -lib/English.pm -lib/Env.pm -lib/Exporter.pm -lib/ExtUtils/* mm -lib/ExtUtils/Command.pm nik -lib/ExtUtils/Embed.pm doug -lib/ExtUtils/Installed.pm alan.burlison -lib/ExtUtils/Mksymlists.pm cbail -lib/ExtUtils/MM_OS2.pm os2 -lib/ExtUtils/MM_VMS.pm vms -lib/ExtUtils/MM_Win32.pm win32 -lib/ExtUtils/Packlist.pm alan.burlison -lib/Fatal.pm -lib/File/Basename.pm -lib/File/CheckTree.pm -lib/File/Compare.pm nik -lib/File/Copy.pm cbail -lib/File/DosGlob.pm gsar -lib/File/Find.pm -lib/File/Path.pm timb,cbail -lib/File/Spec* kjahds -lib/File/Spec/Mac.pm schinder -lib/File/Spec/OS2.pm ilya -lib/File/Spec/VMS.pm vms -lib/File/Spec/Win32.pm win32 -lib/File/Temp.pm tjenness -lib/File/stat.pm tchrist -lib/FileCache.pm -lib/FileHandle.pm -lib/FindBin.pm -lib/Getopt/Long.pm jvromans -lib/I18N/Collate.pm jhi -lib/IPC/Open2.pm -lib/IPC/Open3.pm -lib/Math/BigFloat.pm mbiggar -lib/Math/BigInt.pm mbiggar -lib/Math/Complex.pm complex -lib/Math/Trig.pm complex -lib/Net/Ping.pm -lib/Net/hostent.pm tchrist -lib/Net/netent.pm tchrist -lib/Net/protoent.pm tchrist -lib/Net/servent.pm tchrist -lib/Pod/Checker.pm bradapp -lib/Pod/Functions.pm -lib/Pod/Html.pm tchrist -lib/Pod/InputObjects.pm bradapp -lib/Pod/LaTeX.pm tjenness -lib/Pod/Man.pm rra -lib/Pod/Parser.pm bradapp -lib/Pod/PlainText.pm bradapp -lib/Pod/Select.pm bradapp -lib/Pod/Text.pm rra -lib/Pod/Text/* rra -lib/Pod/Usage.pm bradapp -lib/Search/Dict.pm -lib/SelectSaver.pm -lib/SelfLoader.pm -lib/Shell.pm -lib/Symbol.pm -lib/Sys/Hostname.pm sundstrom -lib/Sys/Syslog.pm tchrist -lib/Term/ANSIcolor.pm rra -lib/Term/Cap.pm -lib/Term/Complete.pm wayne.thompson -lib/Term/ReadLine.pm -lib/Test.pm -lib/Test/Harness.pm k -lib/Text/Abbrev.pm -lib/Text/ParseWords.pm pomeranz -lib/Text/Soundex.pm mikestok -lib/Text/Tabs.pm muir -lib/Text/Wrap.pm muir -lib/Tie/Array.pm nik -lib/Tie/Handle.pm -lib/Tie/Hash.pm -lib/Tie/RefHash.pm gsar -lib/Tie/Scalar.pm -lib/Tie/SubstrHash.pm -lib/Time/Local.pm pomeranz -lib/Time/gmtime.pm tchrist -lib/Time/localtime.pm tchrist -lib/Time/tm.pm tchrist -lib/UNIVERSAL.pm -lib/User/grent.pm tchrist -lib/User/pwent.pm tchrist -lib/abbrev.pl -lib/assert.pl -lib/autouse.pm -lib/base.pm -lib/bigfloat.pl -lib/bigint.pl -lib/bigrat.pl -lib/blib.pm -lib/cacheout.pl -lib/charnames.pm ilya -lib/chat2.pl -lib/complete.pl -lib/constant.pm -lib/ctime.pl -lib/diagnostics.pm doc -lib/dotsh.pl -lib/dumpvar.pl -lib/exceptions.pl -lib/fastcwd.pl -lib/fields.pm -lib/filetest.pm -lib/find.pl -lib/finddepth.pl -lib/flush.pl -lib/ftp.pl -lib/getcwd.pl -lib/getopt.pl -lib/getopts.pl -lib/hostname.pl -lib/importenv.pl -lib/integer.pm -lib/less.pm -lib/lib.pm -lib/locale.pm locale -lib/look.pl -lib/newgetopt.pl -lib/open2.pl -lib/open3.pl -lib/overload.pm ilya -lib/perl5db.pl ilya -lib/pwd.pl -lib/shellwords.pl -lib/sigtrap.pm -lib/stat.pl -lib/strict.pm -lib/subs.pm -lib/syslog.pl -lib/tainted.pl -lib/termcap.pl -lib/timelocal.pl -lib/unicode/*Ethiopic* dmulholl -lib/unicode* lwall -lib/utf8* lwall -lib/validate.pl -lib/vars.pm -lib/warning.pm lexwarn -makeaperl.SH -makedepend.SH -makedir.SH -malloc.c ilya -mg.c -mg.h -minimod.pl -miniperlmain.c -mpeix/* mpeix -mv-if-diff -myconfig -nostdio.h -op.c -op.h -opcode.h -opcode.pl -os2/* ilya -patchlevel.h -perl.c -perl.h -perl_exp.SH -perlio.c -perlio.h -perlio.sym -perlsdio.h -perlsfio.h -perlsh -perlvars.h -perly.c -perly_c.diff -perly.fixer -perly.h -perly.y -plan9/* plan9 -pod/pod2usage.PL bradapp -pod/podchecker.PL bradapp -pod/podselect.PL bradapp -pod/* doc -pod/buildtoc -pod/checkpods.PL -pod/perl.pod -pod/perlapio.pod -pod/perlbook.pod -pod/perlbot.pod -pod/perlcall.pod pmarquess -pod/perldata.pod -pod/perldebug.pod -pod/perldelta.pod -pod/perl5005delta.pod -pod/perl5004delta.pod -pod/perldebtut.pod richard -pod/perldiag.pod -pod/perldsc.pod tchrist -pod/perlembed.pod doug,jon -pod/perlebcdic.pod pvhp -pod/perlfaq* gnat -pod/perlform.pod -pod/perlfunc.pod -pod/perlguts.pod -pod/perlhack.pod simon -pod/perlhist.pod jhi -pod/perlipc.pod tchrist -pod/perllocale.pod locale -pod/perllol.pod tchrist -pod/perlmod.pod -pod/perlmodinstall.pod jon -pod/perlmodlib.pod simon -pod/perlmodlib.PL simon -pod/perlnewmod.pod simon -pod/perlobj.pod -pod/perlop.pod -pod/perlpod.pod lwall -pod/perlport.pod pudge -pod/perlposix-bc.pod posix-bc -pod/perlre.pod regex -pod/perlref.pod -pod/perlreftut.pod mjd -pod/perlrequick.pod mkvale -pod/perlretut.pod mkvale -pod/perlrun.pod -pod/perlsec.pod -pod/perlstyle.pod -pod/perlsub.pod -pod/perlsyn.pod -pod/perltie.pod tchrist -pod/perltoc.pod -pod/perltoot.pod tchrist -pod/perltrap.pod -pod/perlunicode.pod simon -pod/perlutil.pod simon -pod/perlvar.pod -pod/perlxs.pod roehrich -pod/perlxstut.pod okamoto -pod/pod2html.PL -pod/pod2latex.PL -pod/pod2man.PL -pod/pod2text.PL -pod/roffitall -pod/rofftoc -pod/splitman -pod/splitpod -pp.c -pp.h -pp.sym -pp_ctl.c -pp_hot.c -pp_proto.h -pp_sys.c -proto.h -qnx/* qnx -regcomp.c regex -regcomp.h regex -regcomp.pl regex -regcomp.sym regex -regexec.c regex -regexp.h regex -regnodes.h regex -run.c -scope.c -scope.h -sv.c -sv.h -t/README -t/TEST -t/UTEST -t/base/cond.t -t/base/if.t -t/base/lex.t -t/base/pat.t -t/base/rs.t -t/base/term.t -t/cmd/elsif.t -t/cmd/for.t -t/cmd/mod.t -t/cmd/subval.t -t/cmd/switch.t -t/cmd/while.t -t/comp/cmdopt.t -t/comp/colon.t -t/comp/cpp.aux -t/comp/cpp.t -t/comp/decl.t -t/comp/multiline.t -t/comp/package.t -t/comp/proto.t -t/comp/redef.t -t/comp/require.t -t/comp/script.t -t/comp/term.t -t/comp/use.t -t/harness -t/io/argv.t -t/io/dup.t -t/io/fs.t -t/io/inplace.t -t/io/iprefix.t -t/io/pipe.t -t/io/print.t -t/io/read.t -t/io/tell.t -t/lib/abbrev.t -t/lib/anydbm.t -t/lib/ansicolor.t rra -t/lib/autoloader.t -t/lib/basename.t -t/lib/bigint.t -t/lib/bigintpm.t -t/lib/cgi-form.t -t/lib/cgi-function.t -t/lib/cgi-html.t -t/lib/cgi-request.t -t/lib/charnames.t ilya -t/lib/checktree.t -t/lib/complex.t complex -t/lib/db-btree.t pmarquess -t/lib/db-hash.t pmarquess -t/lib/db-recno.t pmarquess -t/lib/dirhand.t -t/lib/dosglob.t -t/lib/dumper-ovl.t gsar -t/lib/dumper.t gsar -t/lib/english.t -t/lib/env.t -t/lib/errno.t gbarr -t/lib/fields.t -t/lib/filecache.t -t/lib/filecopy.t -t/lib/filefind.t -t/lib/filehand.t -t/lib/filepath.t -t/lib/filespec.t kjahds -t/lib/findbin.t -t/lib/ftmp-*.t tjenness -t/lib/gol-basic.t jvromans -t/lib/gol-compat.t jvromans -t/lib/gol-linkage.t jvromans -t/lib/gdbm.t -t/lib/getopt.t jvromans -t/lib/h2ph* kstar -t/lib/hostname.t -t/lib/io_* gbarr -t/lib/ipc_sysv.t gbarr -t/lib/ndbm.t -t/lib/odbm.t -t/lib/opcode.t -t/lib/open2.t -t/lib/open3.t -t/lib/ops.t -t/lib/parsewords.t -t/lib/ph.t kstar -t/lib/posix.t -t/lib/safe1.t -t/lib/safe2.t -t/lib/sdbm.t -t/lib/searchdict.t -t/lib/selectsaver.t -t/lib/socket.t -t/lib/soundex.t -t/lib/symbol.t -t/lib/texttabs.t muir -t/lib/textfill.t muir -t/lib/textwrap.t -t/lib/thr5005.t -t/lib/tie-push.t -t/lib/tie-stdarray.t -t/lib/tie-stdpush.t -t/lib/timelocal.t -t/lib/trig.t -t/op/append.t -t/op/arith.t -t/op/array.t -t/op/assignwarn.t -t/op/auto.t -t/op/avhv.t -t/op/bop.t -t/op/chop.t -t/op/closure.t -t/op/cmp.t -t/op/cond.t -t/op/context.t -t/op/defins.t -t/op/delete.t -t/op/die.t -t/op/die_exit.t -t/op/do.t -t/op/each.t -t/op/eval.t -t/op/exec.t -t/op/exp.t -t/op/filetest.t -t/op/flip.t -t/op/fork.t -t/op/glob.t -t/op/goto.t -t/op/goto_xs.t -t/op/grent.t -t/op/groups.t -t/op/gv.t -t/op/hashwarn.t -t/op/inc.t -t/op/index.t -t/op/int.t -t/op/join.t -t/op/lex_assign.t -t/op/list.t -t/op/local.t -t/op/magic.t -t/op/method.t -t/op/misc.t -t/op/mkdir.t -t/op/my.t -t/op/nothr5005.t -t/op/oct.t -t/op/ord.t -t/op/pack.t -t/op/pat.t -t/op/pos.t -t/op/push.t -t/op/pwent.t -t/op/quotemeta.t -t/op/rand.t -t/op/range.t -t/op/re_tests regex -t/op/read.t -t/op/readdir.t -t/op/recurse.t -t/op/ref.t -t/op/regexp.t regex -t/op/regexp_noamp.t regex -t/op/repeat.t -t/op/runlevel.t -t/op/sleep.t -t/op/sort.t -t/op/splice.t -t/op/split.t -t/op/sprintf.t -t/op/stat.t -t/op/study.t -t/op/subst.t -t/op/substr.t -t/op/sysio.t -t/op/taint.t -t/op/tie.t -t/op/tiearray.t -t/op/tiehandle.t -t/op/time.t -t/op/tr.t -t/op/undef.t -t/op/universal.t -t/op/unshift.t -t/op/vec.t -t/op/wantarray.t -t/op/write.t -t/pod/* bradapp -t/pragma/constant.t -t/pragma/locale.t locale -t/pragma/overload.t ilya -t/pragma/strict-refs -t/pragma/strict-subs -t/pragma/strict-vars -t/pragma/strict.t -t/pragma/subs.t -t/pragma/warn/* lexwarn -t/pragma/warn/regcomp regex -t/pragma/warn/regexec regex -t/pragma/warning.t lexwarn -taint.c -thrdvar.h -thread.h -toke.c -uconfig.h simon -uconfig.sh simon -universal.c -unixish.h -utf* lwall -utils/Makefile -utils/c2ph.PL tchrist -utils/h2ph.PL kstar -utils/h2xs.PL -utils/perlbug.PL -utils/perlcc.PL -utils/perldoc.PL -utils/pl2pm.PL -utils/splain.PL doc -vmesa/* vmesa -vms/* vms -vos/* vos -warning.h lexwarn -warning.pl lexwarn -win32/* -writemain.SH -x2p/EXTERN.h -x2p/INTERN.h -x2p/Makefile.SH -x2p/a2p.c -x2p/a2p.h -x2p/a2p.pod -x2p/a2p.y -x2p/a2py.c -x2p/cflags.SH -x2p/find2perl.PL -x2p/hash.c -x2p/hash.h -x2p/proto.h -x2p/s2p.PL -x2p/str.c -x2p/str.h -x2p/util.c -x2p/util.h -x2p/walk.c @@ -13,7 +13,6 @@ Copying The GNU General Public License EXTERN.h Included before foreign .h files INSTALL Detailed installation instructions INTERN.h Included before domestic .h files -MAINTAIN Who maintains which files MANIFEST This list of files Makefile.SH A script that generates Makefile Makefile.micro microperl Makefile @@ -32,6 +31,7 @@ Porting/p4desc Smarter 'p4 describe', outputs diffs for new files Porting/patching.pod How to report changes made to Perl Porting/patchls Flexible patch file listing utility Porting/pumpkin.pod Guidelines and hints for Perl maintainers +Porting/repository.pod How to use the Perl repository README The Instructions README.Y2K Notes about Year 2000 concerns README.aix Notes about AIX port @@ -429,7 +429,6 @@ ext/re/re.xs re extension external subroutines ext/util/make_ext Used by Makefile to execute extension Makefiles ext/util/mkbootstrap Turns ext/*/*_BS into bootstrap info fakethr.h Fake threads header -fix_pl Fix up patchlevel.h for repository perls form.h Public declarations for the above global.sym Symbols that need hiding when embedded globals.c File to declare global symbols (for shared library) @@ -914,9 +913,9 @@ lib/unicode/Is/DCcompat.pl Unicode character database lib/unicode/Is/DCfinal.pl Unicode character database lib/unicode/Is/DCfont.pl Unicode character database lib/unicode/Is/DCfraction.pl Unicode character database -lib/unicode/Is/DCinital.pl Unicode character database lib/unicode/Is/DCinitial.pl Unicode character database lib/unicode/Is/DCisolated.pl Unicode character database +lib/unicode/Is/DCmedial.pl Unicode character database lib/unicode/Is/DCnarrow.pl Unicode character database lib/unicode/Is/DCnoBreak.pl Unicode character database lib/unicode/Is/DCsmall.pl Unicode character database @@ -1444,6 +1443,7 @@ t/lib/texttabs.t See if Text::Tabs works t/lib/textwrap.t See if Text::Wrap::wrap works t/lib/thr5005.t Test 5.005-style threading (skipped if no use5005threads) t/lib/tie-push.t Test for Tie::Array +t/lib/tie-splice.t Test for Tie::Array::SPLICE t/lib/tie-stdarray.t Test for Tie::StdArray t/lib/tie-stdhandle.t Test for Tie::StdHandle t/lib/tie-stdpush.t Test for Tie::StdArray @@ -1691,10 +1691,13 @@ vms/writemain.pl Generate perlmain.c from miniperlmain.c+extensions vos/Changes Changes made to port Perl to the VOS operating system vos/build.cm VOS command macro to build Perl vos/compile_perl.cm VOS command macro to build multiple version of Perl -vos/config.def input for config.pl -vos/config.h config.h for VOS +vos/config.alpha.def definitions used by config.pl +vos/config.ga.def definitions used by config.pl +vos/config.alpha.h config.h for use with alpha VOS POSIX.1 support +vos/config.ga.h config.h for use with generally-available VOS POSIX.1 support vos/config.pl script to convert a config_h.SH to a config.h -vos/config_h.SH_orig config_h.SH at the time config.h was created +vos/configure_perl.cm VOS command macro to configure perl before building +vos/install_perl.cm VOS command macro to install perl after building vos/perl.bind VOS bind control file vos/test_vos_dummies.c Test program for "vos_dummies.c" vos/vos_dummies.c Wrappers to soak up undefined functions diff --git a/Makefile.SH b/Makefile.SH index 5418fc45f2..14170b39a8 100644 --- a/Makefile.SH +++ b/Makefile.SH @@ -324,14 +324,6 @@ ext.libs: $(static_ext) !NO!SUBS! -# if test -f .patch ; then $spitshell >>Makefile <<'!NO!SUBS!' -# patchlevel.h: .patch -# perl fix_pl || (make -f Makefile.micro && ./microperl fix_pl) -# $(SHELL) Makefile.SH -# fi -# -# !NO!SUBS! - # How to build libperl. This is still rather convoluted. # Load up custom Makefile.SH fragment for shared loading and executables: case "$osname" in @@ -618,6 +610,11 @@ perly.c: perly.y perly.h: perly.y -@sh -c true +PERLYVMS = vms/perly_c.vms vms/perly_h.vms + +$(PERLYVMS): perly.c perly.h vms/vms_yfix.pl + perl vms/vms_yfix.pl perly.c perly.h vms/perly_c.vms vms/perly_h.vms + # No compat3.sym here since and including the 5.004_50. # No interp.sym since 5.005_03. SYM = global.sym globvar.sym perlio.sym pp.sym @@ -642,6 +639,31 @@ CHMOD_W = chmod +w # To force them to be regenerated, type # make regen_headers +keywords.h: keywords.pl + -perl keywords.pl + +OPCODE_PL_OUTPUT = opcode.h opnames.h pp_proto.h pp.sym + +$(OPCODE_PL_OUTPUT): opcode.pl + -perl opcode.pl + +# Really the prerequisites for the next rule should only be "embed.pl pp.sym" +# Writing it this way gives make a big hint to always run opcode.pl before +# embed.pl. The alternative - running embed.pl then opcode.pl causes embed.pl +# to be re-run next make invocation, and then all object files get recompiled. + +proto.h embed.h embedvar.h global.sym objXSUB.h perlapi.h perlapi.c pod/perlintern.pod pod/perlapi.pod: embed.pl $(OPCODE_PL_OUTPUT) + -perl embed.pl + +ext/ByteLoader/byterun.h ext/ByteLoader/byterun.c ext/B/B/Asmdata.pm: bytecode.pl + -perl bytecode.pl + +regnodes.h: regcomp.pl + -perl regcomp.pl + +warnings.h lib/warnings.pm: warnings.pl + -perl warnings.pl + AUTOGEN_FILES = keywords.h opcode.h opnames.h pp_proto.h pp.sym proto.h \ embed.h embedvar.h global.sym \ pod/perlintern.pod pod/perlapi.pod \ @@ -661,6 +683,8 @@ regen_headers: FORCE regen_pods: FORCE -cd pod; $(LDLIBPTH) make regen_pods +regen_all: $(PERLYVMS) regen_headers regen_pods + # Extensions: # Names added to $(dynamic_ext) or $(static_ext) or $(nonxs_ext) will # automatically get built. There should ordinarily be no need to change diff --git a/Porting/Glossary b/Porting/Glossary index 1b93821e9b..40e468d56a 100644 --- a/Porting/Glossary +++ b/Porting/Glossary @@ -1478,6 +1478,15 @@ d_stdio_ptr_lval (d_stdstdio.U): This variable conditionally defines STDIO_PTR_LVALUE if the FILE_ptr macro can be used as an lvalue. +d_stdio_ptr_lval_nochange_cnt (d_stdstdio.U): + This symbol is defined if using the FILE_ptr macro as an lvalue + to increase the pointer by n leaves File_cnt(fp) unchanged. + +d_stdio_ptr_lval_sets_cnt (d_stdstdio.U): + This symbol is defined if using the FILE_ptr macro as an lvalue + to increase the pointer by n has the side effect of decreasing the + value of File_cnt(fp) by n. + d_stdio_stream_array (stdio_streams.U): This variable tells whether there is an array holding the stdio streams. diff --git a/Porting/config.sh b/Porting/config.sh index 632c469288..2c9a49e235 100644 --- a/Porting/config.sh +++ b/Porting/config.sh @@ -8,7 +8,7 @@ # Package name : perl5 # Source directory : /m/fs/work/work/permanent/perl/pp4/perl -# Configuration time: Fri Oct 13 02:12:22 EET DST 2000 +# Configuration time: Tue Oct 24 21:07:39 EET DST 2000 # Configured by : jhi # Target system : osf1 alpha.hut.fi v4.0 878 alpha @@ -62,7 +62,7 @@ ccsymbols='__alpha=1 __LANGUAGE_C__=1 __osf__=1 __unix__=1 _LONGLONG=1 _SYSTYPE_ ccversion='V5.6-082' cf_by='jhi' cf_email='yourname@yourhost.yourplace.com' -cf_time='Fri Oct 13 02:12:22 EET DST 2000' +cf_time='Tue Oct 24 21:07:39 EET DST 2000' charsize='1' chgrp='' chmod='' @@ -336,6 +336,8 @@ d_statfs_s='define' d_statvfs='define' d_stdio_cnt_lval='define' d_stdio_ptr_lval='define' +d_stdio_ptr_lval_nochange_cnt='undef' +d_stdio_ptr_lval_sets_cnt='undef' d_stdio_stream_array='define' d_stdiobase='define' d_stdstdio='define' diff --git a/Porting/config_H b/Porting/config_H index 149760ceaf..3cbfeaebf9 100644 --- a/Porting/config_H +++ b/Porting/config_H @@ -17,7 +17,7 @@ /* * Package name : perl5 * Source directory : /m/fs/work/work/permanent/perl/pp4/perl - * Configuration time: Fri Oct 13 02:12:22 EET DST 2000 + * Configuration time: Tue Oct 24 21:07:39 EET DST 2000 * Configured by : jhi * Target system : osf1 alpha.hut.fi v4.0 878 alpha */ @@ -2028,12 +2028,23 @@ * This symbol is defined if the FILE_cnt macro can be used as an * lvalue. */ +/* STDIO_PTR_LVAL_SETS_CNT: + * This symbol is defined if using the FILE_ptr macro as an lvalue + * to increase the pointer by n has the side effect of decreasing the + * value of File_cnt(fp) by n. + */ +/* STDIO_PTR_LVAL_NOCHANGE_CNT: + * This symbol is defined if using the FILE_ptr macro as an lvalue + * to increase the pointer by n leaves File_cnt(fp) unchanged. + */ #define USE_STDIO_PTR /**/ #ifdef USE_STDIO_PTR #define FILE_ptr(fp) ((fp)->_ptr) #define STDIO_PTR_LVALUE /**/ #define FILE_cnt(fp) ((fp)->_cnt) #define STDIO_CNT_LVALUE /**/ +/*#define STDIO_PTR_LVAL_SETS_CNT / **/ +/*#define STDIO_PTR_LVAL_NOCHANGE_CNT / **/ #endif /* USE_STDIO_BASE: diff --git a/Porting/repository.pod b/Porting/repository.pod new file mode 100644 index 0000000000..5f1338dd64 --- /dev/null +++ b/Porting/repository.pod @@ -0,0 +1,327 @@ +=head1 NAME + +repository - Using the Perl repository + +This document describes what a Perl Porter needs to do +to start using the Perl repository. + +=head1 Prerequisites + +You'll need to get hold of the following software. + +=over 4 + +=item Perforce + +Download a perforce client from: + + http://www.perforce.com/perforce/loadprog.html + +You'll probably also want to look at: + + http://www.perforce.com/perforce/technical.html + +where you can look at or download its documentation. + +=item ssh + +If you don't already have access to an ssh client, then look at its +home site C<http://www.cs.hut.fi/ssh> which mentions ftp sites from +which it's available. You only need to build the client parts (ssh +and ssh-keygen should suffice). + +=back + +=head1 Creating an SSH Key Pair + +If you already use ssh and want to use the same key pair for perl +repository access then you can skip the rest of this section. +Otherwise, generate an ssh key pair for use with the repository +by typing the command + + ssh-keygen + +After generating a key pair and testing it, ssh-keygen will ask you +to enter a filename in which to save the key. The default it offers +will be the file F<~/.ssh/identity> which is suitable unless you +particularly want to keep separate ssh identities for some reason. +If so, you could save the perl repository private key in the file +F<~/.ssh/perl>, for example, but I will use the standard filename +in the remainder of the examples of this document. + +After typing in the filename, it will prompt you to type in a +passphrase. The private key will itself be encrypted so that it is +usable only when that passphrase is typed. (When using ssh, you will +be prompted when it requires a pass phrase to unlock a private key.) +If you provide a blank passphrase then no passphrase will be needed +to unlock the key and, as a consequence, anyone who gains access to +the key file gains access to accounts protected with that key +(barring additional configuration to restrict access by IP address). + +When you have typed the passphrase in twice, ssh-keygen will confirm +where it has saved the private key (in the filename you gave and +with permissions set to be only readable by you), what your public +key is (don't worry: you don't need to memorise it) and where it +has saved the corresponding public key. The public key is saved in +a filename corresponding to your private key's filename but with +".pub" appended, usually F<~/.ssh/identity.pub>. That public key +can be (but need not be) world readable. It is not used by your +own system at all. + +=head1 Notifying the Repository Keeper + +Mail the contents of that public key file to the keeper of the perl +repository (see L</Contact Information> below). +When the key is added to the repository host's configuration file, +you will be able to connect to it with ssh by using the corresponding +private key file (after unlocking it with your chosen passphrase). + +=head1 Connecting to the Repository + +Connections to the repository are made by using ssh to provide a +TCP "tunnel" rather than by using ssh to login to or invoke any +ordinary commands on the repository. When you want to start a +session using the repository, use the command + + ssh -l perlrep -f -q -x -L 1666:127.0.0.1:1666 sickle.activestate.com +foo + +If you are not using the default filename of F<~/.ssh/identity> +to hold your perl repository private key then you'll need to add +the option B<-i filename> to tell ssh where it is. Unless you chose +a blank passphrase for that private key, ssh will prompt you for the +passphrase to unlock that key. Then ssh will fork and put itself +in the background, returning you (silently) to your shell prompt. +The tunnel for repository access is now ready for use. + +For the sake of completeness (and for the case where the chosen +port of 1666 is already in use on your machine), I'll briefly +describe what all those ssh arguments are for. + +=over 4 + +=item B<-l perl> + +Use a remote username of perl. The account on the repository which +provides the end-point of the ssh tunnel is named "perl". + +=item B<-f> + +Tells ssh to fork and remain running in the background. Since ssh +is only being used for its tunnelling capabilities, the command +that ssh runs never does any I/O and can sit silently in the +background. + +=item B<-q> + +Tells ssh to be quiet. Without this option, ssh will output a +message each time you use a p4 command (since each p4 command +tunnels over the ssh connection to reach the repository). + +=item B<-x> + +Tells ssh not to bother to set up a tunnel for X11 connections. +The repository doesn't allow this anyway. + +=item B<-L 1666:127.0.0.1:1666> + +This is the important option. It tells ssh to listen out for +connections made to port 1666 on your local machine. When such +a connection is made, the ssh client tells the remote side +(the corresponding ssh daemon on the repository) to make a +connection to IP address 127.0.0.1, port 1666. Data flowing +along that connection is tunnelled over the ssh connection +(encrypted). The perforce daemon running on the repository +only accepts connections from localhost and that is exactly +where ssh-tunnelled connections appear to come from. + +If port 1666 is already in use on your machine then you can +choose any non-privileged port (a number between 1024 and 65535) +which happens to be free on your machine. It's the first of the +three colon separated values that you should change. Picking +port 2345 would mean changing the option to +B<-L 2345:127.0.0.1:1666>. Whatever port number you choose should +be used for the value of the P4PORT environment variable (q.v.). + +=item sickle.activestate.com + +This is the canonical IP name of the host on which the perl +repository runs. Its IP number is 199.60.48.20. + +=item foo + +This is a dummy place holder argument. Without an argument +here, ssh will try to perform an interactive login to the +repository which is not allowed. Ordinarily, this argument +is for the one-off command which is to be executed on the +remote host. However, the repository's ssh configuration +file uses the "command=" option to force a particular +command to run so the actual value of the argument is +ignored. The command that's actually run merely pauses and +waits for the ssh connection to drop, then exits. + +=back + +=head1 Problems + +You should normally get a prompt that asks for the passphrase +for your RSA key when you connect with the ssh command shown +above. If you see a prompt that looks like: + + perlrep@sickle.activestate.com's password: + +Then you either don't have a ~/.ssh/identity file corresponding +to your public key, or your ~/.ssh/identity file is not readable. +Fix the problem and try again. + +=head1 Using the Perforce Client + +Remember to read the documentation for Perforce. You need +to make sure that three environment variable are set +correctly before using the p4 client with the perl repository. + +=over 4 + +=item P4PORT + +Set this to localhost:1666 (the port for your ssh client to listen on) +unless that port is already in use on your host. If it is, see +the section above on the B<-L 1666:127.0.0.1:1666> option to ssh. + +=item P4CLIENT + +The value of this is the name by which Perforce knows your +host's workspace. You need to pick a name (for example, your +hostname unless that clashes with someone else's client name) +when you first start using the perl repository and then +stick with it. If you connect from multiple hosts (with +different workspaces) then maybe you could have multiple +clients. There is a licence limit on the number of perforce +clients which can be created. Although we have been told that +Perforce will raise our licence limits within reason, it's +probably best not to use additional clients unless needed. + +Note that perforce only needs the client name so that it can +find the directory under which your client files are stored. +If you have multiple hosts sharing the same directory structure +via NFS then only one client name is necessary. + +The C<p4 clients> command lists all currently known clients. + +=item P4USER + +This is the username by which perforce knows you. Use your +username if you have a well known or obvious one or else pick +a new one which other perl5-porters will recognise. There is +a licence limit on the number of these usernames. Perforce +doesn't enforce security between usernames. If you set P4USER +to be somebody else's username then perforce will believe you +completely with regard to access control, logging and so on. + +The C<p4 users> command lists all currently known users. + +=back + +Once these three environment variables are set, you can use the +perforce p4 client exactly as described in its documentation. +After setting these variables and connecting to the repository +for the first time, you should use the C<p4 user> and +C<p4 client> commands to tell perforce the details of your +new username and your new client workspace specifications. + +=head1 Ending a Repository Session + +When you have finished a session using the repository, you +should kill off the ssh client process to break the tunnel. +Since ssh forked itself into the background, you'll need to use +something like ps with the appropriate options to find the ssh +process and then kill it manually. The default signal of +SIGTERM is fine. + +=head1 Overview of the Repository + +Please read at least the introductory sections of the Perforce +User Guide (and perhaps the Quick Start Guide as well) before +reading this section. + +Every repository user typically "owns" a "branch" of the mainline +code in the repository. They hold the "pumpkin" for things in this +area, and are usually the only user who will modify files there. +This is not strictly enforced in order to allow the flexibility +of other users stealing the pumpkin for short periods with the +owner's permission. + +Here is the current structure of the repository: + + /----+-----perl - Mainline development (bleadperl) + +-----cfgperl - Configure Pumpkin's Perl + +-----vmsperl - VMS Pumpkin's Perl + +-----maint-5.004------perl - Maintainance branches + +-----maint-5.005------perl + +-----maint-5.6------perl + +Perforce uses a branching model that simply tracks relationships +between files. It does not care about directories at all, so +any file can be a branch of any other file--the fully qualified +depot path name (of the form //depot/foo/bar.c) uniquely determines +a file for the purpose of establishing branching relationships. +Since a branch usually involves hundreds of files, such relationships +are typically specified en masse using a branch map (try `p4 help branch`). +`p4 branches` lists the existing branches that have been set up. +`p4 branch -o branchname` can be used to view the map for a particular +branch, if you want to determine the ancestor for a particular set of +files. + +The mainline (aka "trunk") code in the Perl repository is under +"//depot/perl/...". Most branches typically map its entire +contents under a directory that goes by the same name as the branch +name. Thus the contents of the cfgperl branch are to be found +in //depot/cfgperl. + +Run `p4 client` to specify how the repository contents should map to +your local disk. Most users will typically have a client map that +includes at least their entire branch and the contents of the mainline. + +Run `p4 changes -l -m10` to check on the activity in the repository. +//depot/perl/Porting/genlog is useful to get an annotated changelog +that shows files and branches. You can use this listing to determine +if there are any changes in the mainline that you need to merge into +your own branch. A typical merging session looks like this: + + % cd ~/p4view/cfgperl + % p4 integrate -b cfgperl # to bring parent changes into cfgperl + % p4 resolve -a ./... # auto merge the changes + % p4 resolve ./... # manual merge conflicting changes + % p4 submit ./... # check in + +If the owner of the mainline wants to bring the changes in cfgperl +back into the mainline, they do: + + % p4 integrate -r -b cfgperl + ... + +Generating a patch for change#42 is done as follows: + + % p4 describe -du 42 | p4desc | p4d2p > change-42.patch + +p4desc and p4d2p are to be found in //depot/perl/Porting/. + +=head1 Contact Information + +The mail alias <perl-repository-keepers@perl.org> can be used to reach +all current users of the repository. + +The repository keeper is currently Gurusamy Sarathy +<gsar@activestate.com>. + +=head1 AUTHORS + +Malcolm Beattie, mbeattie@sable.ox.ac.uk, 24 June 1997. + +Gurusamy Sarathy, gsar@activestate.com, 8 May 1999. + +Slightly updated by Simon Cozens, simon@brecon.co.uk, 3 July 2000 + +=cut + + diff --git a/README.aix b/README.aix index 6346a180b2..0b14612fd9 100644 --- a/README.aix +++ b/README.aix @@ -14,7 +14,7 @@ compiled and/or runs. =head2 Compiling Perl 5 on AIX -When compiling Perl, you must use an ANSI C compiler. AIX does not shif +When compiling Perl, you must use an ANSI C compiler. AIX does not ship an ANSI compliant C-compiler with AIX by default, but binary builds of gcc for AIX are widely available. diff --git a/README.dos b/README.dos index 51cd1d6f18..3fd5760540 100644 --- a/README.dos +++ b/README.dos @@ -9,7 +9,7 @@ perldos - Perl under DOS, W31, W95. =head1 SYNOPSIS These are instructions for building Perl under DOS (or w??), using -DJGPP v2.01 or later. Under w95 long filenames are supported. +DJGPP v2.03 or later. Under w95 long filenames are supported. =head1 DESCRIPTION @@ -22,6 +22,10 @@ This port currently supports MakeMaker (the set of modules that is used to build extensions to perl). Therefore, you should be able to build and install most extensions found in the CPAN sites. +Detailed instructions on how to build and install perl extension +modules, including XS-type modules, is included. See 'BUILDING AND +INSTALLING MODULES'. + =head2 Prerequisites =over 4 @@ -46,19 +50,19 @@ the world. Like: You need the following files to build perl (or add new modules): - v2/djdev202.zip - v2/bnu27b.zip - v2gnu/gcc2721b.zip - v2gnu/bsh1147b.zip - v2gnu/mak3761b.zip + v2/djdev203.zip + v2/bnu2951b.zip + v2gnu/gcc2952b.zip + v2gnu/bsh204b.zip + v2gnu/mak3791b.zip v2gnu/fil316b.zip - v2gnu/sed118b.zip - v2gnu/txt122b.zip - v2gnu/dif271b.zip - v2gnu/grep21b.zip + v2gnu/sed302b.zip + v2gnu/txt20b.zip + v2gnu/dif272b.zip + v2gnu/grep24b.zip v2gnu/shl112b.zip v2gnu/gawk303b.zip - v2misc/csdpmi4b.zip + v2misc/csdpmi4b.zip or possibly any newer version. @@ -104,7 +108,7 @@ to use long file names under w95 and also to get Perl to pass all its tests, don't forget to use set LFN=y - set FNCASE=y + set FNCASE=y before unpacking the archive. @@ -115,6 +119,9 @@ directory. ln -s bash.exe sh.exe +[If you have the recommended version of bash for DJGPP, this is already +done for you.] + And make the C<SHELL> environment variable point to this F<sh.exe>: set SHELL=c:/djgpp/bin/sh.exe (use full path name!) @@ -131,20 +138,34 @@ F<split.exe> to F<djsplit.exe>, and F<gsplit.exe> to F<split.exe>. Copy or link F<gecho.exe> to F<echo.exe> if you don't have F<echo.exe>. Copy or link F<gawk.exe> to F<awk.exe> if you don't have F<awk.exe>. +[If you have the recommended versions of djdev, shell utilities and +gawk, all these are already done for you, and you will not need to do +anything.] + =item * Chdir to the djgpp subdirectory of perl toplevel and type the following -command: +commands: + set FNCASE=y configure.bat This will do some preprocessing then run the Configure script for you. -The Configure script is interactive, but in most cases you -just need to press ENTER. +The Configure script is interactive, but in most cases you just need to +press ENTER. The "set" command ensures that DJGPP preserves the letter +case of file names when reading directories. If you already issued this +set command when unpacking the archive, and you are in the same DOS +session as when you unpacked the archive, you don't have to issue the +set command again. This command is necessary *before* you start to +(re)configure or (re)build perl in order to ensure both that perl builds +correctly and that building XS-type modules can succeed. See the DJGPP +info entry for "_preserve_fncase" for more information: + + info libc alphabetical _preserve_fncase If the script says that your package is incomplete, and asks whether to continue, just answer with Y (this can only happen if you don't use -long filenames). +long filenames or forget to issue "set FNCASE=y" first). When Configure asks about the extensions, I suggest IO and Fcntl, and if you want database handling then SDBM_File or GDBM_File @@ -203,9 +224,122 @@ directory structure. Perl.exe and the utilities go into C<($DJDIR)/bin>, and the library goes under C<($DJDIR)/lib/perl5>. The pod documentation goes under C<($DJDIR)/lib/perl5/pod>. +=head1 BUILDING AND INSTALLING MODULES + + +=head2 Prerequisites + +=over 4 + +For building and installing non-XS modules, all you need is a working +perl under DJGPP. Non-XS modules do not require re-linking the perl +binary, and so are simpler to build and install. + +XS-type modules do require re-linking the perl binary, because part of +an XS module is written in "C", and has to be linked together with the +perl binary to be executed. This is required because perl under DJGPP +is built with the "static link" option, due to the lack of "dynamic +linking" in the DJGPP environment. + +Because XS modules require re-linking of the perl binary, you need both +the perl binary distribution and the perl source distribution to build +an XS extension module. In addition, you will have to have built your +perl binary from the source distribution so that all of the components +of the perl binary are available for the required link step. + +=back + +=head2 Unpacking CPAN Modules + +=over 4 + +First, download the module package from CPAN (e.g., the "Comma Separated +Value" text package, Text-CSV-0.01.tar.gz). Then expand the contents of +the package into some location on your disk. Most CPAN modules are +built with an internal directory structure, so it is usually safe to +expand it in the root of your DJGPP installation. Some people prefer to +locate source trees under /usr/src (i.e., C<($DJDIR)/usr/src>), but you may +put it wherever seems most logical to you, *EXCEPT* under the same +directory as your perl source code. There are special rules that apply +to modules which live in the perl source tree that do not apply to most +of the modules in CPAN. + +Unlike other DJGPP packages, which are normal "zip" files, most CPAN +module packages are "gzipped tarballs". Recent versions of WinZip will +safely unpack and expand them, *UNLESS* they have zero-length files. It +is a known WinZip bug (as of v7.0) that it will not extract zero-length +files. + +From the command line, you can use the djtar utility provided with DJGPP +to unpack and expand these files. For example: + + C:\djgpp>djtarx -v Text-CSV-0.01.tar.gz + +This will create the new directory C<($DJDIR)/Text-CSV-0.01>, filling +it with the source for this module. + +=back + +=head2 Building Non-XS Modules + +To build a non-XS module, you can use the standard module-building +instructions distributed with perl modules. + +=over 4 + + perl Makefile.PL + make + make test + make install + +This is sufficient because non-XS modules install only ".pm" files and +(sometimes) pod and/or man documentation. No re-linking of the perl +binary is needed to build, install or use non-XS modules. + +=back + +=head2 Building XS Modules + +To build an XS module, you must use the standard module-building +instructions distributed with perl modules *PLUS* three extra +instructions specific to the DJGPP "static link" build environment. + +=over 4 + + set FNCASE=y + perl Makefile.PL + make + make perl + make test + make -f Makefile.aperl inst_perl MAP_TARGET=perl.exe + make install + +The first extra instruction sets DJGPP's FNCASE environment variable so +that the new perl binary which you must build for an XS-type module will +build correctly. The second extra instruction re-builds the perl binary +in your module directory before you run "make test", so that you are +testing with the new module code you built with "make". The third extra +instruction installs the perl binary from your module directory into the +standard DJGPP binary directory, C<($DJDIR)/bin>, replacing your +previous perl binary. + +Note that the MAP_TARGET value *must* have the ".exe" extension or you +will not create a "perl.exe" to replace the one in C<($DJDIR)/bin>. + +When you are done, the XS-module install process will have added information +to yout "perllocal" information telling that the perl binary has been replaced, +and what module was installed. you can view this information at any time +by using the command: + + perl -S perldoc perllocal + +=back + =head1 AUTHOR -Laszlo Molnar, F<laszlo.molnar@eth.ericsson.se> +Laszlo Molnar, F<laszlo.molnar@eth.ericsson.se> [Installing/building perl] + +Peter J. Farley III F<pjfarley@banet.net> [Building/installing modules] =head1 SEE ALSO diff --git a/README.epoc b/README.epoc index 06290c3090..f66df5fb17 100644 --- a/README.epoc +++ b/README.epoc @@ -1,14 +1,16 @@ -===================================================================== -Perl 5 README file for the EPOC operating system. -===================================================================== +If you read this file _as_is_, just ignore the funny characters you +see. It is written in the POD format (see pod/perlpod.pod) which is +specially designed to be readable as is. -Olaf Flebbe <o.flebbe@gmx.de> -http://members.linuxstart.com/~oflebbe/perl/perl5.html -2000-09-18 +=head1 NAME + +README.epoc - Perl for EPOC -===================================================================== -Introduction -===================================================================== +=head1 SYNOPSIS + +Perl 5 README file for the EPOC operating system. + +=head1 INTRODUCTION EPOC is a OS for palmtops and mobile phones. For more informations look at: http://www.symbian.com/ @@ -18,9 +20,7 @@ This is a port of perl to EPOC. It runs on the Psion Series 5, 5mx, the Psion Netbook or the S7. For information about this hardware please refer to http://www.psion.com. -===================================================================== -Installation/Usage -===================================================================== +=head1 INSTALLING PERL ON EPOC You will need ~4MB free space in order to install and run perl. @@ -40,9 +40,9 @@ you are leaving perl, you get into the system screen. You have to switch back manually to ESHELL. When perl is running, you will see a task with the name STDOUT in the task list. -====================================================================== -IO Redirection -====================================================================== +=head1 USING PERL ON EPOC + +=head2 IO Redirection You can redirect the output with the UNIX bourne shell syntax (this is built into perl rather then eshell) For instance the following command @@ -51,12 +51,10 @@ stdout_file, the errors to stderr_file and input from stdin_file. perl test.pl >stdout_file <stdin_file 2>stderr_file -Alternativly you can use 2>&1 in order to add the standard error +Alternatively you can use 2>&1 in order to add the standard error output to stdout. -====================================================================== -PATH Names -====================================================================== +=head2 PATH Names ESHELL looks for executables in ?:/System/Programs. The SIS file installs perl in this special folder directory. The default drive and @@ -80,68 +78,96 @@ You can automatically search for file on all EPOC drives with a ? as the driver letter. For instance ?:\a.txt searches for C:\a.txt, D:\b.txt (and Z:\a.txt). -====================================================================== -Editors -====================================================================== +=head2 Editors A suitable text-editor can be downloaded from symbian http://developer.epocworld.com/downloads/progs/Editor.zip -==================================================================== -Features -==================================================================== +=head2 Features The built-in function EPOC::getcwd returns the current directory. -====================================================================== -Restrictions -====================================================================== +=head2 Restrictions Features are left out, because of restrictions of the POSIX support in EPOC: -+ backquoting, pipes etc. +=over 4 + +=item * + +backquoting, pipes etc. + +=item * + +system() does not inherit ressources like: file descriptors, +environment etc. + +=item * + +signal, kill, alarm. Do not try to use them. This may be +impossible to implement on EPOC. + +=item * + +select is missing. + +=item * -+ system() does not inherit ressources like: file descriptors, - environment etc. +binmode does not exist. (No CR LF to LF translation for text files) -+ signal, kill, alarm. Do not try to use them. This may be - impossible to implement on EPOC. +=item * -+ select is missing. +EPOC does not handle the notion of current drive and current +directory very well (i.e. not at all, but it tries hard to emulate +one) See PATH. -+ binmode does not exist. (No CR LF to LF translation for text files) +=item * -+ EPOC does not handle the notion of current drive and current - directory very well (i.e. not at all, but it tries hard to emulate - one) See PATH. +You need the shell eshell.exe in order to run perl.exe and supply +it with arguments. -+ You need the shell eshell.exe in order to run perl.exe and supply - it with arguments. +=item * -+ Heap is limited to 4MB. +Heap is limited to 4MB. -=================================================================== -Compiling Perl 5 on the EPOC cross compiling envionment. -=================================================================== +=back + +=head2 Compiling Perl 5 on the EPOC cross compiling environment Sorry, this is far too short. - You will need the C++ SDK from http://developer.epocworld.com/. +=over 4 + +=item * + +You will need the C++ SDK from http://developer.epocworld.com/. + +=item * + +You will need to set up the cross SDK from +http://members.linuxstart.com/~oflebbe + +=item * + +You may have to adjust config.sh (cc, cppflags) for your epoc +install location. + +=item * + +You may have to adjust config.sh for your cross SDK location - You will need to set up the cross SDK from - http://members.linuxstart.com/~oflebbe +=item * - You may have to adjust config.sh (cc, cppflags) for your epoc - install location. +Get the Perl sources from your nearest CPAN site. - You may have to adjust config.sh for your cross SDK location +=item * - Get the Perl sources from your nearest CPAN site. +Unpack the sources. - Unpack the sources. +=item * - Build a native perl from this sources... +Build a native perl from this sources... cp epoc/* . ./Configure -S @@ -159,10 +185,20 @@ Sorry, this is far too short. wine G:/bin/makesis perl.pkg perl.sis +=back -==================================================================== -Support Status -==================================================================== +=head1 SUPPORT STATUS I'm offering this port "as is". You can ask me questions, but I can't guarantee I'll be able to answer them. + +=head1 AUTHOR + +Olaf Flebbe <o.flebbe@gmx.de> +http://members.linuxstart.com/~oflebbe/perl/perl5.html + +=head1 LAST UPDATE + +2000-09-18 + +=cut diff --git a/README.os2 b/README.os2 index b46fa7a528..b12ee0bdb7 100644 --- a/README.os2 +++ b/README.os2 @@ -115,7 +115,7 @@ Contents - Threads AUTHOR SEE ALSO - + =head1 DESCRIPTION =head2 Target diff --git a/README.vos b/README.vos index 99abf0d6c5..b44f3cf9f0 100644 --- a/README.vos +++ b/README.vos @@ -1,128 +1,189 @@ -Perl 5 README file for the Stratus VOS operating system. -Paul Green (Paul_Green@stratus.com) -February 3, 2000 +If you read this file _as_is_, just ignore the funny characters you +see. It is written in the POD format (see pod/perlpod.pod) which is +specially designed to be readable as is. + +=head1 NAME + +README.vos - Perl for Stratus VOS + +=head1 SYNOPSIS +This is a port of Perl version 5, revision 7, to VOS. Perl is a +scripting or macro language that is popular on many systems. See your +local computer bookstore for a number of good books on Perl. -Introduction ------------- -This is a port of Perl version 5, revision 005-63, to VOS. Perl -is a scripting or macro language that is popular on many -systems. See your local computer bookstore for a number of good -books on Perl. +=head2 Stratus POSIX Support -Most of the Perl features should work on VOS. However, any +Note that there are two different implementations of POSIX.1 +support on VOS. There is an alpha version of POSIX that is +available from the Stratus anonymous ftp site +(ftp://ftp.stratus.com/pub/vos/posix/alpha/alpha.html). There +is a generally-available version of POSIX that comes with the +VOS Standard C compiler and C runtime in VOS Release 14.3.0 or +higher. This port of POSIX will compile and bind with either +version of POSIX. + +Most of the Perl features should work on VOS regardless of which +version of POSIX that you are using. However, the alpha version +of POSIX is missing a number of key functions, and therefore any attempt by perl.pm to call the following unimplemented POSIX functions will result in an error message and an immediate and fatal call to the VOS debugger. They are "dup", "fork", and "waitpid". The lack of these functions pretty much prevents you from starting VOS commands and grabbing their output in perl. The workaround is to run the commands outside of perl, then have -perl process the output file. +perl process the output file. These functions are all available +in the generally-available version of POSIX. + +=head1 INSTALLING PERL IN VOS +=head2 Compiling Perl 5 on VOS -Compiling Perl 5 on VOS ------------------------ Before you can build Perl 5 on VOS, you need to have or acquire the following additional items. -1. The VOS Standard C Compiler and Runtime, or the VOS Standard C - Cross-Compiler. This is a standard Stratus product. +=over 5 + +=item 1 + +The VOS Standard C Compiler and Runtime, or the VOS Standard C +Cross-Compiler. This is a standard Stratus product. -2. The VOS OS TCP/IP product set. While the necessary header - files are included with VOS POSIX.1, you still need the - appropriate object files in order to bind perl.pm. This is - a standard Stratus product. +=item 2 -3. The VOS POSIX.1 environment. As of this writing, this is - available on the VOS FTP site. Login anonymously to - ftp.stratus.com and get the file - /pub/vos/alpha/posix.save.evf.gz in binary file-transfer - mode. Or use the Uniform Resource Locator (URL) - ftp://ftp.stratus.com/pub/vos/alpha/posix.save.evf.gz from - your web browser. This is not a standard Stratus product. +Either the VOS OS TCP/IP or STCP product set. If you are +building with the alpha version of POSIX you need the OS +TCP/IP product set. If you are building with the +generally-available version of POSIX you need the STCP +product set. These are standard Stratus products. - Instructions for unbundling this file are at - ftp://ftp.stratus.com/pub/vos/utility/utility.html. +=item 3 -4. You must compile this version of Perl 5 on VOS Release - 14.1.0 or higher because some of the perl source files - contain more than 32,767 source lines. Due to VOS - release-compatibility rules, this port of perl may not - execute on VOS Release 12 or earlier. +Either the alpha or generally-available version of the VOS +POSIX.1 environment. + +The alpha version of POSIX.1 support is available on the +Stratus FTP site. Login anonymously to ftp.stratus.com and +get the file /pub/vos/posix/alpha/posix.save.evf.gz in +binary file-transfer mode. Or use the Uniform Resource +Locator (URL) +ftp://ftp.stratus.com/pub/vos/alpha/posix.save.evf.gz from +your web browser. Instructions for unbundling this file +are at ftp://ftp.stratus.com/pub/vos/utility/utility.html. +This is not a standard Stratus product. + +The generally-available version of POSIX.1 support is +bundled with the VOS Standard C compiler and Runtime (or +Cross-Compiler) in VOS Release 14.3.0 or higher. This is a +standard Stratus product. + +=item 4 + +You must compile this version of Perl 5 on VOS Release +14.1.0 or higher because some of the perl source files +contain more than 32,767 source lines. Due to VOS +release-compatibility rules, this port of perl may not +execute on VOS Release 12 or earlier. + +=back To build perl 5, change to the "vos" subdirectory and type the command "compile_perl -processor X", where X is the processor type (mc68020, i80860, pa7100, pa8000) that you wish to use. +Note that the generally-available version of POSIX.1 support is +not available for the mc68020 or i80860 processors. + +You must have purchased the VOS Standard C Cross Compiler in +order to compile perl for a processor type that is different +from the processor type of the module. + Note that code compiled for the pa7100 processor type can -execute on the PA7100, PA8000, and PA8500 processors, and that -code compiled for the pa8000 processor type can execute on the -PA8000 and PA8500 processors. +execute on the PA7100, PA8000, PA8500 and PA8600 processors, and +that code compiled for the pa8000 processor type can execute on +the PA8000, PA8500 and PA8600 processors. +=head2 Installing Perl 5 on VOS -Installing Perl 5 on VOS ------------------------- -1. Create the directory >system>ported>command_library. +=over 4 -2. Copy the appropriate version of the perl program module to - this directory. For example, with your current directory - set to the top-level directory of Perl 5, to install the - executable program module for the Motorola 68K - architecture, enter: +=item 1 + +Create the directory >system>ported>command_library. + +=item 2 + +Copy the appropriate version of the perl program module to +this directory. For example, with your current directory +set to the top-level directory of Perl 5, to install the +executable program module for the Motorola 68K +architecture, enter: !copy_file vos>obj>perl.pm >system>ported>command_library>* - (If you wish to use both Perl version 4 and Perl version 5, - you must give them different names; for example, perl.pm - and perl5.pm). +(If you wish to use both Perl version 4 and Perl version 5, +you must give them different names; for example, perl.pm +and perl5.pm). + +=item 3 + +Create the directory >system>ported>perl>lib. + +=item 4 + +Copy all of the files and subdirectories from the lib +subdirectory into this new directory. For example, with +the current directory set to the top-level directory of the +perl distribution, enter: + + !copy_dir lib >system>ported>perl>lib>5.7 -3. Create the directory >system>ported>perl>lib. +=item 5 -4. Copy all of the files and subdirectories from the lib - subdirectory into this new directory. For example, with - the current directory set to the top-level directory of the - perl distribution, enter: +While there are currently no architecture-specific +extensions or modules distributed with perl, the following +directories can be used to hold such files: - !copy_dir lib >system>ported>perl>lib>5.005 + >system>ported>perl>lib>5.7.68k + >system>ported>perl>lib>5.7.860 + >system>ported>perl>lib>5.7.7100 + >system>ported>perl>lib>5.7.8000 -5. While there are currently no architecture-specific - extensions or modules distributed with perl, the following - directories can be used to hold such files: +=item 6 - >system>ported>perl>lib>5.005.68k - >system>ported>perl>lib>5.005.860 - >system>ported>perl>lib>5.005.7100 - >system>ported>perl>lib>5.005.8000 +Site-specific perl extensions and modules can be installed in one of +two places. Put architecture-independent files into: -6. Site-specific perl extensions and modules can be installed - in one of two places. Put architecture-independent files - into: + >system>ported>perl>lib>site>5.7 - >system>ported>perl>lib>site>5.005 +Put architecture-dependent files into one of the following +directories: - Put architecture-dependent files into one of the following - directories: + >system>ported>perl>lib>site>5.7.68k + >system>ported>perl>lib>site>5.7.860 + >system>ported>perl>lib>site>5.7.7100 + >system>ported>perl>lib>site>5.7.8000 - >system>ported>perl>lib>site>5.005.68k - >system>ported>perl>lib>site>5.005.860 - >system>ported>perl>lib>site>5.005.7100 - >system>ported>perl>lib>site>5.005.8000 +=item 7 -7. You can examine the @INC variable from within a perl program - to see the order in which Perl searches these directories. +You can examine the @INC variable from within a perl program +to see the order in which Perl searches these directories. +=back -Unimplemented Features ----------------------- -If Perl 5 attempts to call an unimplemented VOS POSIX.1 function, -it will print a fatal error message and enter the VOS debugger. -This error is not recoverable. See vos_dummies.c for a list of -the unimplemented POSIX.1 functions. To see what functions are -unimplemented and what the error message looks like, compile and -execute "test_vos_dummies.c". +=head1 USING PERL IN VOS +=head2 Unimplemented Features + +If perl is built with the alpha version of VOS POSIX.1 support +and if it attempts to call an unimplemented VOS POSIX.1 +function, it will print a fatal error message and enter the VOS +debugger. This error is not recoverable. See vos_dummies.c for +a list of the unimplemented POSIX.1 functions. To see what +functions are unimplemented and what the error message looks +like, compile and execute "test_vos_dummies.c". + +=head2 Restrictions -Restrictions ------------- This port of Perl version 5 to VOS prefers Unix-style, slash-separated pathnames over VOS-style greater-than-separated pathnames. VOS-style pathnames should work in most contexts, but @@ -139,13 +200,19 @@ supported epoch is January 1, 1980 to January 17, 2038. See the file pod/perlport.pod for more information about the VOS port of Perl. +=head1 SUPPORT STATUS -Support Status --------------- I'm offering this port "as is". You can ask me questions, but I -can't guarantee I'll be able to answer them; I don't know much -about Perl itself; I'm still learning that. There are some +can't guarantee I'll be able to answer them. There are some excellent books available on the Perl language; consult a book seller. -(end) +=head1 AUTHOR + +Paul Green (Paul_Green@stratus.com) + +=head1 LAST UPDATE + +October 24, 2000 + +=cut diff --git a/config_h.SH b/config_h.SH index a209e6d29f..e34d920718 100644 --- a/config_h.SH +++ b/config_h.SH @@ -2048,12 +2048,23 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * This symbol is defined if the FILE_cnt macro can be used as an * lvalue. */ +/* STDIO_PTR_LVAL_SETS_CNT: + * This symbol is defined if using the FILE_ptr macro as an lvalue + * to increase the pointer by n has the side effect of decreasing the + * value of File_cnt(fp) by n. + */ +/* STDIO_PTR_LVAL_NOCHANGE_CNT: + * This symbol is defined if using the FILE_ptr macro as an lvalue + * to increase the pointer by n leaves File_cnt(fp) unchanged. + */ #$d_stdstdio USE_STDIO_PTR /**/ #ifdef USE_STDIO_PTR #define FILE_ptr(fp) $stdio_ptr #$d_stdio_ptr_lval STDIO_PTR_LVALUE /**/ #define FILE_cnt(fp) $stdio_cnt #$d_stdio_cnt_lval STDIO_CNT_LVALUE /**/ +#$d_stdio_ptr_lval_sets_cnt STDIO_PTR_LVAL_SETS_CNT /**/ +#$d_stdio_ptr_lval_nochange_cnt STDIO_PTR_LVAL_NOCHANGE_CNT /**/ #endif /* USE_STDIO_BASE: diff --git a/configure.com b/configure.com index f4b607aded..8063bb6a8e 100644 --- a/configure.com +++ b/configure.com @@ -4402,6 +4402,8 @@ $ i_locale="undef" $ d_locconv="undef" $ d_setlocale="undef" $ ENDIF +$ d_stdio_ptr_lval_sets_cnt="undef" +$ d_stdio_ptr_lval_nochange_cnt="undef" $! $! Sockets? $ if Has_Socketshr .OR. Has_Dec_C_Sockets @@ -4935,6 +4937,8 @@ $ WC "d_statfs_s='undef'" $ WC "d_statfsflags='undef'" $ WC "d_stdio_cnt_lval='" + d_stdio_cnt_lval + "'" $ WC "d_stdio_ptr_lval='" + d_stdio_ptr_lval + "'" +$ WC "d_stdio_ptr_lval_sets_cnt='" + d_stdio_ptr_lval_sets_cnt + "'" +$ WC "d_stdio_ptr_lval_nochange_cnt='" + d_stdio_ptr_lval_nochange_cnt + "'" $ WC "d_stdio_stream_array='undef'" $ WC "d_stdiobase='" + d_stdiobase + "'" $ WC "d_stdstdio='" + d_stdstdio + "'" @@ -75,6 +75,7 @@ Returns the stash of the CV. #define CVf_METHOD 0x0040 /* CV is explicitly marked as a method */ #define CVf_LOCKED 0x0080 /* CV locks itself or first arg on entry */ #define CVf_LVALUE 0x0100 /* CV return value can be used as lvalue */ +#define CVf_CONST 0x0200 /* inlinable sub */ #define CvCLONE(cv) (CvFLAGS(cv) & CVf_CLONE) #define CvCLONE_on(cv) (CvFLAGS(cv) |= CVf_CLONE) @@ -122,3 +123,7 @@ Returns the stash of the CV. #define CvSPECIAL(cv) (CvUNIQUE(cv) && SvFAKE(cv)) #define CvSPECIAL_on(cv) (CvUNIQUE_on(cv),SvFAKE_on(cv)) #define CvSPECIAL_off(cv) (CvUNIQUE_off(cv),SvFAKE_off(cv)) + +#define CvCONST(cv) (CvFLAGS(cv) & CVf_CONST) +#define CvCONST_on(cv) (CvFLAGS(cv) |= CVf_CONST) +#define CvCONST_off(cv) (CvFLAGS(cv) &= ~CVf_CONST) @@ -72,12 +72,12 @@ S_do_trans_simple(pTHX_ SV *sv) Newz(0, d, len*2+1, U8); dstart = d; while (s < send) { - I32 ulen; + STRLEN ulen; short c; ulen = 1; /* Need to check this, otherwise 128..255 won't match */ - c = utf8_to_uv_chk(s, &ulen, 0); + c = utf8_to_uv(s, send - s, &ulen, 0); if (c < 0x100 && (ch = tbl[(short)c]) >= 0) { matches++; if (ch < 0x80) @@ -122,10 +122,10 @@ S_do_trans_count(pTHX_ SV *sv)/* SPC - OK */ s += UTF8SKIP(s); else { UV c; - I32 ulen; + STRLEN ulen; ulen = 1; if (hasutf) - c = utf8_to_uv_chk(s,&ulen, 0); + c = utf8_to_uv(s, send - s, &ulen, 0); else c = *s; if (c < 0x100 && tbl[c] >= 0) @@ -363,8 +363,8 @@ S_do_trans_complex_utf8(pTHX_ SV *sv) /* SPC - NOT OK */ continue; } else if (uv == none) { /* "none" is unmapped character */ - I32 ulen; - *d++ = (U8)utf8_to_uv_chk(s, &ulen, 0); + STRLEN ulen; + *d++ = (U8)utf8_to_uv(s, send - s, &ulen, 0); s += ulen; puv = 0xfeedface; continue; @@ -404,8 +404,8 @@ S_do_trans_complex_utf8(pTHX_ SV *sv) /* SPC - NOT OK */ continue; } else if (uv == none) { /* "none" is unmapped character */ - I32 ulen; - *d++ = (U8)utf8_to_uv_chk(s, &ulen, 0); + STRLEN ulen; + *d++ = (U8)utf8_to_uv(s, send - s, &ulen, 0); s += ulen; continue; } @@ -550,9 +550,8 @@ Perl_do_vecget(pTHX_ SV *sv, I32 offset, I32 size) if (size < 1 || (size & (size-1))) /* size < 1 or not a power of two */ Perl_croak(aTHX_ "Illegal number of bits in vec"); - if (SvUTF8(sv)) { + if (SvUTF8(sv)) (void) Perl_sv_utf8_downgrade(aTHX_ sv, TRUE); - } offset *= size; /* turn into bit offset */ len = (offset + size + 7) / 8; /* required number of bytes */ @@ -964,15 +963,15 @@ Perl_do_vop(pTHX_ I32 optype, SV *sv, SV *left, SV *right) char *dcsave = dc; STRLEN lulen = leftlen; STRLEN rulen = rightlen; - I32 ulen; + STRLEN ulen; switch (optype) { case OP_BIT_AND: while (lulen && rulen) { - luc = utf8_to_uv_chk((U8*)lc, &ulen, 0); + luc = utf8_to_uv((U8*)lc, lulen, &ulen, 0); lc += ulen; lulen -= ulen; - ruc = utf8_to_uv_chk((U8*)rc, &ulen, 0); + ruc = utf8_to_uv((U8*)rc, rulen, &ulen, 0); rc += ulen; rulen -= ulen; duc = luc & ruc; @@ -984,10 +983,10 @@ Perl_do_vop(pTHX_ I32 optype, SV *sv, SV *left, SV *right) break; case OP_BIT_XOR: while (lulen && rulen) { - luc = utf8_to_uv_chk((U8*)lc, &ulen, 0); + luc = utf8_to_uv((U8*)lc, lulen, &ulen, 0); lc += ulen; lulen -= ulen; - ruc = utf8_to_uv_chk((U8*)rc, &ulen, 0); + ruc = utf8_to_uv((U8*)rc, rulen, &ulen, 0); rc += ulen; rulen -= ulen; duc = luc ^ ruc; @@ -996,10 +995,10 @@ Perl_do_vop(pTHX_ I32 optype, SV *sv, SV *left, SV *right) goto mop_up_utf; case OP_BIT_OR: while (lulen && rulen) { - luc = utf8_to_uv_chk((U8*)lc, &ulen, 0); + luc = utf8_to_uv((U8*)lc, lulen, &ulen, 0); lc += ulen; lulen -= ulen; - ruc = utf8_to_uv_chk((U8*)rc, &ulen, 0); + ruc = utf8_to_uv((U8*)rc, rulen, &ulen, 0); rc += ulen; rulen -= ulen; duc = luc | ruc; @@ -822,6 +822,7 @@ Perl_do_sv_dump(pTHX_ I32 level, PerlIO *file, SV *sv, I32 nest, I32 maxnest, bo if (CvUNIQUE(sv)) sv_catpv(d, "UNIQUE,"); if (CvCLONE(sv)) sv_catpv(d, "CLONE,"); if (CvCLONED(sv)) sv_catpv(d, "CLONED,"); + if (CvCONST(sv)) sv_catpv(d, "CONST,"); if (CvNODEBUG(sv)) sv_catpv(d, "NODEBUG,"); if (SvCOMPILED(sv)) sv_catpv(d, "COMPILED,"); break; @@ -729,8 +729,8 @@ #define utf8_hop Perl_utf8_hop #define utf8_to_bytes Perl_utf8_to_bytes #define bytes_to_utf8 Perl_bytes_to_utf8 +#define utf8_to_uv_simple Perl_utf8_to_uv_simple #define utf8_to_uv Perl_utf8_to_uv -#define utf8_to_uv_chk Perl_utf8_to_uv_chk #define uv_to_utf8 Perl_uv_to_utf8 #define vivify_defelem Perl_vivify_defelem #define vivify_ref Perl_vivify_ref @@ -744,12 +744,12 @@ #define watch Perl_watch #define whichsig Perl_whichsig #define yyerror Perl_yyerror -#if defined(USE_PURE_BISON) +#ifdef USE_PURE_BISON +#define yylex_r Perl_yylex_r #define yylex Perl_yylex #else #define yylex Perl_yylex #endif -#define syylex S_syylex #define yyparse Perl_yyparse #define yywarn Perl_yywarn #if defined(MYMALLOC) @@ -2189,8 +2189,8 @@ #define utf8_hop(a,b) Perl_utf8_hop(aTHX_ a,b) #define utf8_to_bytes(a,b) Perl_utf8_to_bytes(aTHX_ a,b) #define bytes_to_utf8(a,b) Perl_bytes_to_utf8(aTHX_ a,b) -#define utf8_to_uv(a,b) Perl_utf8_to_uv(aTHX_ a,b) -#define utf8_to_uv_chk(a,b,c) Perl_utf8_to_uv_chk(aTHX_ a,b,c) +#define utf8_to_uv_simple(a,b) Perl_utf8_to_uv_simple(aTHX_ a,b) +#define utf8_to_uv(a,b,c,d) Perl_utf8_to_uv(aTHX_ a,b,c,d) #define uv_to_utf8(a,b) Perl_uv_to_utf8(aTHX_ a,b) #define vivify_defelem(a) Perl_vivify_defelem(aTHX_ a) #define vivify_ref(a,b) Perl_vivify_ref(aTHX_ a,b) @@ -2202,12 +2202,12 @@ #define watch(a) Perl_watch(aTHX_ a) #define whichsig(a) Perl_whichsig(aTHX_ a) #define yyerror(a) Perl_yyerror(aTHX_ a) -#if defined(USE_PURE_BISON) +#ifdef USE_PURE_BISON +#define yylex_r(a,b) Perl_yylex_r(aTHX_ a,b) #define yylex(a,b) Perl_yylex(aTHX_ a,b) #else #define yylex() Perl_yylex(aTHX) #endif -#define syylex() S_syylex(aTHX) #define yyparse() Perl_yyparse(aTHX) #define yywarn(a) Perl_yywarn(aTHX_ a) #if defined(MYMALLOC) @@ -4290,10 +4290,10 @@ #define utf8_to_bytes Perl_utf8_to_bytes #define Perl_bytes_to_utf8 CPerlObj::Perl_bytes_to_utf8 #define bytes_to_utf8 Perl_bytes_to_utf8 +#define Perl_utf8_to_uv_simple CPerlObj::Perl_utf8_to_uv_simple +#define utf8_to_uv_simple Perl_utf8_to_uv_simple #define Perl_utf8_to_uv CPerlObj::Perl_utf8_to_uv #define utf8_to_uv Perl_utf8_to_uv -#define Perl_utf8_to_uv_chk CPerlObj::Perl_utf8_to_uv_chk -#define utf8_to_uv_chk Perl_utf8_to_uv_chk #define Perl_uv_to_utf8 CPerlObj::Perl_uv_to_utf8 #define uv_to_utf8 Perl_uv_to_utf8 #define Perl_vivify_defelem CPerlObj::Perl_vivify_defelem @@ -4320,15 +4320,15 @@ #define whichsig Perl_whichsig #define Perl_yyerror CPerlObj::Perl_yyerror #define yyerror Perl_yyerror -#if defined(USE_PURE_BISON) +#ifdef USE_PURE_BISON +#define Perl_yylex_r CPerlObj::Perl_yylex_r +#define yylex_r Perl_yylex_r #define Perl_yylex CPerlObj::Perl_yylex #define yylex Perl_yylex #else #define Perl_yylex CPerlObj::Perl_yylex #define yylex Perl_yylex #endif -#define S_syylex CPerlObj::S_syylex -#define syylex S_syylex #define Perl_yyparse CPerlObj::Perl_yyparse #define yyparse Perl_yyparse #define Perl_yywarn CPerlObj::Perl_yywarn @@ -1441,7 +1441,7 @@ Afnp |int |fprintf_nocontext|PerlIO* stream|const char* fmt|... #endif p |void |cv_ckproto |CV* cv|GV* gv|char* p p |CV* |cv_clone |CV* proto -Ap |SV* |cv_const_sv |CV* cv +Apd |SV* |cv_const_sv |CV* cv p |SV* |op_const_sv |OP* o|CV* cv Ap |void |cv_undef |CV* cv Ap |void |cx_dump |PERL_CONTEXT* cs @@ -1626,7 +1626,7 @@ Ap |bool |is_uni_xdigit_lc|U32 c Ap |U32 |to_uni_upper_lc|U32 c Ap |U32 |to_uni_title_lc|U32 c Ap |U32 |to_uni_lower_lc|U32 c -Ap |int |is_utf8_char |U8 *p +Ap |STRLEN |is_utf8_char |U8 *p Ap |bool |is_utf8_string |U8 *s|STRLEN len Ap |bool |is_utf8_alnum |U8 *p Ap |bool |is_utf8_alnumc |U8 *p @@ -1761,7 +1761,7 @@ Ap |OP* |newANONHASH |OP* o Ap |OP* |newANONSUB |I32 floor|OP* proto|OP* block Ap |OP* |newASSIGNOP |I32 flags|OP* left|I32 optype|OP* right Ap |OP* |newCONDOP |I32 flags|OP* expr|OP* trueop|OP* falseop -Apd |void |newCONSTSUB |HV* stash|char* name|SV* sv +Apd |CV* |newCONSTSUB |HV* stash|char* name|SV* sv Ap |void |newFORM |I32 floor|OP* o|OP* block Ap |OP* |newFOROP |I32 flags|char* label|line_t forline \ |OP* sclr|OP* expr|OP*block|OP*cont @@ -1941,10 +1941,10 @@ p |OP* |scalar |OP* o p |OP* |scalarkids |OP* o p |OP* |scalarseq |OP* o p |OP* |scalarvoid |OP* o -Ap |NV |scan_bin |char* start|I32 len|I32* retlen -Ap |NV |scan_hex |char* start|I32 len|I32* retlen +Ap |NV |scan_bin |char* start|STRLEN len|STRLEN* retlen +Ap |NV |scan_hex |char* start|STRLEN len|STRLEN* retlen Ap |char* |scan_num |char* s|YYSTYPE *lvalp -Ap |NV |scan_oct |char* start|I32 len|I32* retlen +Ap |NV |scan_oct |char* start|STRLEN len|STRLEN* retlen p |OP* |scope |OP* o Ap |char* |screaminstr |SV* bigsv|SV* littlesv|I32 start_shift \ |I32 end_shift|I32 *state|I32 last @@ -2074,9 +2074,9 @@ Ap |I32 |utf8_distance |U8 *a|U8 *b Ap |U8* |utf8_hop |U8 *s|I32 off ApM |U8* |utf8_to_bytes |U8 *s|STRLEN *len ApM |U8* |bytes_to_utf8 |U8 *s|STRLEN *len -Ap |UV |utf8_to_uv |U8 *s|I32* retlen -Ap |UV |utf8_to_uv_chk |U8 *s|I32* retlen|bool checking -Ap |U8* |uv_to_utf8 |U8 *d|UV uv +Ap |UV |utf8_to_uv_simple|U8 *s|STRLEN* retlen +Ap |UV |utf8_to_uv |U8 *s|STRLEN curlen|STRLEN* retlen|U32 flags +Ap |U8* |uv_to_utf8|U8 *d|UV uv p |void |vivify_defelem |SV* sv p |void |vivify_ref |SV* sv|U32 to_what p |I32 |wait4pid |Pid_t pid|int* statusp|int flags @@ -2089,12 +2089,12 @@ Ap |void |vwarner |U32 err|const char* pat|va_list* args p |void |watch |char** addr Ap |I32 |whichsig |char* sig p |int |yyerror |char* s -#if defined(USE_PURE_BISON) +#ifdef USE_PURE_BISON +p |int |yylex_r |YYSTYPE *lvalp|int *lcharp p |int |yylex |YYSTYPE *lvalp|int *lcharp #else p |int |yylex #endif -sp |int |syylex p |int |yyparse p |int |yywarn |char* s #if defined(MYMALLOC) @@ -2358,7 +2358,7 @@ s |regnode*|reg |I32|I32 * s |regnode*|reganode |U8|U32 s |regnode*|regatom |I32 * s |regnode*|regbranch |I32 *|I32 -s |void |reguni |UV|char *|I32* +s |void |reguni |UV|char *|STRLEN* s |regnode*|regclass s |regnode*|regclassutf8 s |I32 |regcurly |char * diff --git a/epoc/config.sh b/epoc/config.sh index ee65ee35ce..e760d671cf 100644 --- a/epoc/config.sh +++ b/epoc/config.sh @@ -324,6 +324,8 @@ d_statfsflags='define' d_statvfs='undef' d_stdio_cnt_lval='define' d_stdio_ptr_lval='define' +d_stdio_ptr_lval_sets_cnt='undef' +d_stdio_ptr_lval_nochange_cnt='undef' d_stdio_stream_array='undef' d_stdiobase='undef' d_stdstdio='undef' diff --git a/ext/B/B.pm b/ext/B/B.pm index 50364fa1d2..70c424ba1a 100644 --- a/ext/B/B.pm +++ b/ext/B/B.pm @@ -185,7 +185,7 @@ sub walksymtable { *glob = "*main::".$prefix.$sym; if ($sym =~ /::$/) { $sym = $prefix . $sym; - if ($sym ne "main::" && &$recurse($sym)) { + if ($sym ne "main::" && $sym ne "<none>::" && &$recurse($sym)) { walksymtable(\%glob, $method, $recurse, $sym); } } else { @@ -531,6 +531,8 @@ This method returns TRUE if the GP field of the GV is NULL. =item CvFLAGS +=item const_sv + =back =head2 B::HV METHODS diff --git a/ext/B/B.xs b/ext/B/B.xs index f1f0e65781..ec9e578020 100644 --- a/ext/B/B.xs +++ b/ext/B/B.xs @@ -1229,6 +1229,12 @@ U16 CvFLAGS(cv) B::CV cv +MODULE = B PACKAGE = B::CV PREFIX = cv_ + +B::SV +cv_const_sv(cv) + B::CV cv + MODULE = B PACKAGE = B::HV PREFIX = Hv diff --git a/ext/B/B/C.pm b/ext/B/B/C.pm index d0c8159d9f..f8b2ac5675 100644 --- a/ext/B/B/C.pm +++ b/ext/B/B/C.pm @@ -1368,7 +1368,7 @@ sub walkpackages if ($sym =~ /::$/) { $sym = $prefix . $sym; - if ($sym ne "main::" && &$recurse($sym)) + if ($sym ne "main::" && $sym ne "<none>::" && &$recurse($sym)) { walkpackages(\%glob, $recurse, $sym); } diff --git a/ext/B/B/Deparse.pm b/ext/B/B/Deparse.pm index 5c5c5eb9cb..7d1675290b 100644 --- a/ext/B/B/Deparse.pm +++ b/ext/B/B/Deparse.pm @@ -446,6 +446,11 @@ sub deparse_sub { # skip leavesub return $proto . "{\n\t" . $self->deparse($cv->ROOT->first, 0) . "\n\b}\n"; + } + my $sv = $cv->const_sv; + if ($$sv) { + # uh-oh. inlinable sub... format it differently + return $proto . "{ " . const($sv) . " }\n"; } else { # XSUB? return $proto . "{}\n"; } diff --git a/ext/DynaLoader/DynaLoader_pm.PL b/ext/DynaLoader/DynaLoader_pm.PL index b7b45d8372..0d4e8cd463 100644 --- a/ext/DynaLoader/DynaLoader_pm.PL +++ b/ext/DynaLoader/DynaLoader_pm.PL @@ -100,17 +100,35 @@ if ($Is_MacOS) { push(@dl_library_path, split(/,/, $ENV{LD_LIBRARY_PATH})) if exists $ENV{LD_LIBRARY_PATH}; } else { - push(@dl_library_path, split(/:/, $ENV{$Config::Config{ldlibpthname}})) - if exists $Config::Config{ldlibpthname} && - $Config::Config{ldlibpthname} ne '' && - exists $ENV{$Config::Config{ldlibpthname}} ;; - push(@dl_library_path, split(/:/, $ENV{$Config::Config{ldlibpthname}})) - if exists $Config::Config{ldlibpthname} && - $Config::Config{ldlibpthname} ne '' && - exists $ENV{$Config::Config{ldlibpthname}} ;; +# push(@dl_library_path, split(/:/, $ENV{$Config::Config{ldlibpthname}})) +# if exists $Config::Config{ldlibpthname} && +# $Config::Config{ldlibpthname} ne '' && +# exists $ENV{$Config::Config{ldlibpthname}} ;; +# push(@dl_library_path, split(/:/, $ENV{$Config::Config{ldlibpthname}})) +# if exists $Config::Config{ldlibpthname} && +# $Config::Config{ldlibpthname} ne '' && +# exists $ENV{$Config::Config{ldlibpthname}} ;; # E.g. HP-UX supports both its native SHLIB_PATH *and* LD_LIBRARY_PATH. -push(@dl_library_path, split(/:/, $ENV{LD_LIBRARY_PATH})) - if exists $ENV{LD_LIBRARY_PATH}; +# push(@dl_library_path, split(/:/, $ENV{LD_LIBRARY_PATH})) +# if exists $ENV{LD_LIBRARY_PATH}; +EOT + +# Make a list of paths to print. +# HP-UX supports both its native SHLIB_PATH *and* LD_LIBRARY_PATH, +# but for other OSes no point pushing 'LD_LIBRARY_PATH' twice. +my @ldlibpthname = 'LD_LIBRARY_PATH'; +if (exists $Config::Config{ldlibpthname} + and length $Config::Config{ldlibpthname} + and $Config::Config{ldlibpthname} ne 'LD_LIBRARY_PATH') { + unshift @ldlibpthname, $Config::Config{ldlibpthname}; +} + +foreach (@ldlibpthname) { + print OUT " push(\@dl_library_path, split(/:/, \$ENV{", to_string($_), + "}))\n\tif exists \$ENV{", to_string($_), "};\n"; +} + +print OUT <<'EOT'; } # No prizes for guessing why we don't say 'bootstrap DynaLoader;' here. diff --git a/ext/Encode/Encode.xs b/ext/Encode/Encode.xs index c231bbab6b..9dea8d0bf5 100644 --- a/ext/Encode/Encode.xs +++ b/ext/Encode/Encode.xs @@ -182,7 +182,7 @@ _is_utf8(sv, ...) { SV * check = items == 2 ? ST(1) : Nullsv; if (SvPOK(sv)) { - RETVAL = SvUTF8(sv); + RETVAL = SvUTF8(sv) ? 1 : 0; if (RETVAL && SvTRUE(check) && !is_utf8_string((U8*)SvPVX(sv), SvCUR(sv))) diff --git a/ext/Storable/ChangeLog b/ext/Storable/ChangeLog index 049ce29583..6b90c741ea 100644 --- a/ext/Storable/ChangeLog +++ b/ext/Storable/ChangeLog @@ -1,3 +1,21 @@ +Thu Oct 26 19:14:38 MEST 2000 Raphael Manfredi <Raphael_Manfredi@pobox.com> + +. Description: + + Version 1.0.5. + + Documented that store() and retrieve() can return undef. + That is, the error reporting is not always made via exceptions, + as the paragraph on error reporting was implying. + + Auto requires module of blessed ref when STORABLE_thaw misses. + When the Storable engine looks for the STORABLE_thaw hook and + does not find it, it now tries to require the package into which + the blessed reference is. + + Just check $^O, in t/lock.t: there's no need to pull the whole + Config module for that. + Fri Sep 29 21:52:29 MEST 2000 Raphael Manfredi <Raphael_Manfredi@pobox.com> . Description: diff --git a/ext/Storable/Storable.pm b/ext/Storable/Storable.pm index 76c320923b..5cd06a00c2 100644 --- a/ext/Storable/Storable.pm +++ b/ext/Storable/Storable.pm @@ -1,4 +1,4 @@ -;# $Id: Storable.pm,v 1.0 2000/09/01 19:40:41 ram Exp $ +;# $Id: Storable.pm,v 1.0.1.5 2000/10/26 17:10:18 ram Exp ram $ ;# ;# Copyright (c) 1995-2000, Raphael Manfredi ;# @@ -6,6 +6,15 @@ ;# in the README file that comes with the distribution. ;# ;# $Log: Storable.pm,v $ +;# Revision 1.0.1.5 2000/10/26 17:10:18 ram +;# patch5: documented that store() and retrieve() can return undef +;# patch5: added paragraph explaining the auto require for thaw hooks +;# +;# Revision 1.0.1.4 2000/10/23 18:02:57 ram +;# patch4: protected calls to flock() for dos platform +;# patch4: added logcarp emulation if they don't have Log::Agent +;# +;# $Log: Storable.pm,v $ ;# Revision 1.0 2000/09/01 19:40:41 ram ;# Baseline for first official release. ;# @@ -26,7 +35,7 @@ package Storable; @ISA = qw(Exporter DynaLoader); use AutoLoader; use vars qw($forgive_me $VERSION); -$VERSION = '1.003'; +$VERSION = '1.005'; *AUTOLOAD = \&AutoLoader::AUTOLOAD; # Grrr... # @@ -41,6 +50,10 @@ unless (defined @Log::Agent::EXPORT) { require Carp; Carp::croak(@_); } + sub logcarp { + require Carp; + Carp::carp(@_); + } }; } @@ -61,6 +74,7 @@ BEGIN { } sub logcroak; +sub logcarp; sub retrieve_fd { &fd_retrieve } # Backward compatibility @@ -118,6 +132,10 @@ sub _store { open(FILE, ">$file") || logcroak "can't create $file: $!"; binmode FILE; # Archaic systems... if ($use_locking) { + if ($^O eq 'dos') { + logcarp "Storable::lock_store: fcntl/flock emulation broken on $^O"; + return undef; + } flock(FILE, LOCK_EX) || logcroak "can't get exclusive lock on $file: $!"; truncate FILE, 0; @@ -234,6 +252,10 @@ sub _retrieve { my $self; my $da = $@; # Could be from exception handler if ($use_locking) { + if ($^O eq 'dos') { + logcarp "Storable::lock_store: fcntl/flock emulation broken on $^O"; + return undef; + } flock(FILE, LOCK_SH) || logcroak "can't get shared lock on $file: $!"; # Unlocking will happen when FILE is closed } @@ -435,6 +457,9 @@ those exceptions. When Storable croaks, it tries to report the error via the C<logcroak()> routine from the C<Log::Agent> package, if it is available. +Normal errors are reported by having store() or retrieve() return C<undef>. +Such errors are usually I/O errors (or truncated stream errors at retrieval). + =head1 WIZARDS ONLY =head2 Hooks @@ -514,6 +539,13 @@ and there may be an optional list of references, in the same order you gave them at serialization time, pointing to the deserialized objects (which have been processed courtesy of the Storable engine). +When the Storable engine does not find any C<STORABLE_thaw> hook routine, +it tries to load the class by requiring the package dynamically (using +the blessed package name), and then re-attempts the lookup. If at that +time the hook cannot be located, the engine croaks. Note that this mechanism +will fail if you define several classes in the same file, but perlmod(1) +warned you. + It is up to you to use these information to populate I<obj> the way you want. Returned value: none. diff --git a/ext/Storable/Storable.xs b/ext/Storable/Storable.xs index 1c412b5d20..b4066dc137 100644 --- a/ext/Storable/Storable.xs +++ b/ext/Storable/Storable.xs @@ -3,7 +3,7 @@ */ /* - * $Id: Storable.xs,v 1.0 2000/09/01 19:40:41 ram Exp $ + * $Id: Storable.xs,v 1.0.1.4 2000/10/26 17:11:04 ram Exp ram $ * * Copyright (c) 1995-2000, Raphael Manfredi * @@ -11,6 +11,13 @@ * in the README file that comes with the distribution. * * $Log: Storable.xs,v $ + * Revision 1.0.1.4 2000/10/26 17:11:04 ram + * patch5: auto requires module of blessed ref when STORABLE_thaw misses + * + * Revision 1.0.1.3 2000/09/29 19:49:57 ram + * patch3: avoid using "tainted" and "dirty" since Perl remaps them via cpp + * + * $Log: Storable.xs,v $ * Revision 1.0 2000/09/01 19:40:41 ram * Baseline for first official release. * @@ -1223,6 +1230,19 @@ static void pkg_hide( } /* + * pkg_uncache + * + * Discard cached value: a whole fetch loop will be retried at next lookup. + */ +static void pkg_uncache( + HV *cache, + HV *pkg, + char *method) +{ + (void) hv_delete(cache, HvNAME(pkg), strlen(HvNAME(pkg)), G_DISCARD); +} + +/* * pkg_can * * Our own "UNIVERSAL::can", which caches results. @@ -3131,8 +3151,37 @@ static SV *retrieve_hook(stcxt_t *cxt) BLESS(sv, class); hook = pkg_can(cxt->hook, SvSTASH(sv), "STORABLE_thaw"); - if (!hook) - CROAK(("No STORABLE_thaw defined for objects of class %s", class)); + if (!hook) { + /* + * Hook not found. Maybe they did not require the module where this + * hook is defined yet? + * + * If the require below succeeds, we'll be able to find the hook. + * Still, it only works reliably when each class is defined in a + * file of its own. + */ + + SV *psv = newSVpvn("require ", 8); + sv_catpv(psv, class); + + TRACEME(("No STORABLE_thaw defined for objects of class %s", class)); + TRACEME(("Going to require module '%s' with '%s'", class, SvPVX(psv))); + + perl_eval_sv(psv, G_DISCARD); + sv_free(psv); + + /* + * We cache results of pkg_can, so we need to uncache before attempting + * the lookup again. + */ + + pkg_uncache(cxt->hook, SvSTASH(sv), "STORABLE_thaw"); + hook = pkg_can(cxt->hook, SvSTASH(sv), "STORABLE_thaw"); + + if (!hook) + CROAK(("No STORABLE_thaw defined for objects of class %s " + "(even after a \"require %s;\")", class, class)); + } /* * If we don't have an `av' yet, prepare one. diff --git a/ext/Thread/Thread.pm b/ext/Thread/Thread.pm index c752e3d6dd..f8a8a26bbc 100644 --- a/ext/Thread/Thread.pm +++ b/ext/Thread/Thread.pm @@ -21,6 +21,11 @@ Thread - manipulate threads in Perl (EXPERIMENTAL, subject to change) $result = $t->join; $result = $t->eval; $t->detach; + $flags = $t->flags; + + if ($t->done) { + $t->join; + } if($t->equal($another_thread)) { # ... @@ -181,6 +186,17 @@ increasing integer assigned when a thread is created. The main thread of a program will have a tid of zero, while subsequent threads will have tids assigned starting with one. +=item flags + +The C<flags> method returns the flags for the thread. This is the +integer value corresponding to the internal flags for the thread, and +the value may not be all that meaningful to you. + +=item done + +The C<done> method returns true if the thread you're checking has +finished, and false otherwise. + =back =head1 LIMITATIONS diff --git a/ext/Thread/Thread.xs b/ext/Thread/Thread.xs index 17e5aefd04..c911279c1d 100644 --- a/ext/Thread/Thread.xs +++ b/ext/Thread/Thread.xs @@ -191,6 +191,7 @@ threadstart(void *arg) Safefree(PL_reg_poscache); MUTEX_LOCK(&thr->mutex); + thr->thr_done = 1; DEBUG_S(PerlIO_printf(Perl_debug_log, "%p: threadstart finishing: state is %u\n", thr, ThrSTATE(thr))); @@ -448,6 +449,14 @@ flags(t) #endif void +done(t) + Thread t + PPCODE: +#ifdef USE_THREADS + PUSHs(t->thr_done ? &PL_sv_yes : &PL_sv_no); +#endif + +void self(classname) char * classname PREINIT: diff --git a/ext/re/Makefile.PL b/ext/re/Makefile.PL index bc31b2c2cc..f337db191f 100644 --- a/ext/re/Makefile.PL +++ b/ext/re/Makefile.PL @@ -1,12 +1,19 @@ use ExtUtils::MakeMaker; use File::Spec; +use Config; + +my $object = 're_exec$(OBJ_EXT) re_comp$(OBJ_EXT) re$(OBJ_EXT)'; + +if ($^O eq 'aix' && defined($Config{'ccversion'}) && $Config{'ccversion'} eq '3.6.6.0') { + $object .= ' ../../deb$(OBJ_EXT)'; +} WriteMakefile( NAME => 're', VERSION_FROM => 're.pm', MAN3PODS => {}, # Pods will be built by installman. XSPROTOARG => '-noprototypes', - OBJECT => 're_exec$(OBJ_EXT) re_comp$(OBJ_EXT) re$(OBJ_EXT)', + OBJECT => $object, DEFINE => '-DPERL_EXT_RE_BUILD -DPERL_EXT_RE_DEBUG', clean => { FILES => '*$(OBJ_EXT) *.c ../../lib/re.pm' }, ); diff --git a/fix_pl b/fix_pl deleted file mode 100644 index 44c3f52170..0000000000 --- a/fix_pl +++ /dev/null @@ -1,21 +0,0 @@ -#!perl -# Not fixing perl, but fixing the patchlevel if this perl comes -# from the repository rather than an official release -exit unless -e ".patch"; -open PATCH, ".patch" or die "Couldn't open .patch: $!"; -open PLIN, "patchlevel.h" or die "Couldn't open patchlevel.h : $!"; -open PLOUT, ">patchlevel.new" or die "Couldn't write on patchlevel.new : $!"; -my $pl = <PATCH>; -chomp ($pl); -$pl =~ s/\D//g; -my $seen=0; -while (<PLIN>) { - if (/\t,NULL/ and $seen) { - print PLOUT "\t,\"devel-$pl\"\n"; - } - $seen++ if /local_patches\[\]/; - print PLOUT; -} -close PLOUT; close PLIN; -rename "patchlevel.new", "patchlevel.h" or die "Couldn't rename: $!"; -unlink ".patch"; @@ -23,4 +23,5 @@ #define FF_NEWLINE 13 #define FF_BLANK 14 #define FF_MORE 15 +#define FF_0DECIMAL 16 diff --git a/global.sym b/global.sym index 0dea03efbe..2143319d85 100644 --- a/global.sym +++ b/global.sym @@ -465,8 +465,8 @@ Perl_utf8_distance Perl_utf8_hop Perl_utf8_to_bytes Perl_bytes_to_utf8 +Perl_utf8_to_uv_simple Perl_utf8_to_uv -Perl_utf8_to_uv_chk Perl_uv_to_utf8 Perl_warn Perl_vwarn @@ -448,21 +448,23 @@ Converts the specified character to lowercase. #define isPSXSPC_utf8(c) (isSPACE_utf8(c) ||(c) == '\f') #define isBLANK_utf8(c) isBLANK(c) /* could be wrong */ -#define isALNUM_LC_utf8(p) isALNUM_LC_uni(utf8_to_uv_chk(p, 0, 0)) -#define isIDFIRST_LC_utf8(p) isIDFIRST_LC_uni(utf8_to_uv_chk(p, 0, 0)) -#define isALPHA_LC_utf8(p) isALPHA_LC_uni(utf8_to_uv_chk(p, 0, 0)) -#define isSPACE_LC_utf8(p) isSPACE_LC_uni(utf8_to_uv_chk(p, 0, 0)) -#define isDIGIT_LC_utf8(p) isDIGIT_LC_uni(utf8_to_uv_chk(p, 0, 0)) -#define isUPPER_LC_utf8(p) isUPPER_LC_uni(utf8_to_uv_chk(p, 0, 0)) -#define isLOWER_LC_utf8(p) isLOWER_LC_uni(utf8_to_uv_chk(p, 0, 0)) -#define isALNUMC_LC_utf8(p) isALNUMC_LC_uni(utf8_to_uv_chk(p, 0, 0)) -#define isCNTRL_LC_utf8(p) isCNTRL_LC_uni(utf8_to_uv_chk(p, 0, 0)) -#define isGRAPH_LC_utf8(p) isGRAPH_LC_uni(utf8_to_uv_chk(p, 0, 0)) -#define isPRINT_LC_utf8(p) isPRINT_LC_uni(utf8_to_uv_chk(p, 0, 0)) -#define isPUNCT_LC_utf8(p) isPUNCT_LC_uni(utf8_to_uv_chk(p, 0, 0)) -#define toUPPER_LC_utf8(p) toUPPER_LC_uni(utf8_to_uv_chk(p, 0, 0)) -#define toTITLE_LC_utf8(p) toTITLE_LC_uni(utf8_to_uv_chk(p, 0, 0)) -#define toLOWER_LC_utf8(p) toLOWER_LC_uni(utf8_to_uv_chk(p, 0, 0)) +#define STRLEN_MAX ((STRLEN)-1) + +#define isALNUM_LC_utf8(p) isALNUM_LC_uni(utf8_to_uv(p, STRLEN_MAX, 0, 0)) +#define isIDFIRST_LC_utf8(p) isIDFIRST_LC_uni(utf8_to_uv(p, STRLEN_MAX, 0, 0)) +#define isALPHA_LC_utf8(p) isALPHA_LC_uni(utf8_to_uv(p, STRLEN_MAX, 0, 0)) +#define isSPACE_LC_utf8(p) isSPACE_LC_uni(utf8_to_uv(p, STRLEN_MAX, 0, 0)) +#define isDIGIT_LC_utf8(p) isDIGIT_LC_uni(utf8_to_uv(p, STRLEN_MAX, 0, 0)) +#define isUPPER_LC_utf8(p) isUPPER_LC_uni(utf8_to_uv(p, STRLEN_MAX, 0, 0)) +#define isLOWER_LC_utf8(p) isLOWER_LC_uni(utf8_to_uv(p, STRLEN_MAX, 0, 0)) +#define isALNUMC_LC_utf8(p) isALNUMC_LC_uni(utf8_to_uv(p, STRLEN_MAX, 0, 0)) +#define isCNTRL_LC_utf8(p) isCNTRL_LC_uni(utf8_to_uv(p, STRLEN_MAX, 0, 0)) +#define isGRAPH_LC_utf8(p) isGRAPH_LC_uni(utf8_to_uv(p, STRLEN_MAX, 0, 0)) +#define isPRINT_LC_utf8(p) isPRINT_LC_uni(utf8_to_uv(p, STRLEN_MAX, 0, 0)) +#define isPUNCT_LC_utf8(p) isPUNCT_LC_uni(utf8_to_uv(p, STRLEN_MAX, 0, 0)) +#define toUPPER_LC_utf8(p) toUPPER_LC_uni(utf8_to_uv(p, STRLEN_MAX, 0, 0)) +#define toTITLE_LC_utf8(p) toTITLE_LC_uni(utf8_to_uv(p, STRLEN_MAX, 0, 0)) +#define toLOWER_LC_utf8(p) toLOWER_LC_uni(utf8_to_uv(p, STRLEN_MAX, 0, 0)) #define isPSXSPC_LC_utf8(c) (isSPACE_LC_utf8(c) ||(c) == '\f') #define isBLANK_LC_utf8(c) isBLANK(c) /* could be wrong */ diff --git a/hints/aix.sh b/hints/aix.sh index cf7e43cce7..35ee662350 100644 --- a/hints/aix.sh +++ b/hints/aix.sh @@ -130,6 +130,13 @@ case "$cc" in *gcc*) ccdlflags='-Xlinker' ;; *) ccversion=`lslpp -L | grep 'C for AIX Compiler$' | awk '{print $2}'` case "$ccversion" in + '') ccversion=`lslpp -L | grep 'IBM C and C++ Compilers LUM$' | awk '{print $2}'` + ;; + esac + case "$ccversion" in + 3.6.6.0) + optimize='none' + ;; 4.4.0.0|4.4.0.1|4.4.0.2) echo >&4 "*** This C compiler ($ccversion) is outdated." echo >&4 "*** Please upgrade to at least 4.4.0.3." diff --git a/hints/freebsd.sh b/hints/freebsd.sh index 0ba6b6190e..cc48351879 100644 --- a/hints/freebsd.sh +++ b/hints/freebsd.sh @@ -86,13 +86,6 @@ case "$osvers" in d_setegid='undef' d_seteuid='undef' ;; -3.*) - usevfork='true' - usemymalloc='n' - libswanted=`echo $libswanted | sed 's/ malloc / /'` - ;; -# -# Guesses at what will be needed after 3.* *) usevfork='true' usemymalloc='n' libswanted=`echo $libswanted | sed 's/ malloc / /'` diff --git a/hints/openbsd.sh b/hints/openbsd.sh index 5b79709055..2e7a433326 100644 --- a/hints/openbsd.sh +++ b/hints/openbsd.sh @@ -43,7 +43,7 @@ OpenBSD.alpha|OpenBSD.mips|OpenBSD.powerpc|OpenBSD.vax) ;; *) # from 2.8 onwards ld=${cc:-cc} - lddlflags="-shared $lddlflags" + lddlflags="-shared -fPIC $lddlflags" ;; esac ;; @@ -95,6 +95,9 @@ case "$openbsd_distribution" in sysman='/usr/share/man/man1' libpth='/usr/lib' glibpth='/usr/lib' + # Local things, however, do go in /usr/local + siteprefix='/usr/local' + siteprefixexp='/usr/local' # Ports installs non-std libs in /usr/local/lib so look there too locincpth='/usr/local/include' loclibpth='/usr/local/lib' diff --git a/installman b/installman index 72c76fd8a2..06f68f5ddd 100755 --- a/installman +++ b/installman @@ -23,19 +23,21 @@ die "Patchlevel of perl ($patchlevel)", my $usage = "Usage: installman --man1dir=/usr/wherever --man1ext=1 --man3dir=/usr/wherever --man3ext=3 + --batchlimit=40 --notify --verbose --silent --help Defaults are: man1dir = $Config{'installman1dir'}; man1ext = $Config{'man1ext'}; man3dir = $Config{'installman3dir'}; man3ext = $Config{'man3ext'}; + batchlimit is maximum number of pod files per invocation of pod2man --notify (or -n) just lists commands that would be executed. --verbose (or -V) report all progress. --silent (or -S) be silent. Only report errors.\n"; my %opts; GetOptions( \%opts, - qw( man1dir=s man1ext=s man3dir=s man3ext=s + qw( man1dir=s man1ext=s man3dir=s man3ext=s batchlimit=i notify n help silent S verbose V)) || die $usage; die $usage if $opts{help}; @@ -48,6 +50,7 @@ $opts{man3dir} = $Config{'installman3dir'} unless defined($opts{man3dir}); $opts{man3ext} = $Config{'man3ext'} unless defined($opts{man3ext}); +$opts{batchlimit} ||= 40; $opts{silent} ||= $opts{S}; $opts{notify} ||= $opts{n}; $opts{verbose} ||= $opts{V} || $opts{notify}; @@ -71,24 +74,12 @@ runpod2man('pod', $opts{man1dir}, $opts{man1ext}); runpod2man('lib', $opts{man3dir}, $opts{man3ext}); # Install the pods embedded in the installed scripts -runpod2man('utils', $opts{man1dir}, $opts{man1ext}, 'c2ph'); -runpod2man('utils', $opts{man1dir}, $opts{man1ext}, 'h2ph'); -runpod2man('utils', $opts{man1dir}, $opts{man1ext}, 'h2xs'); -runpod2man('utils', $opts{man1dir}, $opts{man1ext}, 'perlcc'); -runpod2man('utils', $opts{man1dir}, $opts{man1ext}, 'perldoc'); -runpod2man('utils', $opts{man1dir}, $opts{man1ext}, 'perlbug'); -runpod2man('utils', $opts{man1dir}, $opts{man1ext}, 'pl2pm'); -runpod2man('utils', $opts{man1dir}, $opts{man1ext}, 'splain'); -runpod2man('utils', $opts{man1dir}, $opts{man1ext}, 'dprofpp'); -runpod2man('x2p', $opts{man1dir}, $opts{man1ext}, 's2p'); -runpod2man('x2p', $opts{man1dir}, $opts{man1ext}, 'a2p.pod'); -runpod2man('x2p', $opts{man1dir}, $opts{man1ext}, 'find2perl'); -runpod2man('pod', $opts{man1dir}, $opts{man1ext}, 'pod2man'); -runpod2man('pod', $opts{man1dir}, $opts{man1ext}, 'pod2html'); -runpod2man('pod', $opts{man1dir}, $opts{man1ext}, 'pod2text'); -runpod2man('pod', $opts{man1dir}, $opts{man1ext}, 'pod2usage'); -runpod2man('pod', $opts{man1dir}, $opts{man1ext}, 'podchecker'); -runpod2man('pod', $opts{man1dir}, $opts{man1ext}, 'podselect'); +runpod2man('utils', $opts{man1dir}, $opts{man1ext}, 'c2ph', 'h2ph', 'h2xs', + 'perlcc', 'perldoc', 'perlbug', 'pl2pm', 'splain', 'dprofpp'); +runpod2man('x2p', $opts{man1dir}, $opts{man1ext}, 's2p', 'a2p.pod', + 'find2perl'); +runpod2man('pod', $opts{man1dir}, $opts{man1ext}, 'pod2man', 'pod2html', + 'pod2text', 'pod2usage', 'podchecker', 'podselect'); # It would probably be better to have this page linked # to the c2ph man page. Or, this one could say ".so man1/c2ph.1", @@ -98,9 +89,9 @@ runpod2man('utils', $opts{man1dir}, $opts{man1ext}, 'pstruct'); runpod2man('lib/ExtUtils', $opts{man1dir}, $opts{man1ext}, 'xsubpp'); sub runpod2man { - # $script is script name if we are installing a manpage embedded - # in a script, undef otherwise - my($poddir, $mandir, $manext, $script) = @_; + # @script is scripts names if we are installing manpages embedded + # in scripts, () otherwise + my($poddir, $mandir, $manext, @script) = @_; my($downdir); # can't just use .. when installing xsubpp manpage @@ -109,8 +100,12 @@ sub runpod2man { my($builddir) = Cwd::getcwd(); if ($mandir eq ' ' or $mandir eq '') { - warn "Skipping installation of ", - ($script ? "$poddir/$script man page" : "$poddir man pages"), ".\n"; + if (@script) { + warn "Skipping installation of $poddir/$_ man page.\n" + foreach @script; + } else { + warn "Skipping installation of $poddir man pages.\n"; + } return; } @@ -134,13 +129,14 @@ sub runpod2man { # Make a list of all the .pm and .pod files in the directory. We will # always run pod2man from the lib directory and feed it the full pathname # of the pod. This might be useful for pod2man someday. - if ($script) { - @modpods = ($script); + if (@script) { + @modpods = @script; } else { @modpods = (); File::Find::find(\&lsmodpods, '.'); } + my @to_process; foreach my $mod (@modpods) { my $manpage = $mod; my $tmp; @@ -159,15 +155,25 @@ sub runpod2man { } $tmp = "${mandir}/${manpage}.tmp"; $manpage = "${mandir}/${manpage}.${manext}"; - if (&cmd("$pod2man $mod > $tmp") == 0 && !$opts{notify} && -s $tmp) { - if (rename($tmp, $manpage)) { - $packlist->{$manpage} = { type => 'file' }; - next; + push @to_process, [$mod, $tmp, $manpage]; + } + # Don't do all pods in same command to avoid busting command line limits + while (my @this_batch = splice @to_process, 0, $opts{batchlimit}) { + my $cmd = join " ", $pod2man, map "$$_[0] $$_[1]", @this_batch; + if (&cmd($cmd) == 0 && !$opts{notify}) { + foreach (@this_batch) { + my (undef, $tmp, $manpage) = @$_; + if (-s $tmp) { + if (rename($tmp, $manpage)) { + $packlist->{$manpage} = { type => 'file' }; + next; + } + } + unless ($opts{notify}) { + unlink($tmp); + } } } - unless ($opts{notify}) { - unlink($tmp); - } } chdir "$builddir" || die "Unable to cd back to $builddir directory!\n$!\n"; print " chdir $builddir\n" if $opts{verbose}; diff --git a/iperlsys.h b/iperlsys.h index 9357e0e2d6..caca9df2d8 100644 --- a/iperlsys.h +++ b/iperlsys.h @@ -186,13 +186,19 @@ struct IPerlStdIOInfo #ifdef USE_STDIO_PTR # define PerlIO_has_cntptr(f) 1 -# ifdef STDIO_CNT_LVALUE -# define PerlIO_canset_cnt(f) 1 -# ifdef STDIO_PTR_LVALUE +# ifdef STDIO_PTR_LVALUE +# ifdef STDIO_CNT_LVALUE +# define PerlIO_canset_cnt(f) 1 +# ifdef STDIO_PTR_LVAL_NOCHANGE_CNT +# define PerlIO_fast_gets(f) 1 +# endif +# else /* STDIO_CNT_LVALUE */ +# define PerlIO_canset_cnt(f) 0 +# endif +# else /* STDIO_PTR_LVALUE */ +# ifdef STDIO_PTR_LVAL_SETS_CNT # define PerlIO_fast_gets(f) 1 # endif -# else -# define PerlIO_canset_cnt(f) 0 # endif #else /* USE_STDIO_PTR */ # define PerlIO_has_cntptr(f) 0 diff --git a/lib/CPAN.pm b/lib/CPAN.pm index aeb6a57958..f037b88991 100644 --- a/lib/CPAN.pm +++ b/lib/CPAN.pm @@ -1,12 +1,12 @@ # -*- Mode: cperl; coding: utf-8; cperl-indent-level: 4 -*- package CPAN; -$VERSION = '1.57_68RC'; +$VERSION = '1.58_55'; -# $Id: CPAN.pm,v 1.354 2000/10/08 14:20:57 k Exp $ +# $Id: CPAN.pm,v 1.366 2000/10/27 07:45:49 k Exp $ # only used during development: $Revision = ""; -# $Revision = "[".substr(q$Revision: 1.354 $, 10)."]"; +# $Revision = "[".substr(q$Revision: 1.366 $, 10)."]"; use Carp (); use Config (); @@ -56,7 +56,7 @@ package CPAN; use strict qw(vars); use vars qw($VERSION @EXPORT $AUTOLOAD $DEBUG $META $HAS_USABLE $term - $Revision $Signal $Cwd $End $Suppress_readline $Frontend + $Revision $Signal $End $Suppress_readline $Frontend $Defaultsite $Have_warned); @CPAN::ISA = qw(CPAN::Debug Exporter); @@ -88,24 +88,24 @@ sub shell { $Suppress_readline = ! -t STDIN unless defined $Suppress_readline; CPAN::Config->load unless $CPAN::Config_loaded++; - CPAN::Index->read_metadata_cache; + my $oprompt = shift || "cpan> "; + my $prompt = $oprompt; + my $commandline = shift || ""; - my $prompt = "cpan> "; local($^W) = 1; unless ($Suppress_readline) { require Term::ReadLine; -# import Term::ReadLine; - $term = Term::ReadLine->new('CPAN Monitor'); + if (! $term + or + $term->ReadLine eq "Term::ReadLine::Stub" + ) { + $term = Term::ReadLine->new('CPAN Monitor'); + } if ($term->ReadLine eq "Term::ReadLine::Gnu") { my $attribs = $term->Attribs; -# $attribs->{completion_entry_function} = -# $attribs->{'list_completion_function'}; $attribs->{attempted_completion_function} = sub { &CPAN::Complete::gnu_cpl; } -# $attribs->{completion_word} = -# [qw(help me somebody to find out how -# to use completion with GNU)]; } else { $readline::rl_completion_function = $readline::rl_completion_function = 'CPAN::Complete::cpl'; @@ -120,9 +120,7 @@ sub shell { # no strict; # I do not recall why no strict was here (2000-09-03) $META->checklock(); - my $getcwd; - $getcwd = $CPAN::Config->{'getcwd'} || 'cwd'; - my $cwd = CPAN->$getcwd(); + my $cwd = CPAN::anycwd(); my $try_detect_readline; $try_detect_readline = $term->ReadLine eq "Term::ReadLine::Stub" if $term; my $rl_avail = $Suppress_readline ? "suppressed" : @@ -147,7 +145,7 @@ ReadLine support %s last unless defined ($_ = <> ); chomp; } else { - last unless defined ($_ = $term->readline($prompt)); + last unless defined ($_ = $term->readline($prompt, $commandline)); } $_ = "$continuation$_" if $continuation; s/^\s+//; @@ -169,7 +167,7 @@ ReadLine support %s eval($eval); warn $@ if $@; $continuation = ""; - $prompt = "cpan> "; + $prompt = $oprompt; } elsif (/./) { my(@line); if ($] < 5.00322) { # parsewords had a bug until recently @@ -185,9 +183,12 @@ ReadLine support %s chdir $cwd or $CPAN::Frontend->mydie(qq{Could not chdir to "$cwd": $!}); $CPAN::Frontend->myprint("\n"); $continuation = ""; - $prompt = "cpan> "; + $prompt = $oprompt; } } continue { + $commandline = ""; # I do want to be able to pass a default to + # shell, but on the second command I see no + # use in that $Signal=0; CPAN::Queue->nullify_queue; if ($try_detect_readline) { @@ -201,10 +202,12 @@ ReadLine support %s require Term::ReadLine; $CPAN::Frontend->myprint("\n$redef subroutines in ". "Term::ReadLine redefined\n"); + @_ = ($oprompt,""); goto &shell; } } } + chdir $cwd or $CPAN::Frontend->mydie(qq{Could not chdir to "$cwd": $!}); } package CPAN::CacheMgr; @@ -226,6 +229,10 @@ use vars qw($Ua $Thesite $Themethod); package CPAN::Complete; @CPAN::Complete::ISA = qw(CPAN::Debug); +@CPAN::Complete::COMMANDS = sort qw( + ! a b d h i m o q r u autobundle clean dump + make test install force readme reload look cvs_import +) unless @CPAN::Complete::COMMANDS; package CPAN::Index; use vars qw($last_time $date_of_03); @@ -251,8 +258,9 @@ package CPAN::Module; @CPAN::Module::ISA = qw(CPAN::InfoObj); package CPAN::Shell; -use vars qw($AUTOLOAD @ISA); +use vars qw($AUTOLOAD @ISA $COLOR_REGISTERED); @CPAN::Shell::ISA = qw(CPAN::Debug); +$COLOR_REGISTERED ||= 0; #-> sub CPAN::Shell::AUTOLOAD ; sub AUTOLOAD { @@ -583,6 +591,13 @@ sub DESTROY { &cleanup; # need an eval? } +#-> sub CPAN::anycwd ; +sub anycwd () { + my $getcwd; + $getcwd = $CPAN::Config->{'getcwd'} || 'cwd'; + CPAN->$getcwd(); +} + #-> sub CPAN::cwd ; sub cwd {Cwd::cwd();} @@ -592,6 +607,7 @@ sub getcwd {Cwd::getcwd();} #-> sub CPAN::exists ; sub exists { my($mgr,$class,$id) = @_; + CPAN::Config->load unless $CPAN::Config_loaded++; CPAN::Index->reload; ### Carp::croak "exists called without class argument" unless $class; $id ||= ""; @@ -788,9 +804,7 @@ sub entries { return unless defined $dir; $self->debug("reading dir[$dir]") if $CPAN::DEBUG; $dir ||= $self->{ID}; - my $getcwd; - $getcwd = $CPAN::Config->{'getcwd'} || 'cwd'; - my($cwd) = CPAN->$getcwd(); + my($cwd) = CPAN::anycwd(); chdir $dir or Carp::croak("Can't chdir to $dir: $!"); my $dh = DirHandle->new(File::Spec->curdir) or Carp::croak("Couldn't opendir $dir: $!"); @@ -1030,7 +1044,7 @@ EOF my($fh) = FileHandle->new; rename $configpm, "$configpm~" if -f $configpm; open $fh, ">$configpm" or - $CPAN::Frontend->mywarn("Couldn't open >$configpm: $!"); + $CPAN::Frontend->mydie("Couldn't open >$configpm: $!"); $fh->print(qq[$msg\$CPAN::Config = \{\n]); foreach (sort keys %$CPAN::Config) { $fh->print( @@ -1499,7 +1513,7 @@ sub _u_r_common { my(@result,$module,%seen,%need,$headerdone, $version_undefs,$version_zeroes); $version_undefs = $version_zeroes = 0; - my $sprintf = "%-25s %9s %9s %s\n"; + my $sprintf = "%s%-25s%s %9s %9s %s\n"; my @expand = $self->expand('Module',@args); my $expand = scalar @expand; if (0) { # Looks like noise to me, was very useful for debugging @@ -1555,15 +1569,31 @@ sub _u_r_common { unless ($headerdone++){ $CPAN::Frontend->myprint("\n"); $CPAN::Frontend->myprint(sprintf( - $sprintf, - "Package namespace", - "installed", - "latest", - "in CPAN file" - )); + $sprintf, + "", + "Package namespace", + "", + "installed", + "latest", + "in CPAN file" + )); } + my $color_on = ""; + my $color_off = ""; + if ( + $COLOR_REGISTERED + && + $CPAN::META->has_inst("Term::ANSIColor") + && + $module->{RO}{description} + ) { + $color_on = Term::ANSIColor::color("green"); + $color_off = Term::ANSIColor::color("reset"); + } $CPAN::Frontend->myprint(sprintf $sprintf, + $color_on, $module->id, + $color_off, $have, $latest, $file); @@ -2291,7 +2321,7 @@ sub hosthard { $self->debug("localizing funkyftpwise[$url]") if $CPAN::DEBUG; my($f,$funkyftp); - for $f ('lynx','ncftpget','ncftp') { + for $f ('lynx','ncftpget','ncftp','wget') { next unless exists $CPAN::Config->{$f}; $funkyftp = $CPAN::Config->{$f}; next unless defined $funkyftp; @@ -2304,6 +2334,8 @@ sub hosthard { $src_switch = " -source"; } elsif ($f eq "ncftp"){ $src_switch = " -c"; + } elsif ($f eq "wget"){ + $src_switch = " -O -"; } my($chdir) = ""; my($stdout_redir) = " > $asl_ungz"; @@ -2609,6 +2641,7 @@ sub new { }, $class; } +# CPAN::FTP::hasdefault; sub hasdefault { shift->{'hasdefault'} } sub netrc { shift->{'netrc'} } sub protected { shift->{'protected'} } @@ -2656,13 +2689,7 @@ sub cpl { } my @return; if ($pos == 0) { - @return = grep( - /^$word/, - sort qw( - ! a b d h i m o q r u autobundle clean dump - make test install force readme reload look cvs_import - ) - ); + @return = grep /^$word/, @CPAN::Complete::COMMANDS; } elsif ( $line !~ /^[\!abcdhimorutl]/ ) { @return = (); } elsif ($line =~ /^a\s/) { @@ -2681,6 +2708,9 @@ sub cpl { @return = cpl_reload($word,$line,$pos); } elsif ($line =~ /^o\s/) { @return = cpl_option($word,$line,$pos); + } elsif ($line =~ m/^\S+\s/ ) { + # fallback for future commands and what we have forgotten above + @return = (cplx('CPAN::Module',$word),cplx('CPAN::Bundle',$word)); } else { @return = (); } @@ -2757,7 +2787,15 @@ sub reload { for ($CPAN::Config->{index_expire}) { $_ = 0.001 unless $_ && $_ > 0.001; } - $CPAN::META->{PROTOCOL} ||= "1.0"; + unless (1 || $CPAN::Have_warned->{readmetadatacache}++) { + # debug here when CPAN doesn't seem to read the Metadata + require Carp; + Carp::cluck("META-PROTOCOL[$CPAN::META->{PROTOCOL}]"); + } + unless ($CPAN::META->{PROTOCOL}) { + $cl->read_metadata_cache; + $CPAN::META->{PROTOCOL} ||= "1.0"; + } if ( $CPAN::META->{PROTOCOL} < PROTOCOL ) { # warn "Setting last_time to 0"; $last_time = 0; # No warning necessary @@ -3047,7 +3085,7 @@ sub rd_modlist { Carp::confess($@) if $@; return if $CPAN::Signal; for (keys %$ret) { - my $obj = $CPAN::META->instance(CPAN::Module,$_); + my $obj = $CPAN::META->instance("CPAN::Module",$_); delete $ret->{$_}{modid}; # not needed here, maybe elsewhere $obj->set(%{$ret->{$_}}); return if $CPAN::Signal; @@ -3187,17 +3225,20 @@ sub as_string { # next if m/^(ID|RO)$/; my $extra = ""; if ($_ eq "CPAN_USERID") { - $extra .= " (".$self->author; - my $email; # old perls! - if ($email = $CPAN::META->instance(CPAN::Author, - $self->cpan_userid - )->email) { - $extra .= " <$email>"; - } else { - $extra .= " <no email>"; - } - $extra .= ")"; - } + $extra .= " (".$self->author; + my $email; # old perls! + if ($email = $CPAN::META->instance("CPAN::Author", + $self->cpan_userid + )->email) { + $extra .= " <$email>"; + } else { + $extra .= " <no email>"; + } + $extra .= ")"; + } elsif ($_ eq "FULLNAME") { # potential UTF-8 conversion + push @m, sprintf " %-12s %s\n", $_, $self->fullname; + next; + } next unless defined $self->{RO}{$_}; push @m, sprintf " %-12s %s%s\n", $_, $self->{RO}{$_}, $extra; } @@ -3221,7 +3262,7 @@ sub as_string { #-> sub CPAN::InfoObj::author ; sub author { my($self) = @_; - $CPAN::META->instance(CPAN::Author,$self->cpan_userid)->fullname; + $CPAN::META->instance("CPAN::Author",$self->cpan_userid)->fullname; } #-> sub CPAN::InfoObj::dump ; @@ -3244,7 +3285,13 @@ sub as_glimpse { } #-> sub CPAN::Author::fullname ; -sub fullname { shift->{RO}{FULLNAME} } +sub fullname { + my $fullname = shift->{RO}{FULLNAME}; + return $fullname unless $CPAN::Config->{term_is_latin}; + # courtesy jhi: + $fullname =~ s/([\xC0-\xDF])([\x80-\xBF])/chr(ord($1)<<6&0xC0|ord($2)&0x3F)/eg; + $fullname; +} *name = \&fullname; #-> sub CPAN::Author::email ; @@ -3300,15 +3347,16 @@ sub as_string { #-> sub CPAN::Distribution::containsmods ; sub containsmods { my $self = shift; - return if exists $self->{CONTAINSMODS}; + return keys %{$self->{CONTAINSMODS}} if exists $self->{CONTAINSMODS}; + my $dist_id = $self->{ID}; for my $mod ($CPAN::META->all_objects("CPAN::Module")) { my $mod_file = $mod->cpan_file or next; - my $dist_id = $self->{ID} or next; my $mod_id = $mod->{ID} or next; # warn "mod_file[$mod_file] dist_id[$dist_id] mod_id[$mod_id]"; # sleep 1; $self->{CONTAINSMODS}{$mod_id} = undef if $mod_file eq $dist_id; } + keys %{$self->{CONTAINSMODS}}; } #-> sub CPAN::Distribution::called_for ; @@ -3337,6 +3385,7 @@ sub get { ); $self->debug("Doing localize") if $CPAN::DEBUG; + my $CWD = CPAN::anycwd(); $local_file = CPAN::FTP->localize("authors/id/$self->{ID}", $local_wanted) or $CPAN::Frontend->mydie("Giving up on '$local_wanted'\n"); @@ -3374,11 +3423,14 @@ sub get { } else { $self->{archived} = "NO"; } - my $cwd = File::Spec->updir; - chdir $cwd or $CPAN::Frontend->mydie(qq{Could not chdir to "": $!}); + my $updir = File::Spec->updir; + unless (chdir $updir) { + my $cwd = CPAN::anycwd(); + $CPAN::Frontend->mydie(qq{Could not chdir from cwd[$cwd] to updir[$updir]: $!}); + } if ($self->{archived} ne 'NO') { - $cwd = File::Spec->catdir(File::Spec->curdir, "tmp"); - chdir $cwd or $CPAN::Frontend->mydie(qq{Could not chdir to "$cwd": $!}); + my $cwd = File::Spec->catdir(File::Spec->curdir, "tmp"); + chdir $cwd or $CPAN::Frontend->mydie(qq{Could not chdir to "$cwd": $!}); # Let's check if the package has its own directory. my $dh = DirHandle->new(File::Spec->curdir) or Carp::croak("Couldn't opendir .: $!"); @@ -3411,8 +3463,11 @@ sub get { } } $self->{'build_dir'} = $packagedir; - $cwd = File::Spec->updir; - chdir $cwd or $CPAN::Frontend->mydie(qq{Could not chdir to "$cwd": $!}); + chdir $updir; + unless (chdir $updir) { + my $cwd = CPAN::anycwd(); + $CPAN::Frontend->mydie(qq{Could not chdir from cwd[$cwd] to updir[$updir]: $!}); + } $self->debug("Changed directory to .. (self[$self]=[". $self->as_string."])") if $CPAN::DEBUG; @@ -3460,6 +3515,7 @@ WriteMakefile(NAME => q[$cf]); } } } + chdir $CWD or die "Could not chdir to $CWD: $!"; return $self; } @@ -3531,9 +3587,7 @@ Please define it with "o conf shell <your shell>" my $dist = $self->id; my $dir = $self->dir or $self->get; $dir = $self->dir; - my $getcwd; - $getcwd = $CPAN::Config->{'getcwd'} || 'cwd'; - my $pwd = CPAN->$getcwd(); + my $pwd = CPAN::anycwd(); chdir($dir) or $CPAN::Frontend->mydie(qq{Could not chdir to "$dir": $!}); $CPAN::Frontend->myprint(qq{Working directory is $dir\n}); system($CPAN::Config->{'shell'}) == 0 @@ -3567,9 +3621,7 @@ sub cvs_import { my @cmd = ('cvs', '-d', $cvs_root, 'import', '-m', $cvs_log, "$cvs_dir", $userid, "v$version"); - my $getcwd; - $getcwd = $CPAN::Config->{'getcwd'} || 'cwd'; - my $pwd = CPAN->$getcwd(); + my $pwd = CPAN::anycwd(); chdir($dir) or $CPAN::Frontend->mydie(qq{Could not chdir to "$dir": $!}); $CPAN::Frontend->myprint(qq{Working directory is $dir\n}); @@ -3824,8 +3876,7 @@ sub isa_perl { sub perl { my($self) = @_; my($perl) = MM->file_name_is_absolute($^X) ? $^X : ""; - my $getcwd = $CPAN::Config->{'getcwd'} || 'cwd'; - my $pwd = CPAN->$getcwd(); + my $pwd = CPAN::anycwd(); my $candidate = MM->catfile($pwd,$^X); $perl ||= $candidate if MM->maybe_command($candidate); unless ($perl) { @@ -4403,8 +4454,7 @@ sub find_bundle_file { my $manifest = MM->catfile($where,"MANIFEST"); unless (-f $manifest) { require ExtUtils::Manifest; - my $getcwd = $CPAN::Config->{'getcwd'} || 'cwd'; - my $cwd = CPAN->$getcwd(); + my $cwd = CPAN::anycwd(); chdir $where or $CPAN::Frontend->mydie(qq{Could not chdir to "$where": $!}); ExtUtils::Manifest::mkmanifest(); chdir $cwd or $CPAN::Frontend->mydie(qq{Could not chdir to "$cwd": $!}); @@ -4624,7 +4674,23 @@ sub as_glimpse { my(@m); my $class = ref($self); $class =~ s/^CPAN:://; - push @m, sprintf("%-15s %-15s (%s)\n", $class, $self->{ID}, + my $color_on = ""; + my $color_off = ""; + if ( + $CPAN::Shell::COLOR_REGISTERED + && + $CPAN::META->has_inst("Term::ANSIColor") + && + $self->{RO}{description} + ) { + $color_on = Term::ANSIColor::color("green"); + $color_off = Term::ANSIColor::color("reset"); + } + push @m, sprintf("%-15s %s%-15s%s (%s)\n", + $class, + $color_on, + $self->id, + $color_off, $self->cpan_file); join "", @m; } @@ -4689,8 +4755,41 @@ sub as_string { $stati{$self->{RO}{stati}} ) if $self->{RO}{statd}; my $local_file = $self->inst_file; - if ($local_file) { - $self->{MANPAGE} ||= $self->manpage_headline($local_file); + unless ($self->{MANPAGE}) { + if ($local_file) { + $self->{MANPAGE} = $self->manpage_headline($local_file); + } else { + # If we have already untarred it, we should look there + my $dist = $CPAN::META->instance('CPAN::Distribution', + $self->cpan_file); + # warn "dist[$dist]"; + # mff=manifest file; mfh=manifest handle + my($mff,$mfh); + if ($dist->{build_dir} and + -f ($mff = MM->catfile($dist->{build_dir}, "MANIFEST")) and + $mfh = FileHandle->new($mff) + ) { + # warn "mff[$mff]"; + my $lfre = $self->id; # local file RE + $lfre =~ s/::/./g; + $lfre .= "\\.pm\$"; + my($lfl); # local file file + local $/ = "\n"; + my(@mflines) = <$mfh>; + while (length($lfre)>5 and !$lfl) { + ($lfl) = grep /$lfre/, @mflines; + $lfre =~ s/.+?\.//; + # warn "lfl[$lfl]lfre[$lfre]"; + } + $lfl =~ s/\s.*//; # remove comments + $lfl =~ s/\s+//g; # chomp would maybe be too system-specific + my $lfl_abs = MM->catfile($dist->{build_dir},$lfl); + # warn "lfl_abs[$lfl_abs]"; + if (-f $lfl_abs) { + $self->{MANPAGE} = $self->manpage_headline($lfl_abs); + } + } + } } my($item); for $item (qw/MANPAGE/) { @@ -5333,6 +5432,10 @@ command completion. Once you are on the command line, type 'h' and the rest should be self-explanatory. +The function call C<shell> takes two optional arguments, one is the +prompt, the second is the default initial command line (the latter +only works if a real ReadLine interface module is installed). + The most common uses of the interactive modes are =over 2 @@ -5549,10 +5652,10 @@ all modules that need updating. First a quick and dirty way: perl -e 'use CPAN; CPAN::Shell->r;' -If you don't want to get any output if all modules are up to date, you -can parse the output of above command for the regular expression -//modules are up to date// and decide to mail the output only if it -doesn't match. Ick? +If you don't want to get any output in the case that all modules are +up to date, you can parse the output of above command for the regular +expression //modules are up to date// and decide to mail the output +only if it doesn't match. Ick? If you prefer to do it more in a programmer style in one single process, maybe something like this suites you better: @@ -5734,6 +5837,8 @@ defined: ('follow' automatically, 'ask' me, or 'ignore') scan_cache controls scanning of cache ('atstart' or 'never') tar location of external program tar + term_is_latin if true internal UTF-8 is translated to ISO-8859-1 + (and nonsense for characters outside latin range) unzip location of external program unzip urllist arrayref to nearby CPAN sites (or equivalent locations) wait_list arrayref to a wait server to try (See CPAN::WAIT) @@ -5952,7 +6057,22 @@ Because there are people who have their precise expectations about who may install where in the @INC path and who uses which @INC array. In fine tuned environments C<UNINST=1> can cause damage. -=item 3) When I install bundles or multiple modules with one command +=item 3) I want to clean up my mess, and install a new perl along with + all modules I have. How do I go about it? + +Run the autobundle command for your old perl and optionally rename the +resulting bundle file (e.g. Bundle/mybundle.pm), install the new perl +with the Configure option prefix, e.g. + + ./Configure -Dprefix=/usr/local/perl-5.6.78.9 + +Install the bundle file you produced in the first step with something like + + cpan> install Bundle::mybundle + +and you're done. + +=item 4) When I install bundles or multiple modules with one command there is too much output to keep track of You may want to configure something like @@ -5963,7 +6083,7 @@ You may want to configure something like so that STDOUT is captured in a file for later inspection. -=item 4) I am not root, how can I install a module in a personal +=item 5) I am not root, how can I install a module in a personal directory? You will most probably like something like this: @@ -5987,12 +6107,12 @@ or setting the PERL5LIB environment variable. Another thing you should bear in mind is that the UNINST parameter should never be set if you are not root. -=item 5) How to get a package, unwrap it, and make a change before +=item 6) How to get a package, unwrap it, and make a change before building it? look Sybase::Sybperl -=item 6) I installed a Bundle and had a couple of fails. When I +=item 7) I installed a Bundle and had a couple of fails. When I retried, everything resolved nicely. Can this be fixed to work on first try? @@ -6011,12 +6131,19 @@ definition file manually. It is planned to improve the metadata situation for dependencies on CPAN in general, but this will still take some time. -=item 7) In our intranet we have many modules for internal use. How +=item 8) In our intranet we have many modules for internal use. How can I integrate these modules with CPAN.pm but without uploading the modules to CPAN? Have a look at the CPAN::Site module. +=item 9) When I run CPAN's shell, I get error msg about line 1 to 4, + setting meta input/output via the /etc/inputrc file. + +I guess, /etc/inputrc interacts with Term::ReadLine somehow. Maybe +just remove /etc/inputrc or set the INPUTRC environment variable (see +the readline documentation). + =back =head1 BUGS diff --git a/lib/CPAN/FirstTime.pm b/lib/CPAN/FirstTime.pm index 9f8366e073..7560321ee1 100644 --- a/lib/CPAN/FirstTime.pm +++ b/lib/CPAN/FirstTime.pm @@ -16,7 +16,7 @@ use FileHandle (); use File::Basename (); use File::Path (); use vars qw($VERSION); -$VERSION = substr q$Revision: 1.46 $, 10; +$VERSION = substr q$Revision: 1.48 $, 10; =head1 NAME @@ -174,6 +174,9 @@ disable the cache scanning with 'never'. } while ($ans ne 'atstart' && $ans ne 'never'); $CPAN::Config->{scan_cache} = $ans; + # + # cache_metadata + # print qq{ To considerably speed up the initial CPAN shell startup, it is @@ -189,6 +192,30 @@ is not available, the normal index mechanism will be used. $CPAN::Config->{cache_metadata} = ($ans =~ /^\s*y/i ? 1 : 0); # + # term_is_latin + # + print qq{ + +The next option deals with the charset your terminal supports. In +general CPAN is English speaking territory, thus the charset does not +matter much, but some of the aliens out there who upload their +software to CPAN bear names that are outside the ASCII range. If your +terminal supports UTF-8, you say no to the next question, if it +supports ISO-8859-1 (also known as LATIN1) then you say yes, and if it +supports neither nor, your answer does not matter, you will not be +able to read the names of some authors anyway. If you answer no, nmes +will be output in UTF-8. + +}; + + defined($default = $CPAN::Config->{term_is_latin}) or $default = 1; + do { + $ans = prompt("Your terminal expects ISO-8859-1 (yes/no)?", + ($default ? 'yes' : 'no')); + } while ($ans !~ /^\s*[yn]/i); + $CPAN::Config->{term_is_latin} = ($ans =~ /^\s*y/i ? 1 : 0); + + # # prerequisites_policy # Do we follow PREREQ_PM? # @@ -216,10 +243,11 @@ policy to one of the three values. print qq{ -The CPAN module will need a few external programs to work -properly. Please correct me, if I guess the wrong path for a program. -Don\'t panic if you do not have some of them, just press ENTER for -those. +The CPAN module will need a few external programs to work properly. +Please correct me, if I guess the wrong path for a program. Don\'t +panic if you do not have some of them, just press ENTER for those. To +disable the use of a download program, you can type a space followed +by ENTER. }; @@ -228,7 +256,7 @@ those. my(@path) = split /$Config{'path_sep'}/, $ENV{'PATH'}; local $^W = $old_warn; my $progname; - for $progname (qw/gzip tar unzip make lynx ncftpget ncftp ftp/){ + for $progname (qw/gzip tar unzip make lynx wget ncftpget ncftp ftp/){ if ($^O eq 'MacOS') { $CPAN::Config->{$progname} = 'not_here'; next; diff --git a/lib/ExtUtils/Install.pm b/lib/ExtUtils/Install.pm index 92db8c908a..4a148a655e 100644 --- a/lib/ExtUtils/Install.pm +++ b/lib/ExtUtils/Install.pm @@ -394,4 +394,7 @@ of the hash to the corresponding values efficiently. Filenames with the extension pm are autosplit. Second argument is the autosplit directory. +You can have an environment variable PERL_INSTALL_ROOT set which will +be prepended as a directory to each installed file (and directory). + =cut diff --git a/lib/ExtUtils/MM_Unix.pm b/lib/ExtUtils/MM_Unix.pm index 52862c598e..27839652fd 100644 --- a/lib/ExtUtils/MM_Unix.pm +++ b/lib/ExtUtils/MM_Unix.pm @@ -2455,6 +2455,7 @@ MAP_PRELIBS = $Config::Config{perllibs} $Config::Config{cryptlib} } unless ($libperl && -f $lperl) { # Ilya's code... my $dir = $self->{PERL_SRC} || "$self->{PERL_ARCHLIB}/CORE"; + $dir = "$self->{PERL_ARCHLIB}/.." if $self->{UNINSTALLED_PERL}; $libperl ||= "libperl$self->{LIB_EXT}"; $libperl = "$dir/$libperl"; $lperl ||= "libperl$self->{LIB_EXT}"; diff --git a/lib/ExtUtils/MM_VMS.pm b/lib/ExtUtils/MM_VMS.pm index d966c7d236..377d5d124d 100644 --- a/lib/ExtUtils/MM_VMS.pm +++ b/lib/ExtUtils/MM_VMS.pm @@ -881,6 +881,11 @@ sub tool_xsubpp { unshift( @tmargs, $self->{XSOPT} ); } + if ($Config{'ldflags'} && + $Config{'ldflags'} =~ m!/Debug!i && + (!exists($self->{XSOPT}) || $self->{XSOPT} !~ /linenumbers/)) { + unshift(@tmargs,'-nolinenumbers'); + } my $xsubpp_version = $self->xsubpp_version($self->catfile($xsdir,'xsubpp')); # What are the correct thresholds for version 1 && 2 Paul? @@ -1209,7 +1214,7 @@ $(BASEEXT).opt : Makefile.PL s/.*[:>\/\]]//; # Trim off dir spec $upcase ? uc($_) : $_; } split ' ', $self->eliminate_macros($self->{OBJECT}); - my($tmp, @lines,$elt) = ''; + my($tmp,@lines,$elt) = ''; $tmp = shift @omods; foreach $elt (@omods) { $tmp .= ",$elt"; diff --git a/lib/ExtUtils/MakeMaker.pm b/lib/ExtUtils/MakeMaker.pm index bef12b54da..64f6986a4a 100644 --- a/lib/ExtUtils/MakeMaker.pm +++ b/lib/ExtUtils/MakeMaker.pm @@ -982,23 +982,39 @@ be perl Makefile.PL LIB=~/lib This will install the module's architecture-independent files into -~/lib, the architecture-dependent files into ~/lib/$archname/auto. +~/lib, the architecture-dependent files into ~/lib/$archname. Another way to specify many INSTALL directories with a single parameter is PREFIX. perl Makefile.PL PREFIX=~ -This will replace the string specified by $Config{prefix} in all -$Config{install*} values. +This will replace the string specified by C<$Config{prefix}> in all +C<$Config{install*}> values. Note, that in both cases the tilde expansion is done by MakeMaker, not -by perl by default, nor by make. Conflicts between parameters LIB, -PREFIX and the various INSTALL* arguments are resolved so that -XXX +by perl by default, nor by make. + +Conflicts between parameters LIB, +PREFIX and the various INSTALL* arguments are resolved so that: + +=over 4 + +=item * + +setting LIB overrides any setting of INSTALLPRIVLIB, INSTALLARCHLIB, +INSTALLSITELIB, INSTALLSITEARCH (and they are not affected by PREFIX); + +=item * + +without LIB, setting PREFIX replaces the initial C<$Config{prefix}> +part of those INSTALL* arguments, even if the latter are explicitly +set (but are set to still start with C<$Config{prefix}>). + +=back If the user has superuser privileges, and is not working on AFS -(Andrew File System) or relatives, then the defaults for +or relatives, then the defaults for INSTALLPRIVLIB, INSTALLARCHLIB, INSTALLSCRIPT, etc. will be appropriate, and this incantation will be the best: @@ -1145,11 +1161,6 @@ or as NAME=VALUE pairs on the command line: =over 2 -=item AUTHOR - -String containing name (and email address) of package author(s). Is used -in PPD (Perl Package Description) files for PPM (Perl Package Manager). - =item ABSTRACT One line description of the module. Will be included in PPD file. @@ -1160,6 +1171,11 @@ Name of the file that contains the package description. MakeMaker looks for a line in the POD matching /^($package\s-\s)(.*)/. This is typically the first line in the "=head1 NAME" section. $2 becomes the abstract. +=item AUTHOR + +String containing name (and email address) of package author(s). Is used +in PPD (Perl Package Description) files for PPM (Perl Package Manager). + =item BINARY_LOCATION Used when creating PPD files for binary packages. It can be set to a @@ -1409,11 +1425,6 @@ to INSTALLBIN during 'make install' Old name for INST_SCRIPT. Deprecated. Please use INST_SCRIPT if you need to use it. -=item INST_LIB - -Directory where we put library files of this extension while building -it. - =item INST_HTMLLIBDIR Directory to hold the man pages in HTML format at 'make' time @@ -1422,6 +1433,11 @@ Directory to hold the man pages in HTML format at 'make' time Directory to hold the man pages in HTML format at 'make' time +=item INST_LIB + +Directory where we put library files of this extension while building +it. + =item INST_MAN1DIR Directory to hold the man pages at 'make' time @@ -1437,34 +1453,6 @@ Directory, where executable files should be installed during testing. make install will copy the files in INST_SCRIPT to INSTALLSCRIPT. -=item PERL_MALLOC_OK - -defaults to 0. Should be set to TRUE if the extension can work with -the memory allocation routines substituted by the Perl malloc() subsystem. -This should be applicable to most extensions with exceptions of those - -=over - -=item * - -with bugs in memory allocations which are caught by Perl's malloc(); - -=item * - -which interact with the memory allocator in other ways than via -malloc(), realloc(), free(), calloc(), sbrk() and brk(); - -=item * - -which rely on special alignment which is not provided by Perl's malloc(). - -=back - -B<NOTE.> Negligence to set this flag in I<any one> of loaded extension -nullifies many advantages of Perl's malloc(), such as better usage of -system resources, error detection, memory usage reporting, catchable failure -of memory allocations, etc. - =item LDFROM defaults to "$(OBJECT)" and is used in the ld command to specify @@ -1473,8 +1461,12 @@ specify ld flags) =item LIB -LIB can only be set at C<perl Makefile.PL> time. It has the effect of +LIB should only be set at C<perl Makefile.PL> time but is allowed as a +MakeMaker argument. It has the effect of setting both INSTALLPRIVLIB and INSTALLSITELIB to that value regardless any +explicit setting of those arguments (or of PREFIX). +INSTALLARCHLIB and INSTALLSITEARCH are set to the corresponding +architecture subdirectory. =item LIBPERL_A @@ -1578,6 +1570,8 @@ List of object files, defaults to '$(BASEEXT)$(OBJ_EXT)', but can be a long string containing all object files, e.g. "tkpBind.o tkpButton.o tkpCanvas.o" +(Where BASEEXT is the last component of NAME, and OBJ_EXT is $Config{obj_ext}.) + =item OPTIMIZE Defaults to C<-O>. Set it to C<-g> to turn debugging on. The flag is @@ -1594,12 +1588,40 @@ to $(CC). =item PERL_ARCHLIB -Same as above for architecture dependent files. +Same as below, but for architecture dependent files. =item PERL_LIB Directory containing the Perl library to use. +=item PERL_MALLOC_OK + +defaults to 0. Should be set to TRUE if the extension can work with +the memory allocation routines substituted by the Perl malloc() subsystem. +This should be applicable to most extensions with exceptions of those + +=over 4 + +=item * + +with bugs in memory allocations which are caught by Perl's malloc(); + +=item * + +which interact with the memory allocator in other ways than via +malloc(), realloc(), free(), calloc(), sbrk() and brk(); + +=item * + +which rely on special alignment which is not provided by Perl's malloc(). + +=back + +B<NOTE.> Negligence to set this flag in I<any one> of loaded extension +nullifies many advantages of Perl's malloc(), such as better usage of +system resources, error detection, memory usage reporting, catchable failure +of memory allocations, etc. + =item PERL_SRC Directory containing the Perl source code (use of this should be @@ -1648,6 +1670,8 @@ they contain will be installed in the corresponding location in the library. A libscan() method can be used to alter the behaviour. Defining PM in the Makefile.PL will override PMLIBDIRS. +(Where BASEEXT is the last component of NAME.) + =item POLLUTE Release 5.005 grandfathered old global symbol names by providing preprocessor @@ -1725,6 +1749,7 @@ MakeMaker object. The following lines will be parsed o.k.: ( $VERSION ) = '$Revision: 1.222 $ ' =~ /\$Revision:\s+([^\s]+)/; $FOO::VERSION = '1.10'; *FOO::VERSION = \'1.11'; + our $VERSION = 1.2.3; # new for perl5.6.0 but these will fail: @@ -1732,6 +1757,8 @@ but these will fail: local $VERSION = '1.02'; local $FOO::VERSION = '1.30'; +(Putting C<my> or C<local> on the preceding line will work o.k.) + The file named in VERSION_FROM is not added as a dependency to Makefile. This is not really correct, but it would be a major pain during development to have to rewrite the Makefile for any smallish @@ -1786,6 +1813,8 @@ part of the Makefile. {ANY_TARGET => ANY_DEPENDECY, ...} +(ANY_TARGET must not be given a double-colon rule by MakeMaker.) + =item dist {TARFLAGS => 'cvfF', COMPRESS => 'gzip', SUFFIX => '.gz', diff --git a/lib/ExtUtils/Mksymlists.pm b/lib/ExtUtils/Mksymlists.pm index c8f41c74bc..c06b393be3 100644 --- a/lib/ExtUtils/Mksymlists.pm +++ b/lib/ExtUtils/Mksymlists.pm @@ -49,6 +49,7 @@ sub Mksymlists { } if ($osname eq 'aix') { _write_aix(\%spec); } + elsif ($osname eq 'MacOS'){ _write_aix(\%spec) } elsif ($osname eq 'VMS') { _write_vms(\%spec) } elsif ($osname eq 'os2') { _write_os2(\%spec) } elsif ($osname eq 'MSWin32') { _write_win32(\%spec) } diff --git a/lib/File/Basename.pm b/lib/File/Basename.pm index 4581e7e93c..243234403a 100644 --- a/lib/File/Basename.pm +++ b/lib/File/Basename.pm @@ -189,9 +189,13 @@ sub fileparse { } elsif ($fstype !~ /^VMS/i) { # default to Unix ($dirpath,$basename) = ($fullname =~ m#^(.*/)?(.*)#s); - if ($^O eq 'VMS' and $fullname =~ m:/[^/]+/000000/?:) { + if ($^O eq 'VMS' and $fullname =~ m:^(/[^/]+/000000(/|$))(.*):) { # dev:[000000] is top of VMS tree, similar to Unix '/' - ($basename,$dirpath) = ('',$fullname); + # so strip it off and treat the rest as "normal" + my $devspec = $1; + my $remainder = $3; + ($dirpath,$basename) = ($remainder =~ m#^(.*/)?(.*)#s); + $dirpath = $devspec.$dirpath; } $dirpath = './' unless $dirpath; } diff --git a/lib/File/Path.pm b/lib/File/Path.pm index 46f360a461..8b0772d0e1 100644 --- a/lib/File/Path.pm +++ b/lib/File/Path.pm @@ -105,8 +105,8 @@ my $Is_VMS = $^O eq 'VMS'; # These OSes complain if you want to remove a file that you have no # write permission to: -my $force_writeable = ($^O eq 'os2' || $^O eq 'dos' || $^O eq 'MSWin32' - || $^O eq 'amigaos'); +my $force_writeable = ($^O eq 'os2' || $^O eq 'dos' || $^O eq 'MSWin32' || + $^O eq 'amigaos' || $^O eq 'MacOS'); sub mkpath { my($paths, $verbose, $mode) = @_; @@ -119,16 +119,19 @@ sub mkpath { my(@created,$path); foreach $path (@$paths) { $path .= '/' if $^O eq 'os2' and $path =~ /^\w:\z/s; # feature of CRT - next if -d $path; # Logic wants Unix paths, so go with the flow. - $path = VMS::Filespec::unixify($path) if $Is_VMS; - my $parent = File::Basename::dirname($path); - # Allow for creation of new logical filesystems under VMS - if (not $Is_VMS or $parent !~ m:/[^/]+/000000/?:) { - unless (-d $parent or $path eq $parent) { - push(@created,mkpath($parent, $verbose, $mode)); + if ($Is_VMS) { + next if $path eq '/'; + $path = VMS::Filespec::unixify($path); + if ($path =~ m:^(/[^/]+)/?\z:) { + $path = $1.'/000000'; } } + next if -d $path; + my $parent = File::Basename::dirname($path); + unless (-d $parent or $path eq $parent) { + push(@created,mkpath($parent, $verbose, $mode)); + } print "mkdir $path\n" if $verbose; unless (mkdir($path,$mode)) { my $e = $!; diff --git a/lib/Term/ReadLine.pm b/lib/Term/ReadLine.pm index 8bb820578a..fc78d7b6fa 100644 --- a/lib/Term/ReadLine.pm +++ b/lib/Term/ReadLine.pm @@ -169,12 +169,14 @@ sub ReadLine {'Term::ReadLine::Stub'} sub readline { my $self = shift; my ($in,$out,$str) = @$self; - print $out $rl_term_set[0], shift, $rl_term_set[1], $rl_term_set[2]; + my $prompt = shift; + print $out $rl_term_set[0], $prompt, $rl_term_set[1], $rl_term_set[2]; $self->register_Tk if not $Term::ReadLine::registered and $Term::ReadLine::toloop and defined &Tk::DoOneEvent; #$str = scalar <$in>; $str = $self->get_line; + $str =~ s/^\s*\Q$prompt\E// if ($^O eq 'MacOS'); print $out $rl_term_set[3]; # bug in 5.000: chomping empty string creats length -1: chomp $str if defined $str; @@ -185,7 +187,9 @@ sub addhistory {} sub findConsole { my $console; - if (-e "/dev/tty") { + if ($^O eq 'MacOS') { + $console = "Dev:Console"; + } elsif (-e "/dev/tty") { $console = "/dev/tty"; } elsif (-e "con" or $^O eq 'MSWin32') { $console = "con"; diff --git a/lib/Tie/Array.pm b/lib/Tie/Array.pm index e3b85d412e..f4c6193596 100644 --- a/lib/Tie/Array.pm +++ b/lib/Tie/Array.pm @@ -34,47 +34,43 @@ sub POP $val; } -sub SPLICE -{ - my $obj = shift; - my $sz = $obj->FETCHSIZE; - my $off = (@_) ? shift : 0; - $off += $sz if ($off < 0); - my $len = (@_) ? shift : $sz - $off; - my @result; - for (my $i = 0; $i < $len; $i++) - { - push(@result,$obj->FETCH($off+$i)); - } - if (@_ > $len) - { - # Move items up to make room - my $d = @_ - $len; - my $e = $off+$len; - $obj->EXTEND($sz+$d); - for (my $i=$sz-1; $i >= $e; $i--) - { - my $val = $obj->FETCH($i); - $obj->STORE($i+$d,$val); +sub SPLICE { + my $obj = shift; + my $sz = $obj->FETCHSIZE; + my $off = (@_) ? shift : 0; + $off += $sz if ($off < 0); + my $len = (@_) ? shift : $sz - $off; + $len += $sz - $off if $len < 0; + my @result; + for (my $i = 0; $i < $len; $i++) { + push(@result,$obj->FETCH($off+$i)); } - } - elsif (@_ < $len) - { - # Move items down to close the gap - my $d = $len - @_; - my $e = $off+$len; - for (my $i=$off+$len; $i < $sz; $i++) - { - my $val = $obj->FETCH($i); - $obj->STORE($i-$d,$val); + $off = $sz if $off > $sz; + $len -= $off + $len - $sz if $off + $len > $sz; + if (@_ > $len) { + # Move items up to make room + my $d = @_ - $len; + my $e = $off+$len; + $obj->EXTEND($sz+$d); + for (my $i=$sz-1; $i >= $e; $i--) { + my $val = $obj->FETCH($i); + $obj->STORE($i+$d,$val); + } } - $obj->STORESIZE($sz-$d); - } - for (my $i=0; $i < @_; $i++) - { - $obj->STORE($off+$i,$_[$i]); - } - return @result; + elsif (@_ < $len) { + # Move items down to close the gap + my $d = $len - @_; + my $e = $off+$len; + for (my $i=$off+$len; $i < $sz; $i++) { + my $val = $obj->FETCH($i); + $obj->STORE($i-$d,$val); + } + $obj->STORESIZE($sz-$d); + } + for (my $i=0; $i < @_; $i++) { + $obj->STORE($off+$i,$_[$i]); + } + return @result; } sub EXISTS { diff --git a/lib/lib_pm.PL b/lib/lib_pm.PL index bb02106058..66b4944de5 100644 --- a/lib/lib_pm.PL +++ b/lib/lib_pm.PL @@ -8,10 +8,30 @@ chdir dirname($0); my $file = basename($0, '.PL'); $file =~ s!_(pm)$!.$1!i; -my $Config_archname = defined($Config{'archname'}) ? $Config{'archname'} : ''; -my $Config_ver = defined($Config{'version'}) ? $Config{'version'} : ''; -my @Config_inc_version_list = defined($Config{'inc_version_list'}) ? - reverse split / /, $Config{'inc_version_list'} : (); +my $useConfig; +my $Config_archname; +my $Config_version; +my $Config_inc_version_list; + +# Expand the variables only if explicitly requested because +# otherwise relocating Perl becomes much harder. + +if ($ENV{PERL_BUILD_EXPAND_CONFIG_VARS}) { + $useConfig = ''; + $Config_archname = qq('$Config{archname}'); + $Config_version = qq('$Config{version}'); + my @Config_inc_version_list = + reverse split / /, $Config{inc_version_list}; + $Config_inc_version_list = + @Config_inc_version_list ? + qq(@Config_inc_version_list) : q(()); +} else { + $useConfig = 'use Config;'; + $Config_archname = q($Config{archname}); + $Config_version = q($Config{version}); + $Config_inc_version_list = + q(reverse split / /, qw($Config{inc_version_list})); +} open OUT,">$file" or die "Can't create $file: $!"; @@ -26,9 +46,11 @@ package lib; # THIS FILE IS AUTOMATICALLY GENERATED FROM lib_pm.PL. # ANY CHANGES TO THIS FILE WILL BE OVERWRITTEN BY THE NEXT PERL BUILD. -my \$archname = "$Config_archname"; -my \$ver = "$Config_ver"; -my \@inc_version_list = qw(@Config_inc_version_list); +$useConfig + +my \$archname = $Config_archname; +my \$version = $Config_version; +my \@inc_version_list = $Config_inc_version_list; !GROK!THIS! print OUT <<'!NO!SUBS!'; @@ -57,9 +79,9 @@ sub import { } # Put a corresponding archlib directory infront of $_ if it # looks like $_ has an archlib directory below it. - unshift(@INC, "$_/$archname") if -d "$_/$archname/auto"; - unshift(@INC, "$_/$ver") if -d "$_/$ver"; - unshift(@INC, "$_/$ver/$archname") if -d "$_/$ver/$archname"; + unshift(@INC, "$_/$archname") if -d "$_/$archname/auto"; + unshift(@INC, "$_/$version") if -d "$_/$version"; + unshift(@INC, "$_/$version/$archname") if -d "$_/$version/$archname"; } # remove trailing duplicates @@ -74,9 +96,9 @@ sub unimport { my %names; foreach (@_) { ++$names{$_}; - ++$names{"$_/$archname"} if -d "$_/$archname/auto"; - ++$names{"$_/$ver"} if -d "$_/$ver"; - ++$names{"$_/$ver/$archname"} if -d "$_/$ver/$archname"; + ++$names{"$_/$archname"} if -d "$_/$archname/auto"; + ++$names{"$_/$version"} if -d "$_/$version"; + ++$names{"$_/$version/$archname"} if -d "$_/$version/$archname"; } # Remove ALL instances of each named directory. diff --git a/lib/perl5db.pl b/lib/perl5db.pl index fb6d683f7d..836e5594d8 100644 --- a/lib/perl5db.pl +++ b/lib/perl5db.pl @@ -401,6 +401,12 @@ if ($notty) { $console = "/dev/tty"; } elsif ($^O eq 'dos' or -e "con" or $^O eq 'MSWin32') { $console = "con"; + } elsif ($^O eq 'MacOS') { + if ($MacPerl::Version !~ /MPW/) { + $console = "Dev:Console:Perl Debug"; # Separate window for application + } else { + $console = "Dev:Console"; + } } else { $console = "sys\$command"; } diff --git a/lib/strict.pm b/lib/strict.pm index 042227f967..8afb9a3792 100644 --- a/lib/strict.pm +++ b/lib/strict.pm @@ -37,6 +37,14 @@ use symbolic references (see L<perlref>). $file = "STDOUT"; print $file "Hi!"; # error; note: no comma after $file +There is one exception to this rule: + + $bar = \&{'foo'}; + &$bar; + +is allowed so that C<goto &$AUTOLOAD> would not break under stricture. + + =item C<strict vars> This generates a compile-time error if you access a variable that wasn't diff --git a/lib/unicode/Is/Alnum.pl b/lib/unicode/Is/Alnum.pl index 94f9a5c621..a0aac62938 100644 --- a/lib/unicode/Is/Alnum.pl +++ b/lib/unicode/Is/Alnum.pl @@ -6,13 +6,23 @@ return <<'END'; 0041 005a 0061 007a 00aa +00b2 00b3 00b5 -00ba +00b9 00ba +00bc 00be 00c0 00d6 00d8 00f6 00f8 021f 0222 0233 0250 02ad +02b0 02b8 +02bb 02c1 +02d0 02d1 +02e0 02e4 +02ee +0300 034e +0360 0362 +037a 0386 0388 038a 038c @@ -21,38 +31,57 @@ return <<'END'; 03d0 03d7 03da 03f3 0400 0481 +0483 0486 +0488 0489 048c 04c4 04c7 04c8 04cb 04cc 04d0 04f5 04f8 04f9 0531 0556 +0559 0561 0587 +0591 05a1 +05a3 05b9 +05bb 05bd +05bf +05c1 05c2 +05c4 05d0 05ea 05f0 05f2 0621 063a -0641 064a +0640 0655 0660 0669 -0671 06d3 -06d5 +0670 06d3 +06d5 06e8 +06ea 06ed 06f0 06fc -0710 -0712 072c -0780 07a5 +0710 072c +0730 074a +0780 07b0 +0901 0903 0905 0939 -093d -0950 -0958 0961 +093c 094d +0950 0954 +0958 0963 0966 096f +0981 0983 0985 098c 098f 0990 0993 09a8 09aa 09b0 09b2 09b6 09b9 +09bc +09be 09c4 +09c7 09c8 +09cb 09cd +09d7 09dc 09dd -09df 09e1 +09df 09e3 09e6 09f1 +09f4 09f9 +0a02 0a05 0a0a 0a0f 0a10 0a13 0a28 @@ -60,10 +89,14 @@ return <<'END'; 0a32 0a33 0a35 0a36 0a38 0a39 +0a3c +0a3e 0a42 +0a47 0a48 +0a4b 0a4d 0a59 0a5c 0a5e -0a66 0a6f -0a72 0a74 +0a66 0a74 +0a81 0a83 0a85 0a8b 0a8d 0a8f 0a91 @@ -71,20 +104,27 @@ return <<'END'; 0aaa 0ab0 0ab2 0ab3 0ab5 0ab9 -0abd +0abc 0ac5 +0ac7 0ac9 +0acb 0acd 0ad0 0ae0 0ae6 0aef +0b01 0b03 0b05 0b0c 0b0f 0b10 0b13 0b28 0b2a 0b30 0b32 0b33 0b36 0b39 -0b3d +0b3c 0b43 +0b47 0b48 +0b4b 0b4d +0b56 0b57 0b5c 0b5d 0b5f 0b61 0b66 0b6f +0b82 0b83 0b85 0b8a 0b8e 0b90 0b92 0b95 @@ -95,36 +135,60 @@ return <<'END'; 0ba8 0baa 0bae 0bb5 0bb7 0bb9 -0be7 0bef +0bbe 0bc2 +0bc6 0bc8 +0bca 0bcd +0bd7 +0be7 0bf2 +0c01 0c03 0c05 0c0c 0c0e 0c10 0c12 0c28 0c2a 0c33 0c35 0c39 +0c3e 0c44 +0c46 0c48 +0c4a 0c4d +0c55 0c56 0c60 0c61 0c66 0c6f +0c82 0c83 0c85 0c8c 0c8e 0c90 0c92 0ca8 0caa 0cb3 0cb5 0cb9 +0cbe 0cc4 +0cc6 0cc8 +0cca 0ccd +0cd5 0cd6 0cde 0ce0 0ce1 0ce6 0cef +0d02 0d03 0d05 0d0c 0d0e 0d10 0d12 0d28 0d2a 0d39 +0d3e 0d43 +0d46 0d48 +0d4a 0d4d +0d57 0d60 0d61 0d66 0d6f +0d82 0d83 0d85 0d96 0d9a 0db1 0db3 0dbb 0dbd 0dc0 0dc6 -0e01 0e30 -0e32 0e33 -0e40 0e45 +0dca +0dcf 0dd4 +0dd6 +0dd8 0ddf +0df2 0df3 +0e01 0e3a +0e40 0e4e 0e50 0e59 0e81 0e82 0e84 @@ -137,22 +201,33 @@ return <<'END'; 0ea5 0ea7 0eaa 0eab -0ead 0eb0 -0eb2 0eb3 -0ebd +0ead 0eb9 +0ebb 0ebd 0ec0 0ec4 +0ec6 +0ec8 0ecd 0ed0 0ed9 0edc 0edd 0f00 -0f20 0f29 -0f40 0f47 +0f18 0f19 +0f20 0f33 +0f35 +0f37 +0f39 +0f3e 0f47 0f49 0f6a -0f88 0f8b +0f71 0f84 +0f86 0f8b +0f90 0f97 +0f99 0fbc +0fc6 1000 1021 1023 1027 1029 102a +102c 1032 +1036 1039 1040 1049 -1050 1055 +1050 1059 10a0 10c5 10d0 10f6 1100 1159 @@ -183,18 +258,18 @@ return <<'END'; 1318 131e 1320 1346 1348 135a -1369 1371 +1369 137c 13a0 13f4 1401 166c 166f 1676 1681 169a 16a0 16ea -1780 17b3 +16ee 16f0 +1780 17d3 17e0 17e9 1810 1819 -1820 1842 -1844 1877 -1880 18a8 +1820 1877 +1880 18a9 1e00 1e9b 1ea0 1ef9 1f00 1f15 @@ -216,7 +291,10 @@ return <<'END'; 1fe0 1fec 1ff2 1ff4 1ff6 1ffc -207f +2070 +2074 2079 +207f 2089 +20d0 20e3 2102 2107 210a 2113 @@ -228,12 +306,25 @@ return <<'END'; 212a 212d 212f 2131 2133 2139 -3006 +2153 2183 +2460 249b +24ea +2776 2793 +3005 3007 +3021 302f +3031 3035 +3038 303a 3041 3094 +3099 309a +309d 309e 30a1 30fa +30fc 30fe 3105 312c 3131 318e +3192 3195 31a0 31b7 +3220 3229 +3280 3289 3400 4db5 4e00 9fa5 a000 a48c @@ -241,8 +332,7 @@ ac00 d7a3 f900 fa2d fb00 fb06 fb13 fb17 -fb1d -fb1f fb28 +fb1d fb28 fb2a fb36 fb38 fb3c fb3e @@ -253,15 +343,14 @@ fbd3 fd3d fd50 fd8f fd92 fdc7 fdf0 fdfb +fe20 fe23 fe70 fe72 fe74 fe76 fefc ff10 ff19 ff21 ff3a ff41 ff5a -ff66 ff6f -ff71 ff9d -ffa0 ffbe +ff66 ffbe ffc2 ffc7 ffca ffcf ffd2 ffd7 diff --git a/lib/unicode/Is/Alpha.pl b/lib/unicode/Is/Alpha.pl index de5046f9d4..13dc003c96 100644 --- a/lib/unicode/Is/Alpha.pl +++ b/lib/unicode/Is/Alpha.pl @@ -12,6 +12,14 @@ return <<'END'; 00f8 021f 0222 0233 0250 02ad +02b0 02b8 +02bb 02c1 +02d0 02d1 +02e0 02e4 +02ee +0300 034e +0360 0362 +037a 0386 0388 038a 038c @@ -20,36 +28,54 @@ return <<'END'; 03d0 03d7 03da 03f3 0400 0481 +0483 0486 +0488 0489 048c 04c4 04c7 04c8 04cb 04cc 04d0 04f5 04f8 04f9 0531 0556 +0559 0561 0587 +0591 05a1 +05a3 05b9 +05bb 05bd +05bf +05c1 05c2 +05c4 05d0 05ea 05f0 05f2 0621 063a -0641 064a -0671 06d3 -06d5 +0640 0655 +0670 06d3 +06d5 06e8 +06ea 06ed 06fa 06fc -0710 -0712 072c -0780 07a5 +0710 072c +0730 074a +0780 07b0 +0901 0903 0905 0939 -093d -0950 -0958 0961 +093c 094d +0950 0954 +0958 0963 +0981 0983 0985 098c 098f 0990 0993 09a8 09aa 09b0 09b2 09b6 09b9 +09bc +09be 09c4 +09c7 09c8 +09cb 09cd +09d7 09dc 09dd -09df 09e1 +09df 09e3 09f0 09f1 +0a02 0a05 0a0a 0a0f 0a10 0a13 0a28 @@ -57,9 +83,14 @@ return <<'END'; 0a32 0a33 0a35 0a36 0a38 0a39 +0a3c +0a3e 0a42 +0a47 0a48 +0a4b 0a4d 0a59 0a5c 0a5e -0a72 0a74 +0a70 0a74 +0a81 0a83 0a85 0a8b 0a8d 0a8f 0a91 @@ -67,18 +98,25 @@ return <<'END'; 0aaa 0ab0 0ab2 0ab3 0ab5 0ab9 -0abd +0abc 0ac5 +0ac7 0ac9 +0acb 0acd 0ad0 0ae0 +0b01 0b03 0b05 0b0c 0b0f 0b10 0b13 0b28 0b2a 0b30 0b32 0b33 0b36 0b39 -0b3d +0b3c 0b43 +0b47 0b48 +0b4b 0b4d +0b56 0b57 0b5c 0b5d 0b5f 0b61 +0b82 0b83 0b85 0b8a 0b8e 0b90 0b92 0b95 @@ -89,32 +127,56 @@ return <<'END'; 0ba8 0baa 0bae 0bb5 0bb7 0bb9 +0bbe 0bc2 +0bc6 0bc8 +0bca 0bcd +0bd7 +0c01 0c03 0c05 0c0c 0c0e 0c10 0c12 0c28 0c2a 0c33 0c35 0c39 +0c3e 0c44 +0c46 0c48 +0c4a 0c4d +0c55 0c56 0c60 0c61 +0c82 0c83 0c85 0c8c 0c8e 0c90 0c92 0ca8 0caa 0cb3 0cb5 0cb9 +0cbe 0cc4 +0cc6 0cc8 +0cca 0ccd +0cd5 0cd6 0cde 0ce0 0ce1 +0d02 0d03 0d05 0d0c 0d0e 0d10 0d12 0d28 0d2a 0d39 +0d3e 0d43 +0d46 0d48 +0d4a 0d4d +0d57 0d60 0d61 +0d82 0d83 0d85 0d96 0d9a 0db1 0db3 0dbb 0dbd 0dc0 0dc6 -0e01 0e30 -0e32 0e33 -0e40 0e45 +0dca +0dcf 0dd4 +0dd6 +0dd8 0ddf +0df2 0df3 +0e01 0e3a +0e40 0e4e 0e81 0e82 0e84 0e87 0e88 @@ -126,19 +188,30 @@ return <<'END'; 0ea5 0ea7 0eaa 0eab -0ead 0eb0 -0eb2 0eb3 -0ebd +0ead 0eb9 +0ebb 0ebd 0ec0 0ec4 +0ec6 +0ec8 0ecd 0edc 0edd 0f00 -0f40 0f47 +0f18 0f19 +0f35 +0f37 +0f39 +0f3e 0f47 0f49 0f6a -0f88 0f8b +0f71 0f84 +0f86 0f8b +0f90 0f97 +0f99 0fbc +0fc6 1000 1021 1023 1027 1029 102a -1050 1055 +102c 1032 +1036 1039 +1050 1059 10a0 10c5 10d0 10f6 1100 1159 @@ -174,10 +247,9 @@ return <<'END'; 166f 1676 1681 169a 16a0 16ea -1780 17b3 -1820 1842 -1844 1877 -1880 18a8 +1780 17d3 +1820 1877 +1880 18a9 1e00 1e9b 1ea0 1ef9 1f00 1f15 @@ -200,6 +272,7 @@ return <<'END'; 1ff2 1ff4 1ff6 1ffc 207f +20d0 20e3 2102 2107 210a 2113 @@ -211,9 +284,14 @@ return <<'END'; 212a 212d 212f 2131 2133 2139 -3006 +3005 3006 +302a 302f +3031 3035 3041 3094 +3099 309a +309d 309e 30a1 30fa +30fc 30fe 3105 312c 3131 318e 31a0 31b7 @@ -224,8 +302,7 @@ ac00 d7a3 f900 fa2d fb00 fb06 fb13 fb17 -fb1d -fb1f fb28 +fb1d fb28 fb2a fb36 fb38 fb3c fb3e @@ -236,14 +313,13 @@ fbd3 fd3d fd50 fd8f fd92 fdc7 fdf0 fdfb +fe20 fe23 fe70 fe72 fe74 fe76 fefc ff21 ff3a ff41 ff5a -ff66 ff6f -ff71 ff9d -ffa0 ffbe +ff66 ffbe ffc2 ffc7 ffca ffcf ffd2 ffd7 diff --git a/lib/unicode/Is/DCinital.pl b/lib/unicode/Is/DCmedial.pl index 8778a75ed5..8778a75ed5 100644 --- a/lib/unicode/Is/DCinital.pl +++ b/lib/unicode/Is/DCmedial.pl diff --git a/lib/unicode/Is/Graph.pl b/lib/unicode/Is/Graph.pl index 40d35067f6..238cc56229 100644 --- a/lib/unicode/Is/Graph.pl +++ b/lib/unicode/Is/Graph.pl @@ -3,7 +3,7 @@ # Any changes made here will be lost! return <<'END'; 0021 007e -00a0 021f +00a1 021f 0222 0233 0250 02ad 02b0 02ee @@ -239,7 +239,7 @@ return <<'END'; 1361 137c 13a0 13f4 1401 1676 -1680 169c +1681 169c 16a0 16f0 1780 17dc 17e0 17e9 @@ -265,10 +265,8 @@ return <<'END'; 1fdd 1fef 1ff2 1ff4 1ff6 1ffe -2000 2008 -200b -2010 2029 -202f 2046 +2010 2027 +2030 2046 2048 204d 2070 2074 208e @@ -304,7 +302,7 @@ return <<'END'; 2e9b 2ef3 2f00 2fd5 2ff0 2ffb -3000 303a +3001 303a 303e 303f 3041 3094 3099 309e @@ -330,6 +328,7 @@ a4b5 a4c0 a4c2 a4c4 a4c6 ac00 d7a3 +e000 f8ff f900 fa2d fb00 fb06 fb13 fb17 @@ -360,4 +359,6 @@ ffda ffdc ffe0 ffe6 ffe8 ffee fffc fffd +f0000 ffffd +100000 10fffd END diff --git a/lib/unicode/Is/Print.pl b/lib/unicode/Is/Print.pl index c3adba6c5c..1229a282b2 100644 --- a/lib/unicode/Is/Print.pl +++ b/lib/unicode/Is/Print.pl @@ -266,7 +266,7 @@ return <<'END'; 1ff2 1ff4 1ff6 1ffe 2000 200b -2010 2029 +2010 2027 202f 2046 2048 204d 2070 @@ -329,6 +329,7 @@ a4b5 a4c0 a4c2 a4c4 a4c6 ac00 d7a3 +e000 f8ff f900 fa2d fb00 fb06 fb13 fb17 @@ -359,4 +360,6 @@ ffda ffdc ffe0 ffe6 ffe8 ffee fffc fffd +f0000 ffffd +100000 10fffd END diff --git a/lib/unicode/Is/Punct.pl b/lib/unicode/Is/Punct.pl index 9e088bab85..97330ecd48 100644 --- a/lib/unicode/Is/Punct.pl +++ b/lib/unicode/Is/Punct.pl @@ -8,45 +8,45 @@ return <<'END'; 003a 003b 003f 0040 005b 005d -005f -007b -007d -00a1 -00ab -00ad -00b7 -00bb -00bf -037e -0387 +005f +007b +007d +00a1 +00ab +00ad +00b7 +00bb +00bf +037e +0387 055a 055f 0589 058a -05be -05c0 -05c3 +05be +05c0 +05c3 05f3 05f4 -060c -061b -061f +060c +061b +061f 066a 066d -06d4 +06d4 0700 070d 0964 0965 -0970 -0df4 -0e4f +0970 +0df4 +0e4f 0e5a 0e5b 0f04 0f12 0f3a 0f3d -0f85 +0f85 104a 104f -10fb +10fb 1361 1368 166d 166e 169b 169c 16eb 16ed 17d4 17da -17dc +17dc 1800 180a 2010 2027 2030 2043 @@ -58,14 +58,14 @@ return <<'END'; 3001 3003 3008 3011 3014 301f -3030 -30fb +3030 +30fb fd3e fd3f fe30 fe44 fe49 fe52 fe54 fe61 -fe63 -fe68 +fe63 +fe68 fe6a fe6b ff01 ff03 ff05 ff0a @@ -73,8 +73,8 @@ ff0c ff0f ff1a ff1b ff1f ff20 ff3b ff3d -ff3f -ff5b -ff5d +ff3f +ff5b +ff5d ff61 ff65 END diff --git a/lib/unicode/Is/Space.pl b/lib/unicode/Is/Space.pl index 1625dce03b..9971082fbe 100644 --- a/lib/unicode/Is/Space.pl +++ b/lib/unicode/Is/Space.pl @@ -3,12 +3,11 @@ # Any changes made here will be lost! return <<'END'; 0009 000d -0020 -0085 -00a0 -1680 +0020 +00a0 +1680 2000 200b 2028 2029 -202f -3000 +202f +3000 END diff --git a/lib/unicode/Is/Word.pl b/lib/unicode/Is/Word.pl index 1c76c60b78..6ea32e6099 100644 --- a/lib/unicode/Is/Word.pl +++ b/lib/unicode/Is/Word.pl @@ -7,13 +7,23 @@ return <<'END'; 005f 0061 007a 00aa +00b2 00b3 00b5 -00ba +00b9 00ba +00bc 00be 00c0 00d6 00d8 00f6 00f8 021f 0222 0233 0250 02ad +02b0 02b8 +02bb 02c1 +02d0 02d1 +02e0 02e4 +02ee +0300 034e +0360 0362 +037a 0386 0388 038a 038c @@ -22,38 +32,57 @@ return <<'END'; 03d0 03d7 03da 03f3 0400 0481 +0483 0486 +0488 0489 048c 04c4 04c7 04c8 04cb 04cc 04d0 04f5 04f8 04f9 0531 0556 +0559 0561 0587 +0591 05a1 +05a3 05b9 +05bb 05bd +05bf +05c1 05c2 +05c4 05d0 05ea 05f0 05f2 0621 063a -0641 064a +0640 0655 0660 0669 -0671 06d3 -06d5 +0670 06d3 +06d5 06e8 +06ea 06ed 06f0 06fc -0710 -0712 072c -0780 07a5 +0710 072c +0730 074a +0780 07b0 +0901 0903 0905 0939 -093d -0950 -0958 0961 +093c 094d +0950 0954 +0958 0963 0966 096f +0981 0983 0985 098c 098f 0990 0993 09a8 09aa 09b0 09b2 09b6 09b9 +09bc +09be 09c4 +09c7 09c8 +09cb 09cd +09d7 09dc 09dd -09df 09e1 +09df 09e3 09e6 09f1 +09f4 09f9 +0a02 0a05 0a0a 0a0f 0a10 0a13 0a28 @@ -61,10 +90,14 @@ return <<'END'; 0a32 0a33 0a35 0a36 0a38 0a39 +0a3c +0a3e 0a42 +0a47 0a48 +0a4b 0a4d 0a59 0a5c 0a5e -0a66 0a6f -0a72 0a74 +0a66 0a74 +0a81 0a83 0a85 0a8b 0a8d 0a8f 0a91 @@ -72,20 +105,27 @@ return <<'END'; 0aaa 0ab0 0ab2 0ab3 0ab5 0ab9 -0abd +0abc 0ac5 +0ac7 0ac9 +0acb 0acd 0ad0 0ae0 0ae6 0aef +0b01 0b03 0b05 0b0c 0b0f 0b10 0b13 0b28 0b2a 0b30 0b32 0b33 0b36 0b39 -0b3d +0b3c 0b43 +0b47 0b48 +0b4b 0b4d +0b56 0b57 0b5c 0b5d 0b5f 0b61 0b66 0b6f +0b82 0b83 0b85 0b8a 0b8e 0b90 0b92 0b95 @@ -96,36 +136,60 @@ return <<'END'; 0ba8 0baa 0bae 0bb5 0bb7 0bb9 -0be7 0bef +0bbe 0bc2 +0bc6 0bc8 +0bca 0bcd +0bd7 +0be7 0bf2 +0c01 0c03 0c05 0c0c 0c0e 0c10 0c12 0c28 0c2a 0c33 0c35 0c39 +0c3e 0c44 +0c46 0c48 +0c4a 0c4d +0c55 0c56 0c60 0c61 0c66 0c6f +0c82 0c83 0c85 0c8c 0c8e 0c90 0c92 0ca8 0caa 0cb3 0cb5 0cb9 +0cbe 0cc4 +0cc6 0cc8 +0cca 0ccd +0cd5 0cd6 0cde 0ce0 0ce1 0ce6 0cef +0d02 0d03 0d05 0d0c 0d0e 0d10 0d12 0d28 0d2a 0d39 +0d3e 0d43 +0d46 0d48 +0d4a 0d4d +0d57 0d60 0d61 0d66 0d6f +0d82 0d83 0d85 0d96 0d9a 0db1 0db3 0dbb 0dbd 0dc0 0dc6 -0e01 0e30 -0e32 0e33 -0e40 0e45 +0dca +0dcf 0dd4 +0dd6 +0dd8 0ddf +0df2 0df3 +0e01 0e3a +0e40 0e4e 0e50 0e59 0e81 0e82 0e84 @@ -138,22 +202,33 @@ return <<'END'; 0ea5 0ea7 0eaa 0eab -0ead 0eb0 -0eb2 0eb3 -0ebd +0ead 0eb9 +0ebb 0ebd 0ec0 0ec4 +0ec6 +0ec8 0ecd 0ed0 0ed9 0edc 0edd 0f00 -0f20 0f29 -0f40 0f47 +0f18 0f19 +0f20 0f33 +0f35 +0f37 +0f39 +0f3e 0f47 0f49 0f6a -0f88 0f8b +0f71 0f84 +0f86 0f8b +0f90 0f97 +0f99 0fbc +0fc6 1000 1021 1023 1027 1029 102a +102c 1032 +1036 1039 1040 1049 -1050 1055 +1050 1059 10a0 10c5 10d0 10f6 1100 1159 @@ -184,18 +259,18 @@ return <<'END'; 1318 131e 1320 1346 1348 135a -1369 1371 +1369 137c 13a0 13f4 1401 166c 166f 1676 1681 169a 16a0 16ea -1780 17b3 +16ee 16f0 +1780 17d3 17e0 17e9 1810 1819 -1820 1842 -1844 1877 -1880 18a8 +1820 1877 +1880 18a9 1e00 1e9b 1ea0 1ef9 1f00 1f15 @@ -217,7 +292,10 @@ return <<'END'; 1fe0 1fec 1ff2 1ff4 1ff6 1ffc -207f +2070 +2074 2079 +207f 2089 +20d0 20e3 2102 2107 210a 2113 @@ -229,12 +307,25 @@ return <<'END'; 212a 212d 212f 2131 2133 2139 -3006 +2153 2183 +2460 249b +24ea +2776 2793 +3005 3007 +3021 302f +3031 3035 +3038 303a 3041 3094 +3099 309a +309d 309e 30a1 30fa +30fc 30fe 3105 312c 3131 318e +3192 3195 31a0 31b7 +3220 3229 +3280 3289 3400 4db5 4e00 9fa5 a000 a48c @@ -242,8 +333,7 @@ ac00 d7a3 f900 fa2d fb00 fb06 fb13 fb17 -fb1d -fb1f fb28 +fb1d fb28 fb2a fb36 fb38 fb3c fb3e @@ -254,15 +344,14 @@ fbd3 fd3d fd50 fd8f fd92 fdc7 fdf0 fdfb +fe20 fe23 fe70 fe72 fe74 fe76 fefc ff10 ff19 ff21 ff3a ff41 ff5a -ff66 ff6f -ff71 ff9d -ffa0 ffbe +ff66 ffbe ffc2 ffc7 ffca ffcf ffd2 ffd7 diff --git a/lib/unicode/mktables.PL b/lib/unicode/mktables.PL index 37b6e84874..d8b57b6a83 100755 --- a/lib/unicode/mktables.PL +++ b/lib/unicode/mktables.PL @@ -16,18 +16,26 @@ mkdir "To", 0755; @todo = ( # typical - ['IsWord', '$cat =~ /^L[ulot]|^Nd/ or $code eq "005F"', ''], - ['IsAlnum', '$cat =~ /^L[ulot]|^Nd/', ''], - ['IsAlpha', '$cat =~ /^L[ulot]/', ''], - ['IsSpace', 'White space', $PropData], + # 005F: SPACING UNDERSCROE + ['IsWord', '$cat =~ /^[LMN]/ or $code eq "005F"', ''], + ['IsAlnum', '$cat =~ /^[LMN]/', ''], + ['IsAlpha', '$cat =~ /^[LM]/', ''], + # 0009: HORIZONTAL TABULATION + # 000A: LINE FEED + # 000B: VERTICAL TABULATION + # 000C: FORM FEED + # 000D: CARRIAGE RETURN + ['IsSpace', '$cat =~ /^Z/ || + $code =~ /^(0009|000A|000B|000C|000D)$/', ''], ['IsDigit', '$cat =~ /^Nd$/', ''], ['IsUpper', '$cat =~ /^L[ut]$/', ''], ['IsLower', '$cat =~ /^Ll$/', ''], - ['IsASCII', 'hex $code <= 127', ''], + ['IsASCII', '$code le "007f"', ''], ['IsCntrl', '$cat =~ /^C/', ''], - ['IsGraph', '$cat =~ /^[^C]/ and ($cat !~ /^Z/ and $code ne "0020" or chr(hex $code) !~ /^\s/)', ''], - ['IsPrint', '$cat =~ /^[^C]/', ''], - ['IsPunct', 'Punctuation', $PropData], + ['IsGraph', '$cat =~ /^([LMNPS]|Co)/', ''], + ['IsPrint', '$cat =~ /^([LMNPS]|Co|Zs)/', ''], + ['IsPunct', '$cat =~ /^P/', ''], + # 003[0-9]: DIGIT ZERO..NINE, 00[46][1-6]: A..F, a..f ['IsXDigit', '$code =~ /^00(3[0-9]|[46][1-6])$/', ''], ['ToUpper', '$up', '$up'], ['ToLower', '$down', '$down'], @@ -145,7 +153,7 @@ mkdir "To", 0755; ['IsDCfont', '$decomp =~ /^<font>/', ''], ['IsDCnoBreak', '$decomp =~ /^<noBreak>/', ''], ['IsDCinitial', '$decomp =~ /^<initial>/', ''], - ['IsDCinital', '$decomp =~ /^<medial>/', ''], + ['IsDCmedial', '$decomp =~ /^<medial>/', ''], ['IsDCfinal', '$decomp =~ /^<final>/', ''], ['IsDCisolated', '$decomp =~ /^<isolated>/', ''], ['IsDCcircle', '$decomp =~ /^<circle>/', ''], diff --git a/lib/vars.pm b/lib/vars.pm index 0ace55169c..39a15bd312 100644 --- a/lib/vars.pm +++ b/lib/vars.pm @@ -10,6 +10,7 @@ require 5.002; require Carp if $] < 5.00450; use warnings::register; +require strict; sub import { my $callpack = caller; @@ -26,6 +27,8 @@ sub import { Carp::croak("Can't declare individual elements of hash or array"); } elsif (warnings::enabled() and length($sym) == 1 and $sym !~ tr/a-zA-Z//) { warnings::warn("No need to declare built-in vars"); + } elsif ( $^H &= strict::bits('vars') ) { + Carp::croak("'$ch$sym' is not a valid variable name under strict vars"); } } *{"${callpack}::$sym"} = @@ -1869,14 +1869,14 @@ #define Perl_bytes_to_utf8 pPerl->Perl_bytes_to_utf8 #undef bytes_to_utf8 #define bytes_to_utf8 Perl_bytes_to_utf8 +#undef Perl_utf8_to_uv_simple +#define Perl_utf8_to_uv_simple pPerl->Perl_utf8_to_uv_simple +#undef utf8_to_uv_simple +#define utf8_to_uv_simple Perl_utf8_to_uv_simple #undef Perl_utf8_to_uv #define Perl_utf8_to_uv pPerl->Perl_utf8_to_uv #undef utf8_to_uv #define utf8_to_uv Perl_utf8_to_uv -#undef Perl_utf8_to_uv_chk -#define Perl_utf8_to_uv_chk pPerl->Perl_utf8_to_uv_chk -#undef utf8_to_uv_chk -#define utf8_to_uv_chk Perl_utf8_to_uv_chk #undef Perl_uv_to_utf8 #define Perl_uv_to_utf8 pPerl->Perl_uv_to_utf8 #undef uv_to_utf8 @@ -2621,7 +2621,7 @@ Perl_pmtrans(pTHX_ OP *o, OP *expr, OP *repl) SV* transv = 0; U8* tend = t + tlen; U8* rend = r + rlen; - I32 ulen; + STRLEN ulen; U32 tfirst = 1; U32 tlast = 0; I32 tdiff; @@ -2641,6 +2641,7 @@ Perl_pmtrans(pTHX_ OP *o, OP *expr, OP *repl) if (complement) { U8 tmpbuf[UTF8_MAXLEN]; U8** cp; + I32* cl; UV nextmin = 0; New(1109, cp, tlen, U8*); i = 0; @@ -2656,7 +2657,8 @@ Perl_pmtrans(pTHX_ OP *o, OP *expr, OP *repl) qsort(cp, i, sizeof(U8*), utf8compare); for (j = 0; j < i; j++) { U8 *s = cp[j]; - UV val = utf8_to_uv_chk(s, &ulen, 0); + I32 cur = j < i ? cp[j+1] - s : tend - s; + UV val = utf8_to_uv(s, cur, &ulen, 0); s += ulen; diff = val - nextmin; if (diff > 0) { @@ -2669,7 +2671,7 @@ Perl_pmtrans(pTHX_ OP *o, OP *expr, OP *repl) } } if (*s == 0xff) - val = utf8_to_uv_chk(s+1, &ulen, 0); + val = utf8_to_uv(s+1, cur - 1, &ulen, 0); if (val >= nextmin) nextmin = val + 1; } @@ -2696,10 +2698,11 @@ Perl_pmtrans(pTHX_ OP *o, OP *expr, OP *repl) while (t < tend || tfirst <= tlast) { /* see if we need more "t" chars */ if (tfirst > tlast) { - tfirst = (I32)utf8_to_uv_chk(t, &ulen, 0); + tfirst = (I32)utf8_to_uv(t, tend - t, &ulen, 0); t += ulen; if (t < tend && *t == 0xff) { /* illegal utf8 val indicates range */ - tlast = (I32)utf8_to_uv_chk(++t, &ulen, 0); + t++; + tlast = (I32)utf8_to_uv(t, tend - t, &ulen, 0); t += ulen; } else @@ -2709,10 +2712,11 @@ Perl_pmtrans(pTHX_ OP *o, OP *expr, OP *repl) /* now see if we need more "r" chars */ if (rfirst > rlast) { if (r < rend) { - rfirst = (I32)utf8_to_uv_chk(r, &ulen, 0); + rfirst = (I32)utf8_to_uv(r, rend - r, &ulen, 0); r += ulen; if (r < rend && *r == 0xff) { /* illegal utf8 val indicates range */ - rlast = (I32)utf8_to_uv_chk(++r, &ulen, 0); + r++; + rlast = (I32)utf8_to_uv(r, rend - r, &ulen, 0); r += ulen; } else @@ -4112,6 +4116,10 @@ Perl_cv_undef(pTHX_ CV *cv) CvGV(cv) = Nullgv; SvREFCNT_dec(CvOUTSIDE(cv)); CvOUTSIDE(cv) = Nullcv; + if (CvCONST(cv)) { + SvREFCNT_dec((SV*)CvXSUBANY(cv).any_ptr); + CvCONST_off(cv); + } if (CvPADLIST(cv)) { /* may be during global destruction */ if (SvREFCNT(CvPADLIST(cv))) { @@ -4312,6 +4320,15 @@ S_cv_clone2(pTHX_ CV *proto, CV *outside) #endif LEAVE; + + if (CvCONST(cv)) { + SV* const_sv = op_const_sv(CvSTART(cv), cv); + assert(const_sv); + /* constant sub () { $x } closing over $x - see lib/constant.pm */ + SvREFCNT_dec(cv); + cv = newCONSTSUB(CvSTASH(proto), 0, const_sv); + } + return cv; } @@ -4350,12 +4367,25 @@ Perl_cv_ckproto(pTHX_ CV *cv, GV *gv, char *p) } } +static void const_sv_xsub(pTHXo_ CV* cv); + +/* +=for apidoc cv_const_sv + +If C<cv> is a constant sub eligible for inlining. returns the constant +value returned by the sub. Otherwise, returns NULL. + +Constant subs can be created with C<newCONSTSUB> or as described in +L<perlsub/"Constant Functions">. + +=cut +*/ SV * Perl_cv_const_sv(pTHX_ CV *cv) { - if (!cv || !SvPOK(cv) || SvCUR(cv)) + if (!cv || !CvCONST(cv)) return Nullsv; - return op_const_sv(CvSTART(cv), cv); + return (SV*)CvXSUBANY(cv).any_ptr; } SV * @@ -4376,6 +4406,8 @@ Perl_op_const_sv(pTHX_ OP *o, CV *cv) return sv; if (type == OP_NEXTSTATE || type == OP_NULL || type == OP_PUSHMARK) continue; + if (type == OP_DBSTATE) + continue; if (type == OP_LEAVESUB || type == OP_RETURN) break; if (sv) @@ -4385,7 +4417,17 @@ Perl_op_const_sv(pTHX_ OP *o, CV *cv) else if ((type == OP_PADSV || type == OP_CONST) && cv) { AV* padav = (AV*)(AvARRAY(CvPADLIST(cv))[1]); sv = padav ? AvARRAY(padav)[o->op_targ] : Nullsv; - if (!sv || (!SvREADONLY(sv) && SvREFCNT(sv) > 1)) + if (!sv) + return Nullsv; + if (CvCONST(cv)) { + /* We get here only from cv_clone2() while creating a closure. + Copy the const value here instead of in cv_clone2 so that + SvREADONLY_on doesn't lead to problems when leaving + scope. + */ + sv = newSVsv(sv); + } + if (!SvREADONLY(sv) && SvREFCNT(sv) > 1) return Nullsv; } else @@ -4427,6 +4469,7 @@ Perl_newATTRSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block) char *ps = proto ? SvPVx(((SVOP*)proto)->op_sv, n_a) : Nullch; register CV *cv=0; I32 ix; + SV *const_sv; name = o ? SvPVx(cSVOPo->op_sv, n_a) : Nullch; if (!name && PERLDB_NAMEANON && CopLINE(PL_curcop)) { @@ -4465,12 +4508,17 @@ Perl_newATTRSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block) SvREFCNT_dec(PL_compcv); cv = PL_compcv = NULL; PL_sub_generation++; - goto noblock; + goto done; } - if (!name || GvCVGEN(gv)) - cv = Nullcv; - else if ((cv = GvCV(gv))) { + cv = (!name || GvCVGEN(gv)) ? Nullcv : GvCV(gv); + + if (!block || !ps || *ps || attrs) + const_sv = Nullsv; + else + const_sv = op_const_sv(block, Nullcv); + + if (cv) { bool exists = CvROOT(cv) || CvXSUB(cv); /* if the subroutine doesn't exist and wasn't pre-declared * with a prototype, assume it will be AUTOLOADed, @@ -4480,8 +4528,6 @@ Perl_newATTRSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block) cv_ckproto(cv, gv, ps); /* already defined (or promised)? */ if (exists || GvASSUMECV(gv)) { - SV* const_sv; - bool const_changed = TRUE; if (!block && !attrs) { /* just a "sub foo;" when &foo is already defined */ SAVEFREESV(PL_compcv); @@ -4490,24 +4536,48 @@ Perl_newATTRSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block) /* ahem, death to those who redefine active sort subs */ if (PL_curstackinfo->si_type == PERLSI_SORT && PL_sortcop == CvSTART(cv)) Perl_croak(aTHX_ "Can't redefine active sort subroutine %s", name); - if (!block) - goto withattrs; - if ((const_sv = cv_const_sv(cv))) - const_changed = sv_cmp(const_sv, op_const_sv(block, Nullcv)); - if ((const_sv && const_changed) || ckWARN(WARN_REDEFINE)) - { - line_t oldline = CopLINE(PL_curcop); - CopLINE_set(PL_curcop, PL_copline); - Perl_warner(aTHX_ WARN_REDEFINE, - const_sv ? "Constant subroutine %s redefined" - : "Subroutine %s redefined", name); - CopLINE_set(PL_curcop, oldline); + if (block) { + if (ckWARN(WARN_REDEFINE) + || (CvCONST(cv) + && (!const_sv || sv_cmp(cv_const_sv(cv), const_sv)))) + { + line_t oldline = CopLINE(PL_curcop); + CopLINE_set(PL_curcop, PL_copline); + Perl_warner(aTHX_ WARN_REDEFINE, + CvCONST(cv) ? "Constant subroutine %s redefined" + : "Subroutine %s redefined", name); + CopLINE_set(PL_curcop, oldline); + } + SvREFCNT_dec(cv); + cv = Nullcv; } - SvREFCNT_dec(cv); - cv = Nullcv; } } - withattrs: + if (const_sv) { + SvREFCNT_inc(const_sv); + if (cv) { + cv_undef(cv); +#ifdef USE_THREADS + New(666, CvMUTEXP(cv), 1, perl_mutex); + MUTEX_INIT(CvMUTEXP(cv)); + CvOWNER(cv) = 0; +#endif /* USE_THREADS */ + sv_setpv((SV*)cv, ""); /* prototype is "" */ + CvXSUBANY(cv).any_ptr = const_sv; + CvXSUB(cv) = const_sv_xsub; + CvCONST_on(cv); + /* XXX Does anybody care that CvFILE(cv) is blank? */ + } + else { + GvCV(gv) = Nullcv; + cv = newCONSTSUB(NULL, name, const_sv); + } + op_free(block); + SvREFCNT_dec(PL_compcv); + PL_compcv = NULL; + PL_sub_generation++; + goto done; + } if (attrs) { HV *stash; SV *rcv; @@ -4591,12 +4661,8 @@ Perl_newATTRSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block) } } } - if (!block) { - noblock: - PL_copline = NOLINE; - LEAVE_SCOPE(floor); - return cv; - } + if (!block) + goto done; if (AvFILLp(PL_comppad_name) < AvFILLp(PL_comppad)) av_store(PL_comppad_name, AvFILLp(PL_comppad), Nullsv); @@ -4635,6 +4701,9 @@ Perl_newATTRSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block) PL_curpad[ix] = Nullsv; } } + assert(!CvCONST(cv)); + if (ps && !*ps && op_const_sv(block, cv)) + CvCONST_on(cv); } else { AV *av = newAV(); /* Will be @_ */ @@ -4750,10 +4819,11 @@ eligible for inlining at compile-time. =cut */ -void +CV * Perl_newCONSTSUB(pTHX_ HV *stash, char *name, SV *sv) { dTHR; + CV* cv; ENTER; @@ -4774,15 +4844,14 @@ Perl_newCONSTSUB(pTHX_ HV *stash, char *name, SV *sv) #endif } - newATTRSUB( - start_subparse(FALSE, 0), - newSVOP(OP_CONST, 0, newSVpv(name,0)), - newSVOP(OP_CONST, 0, &PL_sv_no), /* SvPV(&PL_sv_no) == "" -- GMB */ - Nullop, - newSTATEOP(0, Nullch, newSVOP(OP_CONST, 0, sv)) - ); + cv = newXS(name, const_sv_xsub, __FILE__); + CvXSUBANY(cv).any_ptr = sv; + CvCONST_on(cv); + sv_setpv((SV*)cv, ""); /* prototype is "" */ LEAVE; + + return cv; } /* @@ -4814,7 +4883,10 @@ Perl_newXS(pTHX_ char *name, XSUBADDR_t subaddr, char *filename) line_t oldline = CopLINE(PL_curcop); if (PL_copline != NOLINE) CopLINE_set(PL_curcop, PL_copline); - Perl_warner(aTHX_ WARN_REDEFINE, "Subroutine %s redefined",name); + Perl_warner(aTHX_ WARN_REDEFINE, + CvCONST(cv) ? "Constant subroutine %s redefined" + : "Subroutine %s redefined" + ,name); CopLINE_set(PL_curcop, oldline); } SvREFCNT_dec(cv); @@ -6520,7 +6592,7 @@ Perl_peep(pTHX_ register OP *o) PADOFFSET ix = pad_alloc(OP_CONST, SVs_PADTMP); if (SvPADTMP(cSVOPo->op_sv)) { /* If op_sv is already a PADTMP then it is being used by - * another pad, so make a copy. */ + * some pad, so make a copy. */ sv_setsv(PL_curpad[ix],cSVOPo->op_sv); SvREADONLY_on(PL_curpad[ix]); SvREFCNT_dec(cSVOPo->op_sv); @@ -6529,6 +6601,8 @@ Perl_peep(pTHX_ register OP *o) SvREFCNT_dec(PL_curpad[ix]); SvPADTMP_on(cSVOPo->op_sv); PL_curpad[ix] = cSVOPo->op_sv; + /* XXX I don't know how this isn't readonly already. */ + SvREADONLY_on(PL_curpad[ix]); } cSVOPo->op_sv = Nullsv; o->op_targ = ix; @@ -6843,3 +6917,15 @@ Perl_peep(pTHX_ register OP *o) } LEAVE; } + +#include "XSUB.h" + +/* Efficient sub that returns a constant scalar value. */ +static void +const_sv_xsub(pTHXo_ CV* cv) +{ + dXSARGS; + EXTEND(sp, 1); + ST(0) = sv_2mortal(SvREFCNT_inc((SV*)XSANY.any_ptr)); + XSRETURN(1); +} diff --git a/patchlevel.h b/patchlevel.h index 94b2a9687b..3d9e63f39c 100644 --- a/patchlevel.h +++ b/patchlevel.h @@ -70,7 +70,7 @@ #if !defined(PERL_PATCHLEVEL_H_IMPLICIT) && !defined(LOCAL_PATCH_COUNT) static char *local_patches[] = { NULL - ,"DEVEL7385" + ,"DEVEL7481" ,NULL }; @@ -2025,7 +2025,7 @@ NULL char * Perl_moreswitches(pTHX_ char *s) { - I32 numlen; + STRLEN numlen; U32 rschar; switch (*s) { @@ -3637,6 +3637,7 @@ S_init_main_thread(pTHX) thr->tid = 0; thr->next = thr; thr->prev = thr; + thr->thr_done = 0; MUTEX_UNLOCK(&PL_threads_mutex); #ifdef HAVE_THREAD_INTERN @@ -1187,9 +1187,13 @@ typedef NVTYPE NV; /* e.g. libsunmath doesn't have modfl and frexpl as of mid-March 2000 */ # ifdef HAS_MODFL # define Perl_modf(x,y) modfl(x,y) +# else +# define Perl_modf(x,y) ((long double)modf((double)(x),(double*)(y))) # endif # ifdef HAS_FREXPL # define Perl_frexp(x,y) frexpl(x,y) +# else +# define Perl_frexp(x,y) ((long double)frexp((double)(x),y)) # endif # ifdef HAS_ISNANL # define Perl_isnan(x) isnanl(x) @@ -2657,10 +2661,6 @@ typedef char* (CPERLscope(*re_intuit_start_t)) (pTHX_ regexp *prog, SV *sv, typedef SV* (CPERLscope(*re_intuit_string_t)) (pTHX_ regexp *prog); typedef void (CPERLscope(*regfree_t)) (pTHX_ struct regexp* r); -#ifdef USE_PURE_BISON -int Perl_yylex(pTHX_ YYSTYPE *lvalp, int *lcharp); -#endif - typedef void (*DESTRUCTORFUNC_NOCONTEXT_t) (void*); typedef void (*DESTRUCTORFUNC_t) (pTHXo_ void*); typedef void (*SVFUNC_t) (pTHXo_ SV*); @@ -1327,7 +1327,7 @@ Perl_to_uni_lower_lc(pTHXo_ U32 c) } #undef Perl_is_utf8_char -int +STRLEN Perl_is_utf8_char(pTHXo_ U8 *p) { return ((CPerlObj*)pPerl)->Perl_is_utf8_char(p); @@ -1743,10 +1743,10 @@ Perl_newCONDOP(pTHXo_ I32 flags, OP* expr, OP* trueop, OP* falseop) } #undef Perl_newCONSTSUB -void +CV* Perl_newCONSTSUB(pTHXo_ HV* stash, char* name, SV* sv) { - ((CPerlObj*)pPerl)->Perl_newCONSTSUB(stash, name, sv); + return ((CPerlObj*)pPerl)->Perl_newCONSTSUB(stash, name, sv); } #undef Perl_newFORM @@ -2638,14 +2638,14 @@ Perl_save_threadsv(pTHXo_ PADOFFSET i) #undef Perl_scan_bin NV -Perl_scan_bin(pTHXo_ char* start, I32 len, I32* retlen) +Perl_scan_bin(pTHXo_ char* start, STRLEN len, STRLEN* retlen) { return ((CPerlObj*)pPerl)->Perl_scan_bin(start, len, retlen); } #undef Perl_scan_hex NV -Perl_scan_hex(pTHXo_ char* start, I32 len, I32* retlen) +Perl_scan_hex(pTHXo_ char* start, STRLEN len, STRLEN* retlen) { return ((CPerlObj*)pPerl)->Perl_scan_hex(start, len, retlen); } @@ -2659,7 +2659,7 @@ Perl_scan_num(pTHXo_ char* s, YYSTYPE *lvalp) #undef Perl_scan_oct NV -Perl_scan_oct(pTHXo_ char* start, I32 len, I32* retlen) +Perl_scan_oct(pTHXo_ char* start, STRLEN len, STRLEN* retlen) { return ((CPerlObj*)pPerl)->Perl_scan_oct(start, len, retlen); } @@ -3378,18 +3378,18 @@ Perl_bytes_to_utf8(pTHXo_ U8 *s, STRLEN *len) return ((CPerlObj*)pPerl)->Perl_bytes_to_utf8(s, len); } -#undef Perl_utf8_to_uv +#undef Perl_utf8_to_uv_simple UV -Perl_utf8_to_uv(pTHXo_ U8 *s, I32* retlen) +Perl_utf8_to_uv_simple(pTHXo_ U8 *s, STRLEN* retlen) { - return ((CPerlObj*)pPerl)->Perl_utf8_to_uv(s, retlen); + return ((CPerlObj*)pPerl)->Perl_utf8_to_uv_simple(s, retlen); } -#undef Perl_utf8_to_uv_chk +#undef Perl_utf8_to_uv UV -Perl_utf8_to_uv_chk(pTHXo_ U8 *s, I32* retlen, bool checking) +Perl_utf8_to_uv(pTHXo_ U8 *s, STRLEN curlen, STRLEN* retlen, U32 flags) { - return ((CPerlObj*)pPerl)->Perl_utf8_to_uv_chk(s, retlen, checking); + return ((CPerlObj*)pPerl)->Perl_utf8_to_uv(s, curlen, retlen, flags); } #undef Perl_uv_to_utf8 diff --git a/perlsdio.h b/perlsdio.h index c4a1179a41..6ce82d80b3 100644 --- a/perlsdio.h +++ b/perlsdio.h @@ -97,20 +97,30 @@ #ifdef STDIO_CNT_LVALUE #define PerlIO_canset_cnt(f) 1 +#define PerlIO_set_cnt(f,c) (FILE_cnt(f) = (c)) #ifdef STDIO_PTR_LVALUE +#ifdef STDIO_PTR_LVAL_NOCHANGE_CNT #define PerlIO_fast_gets(f) 1 #endif -#define PerlIO_set_cnt(f,c) (FILE_cnt(f) = (c)) -#else +#endif /* STDIO_PTR_LVALUE */ +#else /* STDIO_CNT_LVALUE */ #define PerlIO_canset_cnt(f) 0 #define PerlIO_set_cnt(f,c) abort() #endif #ifdef STDIO_PTR_LVALUE -#define PerlIO_set_ptrcnt(f,p,c) (FILE_ptr(f) = (p), PerlIO_set_cnt(f,c)) +#ifdef STDIO_PTR_LVAL_NOCHANGE_CNT +#define PerlIO_set_ptrcnt(f,p,c) STMT_START {FILE_ptr(f) = (p), PerlIO_set_cnt(f,c);} STMT_END +#else +#ifdef STDIO_PTR_LVAL_SETS_CNT +/* assert() may pre-process to ""; potential syntax error (FILE_ptr(), ) */ +#define PerlIO_set_ptrcnt(f,p,c) STMT_START {FILE_ptr(f) = (p); assert(FILE_cnt(f) == (c));} STMT_END +#define PerlIO_fast_gets(f) 1 #else #define PerlIO_set_ptrcnt(f,p,c) abort() #endif +#endif +#endif #else /* USE_STDIO_PTR */ diff --git a/perlsfio.h b/perlsfio.h index d0f6471659..a736371a32 100644 --- a/perlsfio.h +++ b/perlsfio.h @@ -52,10 +52,10 @@ extern int _stdprintf _ARG_((const char*, ...)); #define PerlIO_has_cntptr(f) 1 #define PerlIO_get_ptr(f) ((f)->next) #define PerlIO_get_cnt(f) ((f)->endr - (f)->next) -#define PerlIO_canset_cnt(f) 1 -#define PerlIO_fast_gets(f) 1 -#define PerlIO_set_ptrcnt(f,p,c) ((f)->next = (unsigned char *)(p)) -#define PerlIO_set_cnt(f,c) 1 +#define PerlIO_canset_cnt(f) 0 +#define PerlIO_fast_gets(f) 1 +#define PerlIO_set_ptrcnt(f,p,c) STMT_START {(f)->next = (unsigned char *)(p); assert(FILE_cnt(f) == (c))} STMT_END +#define PerlIO_set_cnt(f,c) Perl_croak(aTHX_ "Cannot set 'cnt' of FILE * on this system"); #define PerlIO_has_base(f) 1 #define PerlIO_get_base(f) ((f)->data) diff --git a/pod/Makefile.SH b/pod/Makefile.SH index ae6262c816..58ce9bea6f 100644 --- a/pod/Makefile.SH +++ b/pod/Makefile.SH @@ -64,6 +64,7 @@ POD2HTML = pod2html \ --libpods=perlfunc:perlguts:perlvar:perlrun:perlop PERL = ../miniperl +PERLILIB = $(PERL) -I../lib REALPERL = ../perl all: $(CONVERTERS) man @@ -73,7 +74,9 @@ converters: $(CONVERTERS) regen_pods: perlmodlib.pod toc buildtoc: buildtoc.PL perl.pod ../MANIFEST - $(PERL) -I ../lib buildtoc.PL + $(PERLILIB) buildtoc.PL + +perltoc.pod: buildtoc man: pod2man $(MAN) @@ -82,7 +85,7 @@ html: pod2html $(HTML) tex: pod2latex $(TEX) toc: buildtoc - $(PERL) -I../lib buildtoc + $(PERLILIB) buildtoc .SUFFIXES: .pm .pod diff --git a/pod/buildtoc.PL b/pod/buildtoc.PL index 3819308031..90deff4fdc 100644 --- a/pod/buildtoc.PL +++ b/pod/buildtoc.PL @@ -154,12 +154,14 @@ if (-d "pod") { perlamiga perlcygwin perldos + perlepoc perlhpux perlmachten perlos2 perlos390 perlposix-bc perlvms + perlvos perlwin32 ); @@ -168,12 +170,14 @@ if (-d "pod") { perlamiga perlcygwin perldos + perlepoc perlhpux perlmachten perlos2 perlos390 perlposix-bc perlvms + perlvos perlwin32 ); for (@ARCHPODS) { s/$/.pod/ } diff --git a/pod/perl.pod b/pod/perl.pod index 946d6f2927..9f3824d96e 100644 --- a/pod/perl.pod +++ b/pod/perl.pod @@ -108,12 +108,14 @@ For ease of access, the Perl manual has been split up into several sections: perlamiga Perl notes for Amiga perlcygwin Perl notes for Cygwin perldos Perl notes for DOS + perlepoc Perl notes for EPOC perlhpux Perl notes for HP-UX perlmachten Perl notes for Power MachTen perlos2 Perl notes for OS/2 perlos390 Perl notes for OS/390 perlposix-bc Perl notes for POSIX-BC perlvms Perl notes for VMS + perlvos Perl notes for Stratus VOS perlwin32 Perl notes for Windows (If you're intending to read these straight through for the first time, diff --git a/pod/perlapi.pod b/pod/perlapi.pod index 98abdc1d07..634180f7ef 100644 --- a/pod/perlapi.pod +++ b/pod/perlapi.pod @@ -287,6 +287,19 @@ Returns the stash of the CV. =for hackers Found in file cv.h +=item cv_const_sv + +If C<cv> is a constant sub eligible for inlining. returns the constant +value returned by the sub. Otherwise, returns NULL. + +Constant subs can be created with C<newCONSTSUB> or as described in +L<perlsub/"Constant Functions">. + + SV* cv_const_sv(CV* cv) + +=for hackers +Found in file op.c + =item dMARK Declare a stack marker variable, C<mark>, for the XSUB. See C<MARK> and @@ -1162,7 +1175,7 @@ Found in file handy.h Creates a constant sub equivalent to Perl C<sub FOO () { 123 }> which is eligible for inlining at compile-time. - void newCONSTSUB(HV* stash, char* name, SV* sv) + CV* newCONSTSUB(HV* stash, char* name, SV* sv) =for hackers Found in file op.c @@ -2355,19 +2368,19 @@ false, defined or undefined. Does not handle 'get' magic. =for hackers Found in file sv.h -=item svtype +=item SvTYPE -An enum of flags for Perl types. These are found in the file B<sv.h> -in the C<svtype> enum. Test these flags with the C<SvTYPE> macro. +Returns the type of the SV. See C<svtype>. + + svtype SvTYPE(SV* sv) =for hackers Found in file sv.h -=item SvTYPE - -Returns the type of the SV. See C<svtype>. +=item svtype - svtype SvTYPE(SV* sv) +An enum of flags for Perl types. These are found in the file B<sv.h> +in the C<svtype> enum. Test these flags with the C<SvTYPE> macro. =for hackers Found in file sv.h @@ -3205,32 +3218,32 @@ Found in file utf8.c =item utf8_to_uv Returns the character value of the first character in the string C<s> -which is assumed to be in UTF8 encoding; C<retlen> will be set to the -length, in bytes, of that character, and the pointer C<s> will be -advanced to the end of the character. +which is assumed to be in UTF8 encoding and no longer than C<curlen>; +C<retlen> will be set to the length, in bytes, of that character, +and the pointer C<s> will be advanced to the end of the character. -If C<s> does not point to a well-formed UTF8 character, an optional UTF8 +If C<s> does not point to a well-formed UTF8 character, the behaviour +is dependent on the value of C<checking>: if this is true, it is +assumed that the caller will raise a warning, and this function will +set C<retlen> to C<-1> and return. If C<checking> is not true, an optional UTF8 warning is produced. - U8* s utf8_to_uv(I32 *retlen) + U8* s utf8_to_uv(STRLEN curlen, I32 *retlen, U32 flags) =for hackers Found in file utf8.c -=item utf8_to_uv_chk +=item utf8_to_uv_simple Returns the character value of the first character in the string C<s> which is assumed to be in UTF8 encoding; C<retlen> will be set to the length, in bytes, of that character, and the pointer C<s> will be advanced to the end of the character. -If C<s> does not point to a well-formed UTF8 character, the behaviour -is dependent on the value of C<checking>: if this is true, it is -assumed that the caller will raise a warning, and this function will -set C<retlen> to C<-1> and return. If C<checking> is not true, an optional UTF8 -warning is produced. +If C<s> does not point to a well-formed UTF8 character, zero is +returned and retlen is set, if possible, to -1. - U8* s utf8_to_uv_chk(I32 *retlen, I32 checking) + U8* s utf8_to_uv_simple(STRLEN *retlen) =for hackers Found in file utf8.c diff --git a/pod/perldelta.pod b/pod/perldelta.pod index ba940817df..72a2904bca 100644 --- a/pod/perldelta.pod +++ b/pod/perldelta.pod @@ -109,6 +109,10 @@ functionality, see pack('U0', ...) and pack('C0', ...). =item * +Formats now support zero-padded decimal fields. + +=item * + C<perl -d:Module=arg,arg,arg> now works (previously one couldn't pass in multiple arguments.) @@ -131,6 +135,11 @@ C<pack('U0a*', ...)> can now be used to force a string to UTF8. =item * +The printf and sprintf now support parameter reordering using the +C<%\d+\$> and C<*\d+\$> syntaxes. + +=item * + prototype(\&) is now available. =item * diff --git a/pod/perldiag.pod b/pod/perldiag.pod index 480ab8492d..3994531000 100644 --- a/pod/perldiag.pod +++ b/pod/perldiag.pod @@ -1789,6 +1789,10 @@ a builtin library search path, prefix2 is substituted. The error may appear if components are not found, or are too long. See "PERLLIB_PREFIX" in L<perlos2>. +=item Malformed UTF-8 character (%s) + +Perl detected something that didn't comply with UTF-8 encoding rules. + =item Malformed UTF-16 surrogate Perl thought it was reading UTF-16 encoded character data but while @@ -2899,9 +2903,10 @@ filehandle that was either never opened or has since been closed. (F) This machine doesn't implement the select() system call. -=item Self-ties are not supported +=item Self-ties of arrays and hashes are not supported -(F) Self-ties are not supported in the current implementation. +(F) Self-ties are of arrays and hashes are not supported in +the current implementation. =item Semicolon seems to be missing diff --git a/pod/perlebcdic.pod b/pod/perlebcdic.pod index 4ef5eca2d0..12ea2f3ef4 100644 --- a/pod/perlebcdic.pod +++ b/pod/perlebcdic.pod @@ -501,7 +501,8 @@ provide easy to use ASCII to EBCDIC operations that are also easily reversed. For example, to convert ASCII to code page 037 take the output of the second -column from the output of recipe 0 and use it in tr/// like so: +column from the output of recipe 0 (modified to add \\ characters) and use +it in tr/// like so: $cp_037 = '\000\001\002\003\234\011\206\177\227\215\216\013\014\015\016\017' . @@ -524,15 +525,19 @@ column from the output of recipe 0 and use it in tr/// like so: my $ebcdic_string = $ascii_string; eval '$ebcdic_string =~ tr/\000-\377/' . $cp_037 . '/'; -To convert from EBCDIC to ASCII just reverse the order of the tr/// +To convert from EBCDIC 037 to ASCII just reverse the order of the tr/// arguments like so: my $ascii_string = $ebcdic_string; - eval '$ascii_string = tr/' . $code_page_chrs . '/\000-\037/'; + eval '$ascii_string = tr/' . $cp_037 . '/\000-\377/'; + +Similarly one could take the output of the third column from recipe 0 to +obtain a C<$cp_1047> table. The fourth column of the output from recipe +0 could provide a C<$cp_posix_bc> table suitable for transcoding as well. =head2 iconv -XPG4 operability often implies the presence of an I<iconv> utility +XPG operability often implies the presence of an I<iconv> utility available from the shell or from the C library. Consult your system's documentation for information on iconv. diff --git a/pod/perlfaq4.pod b/pod/perlfaq4.pod index 79905f88ce..9d6b766a9f 100644 --- a/pod/perlfaq4.pod +++ b/pod/perlfaq4.pod @@ -952,12 +952,12 @@ ordered and whether you wish to preserve the ordering. (this assumes all true values in the array) $prev = 'nonesuch'; - @out = grep($_ ne $prev && ($prev = $_), @in); + @out = grep($_ ne $prev && ($prev = $_, 1), @in); This is nice in that it doesn't use much extra memory, simulating -uniq(1)'s behavior of removing only adjacent duplicates. It's less -nice in that it won't work with false values like undef, 0, or ""; -"0 but true" is OK, though. +uniq(1)'s behavior of removing only adjacent duplicates. The ", 1" +guarantees that the expression is true (so that grep picks it up) +even if the $_ is 0, "", or undef. =item b) If you don't know whether @in is sorted: diff --git a/pod/perlfaq5.pod b/pod/perlfaq5.pod index feb66a45cd..3cb66bf5f3 100644 --- a/pod/perlfaq5.pod +++ b/pod/perlfaq5.pod @@ -705,7 +705,7 @@ It's more realistic. Anyway, this is what you can do if you can't help yourself. - use Fcntl ':flock'; + use Fcntl qw(:DEFAULT :flock); sysopen(FH, "numfile", O_RDWR|O_CREAT) or die "can't open numfile: $!"; flock(FH, LOCK_EX) or die "can't flock numfile: $!"; $num = <FH> || 0; diff --git a/pod/perlfunc.pod b/pod/perlfunc.pod index db90b86879..c502bf7b39 100644 --- a/pod/perlfunc.pod +++ b/pod/perlfunc.pod @@ -1193,7 +1193,7 @@ make your program I<appear> to run faster. When called in list context, returns a 2-element list consisting of the key and value for the next element of a hash, so that you can iterate over -it. When called in scalar context, returns the key for only the "next" +it. When called in scalar context, returns only the key for the next element in the hash. Entries are returned in an apparently random order. The actual random @@ -1208,7 +1208,14 @@ again. There is a single iterator for each hash, shared by all C<each>, C<keys>, and C<values> function calls in the program; it can be reset by reading all the elements from the hash, or by evaluating C<keys HASH> or C<values HASH>. If you add or delete elements of a hash while you're -iterating over it, you may get entries skipped or duplicated, so don't. +iterating over it, you may get entries skipped or duplicated, so +don't. Exception: It is always safe to delete the item most recently +returned by C<each()>, which means that the following code will work: + + while (($key, $value) = each %hash) { + print $key, "\n"; + delete $hash{$key}; # This is safe + } The following prints out your environment like the printenv(1) program, only in a different order: @@ -4478,13 +4485,31 @@ and the conversion letter: h interpret integer as C type "short" or "unsigned short" If no flags, interpret integer as C type "int" or "unsigned" +Perl supports parameter ordering, in other words, fetching the +parameters in some explicitly specified "random" ordering as opposed +to the default implicit sequential ordering. The syntax is, instead +of the C<%> and C<*>, to use C<%>I<digits>C<$> and C<*>I<digits>C<$>, +where the I<digits> is the wanted index, from one upwards. For example: + + printf "%2\$d %1\$d\n", 12, 34; # will print "34 12\n" + printf "%*2\$d\n", 12, 3; # will print " 12\n" + +Note that using the reordering syntax does not interfere with the usual +implicit sequential fetching of the parameters: + + printf "%2\$d %d\n", 12, 34; # will print "34 12\n" + printf "%2\$d %d %d\n", 12, 34; # will print "34 12 34\n" + printf "%3\$d %d %d\n", 12, 34, 56; # will print "56 12 34\n" + printf "%2\$*3\$d %d\n", 12, 34, 3; # will print " 34 12\n" + printf "%*3\$2\$d %d\n", 12, 34, 3; # will print " 34 12\n" + There are also two Perl-specific flags: - V interpret integer as Perl's standard integer type - v interpret string as a vector of integers, output as - numbers separated either by dots, or by an arbitrary - string received from the argument list when the flag - is preceded by C<*> + V interpret integer as Perl's standard integer type + v interpret string as a vector of integers, output as + numbers separated either by dots, or by an arbitrary + string received from the argument list when the flag + is preceded by C<*> Where a number would appear in the flags, an asterisk (C<*>) may be used instead, in which case Perl uses the next item in the parameter diff --git a/pod/perlport.pod b/pod/perlport.pod index 0c3554686d..d1887bfbc8 100644 --- a/pod/perlport.pod +++ b/pod/perlport.pod @@ -890,9 +890,9 @@ vmsperl on the web, http://www.sidhe.org/vmsperl/index.html =head2 VOS -Perl on VOS is discussed in F<README.vos> in the perl distribution. -Perl on VOS can accept either VOS- or Unix-style file -specifications as in either of the following: +Perl on VOS is discussed in F<README.vos> in the perl distribution +(installed as L<perlvos>). Perl on VOS can accept either VOS- or +Unix-style file specifications as in either of the following: $ perl -ne "print if /perl_setup/i" >system>notices $ perl -ne "print if /perl_setup/i" /system/notices @@ -908,12 +908,11 @@ contain a slash character cannot be processed. Such files must be renamed before they can be processed by Perl. Note that VOS limits file names to 32 or fewer characters. -The following C functions are unimplemented on VOS, and any attempt by -Perl to use them will result in a fatal error message and an immediate -exit from Perl: dup, do_aspawn, do_spawn, fork, waitpid. Once these -functions become available in the VOS POSIX.1 implementation, you can -either recompile and rebind Perl, or you can download a newer port from -ftp.stratus.com. +See F<README.vos> for restrictions that apply when Perl is built +with the alpha version of VOS POSIX.1 support. + +Perl on VOS is built without any extensions and does not support +dynamic loading. The value of C<$^O> on VOS is "VOS". To determine the architecture that you are running on without resorting to loading all of C<%Config> you @@ -1995,9 +1994,9 @@ http://www.perl.com/CPAN/ports/index.html for binary distributions. =head1 SEE ALSO -L<perlaix>, L<perlamiga>, L<perlcygwin>, L<perldos>, L<perlebcdic>, -L<perlhpux>, L<perlos2>, L<perlos390>, L<perlposix-bc>, L<perlwin32>, -L<perlvms>, and L<Win32>. +L<perlaix>, L<perlamiga>, L<perlcygwin>, L<perldos>, L<perlepoc>, +L<perlebcdic>, L<perlhpux>, L<perlos2>, L<perlos390>, L<perlposix-bc>, +L<perlwin32>, L<perlvms>, L<perlvos>, and L<Win32>. =head1 AUTHORS / CONTRIBUTORS diff --git a/pod/perlrun.pod b/pod/perlrun.pod index d8fb12c9be..c131ad0d70 100644 --- a/pod/perlrun.pod +++ b/pod/perlrun.pod @@ -311,7 +311,7 @@ equivalent to B<-Dtls>): 8 t Trace execution 16 o Method and overloading resolution 32 c String/numeric conversions - 64 P Print preprocessor command for -P + 64 P Print preprocessor command for -P, source file input state 128 m Memory allocation 256 f Format processing 512 r Regular expression parsing and execution diff --git a/pod/perltoc.pod b/pod/perltoc.pod index b87b3ab6d9..098d2d851c 100644 --- a/pod/perltoc.pod +++ b/pod/perltoc.pod @@ -4149,9 +4149,9 @@ B<filter_fetch_value> AvFILL, av_clear, av_delete, av_exists, av_extend, av_fetch, av_fill, av_len, av_make, av_pop, av_push, av_shift, av_store, av_undef, av_unshift, bytes_to_utf8, call_argv, call_method, call_pv, call_sv, CLASS, Copy, -croak, CvSTASH, dMARK, dORIGMARK, dSP, dXSARGS, dXSI32, ENTER, eval_pv, -eval_sv, EXTEND, fbm_compile, fbm_instr, FREETMPS, get_av, get_cv, get_hv, -get_sv, GIMME, GIMME_V, GvSV, gv_fetchmeth, gv_fetchmethod, +croak, CvSTASH, cv_const_sv, dMARK, dORIGMARK, dSP, dXSARGS, dXSI32, ENTER, +eval_pv, eval_sv, EXTEND, fbm_compile, fbm_instr, FREETMPS, get_av, get_cv, +get_hv, get_sv, GIMME, GIMME_V, GvSV, gv_fetchmeth, gv_fetchmethod, gv_fetchmethod_autoload, gv_stashpv, gv_stashsv, G_ARRAY, G_DISCARD, G_EVAL, G_NOARGS, G_SCALAR, G_VOID, HEf_SVKEY, HeHASH, HeKEY, HeKLEN, HePV, HeSVKEY, HeSVKEY_force, HeSVKEY_set, HeVAL, HvNAME, hv_clear, hv_delete, @@ -5740,6 +5740,42 @@ DJGPP, Pthreads =back +=head2 perlepoc, README.epoc - Perl for EPOC + +=over + +=item SYNOPSIS + +=item INTRODUCTION + +=item INSTALLING PERL ON EPOC + +=item USING PERL ON EPOC + +=over + +=item IO Redirection + +=item PATH Names + +=item Editors + +=item Features + +=item Restrictions + +=item Compiling Perl 5 on the EPOC cross compiling environment + +=back + +=item SUPPORT STATUS + +=item AUTHOR + +=item LAST UPDATE + +=back + =head2 perlhpux, README.hpux - Perl version 5 on Hewlett-Packard Unix (HP-UX) systems @@ -6190,6 +6226,46 @@ LIST, waitpid PID,FLAGS =back +=head2 perlvos, README.vos - Perl for Stratus VOS + +=over + +=item SYNOPSIS + +=over + +=item Stratus POSIX Support + +=back + +=item INSTALLING PERL IN VOS + +=over + +=item Compiling Perl 5 on VOS + +=item Installing Perl 5 on VOS + +=back + +=item USING PERL IN VOS + +=over + +=item Unimplemented Features + +=item Restrictions + +=back + +=item SUPPORT STATUS + +=item AUTHOR + +=item LAST UPDATE + +=back + =head2 perlwin32 - Perl under Win32 =over @@ -6879,7 +6955,7 @@ FILL, MAX, OFF, ARRAY, AvFLAGS =item B::CV METHODS STASH, START, ROOT, GV, FILE, DEPTH, PADLIST, OUTSIDE, XSUB, XSUBANY, -CvFLAGS +CvFLAGS, const_sv =item B::HV METHODS @@ -8008,12 +8084,13 @@ C<d_setvbuf>, C<d_sfio>, C<d_shm>, C<d_shmat>, C<d_shmatprototype>, C<d_shmctl>, C<d_shmdt>, C<d_shmget>, C<d_sigaction>, C<d_sigsetjmp>, C<d_socket>, C<d_socklen_t>, C<d_sockpair>, C<d_socks5_init>, C<d_sqrtl>, C<d_statblks>, C<d_statfs_f_flags>, C<d_statfs_s>, C<d_statvfs>, -C<d_stdio_cnt_lval>, C<d_stdio_ptr_lval>, C<d_stdio_stream_array>, -C<d_stdiobase>, C<d_stdstdio>, C<d_strchr>, C<d_strcoll>, C<d_strctcpy>, -C<d_strerrm>, C<d_strerror>, C<d_strtod>, C<d_strtol>, C<d_strtold>, -C<d_strtoll>, C<d_strtoul>, C<d_strtoull>, C<d_strtouq>, C<d_strxfrm>, -C<d_suidsafe>, C<d_symlink>, C<d_syscall>, C<d_sysconf>, C<d_sysernlst>, -C<d_syserrlst>, C<d_system>, C<d_tcgetpgrp>, C<d_tcsetpgrp>, C<d_telldir>, +C<d_stdio_cnt_lval>, C<d_stdio_ptr_lval>, C<d_stdio_ptr_lval_nochange_cnt>, +C<d_stdio_ptr_lval_sets_cnt>, C<d_stdio_stream_array>, C<d_stdiobase>, +C<d_stdstdio>, C<d_strchr>, C<d_strcoll>, C<d_strctcpy>, C<d_strerrm>, +C<d_strerror>, C<d_strtod>, C<d_strtol>, C<d_strtold>, C<d_strtoll>, +C<d_strtoul>, C<d_strtoull>, C<d_strtouq>, C<d_strxfrm>, C<d_suidsafe>, +C<d_symlink>, C<d_syscall>, C<d_sysconf>, C<d_sysernlst>, C<d_syserrlst>, +C<d_system>, C<d_tcgetpgrp>, C<d_tcsetpgrp>, C<d_telldir>, C<d_telldirproto>, C<d_time>, C<d_times>, C<d_truncate>, C<d_tzname>, C<d_umask>, C<d_uname>, C<d_union_semun>, C<d_ustat>, C<d_vendorarch>, C<d_vendorbin>, C<d_vendorlib>, C<d_vfork>, C<d_void_closedir>, @@ -9217,21 +9294,21 @@ pasthru (o) =item Using Attributes and Parameters -AUTHOR, ABSTRACT, ABSTRACT_FROM, BINARY_LOCATION, C, CAPI, CCFLAGS, CONFIG, +ABSTRACT, ABSTRACT_FROM, AUTHOR, BINARY_LOCATION, C, CAPI, CCFLAGS, CONFIG, CONFIGURE, DEFINE, DIR, DISTNAME, DL_FUNCS, DL_VARS, EXCLUDE_EXT, EXE_FILES, FIRST_MAKEFILE, FULLPERL, FUNCLIST, H, HTMLLIBPODS, HTMLSCRIPTPODS, IMPORTS, INC, INCLUDE_EXT, INSTALLARCHLIB, INSTALLBIN, INSTALLDIRS, INSTALLHTMLPRIVLIBDIR, INSTALLHTMLSCRIPTDIR, INSTALLHTMLSITELIBDIR, INSTALLMAN1DIR, INSTALLMAN3DIR, INSTALLPRIVLIB, INSTALLSCRIPT, INSTALLSITEARCH, INSTALLSITELIB, INST_ARCHLIB, INST_BIN, -INST_EXE, INST_LIB, INST_HTMLLIBDIR, INST_HTMLSCRIPTDIR, INST_MAN1DIR, -INST_MAN3DIR, INST_SCRIPT, PERL_MALLOC_OK, LDFROM, LIB, LIBPERL_A, LIBS, -LINKTYPE, MAKEAPERL, MAKEFILE, MAN1PODS, MAN3PODS, MAP_TARGET, MYEXTLIB, -NAME, NEEDS_LINKING, NOECHO, NORECURS, NO_VC, OBJECT, OPTIMIZE, PERL, -PERLMAINCC, PERL_ARCHLIB, PERL_LIB, PERL_SRC, PERM_RW, PERM_RWX, PL_FILES, -PM, PMLIBDIRS, POLLUTE, PPM_INSTALL_EXEC, PPM_INSTALL_SCRIPT, PREFIX, -PREREQ_PM, SKIP, TYPEMAPS, VERSION, VERSION_FROM, XS, XSOPT, XSPROTOARG, -XS_VERSION +INST_EXE, INST_HTMLLIBDIR, INST_HTMLSCRIPTDIR, INST_LIB, INST_MAN1DIR, +INST_MAN3DIR, INST_SCRIPT, LDFROM, LIB, LIBPERL_A, LIBS, LINKTYPE, +MAKEAPERL, MAKEFILE, MAN1PODS, MAN3PODS, MAP_TARGET, MYEXTLIB, NAME, +NEEDS_LINKING, NOECHO, NORECURS, NO_VC, OBJECT, OPTIMIZE, PERL, PERLMAINCC, +PERL_ARCHLIB, PERL_LIB, PERL_MALLOC_OK, PERL_SRC, PERM_RW, PERM_RWX, +PL_FILES, PM, PMLIBDIRS, POLLUTE, PPM_INSTALL_EXEC, PPM_INSTALL_SCRIPT, +PREFIX, PREREQ_PM, SKIP, TYPEMAPS, VERSION, VERSION_FROM, XS, XSOPT, +XSPROTOARG, XS_VERSION =item Additional lowercase attributes diff --git a/pod/perltodo.pod b/pod/perltodo.pod index f12b10f4b9..f38ba88bf3 100644 --- a/pod/perltodo.pod +++ b/pod/perltodo.pod @@ -111,10 +111,6 @@ problem for free. =head1 Perl Language -=head2 our ($var) - -Declare global variables (lexically or otherwise). - =head2 64-bit Perl Verify complete 64 bit support so that the value of sysseek, or C<-s>, or @@ -532,14 +528,6 @@ Kurt Starsinic is working on h2ph. mjd has fixed bugs in a2p in the past. a2p apparently doesn't work on nawk and gawk extensions. Graham Barr has an Include module that does h2ph work at runtime. -=head2 POD Converters - -Brad's PodParser code needs to become part of the core, and the Pod::* -and pod2* programs rewritten to use this standard parser. Currently -the converters take different options, some behave in different -fashions, and some are more picky than others in terms of the POD -files they accept. - =head2 pod2html A short-term fix: pod2html generates absolute HTML links. Make it diff --git a/pod/pod2man.PL b/pod/pod2man.PL index 4c5831b90b..dd5bb634be 100644 --- a/pod/pod2man.PL +++ b/pod/pod2man.PL @@ -72,9 +72,14 @@ if ($options{official} && !defined $options{center}) { $options{center} = 'Perl Programmers Reference Guide'; } -# Initialize and run the formatter. +# Initialize and run the formatter, pulling a pair of input and output off +# at a time. my $parser = Pod::Man->new (%options); -$parser->parse_from_file (@ARGV); +my @files; +do { + @files = splice (@ARGV, 0, 2); + $parser->parse_from_file (@files); +} while (@ARGV); __END__ @@ -88,7 +93,7 @@ pod2man [B<--section>=I<manext>] [B<--release>=I<version>] [B<--center>=I<string>] [B<--date>=I<string>] [B<--fixed>=I<font>] [B<--fixedbold>=I<font>] [B<--fixeditalic>=I<font>] [B<--fixedbolditalic>=I<font>] [B<--official>] [B<--lax>] -[B<--quotes>=I<quotes>] [I<input> [I<output>]] +[B<--quotes>=I<quotes>] [I<input> [I<output>] ...] pod2man B<--help> @@ -101,7 +106,10 @@ terminal using nroff(1), normally via man(1), or printing using troff(1). I<input> is the file to read for POD source (the POD can be embedded in code). If I<input> isn't given, it defaults to STDIN. I<output>, if given, is the file to which to write the formatted output. If I<output> isn't -given, the formatted output is written to STDOUT. +given, the formatted output is written to STDOUT. Several POD files can be +processed in the same B<pod2man> invocation (saving module load and compile +times) by providing multiple pairs of I<input> and I<output> files on the +command line. B<--section>, B<--release>, B<--center>, B<--date>, and B<--official> can be used to set the headers and footers to use; if not given, Pod::Man will @@ -1480,20 +1480,20 @@ PP(pp_complement) STRLEN targlen = 0; U8 *result; U8 *send; - I32 l; + STRLEN l; send = tmps + len; while (tmps < send) { - UV c = utf8_to_uv(tmps, &l); + UV c = utf8_to_uv(tmps, 0, &l, UTF8_ALLOW_ANY); tmps += UTF8SKIP(tmps); - targlen += UTF8LEN(~c); + targlen += UNISKIP(~c); } /* Now rewind strings and write them. */ tmps -= len; Newz(0, result, targlen + 1, U8); while (tmps < send) { - UV c = utf8_to_uv(tmps, &l); + UV c = utf8_to_uv(tmps, 0, &l, UTF8_ALLOW_ANY); tmps += UTF8SKIP(tmps); result = uv_to_utf8(result,(UV)~c); } @@ -1566,7 +1566,7 @@ PP(pp_i_add) { djSP; dATARGET; tryAMAGICbin(add,opASSIGN); { - dPOPTOPiirl; + dPOPTOPiirl_ul; SETi( left + right ); RETURN; } @@ -1576,7 +1576,7 @@ PP(pp_i_subtract) { djSP; dATARGET; tryAMAGICbin(subtr,opASSIGN); { - dPOPTOPiirl; + dPOPTOPiirl_ul; SETi( left - right ); RETURN; } @@ -1944,7 +1944,7 @@ PP(pp_hex) { djSP; dTARGET; char *tmps; - I32 argtype; + STRLEN argtype; STRLEN n_a; tmps = POPpx; @@ -1957,7 +1957,7 @@ PP(pp_oct) { djSP; dTARGET; NV value; - I32 argtype; + STRLEN argtype; char *tmps; STRLEN n_a; @@ -2234,13 +2234,13 @@ PP(pp_ord) { djSP; dTARGET; UV value; - STRLEN n_a; SV *tmpsv = POPs; - U8 *tmps = (U8*)SvPVx(tmpsv,n_a); - I32 retlen; + STRLEN len; + U8 *tmps = (U8*)SvPVx(tmpsv, len); + STRLEN retlen; if ((*tmps & 0x80) && DO_UTF8(tmpsv)) - value = utf8_to_uv_chk(tmps, &retlen, 0); + value = utf8_to_uv(tmps, len, &retlen, 0); else value = (UV)(*tmps & 255); XPUSHu(value); @@ -2304,10 +2304,10 @@ PP(pp_ucfirst) STRLEN slen; if (DO_UTF8(sv) && (s = (U8*)SvPV(sv, slen)) && slen && (*s & 0xc0) == 0xc0) { - I32 ulen; + STRLEN ulen; U8 tmpbuf[UTF8_MAXLEN]; U8 *tend; - UV uv = utf8_to_uv_chk(s, &ulen, 0); + UV uv = utf8_to_uv(s, slen, &ulen, 0); if (PL_op->op_private & OPpLOCALE) { TAINT; @@ -2363,10 +2363,10 @@ PP(pp_lcfirst) STRLEN slen; if (DO_UTF8(sv) && (s = (U8*)SvPV(sv, slen)) && slen && (*s & 0xc0) == 0xc0) { - I32 ulen; + STRLEN ulen; U8 tmpbuf[UTF8_MAXLEN]; U8 *tend; - UV uv = utf8_to_uv_chk(s, &ulen, 0); + UV uv = utf8_to_uv(s, slen, &ulen, 0); if (PL_op->op_private & OPpLOCALE) { TAINT; @@ -2423,7 +2423,7 @@ PP(pp_uc) if (DO_UTF8(sv)) { dTARGET; - I32 ulen; + STRLEN ulen; register U8 *d; U8 *send; @@ -2443,7 +2443,7 @@ PP(pp_uc) TAINT; SvTAINTED_on(TARG); while (s < send) { - d = uv_to_utf8(d, toUPPER_LC_uni( utf8_to_uv_chk(s, &ulen, 0))); + d = uv_to_utf8(d, toUPPER_LC_uni( utf8_to_uv(s, len, &ulen, 0))); s += ulen; } } @@ -2497,7 +2497,7 @@ PP(pp_lc) if (DO_UTF8(sv)) { dTARGET; - I32 ulen; + STRLEN ulen; register U8 *d; U8 *send; @@ -2517,7 +2517,7 @@ PP(pp_lc) TAINT; SvTAINTED_on(TARG); while (s < send) { - d = uv_to_utf8(d, toLOWER_LC_uni( utf8_to_uv_chk(s, &ulen, 0))); + d = uv_to_utf8(d, toLOWER_LC_uni( utf8_to_uv(s, len, &ulen, 0))); s += ulen; } } @@ -3361,9 +3361,9 @@ PP(pp_unpack) register char *str; /* These must not be in registers: */ - I16 ashort; + short ashort; int aint; - I32 along; + long along; #ifdef HAS_QUAD Quad_t aquad; #endif @@ -3659,7 +3659,9 @@ PP(pp_unpack) len = strend - s; if (checksum) { while (len-- > 0 && s < strend) { - auint = utf8_to_uv_chk((U8*)s, &along, 0); + STRLEN alen; + auint = utf8_to_uv((U8*)s, strend - s, &alen, 0); + along = alen; s += along; if (checksum > 32) cdouble += (NV)auint; @@ -3671,7 +3673,9 @@ PP(pp_unpack) EXTEND(SP, len); EXTEND_MORTAL(len); while (len-- > 0 && s < strend) { - auint = utf8_to_uv_chk((U8*)s, &along, 0); + STRLEN alen; + auint = utf8_to_uv((U8*)s, strend - s, &alen, 0); + along = alen; s += along; sv = NEWSV(37, 0); sv_setuv(sv, (UV)auint); @@ -342,6 +342,7 @@ PP(pp_formline) case FF_MORE: name = "MORE"; break; case FF_LINEMARK: name = "LINEMARK"; break; case FF_END: name = "END"; break; + case FF_0DECIMAL: name = "0DECIMAL"; break; } if (arg >= 0) PerlIO_printf(Perl_debug_log, "%-16s%ld\n", name, (long) arg); @@ -620,6 +621,43 @@ PP(pp_formline) t += fieldsize; break; + case FF_0DECIMAL: + /* If the field is marked with ^ and the value is undefined, + blank it out. */ + arg = *fpc++; + if ((arg & 512) && !SvOK(sv)) { + arg = fieldsize; + while (arg--) + *t++ = ' '; + break; + } + gotsome = TRUE; + value = SvNV(sv); + /* Formats aren't yet marked for locales, so assume "yes". */ + { + STORE_NUMERIC_STANDARD_SET_LOCAL(); +#if defined(USE_LONG_DOUBLE) + if (arg & 256) { + sprintf(t, "%#0*.*" PERL_PRIfldbl, + (int) fieldsize, (int) arg & 255, value); +/* is this legal? I don't have long doubles */ + } else { + sprintf(t, "%0*.0" PERL_PRIfldbl, (int) fieldsize, value); + } +#else + if (arg & 256) { + sprintf(t, "%#0*.*f", + (int) fieldsize, (int) arg & 255, value); + } else { + sprintf(t, "%0*.0f", + (int) fieldsize, value); + } +#endif + RESTORE_NUMERIC_STANDARD(); + } + t += fieldsize; + break; + case FF_NEWLINE: f++; while (t-- > linemark && *t == ' ') ; @@ -2971,17 +3009,17 @@ PP(pp_require) if (SvNIOKp(sv)) { if (SvPOK(sv) && SvNOK(sv)) { /* require v5.6.1 */ UV rev = 0, ver = 0, sver = 0; - I32 len; + STRLEN len; U8 *s = (U8*)SvPVX(sv); U8 *end = (U8*)SvPVX(sv) + SvCUR(sv); if (s < end) { - rev = utf8_to_uv_chk(s, &len, 0); + rev = utf8_to_uv(s, end - s, &len, 0); s += len; if (s < end) { - ver = utf8_to_uv_chk(s, &len, 0); + ver = utf8_to_uv(s, end - s, &len, 0); s += len; if (s < end) - sver = utf8_to_uv_chk(s, &len, 0); + sver = utf8_to_uv(s, end - s, &len, 0); } } if (PERL_REVISION < rev @@ -3632,6 +3670,24 @@ S_doparseform(pTHX_ SV *sv) } *fpc++ = s - base; /* fieldsize for FETCH */ *fpc++ = FF_DECIMAL; + *fpc++ = arg; + } + else if (*s == '0' && s[1] == '#') { /* Zero padded decimals */ + arg = ischop ? 512 : 0; + base = s - 1; + s++; /* skip the '0' first */ + while (*s == '#') + s++; + if (*s == '.') { + char *f; + s++; + f = s; + while (*s == '#') + s++; + arg |= 256 + (s - f); + } + *fpc++ = s - base; /* fieldsize for FETCH */ + *fpc++ = FF_0DECIMAL; *fpc++ = arg; } else { @@ -802,9 +802,12 @@ PP(pp_tie) POPSTACK; if (sv_isobject(sv)) { sv_unmagic(varsv, how); - /* Croak if a self-tie is attempted */ - if (varsv == SvRV(sv)) - Perl_croak(aTHX_ "Self-ties are not supported"); + /* Croak if a self-tie on an aggregate is attempted. */ + if (varsv == SvRV(sv) && + (SvTYPE(sv) == SVt_PVAV || + SvTYPE(sv) == SVt_PVHV)) + Perl_croak(aTHX_ + "Self-ties of arrays and hashes are not supported"); sv_magic(varsv, sv, how, Nullch, 0); } LEAVE; @@ -365,7 +365,7 @@ PERL_CALLCONV bool Perl_is_uni_xdigit_lc(pTHX_ U32 c); PERL_CALLCONV U32 Perl_to_uni_upper_lc(pTHX_ U32 c); PERL_CALLCONV U32 Perl_to_uni_title_lc(pTHX_ U32 c); PERL_CALLCONV U32 Perl_to_uni_lower_lc(pTHX_ U32 c); -PERL_CALLCONV int Perl_is_utf8_char(pTHX_ U8 *p); +PERL_CALLCONV STRLEN Perl_is_utf8_char(pTHX_ U8 *p); PERL_CALLCONV bool Perl_is_utf8_string(pTHX_ U8 *s, STRLEN len); PERL_CALLCONV bool Perl_is_utf8_alnum(pTHX_ U8 *p); PERL_CALLCONV bool Perl_is_utf8_alnumc(pTHX_ U8 *p); @@ -504,7 +504,7 @@ PERL_CALLCONV OP* Perl_newANONHASH(pTHX_ OP* o); PERL_CALLCONV OP* Perl_newANONSUB(pTHX_ I32 floor, OP* proto, OP* block); PERL_CALLCONV OP* Perl_newASSIGNOP(pTHX_ I32 flags, OP* left, I32 optype, OP* right); PERL_CALLCONV OP* Perl_newCONDOP(pTHX_ I32 flags, OP* expr, OP* trueop, OP* falseop); -PERL_CALLCONV void Perl_newCONSTSUB(pTHX_ HV* stash, char* name, SV* sv); +PERL_CALLCONV CV* Perl_newCONSTSUB(pTHX_ HV* stash, char* name, SV* sv); PERL_CALLCONV void Perl_newFORM(pTHX_ I32 floor, OP* o, OP* block); PERL_CALLCONV OP* Perl_newFOROP(pTHX_ I32 flags, char* label, line_t forline, OP* sclr, OP* expr, OP*block, OP*cont); PERL_CALLCONV OP* Perl_newLOGOP(pTHX_ I32 optype, I32 flags, OP* left, OP* right); @@ -677,10 +677,10 @@ PERL_CALLCONV OP* Perl_scalar(pTHX_ OP* o); PERL_CALLCONV OP* Perl_scalarkids(pTHX_ OP* o); PERL_CALLCONV OP* Perl_scalarseq(pTHX_ OP* o); PERL_CALLCONV OP* Perl_scalarvoid(pTHX_ OP* o); -PERL_CALLCONV NV Perl_scan_bin(pTHX_ char* start, I32 len, I32* retlen); -PERL_CALLCONV NV Perl_scan_hex(pTHX_ char* start, I32 len, I32* retlen); +PERL_CALLCONV NV Perl_scan_bin(pTHX_ char* start, STRLEN len, STRLEN* retlen); +PERL_CALLCONV NV Perl_scan_hex(pTHX_ char* start, STRLEN len, STRLEN* retlen); PERL_CALLCONV char* Perl_scan_num(pTHX_ char* s, YYSTYPE *lvalp); -PERL_CALLCONV NV Perl_scan_oct(pTHX_ char* start, I32 len, I32* retlen); +PERL_CALLCONV NV Perl_scan_oct(pTHX_ char* start, STRLEN len, STRLEN* retlen); PERL_CALLCONV OP* Perl_scope(pTHX_ OP* o); PERL_CALLCONV char* Perl_screaminstr(pTHX_ SV* bigsv, SV* littlesv, I32 start_shift, I32 end_shift, I32 *state, I32 last); #if !defined(VMS) @@ -809,8 +809,8 @@ PERL_CALLCONV I32 Perl_utf8_distance(pTHX_ U8 *a, U8 *b); PERL_CALLCONV U8* Perl_utf8_hop(pTHX_ U8 *s, I32 off); PERL_CALLCONV U8* Perl_utf8_to_bytes(pTHX_ U8 *s, STRLEN *len); PERL_CALLCONV U8* Perl_bytes_to_utf8(pTHX_ U8 *s, STRLEN *len); -PERL_CALLCONV UV Perl_utf8_to_uv(pTHX_ U8 *s, I32* retlen); -PERL_CALLCONV UV Perl_utf8_to_uv_chk(pTHX_ U8 *s, I32* retlen, bool checking); +PERL_CALLCONV UV Perl_utf8_to_uv_simple(pTHX_ U8 *s, STRLEN* retlen); +PERL_CALLCONV UV Perl_utf8_to_uv(pTHX_ U8 *s, STRLEN curlen, STRLEN* retlen, U32 flags); PERL_CALLCONV U8* Perl_uv_to_utf8(pTHX_ U8 *d, UV uv); PERL_CALLCONV void Perl_vivify_defelem(pTHX_ SV* sv); PERL_CALLCONV void Perl_vivify_ref(pTHX_ SV* sv, U32 to_what); @@ -832,12 +832,12 @@ PERL_CALLCONV void Perl_vwarner(pTHX_ U32 err, const char* pat, va_list* args); PERL_CALLCONV void Perl_watch(pTHX_ char** addr); PERL_CALLCONV I32 Perl_whichsig(pTHX_ char* sig); PERL_CALLCONV int Perl_yyerror(pTHX_ char* s); -#if defined(USE_PURE_BISON) +#ifdef USE_PURE_BISON +PERL_CALLCONV int Perl_yylex_r(pTHX_ YYSTYPE *lvalp, int *lcharp); PERL_CALLCONV int Perl_yylex(pTHX_ YYSTYPE *lvalp, int *lcharp); #else PERL_CALLCONV int Perl_yylex(pTHX); #endif -STATIC int S_syylex(pTHX); PERL_CALLCONV int Perl_yyparse(pTHX); PERL_CALLCONV int Perl_yywarn(pTHX_ char* s); #if defined(MYMALLOC) @@ -1103,7 +1103,7 @@ STATIC regnode* S_reg(pTHX_ I32, I32 *); STATIC regnode* S_reganode(pTHX_ U8, U32); STATIC regnode* S_regatom(pTHX_ I32 *); STATIC regnode* S_regbranch(pTHX_ I32 *, I32); -STATIC void S_reguni(pTHX_ UV, char *, I32*); +STATIC void S_reguni(pTHX_ UV, char *, STRLEN*); STATIC regnode* S_regclass(pTHX); STATIC regnode* S_regclassutf8(pTHX); STATIC I32 S_regcurly(pTHX_ char *); @@ -2742,11 +2742,11 @@ tryagain: /* FALL THROUGH */ default: { - register I32 len; + register STRLEN len; register UV ender; register char *p; char *oldp, *s; - I32 numlen; + STRLEN numlen; PL_regcomp_parse++; @@ -2884,7 +2884,8 @@ tryagain: default: normal_default: if ((*p & 0xc0) == 0xc0 && UTF) { - ender = utf8_to_uv_chk((U8*)p, &numlen, 0); + ender = utf8_to_uv((U8*)p, PL_regxend - p, + &numlen, 0); p += numlen; } else @@ -3128,7 +3129,7 @@ S_regclass(pTHX) register I32 lastvalue = OOB_CHAR8; register I32 range = 0; register regnode *ret; - I32 numlen; + STRLEN numlen; I32 namedclass; char *rangebegin; bool need_class = 0; @@ -3606,7 +3607,7 @@ S_regclassutf8(pTHX) register U32 lastvalue = OOB_UTF8; register I32 range = 0; register regnode *ret; - I32 numlen; + STRLEN numlen; I32 n; SV *listsv; U8 flags = 0; @@ -3638,12 +3639,16 @@ S_regclassutf8(pTHX) namedclass = OOB_NAMEDCLASS; if (!range) rangebegin = PL_regcomp_parse; - value = utf8_to_uv_chk((U8*)PL_regcomp_parse, &numlen, 0); + value = utf8_to_uv((U8*)PL_regcomp_parse, + PL_regxend - PL_regcomp_parse, + &numlen, 0); PL_regcomp_parse += numlen; if (value == '[') namedclass = regpposixcc(value); else if (value == '\\') { - value = (U32)utf8_to_uv_chk((U8*)PL_regcomp_parse, &numlen, 0); + value = (U32)utf8_to_uv((U8*)PL_regcomp_parse, + PL_regxend - PL_regcomp_parse, + &numlen, 0); PL_regcomp_parse += numlen; /* Some compilers cannot handle switching on 64-bit integer * values, therefore value cannot be an UV. Yes, this will @@ -3937,7 +3942,7 @@ S_reganode(pTHX_ U8 op, U32 arg) - reguni - emit (if appropriate) a Unicode character */ STATIC void -S_reguni(pTHX_ UV uv, char* s, I32* lenp) +S_reguni(pTHX_ UV uv, char* s, STRLEN* lenp) { dTHR; if (SIZE_ONLY) { @@ -325,6 +325,7 @@ Perl_re_intuit_start(pTHX_ regexp *prog, SV *sv, char *strpos, register I32 end_shift; register char *s; register SV *check; + char *strbeg; char *t; I32 ml_anch; char *tmp; @@ -351,6 +352,7 @@ Perl_re_intuit_start(pTHX_ regexp *prog, SV *sv, char *strpos, DEBUG_r(PerlIO_printf(Perl_debug_log, "String too short...\n")); goto fail; } + strbeg = (sv && SvPOK(sv)) ? strend - SvCUR(sv) : strpos; check = prog->check_substr; if (prog->reganch & ROPT_ANCH) { /* Match at beg-of-str or after \n */ ml_anch = !( (prog->reganch & ROPT_ANCH_SINGLE) @@ -361,7 +363,7 @@ Perl_re_intuit_start(pTHX_ regexp *prog, SV *sv, char *strpos, if ( !(prog->reganch & ROPT_ANCH_GPOS) /* Checked by the caller */ /* SvCUR is not set on references: SvRV and SvPVX overlap */ && sv && !SvROK(sv) - && (strpos + SvCUR(sv) != strend)) { + && (strpos != strbeg)) { DEBUG_r(PerlIO_printf(Perl_debug_log, "Not at start...\n")); goto fail; } @@ -428,7 +430,6 @@ Perl_re_intuit_start(pTHX_ regexp *prog, SV *sv, char *strpos, /* Find a possible match in the region s..strend by looking for the "check" substring in the region corrected by start/end_shift. */ if (flags & REXEC_SCREAM) { - char *strbeg = SvPVX(sv); /* XXXX Assume PV_force() on SCREAM! */ I32 p = -1; /* Internal iterator of scream. */ I32 *pp = data ? data->scream_pos : &p; @@ -670,7 +671,7 @@ Perl_re_intuit_start(pTHX_ regexp *prog, SV *sv, char *strpos, /* Even in this situation we may use MBOL flag if strpos is offset wrt the start of the string. */ if (ml_anch && sv && !SvROK(sv) /* See prev comment on SvROK */ - && (strpos + SvCUR(sv) != strend) && strpos[-1] != '\n' + && (strpos != strbeg) && strpos[-1] != '\n' /* May be due to an implicit anchor of m{.*foo} */ && !(prog->reganch & ROPT_IMPLICIT)) { @@ -721,7 +722,7 @@ Perl_re_intuit_start(pTHX_ regexp *prog, SV *sv, char *strpos, ? s + (prog->minlen? cl_l : 0) : (prog->float_substr ? check_at - start_shift + cl_l : strend) ; - char *startpos = sv && SvPOK(sv) ? strend - SvCUR(sv) : s; + char *startpos = strbeg; t = s; if (prog->reganch & ROPT_UTF8) { @@ -916,7 +917,9 @@ S_find_byclass(pTHX_ regexp * prog, regnode *c, char *s, char *strend, char *sta PL_reg_flags |= RF_tainted; /* FALL THROUGH */ case BOUNDUTF8: - tmp = (I32)(s != startpos) ? utf8_to_uv_chk(reghop((U8*)s, -1), 0, 0) : '\n'; + tmp = (I32)(s != startpos) ? utf8_to_uv(reghop((U8*)s, -1), + strend - s, + 0, 0) : '\n'; tmp = ((OP(c) == BOUNDUTF8 ? isALNUM_uni(tmp) : isALNUM_LC_uni(tmp)) != 0); while (s < strend) { if (tmp == !(OP(c) == BOUNDUTF8 ? @@ -952,7 +955,9 @@ S_find_byclass(pTHX_ regexp * prog, regnode *c, char *s, char *strend, char *sta PL_reg_flags |= RF_tainted; /* FALL THROUGH */ case NBOUNDUTF8: - tmp = (I32)(s != startpos) ? utf8_to_uv_chk(reghop((U8*)s, -1), 0, 0) : '\n'; + tmp = (I32)(s != startpos) ? utf8_to_uv(reghop((U8*)s, -1), + strend - s, + 0, 0) : '\n'; tmp = ((OP(c) == NBOUNDUTF8 ? isALNUM_uni(tmp) : isALNUM_LC_uni(tmp)) != 0); while (s < strend) { if (tmp == !(OP(c) == NBOUNDUTF8 ? @@ -1997,7 +2002,7 @@ S_regmatch(pTHX_ regnode *prog) while (s < e) { if (l >= PL_regeol) sayNO; - if (utf8_to_uv_chk((U8*)s, 0, 0) != (c1 ? + if (utf8_to_uv((U8*)s, e - s, 0, 0) != (c1 ? toLOWER_utf8((U8*)l) : toLOWER_LC_utf8((U8*)l))) { @@ -2135,7 +2140,8 @@ S_regmatch(pTHX_ regnode *prog) case NBOUNDUTF8: /* was last char in word? */ ln = (locinput != PL_regbol) - ? utf8_to_uv_chk(reghop((U8*)locinput, -1), 0, 0) : PL_regprev; + ? utf8_to_uv(reghop((U8*)locinput, -1), + PL_regeol - locinput, 0, 0) : PL_regprev; if (OP(scan) == BOUNDUTF8 || OP(scan) == NBOUNDUTF8) { ln = isALNUM_uni(ln); n = swash_fetch(PL_utf8_alnum, (U8*)locinput); @@ -302,6 +302,7 @@ Perl_save_gp(pTHX_ GV *gv, I32 empty) GvGP(gv) = gp_ref(gp); GvSV(gv) = NEWSV(72,0); GvLINE(gv) = CopLINE(PL_curcop); + GvFILE(gv) = CopFILE(PL_curcop) ? CopFILE(PL_curcop) : ""; GvEGV(gv) = gv; } else { @@ -1497,6 +1497,9 @@ Perl_sv_2iv(pTHX_ register SV *sv) return SvIV(tmpstr); return PTR2IV(SvRV(sv)); } + if (SvREADONLY(sv) && SvFAKE(sv)) { + sv_force_normal(sv); + } if (SvREADONLY(sv) && !SvOK(sv)) { dTHR; if (ckWARN(WARN_UNINITIALIZED)) @@ -2745,12 +2748,7 @@ Perl_sv_setsv(pTHX_ SV *dstr, register SV *sstr) if (!GvCVGEN((GV*)dstr) && (CvROOT(cv) || CvXSUB(cv))) { - SV *const_sv = cv_const_sv(cv); - bool const_changed = TRUE; - if(const_sv) - const_changed = sv_cmp(const_sv, - op_const_sv(CvSTART((CV*)sref), - (CV*)sref)); + SV *const_sv; /* ahem, death to those who redefine * active sort subs */ if (PL_curstackinfo->si_type == PERLSI_SORT && @@ -2758,11 +2756,20 @@ Perl_sv_setsv(pTHX_ SV *dstr, register SV *sstr) Perl_croak(aTHX_ "Can't redefine active sort subroutine %s", GvENAME((GV*)dstr)); - if ((const_changed && const_sv) || ckWARN(WARN_REDEFINE)) - Perl_warner(aTHX_ WARN_REDEFINE, const_sv ? - "Constant subroutine %s redefined" - : "Subroutine %s redefined", - GvENAME((GV*)dstr)); + /* Redefining a sub - warning is mandatory if + it was a const and its value changed. */ + if (ckWARN(WARN_REDEFINE) + || (CvCONST(cv) + && (!CvCONST((CV*)sref) + || sv_cmp(cv_const_sv(cv), + cv_const_sv((CV*)sref))))) + { + Perl_warner(aTHX_ WARN_REDEFINE, + CvCONST(cv) + ? "Constant subroutine %s redefined" + : "Subroutine %s redefined", + GvENAME((GV*)dstr)); + } } cv_ckproto(cv, (GV*)dstr, SvPOK(sref) ? SvPVX(sref) : Nullch); @@ -6050,7 +6057,7 @@ Perl_sv_vcatpvfn(pTHX_ SV *sv, const char *pat, STRLEN patlen, va_list *args, SV bool has_precis = FALSE; STRLEN precis = 0; bool is_utf = FALSE; - + char esignbuf[4]; U8 utf8buf[UTF8_MAXLEN]; STRLEN esignlen = 0; @@ -6078,6 +6085,9 @@ Perl_sv_vcatpvfn(pTHX_ SV *sv, const char *pat, STRLEN patlen, va_list *args, SV STRLEN gap; char *dotstr = "."; STRLEN dotstrlen = 1; + I32 epix = 0; /* explicit parameter index */ + I32 ewix = 0; /* explicit width index */ + bool asterisk = FALSE; for (q = p; q < patend && *q != '%'; ++q) ; if (q > p) { @@ -6138,6 +6148,15 @@ Perl_sv_vcatpvfn(pTHX_ SV *sv, const char *pat, STRLEN patlen, va_list *args, SV /* WIDTH */ + scanwidth: + + if (*q == '*') { + if (asterisk) + goto unknown; + asterisk = TRUE; + q++; + } + switch (*q) { case '1': case '2': case '3': case '4': case '5': case '6': @@ -6145,17 +6164,30 @@ Perl_sv_vcatpvfn(pTHX_ SV *sv, const char *pat, STRLEN patlen, va_list *args, SV width = 0; while (isDIGIT(*q)) width = width * 10 + (*q++ - '0'); - break; + if (*q == '$') { + if (asterisk && ewix == 0) { + ewix = width; + width = 0; + q++; + goto scanwidth; + } else if (epix == 0) { + epix = width; + width = 0; + q++; + goto scanwidth; + } else + goto unknown; + } + } - case '*': + if (asterisk) { if (args) i = va_arg(*args, int); else - i = (svix < svmax) ? SvIVx(svargs[svix++]) : 0; + i = (ewix ? ewix <= svmax : svix < svmax) ? + SvIVx(svargs[ewix ? ewix-1 : svix++]) : 0; left |= (i < 0); width = (i < 0) ? -i : i; - q++; - break; } /* PRECISION */ @@ -6166,7 +6198,8 @@ Perl_sv_vcatpvfn(pTHX_ SV *sv, const char *pat, STRLEN patlen, va_list *args, SV if (args) i = va_arg(*args, int); else - i = (svix < svmax) ? SvIVx(svargs[svix++]) : 0; + i = (ewix ? ewix <= svmax : svix < svmax) + ? SvIVx(svargs[ewix ? ewix-1 : svix++]) : 0; precis = (i < 0) ? 0 : i; q++; } @@ -6184,8 +6217,8 @@ Perl_sv_vcatpvfn(pTHX_ SV *sv, const char *pat, STRLEN patlen, va_list *args, SV vecstr = (U8*)SvPVx(vecsv,veclen); utf = DO_UTF8(vecsv); } - else if (svix < svmax) { - vecsv = svargs[svix++]; + else if (epix ? epix <= svmax : svix < svmax) { + vecsv = svargs[epix ? epix-1 : svix++]; vecstr = (U8*)SvPVx(vecsv,veclen); utf = DO_UTF8(vecsv); } @@ -6239,7 +6272,8 @@ Perl_sv_vcatpvfn(pTHX_ SV *sv, const char *pat, STRLEN patlen, va_list *args, SV if (args) uv = va_arg(*args, int); else - uv = (svix < svmax) ? SvIVx(svargs[svix++]) : 0; + uv = (epix ? epix <= svmax : svix < svmax) ? + SvIVx(svargs[epix ? epix-1 : svix++]) : 0; if ((uv > 255 || (uv > 127 && SvUTF8(sv))) && !IN_BYTE) { eptr = (char*)utf8buf; elen = uv_to_utf8((U8*)eptr, uv) - utf8buf; @@ -6268,8 +6302,8 @@ Perl_sv_vcatpvfn(pTHX_ SV *sv, const char *pat, STRLEN patlen, va_list *args, SV elen = sizeof nullstr - 1; } } - else if (svix < svmax) { - argsv = svargs[svix++]; + else if (epix ? epix <= svmax : svix < svmax) { + argsv = svargs[epix ? epix-1 : svix++]; eptr = SvPVx(argsv, elen); if (DO_UTF8(argsv)) { if (has_precis && precis < elen) { @@ -6312,7 +6346,8 @@ Perl_sv_vcatpvfn(pTHX_ SV *sv, const char *pat, STRLEN patlen, va_list *args, SV if (args) uv = PTR2UV(va_arg(*args, void*)); else - uv = (svix < svmax) ? PTR2UV(svargs[svix++]) : 0; + uv = (epix ? epix <= svmax : svix < svmax) ? + PTR2UV(svargs[epix ? epix-1 : svix++]) : 0; base = 16; goto integer; @@ -6326,13 +6361,13 @@ Perl_sv_vcatpvfn(pTHX_ SV *sv, const char *pat, STRLEN patlen, va_list *args, SV case 'd': case 'i': if (vectorize) { - I32 ulen; + STRLEN ulen; if (!veclen) { vectorize = FALSE; break; } if (utf) - iv = (IV)utf8_to_uv_chk(vecstr, &ulen, 0); + iv = (IV)utf8_to_uv(vecstr, veclen, &ulen, 0); else { iv = *vecstr; ulen = 1; @@ -6352,7 +6387,8 @@ Perl_sv_vcatpvfn(pTHX_ SV *sv, const char *pat, STRLEN patlen, va_list *args, SV } } else { - iv = (svix < svmax) ? SvIVx(svargs[svix++]) : 0; + iv = (epix ? epix <= svmax : svix < svmax) ? + SvIVx(svargs[epix ? epix-1 : svix++]) : 0; switch (intsize) { case 'h': iv = (short)iv; break; default: break; @@ -6407,14 +6443,14 @@ Perl_sv_vcatpvfn(pTHX_ SV *sv, const char *pat, STRLEN patlen, va_list *args, SV uns_integer: if (vectorize) { - I32 ulen; + STRLEN ulen; vector: if (!veclen) { vectorize = FALSE; break; } if (utf) - uv = utf8_to_uv_chk(vecstr, &ulen, 0); + uv = utf8_to_uv(vecstr, veclen, &ulen, 0); else { uv = *vecstr; ulen = 1; @@ -6434,7 +6470,8 @@ Perl_sv_vcatpvfn(pTHX_ SV *sv, const char *pat, STRLEN patlen, va_list *args, SV } } else { - uv = (svix < svmax) ? SvUVx(svargs[svix++]) : 0; + uv = (epix ? epix <= svmax : svix < svmax) ? + SvUVx(svargs[epix ? epix-1 : svix++]) : 0; switch (intsize) { case 'h': uv = (unsigned short)uv; break; default: break; @@ -6526,7 +6563,8 @@ Perl_sv_vcatpvfn(pTHX_ SV *sv, const char *pat, STRLEN patlen, va_list *args, SV if (args) nv = va_arg(*args, NV); else - nv = (svix < svmax) ? SvNVx(svargs[svix++]) : 0.0; + nv = (epix ? epix <= svmax : svix < svmax) ? + SvNVx(svargs[epix ? epix-1 : svix++]) : 0.0; need = 0; if (c != 'e' && c != 'E') { @@ -6611,8 +6649,8 @@ Perl_sv_vcatpvfn(pTHX_ SV *sv, const char *pat, STRLEN patlen, va_list *args, SV #endif } } - else if (svix < svmax) - sv_setuv_mg(svargs[svix++], (UV)i); + else if (epix ? epix <= svmax : svix < svmax) + sv_setuv_mg(svargs[epix ? epix-1 : svix++], (UV)i); continue; /* not "break" */ /* UNKNOWN */ diff --git a/t/comp/redef.t b/t/comp/redef.t index 07e978bb86..328b44d3c8 100755 --- a/t/comp/redef.t +++ b/t/comp/redef.t @@ -11,7 +11,7 @@ sub ok ($$) { print $_[1] ? "ok " : "not ok ", $_[0], "\n"; } -print "1..18\n"; +print "1..20\n"; my $NEWPROTO = 'Prototype mismatch:'; @@ -72,9 +72,15 @@ sub sub9 ($) { 2 } ok 16, $warn =~ s/$NEWPROTO sub main::sub9 \(\$\Q@) vs ($)\E[^\n]+\n//s; ok 17, $warn =~ s/Subroutine sub9 redefined[^\n]+\n//s; -ok 18, $_ eq ''; +BEGIN { + local $^W = 0; + eval qq(sub sub10 () {1} sub sub10 {1}); +} -# If we got any errors that we were not expecting, then print them -print $_ if length $_; +ok 18, $warn =~ s/$NEWPROTO \Qsub main::sub10 () vs none\E[^\n]+\n//s; +ok 19, $warn =~ s/Constant subroutine sub10 redefined[^\n]+\n//s; +ok 20, $warn eq ''; +# If we got any errors that we were not expecting, then print them +print $warn if length $warn; diff --git a/t/io/open.t b/t/io/open.t index 01902812e2..0e2d57cd75 100755 --- a/t/io/open.t +++ b/t/io/open.t @@ -9,6 +9,7 @@ BEGIN { $| = 1; use warnings; $Is_VMS = $^O eq 'VMS'; +$Is_Dos = $^O eq 'dos'; print "1..66\n"; @@ -268,13 +269,21 @@ ok; { local *F; for (1..2) { + if ($Is_Dos) { open(F, "echo \\#foo|") or print "not "; + } else { + open(F, "echo #foo|") or print "not "; + } print <F>; close F; } ok; for (1..2) { + if ($Is_Dos) { open(F, "-|", "echo \\#foo") or print "not "; + } else { + open(F, "-|", "echo #foo") or print "not "; + } print <F>; close F; } @@ -10,7 +10,7 @@ use warnings; use strict; use Config; -print "1..13\n"; +print "1..15\n"; my $test = 1; @@ -53,6 +53,20 @@ print "not " if $deparse->coderef2text(sub{$test = sub : method locked { 1 }}) ok; } +print "not " if (eval "sub ".$deparse->coderef2text(sub () { 42 }))->() != 42; +ok; + +use constant 'c', 'stuff'; +print "not " if (eval "sub ".$deparse->coderef2text(\&c))->() ne 'stuff'; +ok; + +# XXX ToDo - constsub that returns a reference +#use constant cr => ['hello']; +#my $string = "sub " . $deparse->coderef2text(\&cr); +#my $val = (eval $string)->(); +#print "not " if ref($val) ne 'ARRAY' || $val->[0] ne 'hello'; +#ok; + my $a; my $Is_VMS = $^O eq 'VMS'; $a = `$^X "-I../lib" "-MO=Deparse" -anle 1 2>&1`; @@ -72,13 +86,11 @@ EOF print "# [$a]\n\# vs\n# [$b]\nnot " if $a ne $b; ok; -#6 $a = `$^X "-I../lib" "-MO=Debug" -e 1 2>&1`; print "not " unless $a =~ /\bLISTOP\b.*\bOP\b.*\bCOP\b.*\bOP\b/s; ok; -#7 $a = `$^X "-I../lib" "-MO=Terse" -e 1 2>&1`; print "not " unless $a =~ /\bLISTOP\b.*leave.*\bOP\b.*enter.*\bCOP\b.*nextstate.*\bOP\b.*null/s; diff --git a/t/lib/st-lock.t b/t/lib/st-lock.t index 28fe66490e..c29d0b7cbc 100644 --- a/t/lib/st-lock.t +++ b/t/lib/st-lock.t @@ -1,10 +1,16 @@ #!./perl -# $Id: lock.t,v 1.0.1.1 2000/09/28 21:44:06 ram Exp $ +# $Id: lock.t,v 1.0.1.3 2000/10/26 17:11:27 ram Exp ram $ # # @COPYRIGHT@ # # $Log: lock.t,v $ +# Revision 1.0.1.3 2000/10/26 17:11:27 ram +# patch5: just check $^O, there's no need for the whole Config +# +# Revision 1.0.1.2 2000/10/23 18:03:07 ram +# patch4: protected calls to flock() for dos platform +# # Revision 1.0.1.1 2000/09/28 21:44:06 ram # patch2: created. # @@ -23,6 +29,10 @@ sub BEGIN { print "1..0 # Skip: no flock or flock emulation on this platform\n"; exit 0; } + if ($^O eq 'dos') { + print "1..0 # Skip: fcntl/flock emulation broken on this platform\n"; + exit 0; + } require 'lib/st-dump.pl'; } diff --git a/t/lib/syslog.t b/t/lib/syslog.t index 7ad4204ee0..d73e973b39 100755 --- a/t/lib/syslog.t +++ b/t/lib/syslog.t @@ -15,9 +15,19 @@ use Sys::Syslog qw(:DEFAULT setlogsock); print "1..6\n"; if (Sys::Syslog::_PATH_LOG()) { - print defined(eval { setlogsock('unix') }) ? "ok 1\n" : "not ok 1\n"; - print defined(eval { openlog('perl', 'ndelay', 'local0') }) ? "ok 2\n" : "not ok 2\n"; - print defined(eval { syslog('info', 'test') }) ? "ok 3\n" : "not ok 3\n"; + if (-e Sys::Syslog::_PATH_LOG()) { + print defined(eval { setlogsock('unix') }) ? "ok 1\n" : "not ok 1\n"; + print defined(eval { openlog('perl', 'ndelay', 'local0') }) ? "ok 2\n" : "not ok 2\n"; + print defined(eval { syslog('info', 'test') }) ? "ok 3\n" : "not ok 3\n"; + } + else { + for (1..3) { + print + "ok $_ # skipping, file ", + Sys::Syslog::_PATH_LOG(), + " does not exist\n"; + } + } } else { for (1..3) { print "ok $_ # skipping, _PATH_LOG unavailable\n" } diff --git a/t/lib/thr5005.t b/t/lib/thr5005.t index 680e1af3e7..bc6aed7182 100755 --- a/t/lib/thr5005.t +++ b/t/lib/thr5005.t @@ -13,7 +13,7 @@ BEGIN { $ENV{PERL_DESTRUCT_LEVEL} = 0 unless $ENV{PERL_DESTRUCT_LEVEL} > 3; } $| = 1; -print "1..22\n"; +print "1..74\n"; use Thread 'yield'; print "ok 1\n"; @@ -129,3 +129,79 @@ $thr1->join; $thr2->join; $thr3->join; print "ok 22\n"; + +{ + my $THRf_STATE_MASK = 7; + my $THRf_R_JOINABLE = 0; + my $THRf_R_JOINED = 1; + my $THRf_R_DETACHED = 2; + my $THRf_ZOMBIE = 3; + my $THRf_DEAD = 4; + my $THRf_DID_DIE = 8; + sub _test { + my($test, $t, $state, $die) = @_; + my $flags = $t->flags; + if (($flags & $THRf_STATE_MASK) == $state + && !($flags & $THRf_DID_DIE) == !$die) { + print "ok $test\n"; + } else { + print <<BAD; +not ok $test\t# got flags $flags not @{[ $state + ($die ? $THRf_DID_DIE : 0) ]} +BAD + } + } + + my @t; + push @t, ( + Thread->new(sub { sleep 4; die "thread die\n" }), + Thread->new(sub { die "thread die\n" }), + Thread->new(sub { sleep 4; 1 }), + Thread->new(sub { 1 }), + ) for 1, 2; + $_->detach for @t[grep $_ & 4, 0..$#t]; + + sleep 1; + my $test = 23; + for (0..7) { + my $t = $t[$_]; + my $flags = ($_ & 1) + ? ($_ & 4) ? $THRf_DEAD : $THRf_ZOMBIE + : ($_ & 4) ? $THRf_R_DETACHED : $THRf_R_JOINABLE; + _test($test++, $t, $flags, (($_ & 3) != 1) ? 0 : $THRf_DID_DIE); + printf "%sok %s\n", !$t->done == !($_ & 1) ? "" : "not ", $test++; + } +# $test = 39; + for (grep $_ & 1, 0..$#t) { + next if $_ & 4; # can't join detached threads + $t[$_]->eval; + my $die = ($_ & 2) ? "" : "thread die\n"; + printf "%sok %s\n", $@ eq $die ? "" : "not ", $test++; + } +# $test = 41; + for (0..7) { + my $t = $t[$_]; + my $flags = ($_ & 1) + ? ($_ & 4) ? $THRf_DEAD : $THRf_DEAD + : ($_ & 4) ? $THRf_R_DETACHED : $THRf_R_JOINABLE; + _test($test++, $t, $flags, (($_ & 3) != 1) ? 0 : $THRf_DID_DIE); + printf "%sok %s\n", !$t->done == !($_ & 1) ? "" : "not ", $test++; + } +# $test = 57; + for (grep !($_ & 1), 0..$#t) { + next if $_ & 4; # can't join detached threads + $t[$_]->eval; + my $die = ($_ & 2) ? "" : "thread die\n"; + printf "%sok %s\n", $@ eq $die ? "" : "not ", $test++; + } + sleep 1; # make sure even the detached threads are done sleeping +# $test = 59; + for (0..7) { + my $t = $t[$_]; + my $flags = ($_ & 1) + ? ($_ & 4) ? $THRf_DEAD : $THRf_DEAD + : ($_ & 4) ? $THRf_DEAD : $THRf_DEAD; + _test($test++, $t, $flags, ($_ & 2) ? 0 : $THRf_DID_DIE); + printf "%sok %s\n", $t->done ? "" : "not ", $test++; + } +# $test = 75; +} diff --git a/t/lib/tie-splice.t b/t/lib/tie-splice.t new file mode 100644 index 0000000000..d7ea6cc1dc --- /dev/null +++ b/t/lib/tie-splice.t @@ -0,0 +1,17 @@ +#!./perl + +BEGIN { + chdir 't' if -d 't'; + @INC = '.'; + push @INC, '../lib'; +} + +# bug id 20001020.002 +# -dlc 20001021 + +use Tie::Array; +tie @a,Tie::StdArray; +undef *Tie::StdArray::SPLICE; +require "op/splice.t" + +# Pre-fix, this failed tests 6-9 diff --git a/t/op/assignwarn.t b/t/op/assignwarn.t index 2d05b82289..aff433c464 100755 --- a/t/op/assignwarn.t +++ b/t/op/assignwarn.t @@ -21,7 +21,7 @@ sub ok { print $_[1] ? "ok " : "not ok ", $_[0], "\n"; } sub uninitialized { $warn =~ s/Use of uninitialized value[^\n]+\n//s; } -print "1..23\n"; +print "1..32\n"; { my $x; $x ++; ok 1, ! uninitialized; } { my $x; $x --; ok 2, ! uninitialized; } @@ -55,7 +55,19 @@ print "1..23\n"; { my $x; $x |= "x"; ok 21, ! uninitialized; } { my $x; $x ^= "x"; ok 22, ! uninitialized; } -ok 23, $warn eq ''; +{ use integer; my $x; $x += 1; ok 23, ! uninitialized; } +{ use integer; my $x; $x -= 1; ok 24, ! uninitialized; } + +{ use integer; my $x; $x *= 1; ok 25, uninitialized; } +{ use integer; my $x; $x /= 1; ok 26, uninitialized; } +{ use integer; my $x; $x %= 1; ok 27, uninitialized; } + +{ use integer; my $x; $x ++; ok 28, ! uninitialized; } +{ use integer; my $x; $x --; ok 29, ! uninitialized; } +{ use integer; my $x; ++ $x; ok 30, ! uninitialized; } +{ use integer; my $x; -- $x; ok 31, ! uninitialized; } + +ok 32, $warn eq ''; # If we got any errors that we were not expecting, then print them print map "#$_\n", split /\n/, $warn if length $warn; diff --git a/t/op/pat.t b/t/op/pat.t index f0090865a1..f0cb7dc14d 100755 --- a/t/op/pat.t +++ b/t/op/pat.t @@ -4,7 +4,7 @@ # the format supported by op/regexp.t. If you want to add a test # that does fit that format, add it to op/re_tests, not here. -print "1..223\n"; +print "1..224\n"; BEGIN { chdir 't' if -d 't'; @@ -1084,3 +1084,7 @@ print "not " unless "@space2" eq "spc tab"; print "ok $test\n"; $test++; +# bugid 20001021.005 - this caused a SEGV +print "not " unless undef =~ /^([^\/]*)(.*)$/; +print "ok $test\n"; +$test++; diff --git a/t/op/sprintf.t b/t/op/sprintf.t index 2f6cd276ad..97b66a57cb 100755 --- a/t/op/sprintf.t +++ b/t/op/sprintf.t @@ -308,3 +308,16 @@ __END__ >%0*x< >[-10, ,2**32-1]< >ffffffff < >%y< >''< >%y INVALID< >%z< >''< >%z INVALID< +>%2$d %1$d< >[12, 34]< >34 12< +>%*2$d< >[12, 3]< > 12< +>%2$d %d< >[12, 34]< >34 12< +>%2$d %d %d< >[12, 34]< >34 12 34< +>%3$d %d %d< >[12, 34, 56]< >56 12 34< +>%2$*3$d %d< >[12, 34, 3]< > 34 12< +>%*3$2$d %d< >[12, 34, 3]< > 34 12< +>%2$d< >12< >0< +>%0$d< >12< >%0$d INVALID< +>%1$$d< >12< >%1$$d INVALID< +>%1$1$d< >12< >%1$1$d INVALID< +>%*2$*2$d< >[12, 3]< >%*2$*2$d INVALID< +>%*2*2$d< >[12, 3]< >%*2*2$d INVALID< diff --git a/t/op/tie.t b/t/op/tie.t index afcc4a1635..4413ed2100 100755 --- a/t/op/tie.t +++ b/t/op/tie.t @@ -162,19 +162,28 @@ $C = $B = tied %H ; untie %H; EXPECT ######## - -# verify no leak when underlying object is selfsame tied variable -my ($a, $b); +# Forbidden aggregate self-ties +my ($a, $b) = (0, 0); sub Self::TIEHASH { bless $_[1], $_[0] } -sub Self::DESTROY { $b = $_[0] + 0; } +sub Self::DESTROY { $b = $_[0] + 1; } +{ + my %c = 42; + tie %c, 'Self', \%c; +} +EXPECT +Self-ties of arrays and hashes are not supported +######## +# Allowed scalar self-ties +my ($a, $b) = (0, 0); +sub Self::TIESCALAR { bless $_[1], $_[0] } +sub Self::DESTROY { $b = $_[0] + 1; } { - my %b5; - $a = \%b5 + 0; - tie %b5, 'Self', \%b5; + my $c = 42; + $a = $c + 0; + tie $c, 'Self', \$c; } -die unless $a == $b; +die unless $a == 0 && $b == 43; EXPECT -Self-ties are not supported ######## # Interaction of tie and vec diff --git a/t/op/write.t b/t/op/write.t index 5b01eb78b7..fc155a88c7 100755 --- a/t/op/write.t +++ b/t/op/write.t @@ -1,6 +1,6 @@ #!./perl -print "1..9\n"; +print "1..11\n"; my $CAT = ($^O eq 'MSWin32') ? 'type' : 'cat'; @@ -43,7 +43,7 @@ of huma... now is the time for all good men to come to\n"; if (`$CAT Op_write.tmp` eq $right) - { print "ok 1\n"; unlink 'Op_write.tmp'; } + { print "ok 1\n"; 1 while unlink 'Op_write.tmp'; } else { print "not ok 1\n"; } @@ -85,7 +85,7 @@ necessary now is the time for all good men to come to\n"; if (`$CAT Op_write.tmp` eq $right) - { print "ok 2\n"; unlink 'Op_write.tmp'; } + { print "ok 2\n"; 1 while unlink 'Op_write.tmp'; } else { print "not ok 2\n"; } @@ -129,7 +129,7 @@ necessary now is the time for all good men to come to\n"; if (`$CAT Op_write.tmp` eq $right) - { print "ok 3\n"; unlink 'Op_write.tmp'; } + { print "ok 3\n"; 1 while unlink 'Op_write.tmp'; } else { print "not ok 3\n"; } @@ -184,7 +184,7 @@ $right = "fit\n"; if (`$CAT Op_write.tmp` eq $right) - { print "ok 6\n"; unlink 'Op_write.tmp'; } + { print "ok 6\n"; 1 while unlink 'Op_write.tmp'; } else { print "not ok 6\n"; } @@ -213,8 +213,53 @@ write (OUT4); close OUT4; if (`$CAT Op_write.tmp` eq "1\n") { print "ok 9\n"; - unlink "Op_write.tmp"; + 1 while unlink "Op_write.tmp"; } else { print "not ok 9\n"; } + +eval <<'EOFORMAT'; +format OUT10 = +@####.## @0###.## +$test1, $test1 +. +EOFORMAT + +open(OUT10, '>Op_write.tmp') || die "Can't create Op_write.tmp"; + +$test1 = 12.95; +write(OUT10); +close OUT10; + +$right = " 12.95 00012.95\n"; +if (`$CAT Op_write.tmp` eq $right) + { print "ok 10\n"; 1 while unlink 'Op_write.tmp'; } +else + { print "not ok 10\n"; } + +eval <<'EOFORMAT'; +format OUT11 = +@0###.## +$test1 +@ 0# +$test1 +@0 # +$test1 +. +EOFORMAT + +open(OUT11, '>Op_write.tmp') || die "Can't create Op_write.tmp"; + +$test1 = 12.95; +write(OUT11); +close OUT11; + +$right = +"00012.95 +1 0# +10 #\n"; +if (`$CAT Op_write.tmp` eq $right) + { print "ok 11\n"; 1 while unlink 'Op_write.tmp'; } +else + { print "not ok 11\n"; } diff --git a/t/pragma/sub_lval.t b/t/pragma/sub_lval.t index 3ab8766892..660e72d646 100755 --- a/t/pragma/sub_lval.t +++ b/t/pragma/sub_lval.t @@ -334,8 +334,8 @@ print "# '$_'.\nnot " unless /Can\'t return a temporary from lvalue subroutine/; print "ok 38\n"; -sub xxx () { 'xxx' } # Not lvalue -sub lv1tmpr : lvalue { xxx } # is it a TEMP? +sub yyy () { 'yyy' } # Const, not lvalue +sub lv1tmpr : lvalue { yyy } # is it read-only? $_ = undef; eval <<'EOE' or $_ = $@; diff --git a/t/pragma/utf8.t b/t/pragma/utf8.t index 75f607dcde..768da05846 100755 --- a/t/pragma/utf8.t +++ b/t/pragma/utf8.t @@ -10,7 +10,7 @@ BEGIN { } } -print "1..101\n"; +print "1..181\n"; my $test = 1; @@ -543,4 +543,186 @@ sub nok_bytes { print "ok $test\n"; $test++; + + *pi = \undef; + # This bug existed earlier than the $2 bug, but is fixed with the same + # patch. Without the fix this will also croak: + # Modification of a read-only value attempted at ... + "$pi\x{1234}"; + + print "ok $test\n"; + $test++; + + # For symmetry with the above. + "\x{1234}$pi"; + + print "ok $test\n"; + $test++; } + +# This table is based on Markus Kuhn's UTF-8 Decode Stress Tester, +# http://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-test.txt, +# version dated 2000-09-02. + +my @MK = split(/\n/, <<__EOMK__); +1 Correct UTF-8 +1.1.1 y "κόσμε" - 11 ce:ba:e1:bd:b9:cf:83:ce:bc:ce:b5 5 +2 Boundary conditions +2.1 First possible sequence of certain length +2.1.1 y " +2.1.2 y "€" 80 2 c2:80 1 +2.1.3 y "à €" 800 3 e0:a0:80 1 +2.1.4 y "ð€€" 10000 4 f0:90:80:80 1 +2.1.5 y "øˆ€€€" 200000 5 f8:88:80:80:80 1 +2.1.6 y "ü„€€€€" 4000000 6 fc:84:80:80:80:80 1 +2.2 Last possible sequence of certain length +2.2.1 y "" 7f 1 7f 1 +2.2.2 y "ß¿" 7ff 2 df:bf 1 +# The ffff is illegal unless UTF8_ALLOW_FFFF +2.2.3 n "ï¿¿" ffff 3 ef:bf:bf 1 +2.2.4 y "÷¿¿¿" 1fffff 4 f7:bf:bf:bf 1 +2.2.5 y "û¿¿¿¿" 3ffffff 5 fb:bf:bf:bf:bf 1 +2.2.6 y "ý¿¿¿¿¿" 7fffffff 6 fd:bf:bf:bf:bf:bf 1 +2.3 Other boundary conditions +2.3.1 y "퟿" d7ff 3 ed:9f:bf 1 +2.3.2 y "" e000 3 ee:80:80 1 +2.3.3 y "�" fffd 3 ef:bf:bd 1 +2.3.4 y "ô¿¿" 10ffff 4 f4:8f:bf:bf 1 +2.3.5 y "ô€€" 110000 4 f4:90:80:80 1 +3 Malformed sequences +3.1 Unexpected continuation bytes +3.1.1 n "€" - 1 80 +3.1.2 n "¿" - 1 bf +3.1.3 n "€¿" - 2 80:bf +3.1.4 n "€¿€" - 3 80:bf:80 +3.1.5 n "€¿€¿" - 4 80:bf:80:bf +3.1.6 n "€¿€¿€" - 5 80:bf:80:bf:80 +3.1.7 n "€¿€¿€¿" - 6 80:bf:80:bf:80:bf +3.1.8 n "€¿€¿€¿€" - 7 80:bf:80:bf:80:bf:80 +3.1.9 n "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿" - 64 80:81:82:83:84:85:86:87:88:89:8a:8b:8c:8d:8e:8f:90:91:92:93:94:95:96:97:98:99:9a:9b:9c:9d:9e:9f:a0:a1:a2:a3:a4:a5:a6:a7:a8:a9:aa:ab:ac:ad:ae:af:b0:b1:b2:b3:b4:b5:b6:b7:b8:b9:ba:bb:bc:bd:be:bf +3.2 Lonely start characters +3.2.1 n "À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß " - 64 c0:20:c1:20:c2:20:c3:20:c4:20:c5:20:c6:20:c7:20:c8:20:c9:20:ca:20:cb:20:cc:20:cd:20:ce:20:cf:20:d0:20:d1:20:d2:20:d3:20:d4:20:d5:20:d6:20:d7:20:d8:20:d9:20:da:20:db:20:dc:20:dd:20:de:20:df:20 +3.2.2 n "à á â ã ä å æ ç è é ê ë ì í î ï " - 32 e0:20:e1:20:e2:20:e3:20:e4:20:e5:20:e6:20:e7:20:e8:20:e9:20:ea:20:eb:20:ec:20:ed:20:ee:20:ef:20 +3.2.3 n "ð ñ ò ó ô õ ö ÷ " - 16 f0:20:f1:20:f2:20:f3:20:f4:20:f5:20:f6:20:f7:20 +3.2.4 n "ø ù ú û " - 8 f8:20:f9:20:fa:20:fb:20 +3.2.5 n "ü ý " - 4 fc:20:fd:20 +3.3 Sequences with last continuation byte missing +3.3.1 n "À" - 1 c0 +3.3.2 n "à€" - 2 e0:80 +3.3.3 n "ð€€" - 3 f0:80:80 +3.3.4 n "ø€€€" - 4 f8:80:80:80 +3.3.5 n "ü€€€€" - 5 fc:80:80:80:80 +3.3.6 n "ß" - 1 df +3.3.7 n "ï¿" - 2 ef:bf +3.3.8 n "÷¿¿" - 3 f7:bf:bf +3.3.9 n "û¿¿¿" - 4 fb:bf:bf:bf +3.3.10 n "ý¿¿¿¿" - 5 fd:bf:bf:bf:bf +3.4 Concatenation of incomplete sequences +3.4.1 n "Àà€ð€€ø€€€ü€€€€ßï¿÷¿¿û¿¿¿ý¿¿¿¿" - 30 c0:e0:80:f0:80:80:f8:80:80:80:fc:80:80:80:80:df:ef:bf:f7:bf:bf:fb:bf:bf:bf:fd:bf:bf:bf:bf +3.5 Impossible bytes +3.5.1 n "þ" - 1 fe +3.5.2 n "ÿ" - 1 ff +3.5.3 n "þþÿÿ" - 4 fe:fe:ff:ff +4 Overlong sequences +4.1 Examples of an overlong ASCII character +4.1.1 n "À¯" - 2 c0:af +4.1.2 n "à€¯" - 3 e0:80:af +4.1.3 n "ð€€¯" - 4 f0:80:80:af +4.1.4 n "ø€€€¯" - 5 f8:80:80:80:af +4.1.5 n "ü€€€€¯" - 6 fc:80:80:80:80:af +4.2 Maximum overlong sequences +4.2.1 n "Á¿" - 2 c1:bf +4.2.2 n "àŸ¿" - 3 e0:9f:bf +4.2.3 n "ð¿¿" - 4 f0:8f:bf:bf +4.2.4 n "ø‡¿¿¿" - 5 f8:87:bf:bf:bf +4.2.5 n "üƒ¿¿¿¿" - 6 fc:83:bf:bf:bf:bf +4.3 Overlong representation of the NUL character +4.3.1 n "À€" - 2 c0:80 +4.3.2 n "à€€" - 3 e0:80:80 +4.3.3 n "ð€€€" - 4 f0:80:80:80 +4.3.4 n "ø€€€€" - 5 f8:80:80:80:80 +4.3.5 n "ü€€€€€" - 6 fc:80:80:80:80:80 +5 Illegal code positions +5.1 Single UTF-16 surrogates +5.1.1 n "í €" - 3 ed:a0:80 +5.1.2 n "í¿" - 3 ed:ad:bf +5.1.3 n "í®€" - 3 ed:ae:80 +5.1.4 n "í¯¿" - 3 ed:af:bf +5.1.5 n "í°€" - 3 ed:b0:80 +5.1.6 n "í¾€" - 3 ed:be:80 +5.1.7 n "í¿¿" - 3 ed:bf:bf +5.2 Paired UTF-16 surrogates +5.2.1 n "í €í°€" - 6 ed:a0:80:ed:b0:80 +5.2.2 n "í €í¿¿" - 6 ed:a0:80:ed:bf:bf +5.2.3 n "í¿í°€" - 6 ed:ad:bf:ed:b0:80 +5.2.4 n "í¿í¿¿" - 6 ed:ad:bf:ed:bf:bf +5.2.5 n "󰀀" - 6 ed:ae:80:ed:b0:80 +5.2.6 n "󰏿" - 6 ed:ae:80:ed:bf:bf +5.2.7 n "􏰀" - 6 ed:af:bf:ed:b0:80 +5.2.8 n "􏿿" - 6 ed:af:bf:ed:bf:bf +5.3 Other illegal code positions +5.3.1 n "￾" - 3 ef:bf:be +# The ffff is illegal unless UTF8_ALLOW_FFFF +5.3.2 n "ï¿¿" - 3 ef:bf:bf +__EOMK__ + +# 104..181 +{ + my $WARN; + my $id; + + local $SIG{__WARN__} = + sub { + # print "# $id: @_"; + $WARN++; + }; + + sub moan { + print "$id: @_"; + } + + sub test_unpack_U { + $WARN = 0; + unpack('U*', $_[0]); + } + + for (@MK) { + if (/^(?:\d+(?:\.\d+)?)\s/ || /^#/) { + # print "# $_\n"; + } elsif (/^(\d+\.\d+\.\d+[bu]?)\s+([yn])\s+"(.+)"\s+([0-9a-f]{1,8}|-)\s+(\d+)\s+([0-9a-f]{2}(?::[0-9a-f]{2})*)(?:\s+(\d+))?$/) { + $id = $1; + my ($okay, $bytes, $Unicode, $byteslen, $hex, $charslen) = + ($2, $3, $4, $5, $6, $7); + my @hex = split(/:/, $hex); + unless (@hex == $byteslen) { + my $nhex = @hex; + moan "amount of hex ($nhex) not equal to byteslen ($byteslen)\n"; + } + { + use bytes; + my $bytesbyteslen = length($bytes); + unless ($bytesbyteslen == $byteslen) { + moan "bytes length() ($bytesbyteslen) not equal to $byteslen\n"; + } + } + if ($okay eq 'y') { + test_unpack_U($bytes); + unless ($WARN == 0) { + moan "unpack('U*') false negative\n"; + print "not "; + } + } elsif ($okay eq 'n') { + test_unpack_U($bytes); + unless ($WARN) { + moan "unpack('U*') false positive\n"; + print "not "; + } + } + print "ok $test\n"; + $test++; + } else { + moan "unknown format\n"; + } + } +} + diff --git a/t/pragma/warn/utf8 b/t/pragma/warn/utf8 index 6a2fe5446c..012c65529e 100644 --- a/t/pragma/warn/utf8 +++ b/t/pragma/warn/utf8 @@ -24,6 +24,6 @@ my $a = "snøstorm" ; my $a = "snøstorm"; } EXPECT -Malformed UTF-8 character at - line 3. -Malformed UTF-8 character at - line 8. +Malformed UTF-8 character (unexpected non-continuation byte 0x73 after byte 0xf8) at - line 3. +Malformed UTF-8 character (unexpected non-continuation byte 0x73 after byte 0xf8) at - line 8. ######## @@ -236,5 +236,5 @@ PERLVAR(i, struct thread_intern) #endif PERLVAR(trailing_nul, char) /* For the sake of thrsv and oursv */ - +PERLVAR(thr_done, bool) /* True when the thread has finished */ #endif /* USE_THREADS */ @@ -80,9 +80,9 @@ static I32 utf16rev_textfilter(pTHXo_ int idx, SV *sv, int maxlen); #endif #ifdef USE_PURE_BISON -#ifndef YYMAXLEVEL -#define YYMAXLEVEL 100 -#endif +# ifndef YYMAXLEVEL +# define YYMAXLEVEL 100 +# endif YYSTYPE* yylval_pointer[YYMAXLEVEL]; int* yychar_pointer[YYMAXLEVEL]; int yyactlevel = 0; @@ -92,7 +92,7 @@ int yyactlevel = 0; # define yychar (*yychar_pointer[yyactlevel]) # define PERL_YYLEX_PARAM yylval_pointer[yyactlevel],yychar_pointer[yyactlevel] # undef yylex -# define yylex() Perl_yylex(aTHX_ yylval_pointer[yyactlevel],yychar_pointer[yyactlevel]) +# define yylex() Perl_yylex_r(aTHX_ yylval_pointer[yyactlevel],yychar_pointer[yyactlevel]) #endif #include "keywords.h" @@ -813,10 +813,10 @@ Perl_str_to_version(pTHX_ SV *sv) bool utf = SvUTF8(sv) ? TRUE : FALSE; char *end = start + len; while (start < end) { - I32 skip; + STRLEN skip; UV n; if (utf) - n = utf8_to_uv_chk((U8*)start, &skip, 0); + n = utf8_to_uv((U8*)start, len, &skip, 0); else { n = *(U8*)start; skip = 1; @@ -1188,7 +1188,6 @@ S_scan_const(pTHX_ char *start) bool dorange = FALSE; /* are we in a translit range? */ bool didrange = FALSE; /* did we just finish a range? */ bool has_utf = FALSE; /* embedded \x{} */ - I32 len; /* ? */ UV uv; I32 utf = (PL_lex_inwhat == OP_TRANS && PL_sublex_info.sub_op) @@ -1329,20 +1328,23 @@ S_scan_const(pTHX_ char *start) /* (now in tr/// code again) */ if (*s & 0x80 && thisutf) { - (void)utf8_to_uv_chk((U8*)s, &len, 0); - if (len == 1) { - /* illegal UTF8, make it valid */ - char *old_pvx = SvPVX(sv); - /* need space for one extra char (NOTE: SvCUR() not set here) */ - d = SvGROW(sv, SvLEN(sv) + 1) + (d - old_pvx); - d = (char*)uv_to_utf8((U8*)d, (U8)*s++); - } - else { - while (len--) - *d++ = *s++; - } - has_utf = TRUE; - continue; + STRLEN len; + UV uv; + + uv = utf8_to_uv((U8*)s, send - s, &len, UTF8_CHECK_ONLY); + if (len == 1) { + /* Illegal UTF8 (a high-bit byte), make it valid. */ + char *old_pvx = SvPVX(sv); + /* need space for one extra char (NOTE: SvCUR() not set here) */ + d = SvGROW(sv, SvLEN(sv) + 1) + (d - old_pvx); + d = (char*)uv_to_utf8((U8*)d, (U8)*s++); + } + else { + while (len--) + *d++ = *s++; + } + has_utf = TRUE; + continue; } /* backslashes */ @@ -1398,9 +1400,11 @@ S_scan_const(pTHX_ char *start) /* \132 indicates an octal constant */ case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': - len = 0; /* disallow underscores */ - uv = (UV)scan_oct(s, 3, &len); - s += len; + { + STRLEN len = 0; /* disallow underscores */ + uv = (UV)scan_oct(s, 3, &len); + s += len; + } goto NUM_ESCAPE_INSERT; /* \x24 indicates a hex constant */ @@ -1412,14 +1416,18 @@ S_scan_const(pTHX_ char *start) yyerror("Missing right brace on \\x{}"); e = s; } - len = 1; /* allow underscores */ - uv = (UV)scan_hex(s + 1, e - s - 1, &len); - s = e + 1; + { + STRLEN len = 1; /* allow underscores */ + uv = (UV)scan_hex(s + 1, e - s - 1, &len); + } + s = e + 1; } else { - len = 0; /* disallow underscores */ - uv = (UV)scan_hex(s, 2, &len); - s += len; + { + STRLEN len = 0; /* disallow underscores */ + uv = (UV)scan_hex(s, 2, &len); + s += len; + } } NUM_ESCAPE_INSERT: @@ -1528,8 +1536,10 @@ S_scan_const(pTHX_ char *start) *d = toCTRL(*d); d++; #else - len = *s++; - *d++ = toCTRL(len); + { + U8 c = *s++; + *d++ = toCTRL(c); + } #endif continue; @@ -2061,38 +2071,40 @@ S_find_in_my_stash(pTHX_ char *pkgname, I32 len) if we already built the token before, use it. */ +#ifdef USE_PURE_BISON #ifdef __SC__ -#pragma segment Perl_yylex +#pragma segment Perl_yylex_r #endif int -#ifdef USE_PURE_BISON -Perl_yylex(pTHX_ YYSTYPE *lvalp, int *lcharp) -#else -Perl_yylex(pTHX) -#endif +Perl_yylex_r(pTHX_ YYSTYPE *lvalp, int *lcharp) { dTHR; int r; -#ifdef USE_PURE_BISON yylval_pointer[yyactlevel] = lvalp; yychar_pointer[yyactlevel] = lcharp; yyactlevel++; if (yyactlevel >= YYMAXLEVEL) Perl_croak(aTHX_ "panic: YYMAXLEVEL"); -#endif - r = S_syylex(aTHX); + r = Perl_yylex(aTHX); -#ifdef USE_PURE_BISON yyactlevel--; -#endif return r; } +#endif -STATIC int -S_syylex(pTHX) /* need to be separate from yylex for reentrancy */ +#ifdef __SC__ +#pragma segment Perl_yylex +#endif + +int +#ifdef USE_PURE_BISON +Perl_yylex(pTHX_ YYSTYPE *lvalp, int *lcharp) +#else +Perl_yylex(pTHX) +#endif { dTHR; register char *s; @@ -2024,12 +2024,23 @@ * This symbol is defined if the FILE_cnt macro can be used as an * lvalue. */ +/* STDIO_PTR_LVAL_SETS_CNT: + * This symbol is defined if using the FILE_ptr macro as an lvalue + * to increase the pointer by n has the side effect of decreasing the + * value of File_cnt(fp) by n. + */ +/* STDIO_PTR_LVAL_NOCHANGE_CNT: + * This symbol is defined if using the FILE_ptr macro as an lvalue + * to increase the pointer by n leaves File_cnt(fp) unchanged. + */ /*#define USE_STDIO_PTR / **/ #ifdef USE_STDIO_PTR #define FILE_ptr(fp) ((fp)->_IO_read_ptr) -/*#define STDIO_PTR_LVALUE / **/ +# STDIO_PTR_LVALUE /**/ #define FILE_cnt(fp) ((fp)->_IO_read_end - (fp)->_IO_read_ptr) /*#define STDIO_CNT_LVALUE / **/ +/*#define STDIO_PTR_LVAL_SETS_CNT / **/ +/*#define STDIO_PTR_LVAL_NOCHANGE_CNT / **/ #endif /* USE_STDIO_BASE: diff --git a/uconfig.sh b/uconfig.sh index faf618a955..eb8e052437 100755 --- a/uconfig.sh +++ b/uconfig.sh @@ -254,7 +254,8 @@ d_statfs_f_flags='undef' d_statfs_s='undef' d_statvfs='undef' d_stdio_cnt_lval='undef' -d_stdio_ptr_lval='undef' +d_stdio_ptr_lval_sets_cnt='undef' +d_stdio_ptr_lval_nochange_cnt='undef' d_stdio_stream_array='undef' d_stdiobase='undef' d_stdstdio='undef' @@ -104,27 +104,41 @@ Perl_uv_to_utf8(pTHX_ U8 *d, UV uv) /* Tests if some arbitrary number of bytes begins in a valid UTF-8 character. * The actual number of bytes in the UTF-8 character will be returned if it * is valid, otherwise 0. */ -int +STRLEN Perl_is_utf8_char(pTHX_ U8 *s) { U8 u = *s; - int slen, len; + STRLEN slen, len; + UV uv, ouv; - if (!(u & 0x80)) + if (u <= 0x7f) return 1; - if (!(u & 0x40)) + if (u >= 0x80 && u <= 0xbf) return 0; len = UTF8SKIP(s); + if (len < 2 || (u >= 0xc0 && u <= 0xfd && s[1] < 0x80)) + return 0; + slen = len - 1; s++; + uv = u; + ouv = uv; while (slen--) { if ((*s & 0xc0) != 0x80) return 0; + uv = (uv << 6) | (*s & 0x3f); + if (uv < ouv) + return 0; + ouv = uv; s++; } + + if (UNISKIP(uv) < len) + return 0; + return len; } @@ -140,109 +154,192 @@ string, false otherwise. bool Perl_is_utf8_string(pTHX_ U8 *s, STRLEN len) { - U8* x=s; - U8* send=s+len; - int c; + U8* x = s; + U8* send = s + len; + STRLEN c; + while (x < send) { c = is_utf8_char(x); + if (!c) + return FALSE; x += c; - if (!c || x > send) - return 0; + if (x > send) + return FALSE; } - return 1; + + return TRUE; } /* -=for apidoc Am|U8* s|utf8_to_uv_chk|I32 *retlen|I32 checking +=for apidoc Am|U8* s|utf8_to_uv|STRLEN curlen|I32 *retlen|U32 flags Returns the character value of the first character in the string C<s> -which is assumed to be in UTF8 encoding; C<retlen> will be set to the -length, in bytes, of that character, and the pointer C<s> will be -advanced to the end of the character. +which is assumed to be in UTF8 encoding and no longer than C<curlen>; +C<retlen> will be set to the length, in bytes, of that character, +and the pointer C<s> will be advanced to the end of the character. If C<s> does not point to a well-formed UTF8 character, the behaviour -is dependent on the value of C<checking>: if this is true, it is -assumed that the caller will raise a warning, and this function will -set C<retlen> to C<-1> and return. If C<checking> is not true, an optional UTF8 -warning is produced. +is dependent on the value of C<flags>: if it contains UTF8_CHECK_ONLY, +it is assumed that the caller will raise a warning, and this function +will set C<retlen> to C<-1> and return. The C<flags> can also contain +various flags to allow deviations from the strict UTF-8 encoding. -=cut -*/ +=cut */ UV -Perl_utf8_to_uv_chk(pTHX_ U8* s, I32* retlen, bool checking) +Perl_utf8_to_uv(pTHX_ U8* s, STRLEN curlen, STRLEN* retlen, U32 flags) { - UV uv = *s; - int len; - if (!(uv & 0x80)) { + dTHR; + UV uv = *s, ouv; + STRLEN len = 1; + bool dowarn = ckWARN_d(WARN_UTF8); + STRLEN expectlen = 0; + + if (uv <= 0x7f) { /* Pure ASCII. */ if (retlen) *retlen = 1; return *s; } - if (!(uv & 0x40)) { - dTHR; - if (checking && retlen) { - *retlen = -1; - return 0; - } - if (ckWARN_d(WARN_UTF8)) - Perl_warner(aTHX_ WARN_UTF8, "Malformed UTF-8 character"); - if (retlen) - *retlen = 1; - return *s; + if ((uv >= 0x80 && uv <= 0xbf) && + !(flags & UTF8_ALLOW_CONTINUATION)) { + if (dowarn) + Perl_warner(aTHX_ WARN_UTF8, + "Malformed UTF-8 character (unexpected continuation byte 0x%02x)", + uv); + goto malformed; } - if (!(uv & 0x20)) { len = 2; uv &= 0x1f; } - else if (!(uv & 0x10)) { len = 3; uv &= 0x0f; } - else if (!(uv & 0x08)) { len = 4; uv &= 0x07; } - else if (!(uv & 0x04)) { len = 5; uv &= 0x03; } - else if (!(uv & 0x02)) { len = 6; uv &= 0x01; } - else if (!(uv & 0x01)) { len = 7; uv = 0; } + if ((uv >= 0xc0 && uv <= 0xfd && curlen >1 && s[1] < 0x80) && + !(flags & UTF8_ALLOW_NON_CONTINUATION)) { + if (dowarn) + Perl_warner(aTHX_ WARN_UTF8, + "Malformed UTF-8 character (unexpected non-continuation byte 0x%02x after byte 0x%02x)", + s[1], uv); + goto malformed; + } + + if ((uv == 0xfe || uv == 0xff) && + !(flags & UTF8_ALLOW_FE_FF)) { + if (dowarn) + Perl_warner(aTHX_ WARN_UTF8, + "Malformed UTF-8 character (byte 0x%02x)", + uv); + goto malformed; + } + + if (!(uv & 0x20)) { len = 2; uv &= 0x1f; } + else if (!(uv & 0x10)) { len = 3; uv &= 0x0f; } + else if (!(uv & 0x08)) { len = 4; uv &= 0x07; } + else if (!(uv & 0x04)) { len = 5; uv &= 0x03; } + else if (!(uv & 0x02)) { len = 6; uv &= 0x01; } + else if (!(uv & 0x01)) { len = 7; uv = 0; } else { len = 13; uv = 0; } /* whoa! */ - + if (retlen) *retlen = len; - --len; + + expectlen = len; + + if ((curlen < expectlen) && + !(flags & UTF8_ALLOW_SHORT)) { + if (dowarn) + Perl_warner(aTHX_ WARN_UTF8, + "Malformed UTF-8 character (%d byte%s, need %d)", + curlen, curlen > 1 ? "s" : "", expectlen); + goto malformed; + } + + len--; s++; + ouv = uv; + while (len--) { if ((*s & 0xc0) != 0x80) { - dTHR; - if (checking && retlen) { - *retlen = -1; - return 0; - } - - if (ckWARN_d(WARN_UTF8)) - Perl_warner(aTHX_ WARN_UTF8, "Malformed UTF-8 character"); - if (retlen) - *retlen -= len + 1; - return 0xfffd; + if (dowarn) + Perl_warner(aTHX_ WARN_UTF8, + "Malformed UTF-8 character (unexpected continuation byte 0x%02x)", + *s); + goto malformed; } else - uv = (uv << 6) | (*s++ & 0x3f); + uv = (uv << 6) | (*s & 0x3f); + if (uv < ouv) { + /* This cannot be allowed. */ + if (dowarn) + Perl_warner(aTHX_ WARN_UTF8, + "Malformed UTF-8 character (overflow at 0x%"UVxf", byte 0x%02x)", + ouv, *s); + goto malformed; + } + s++; + ouv = uv; } + + if ((uv >= 0xd800 && uv <= 0xdfff) && + !(flags & UTF8_ALLOW_SURROGATE)) { + if (dowarn) + Perl_warner(aTHX_ WARN_UTF8, + "Malformed UTF-8 character (UTF-16 surrogate 0x%04"UVxf")", + uv); + goto malformed; + } else if ((uv == 0xfffe) && + !(flags & UTF8_ALLOW_BOM)) { + if (dowarn) + Perl_warner(aTHX_ WARN_UTF8, + "Malformed UTF-8 character (byte order mark 0x%04"UVxf")", + uv); + goto malformed; + } else if ((uv == 0xffff) && + !(flags & UTF8_ALLOW_FFFF)) { + if (dowarn) + Perl_warner(aTHX_ WARN_UTF8, + "Malformed UTF-8 character (character 0x%04"UVxf")", + uv); + goto malformed; + } else if ((expectlen > UNISKIP(uv)) && + !(flags & UTF8_ALLOW_LONG)) { + if (dowarn) + Perl_warner(aTHX_ WARN_UTF8, + "Malformed UTF-8 character (%d byte%s, need %d)", + expectlen, expectlen > 1 ? "s": "", UNISKIP(uv)); + goto malformed; + } + return uv; + +malformed: + + if (flags & UTF8_CHECK_ONLY) { + if (retlen) + *retlen = len; + return 0; + } + + if (retlen) + *retlen = -1; + + return UNICODE_REPLACEMENT_CHARACTER; } /* -=for apidoc Am|U8* s|utf8_to_uv|I32 *retlen +=for apidoc Am|U8* s|utf8_to_uv_simple|STRLEN *retlen Returns the character value of the first character in the string C<s> which is assumed to be in UTF8 encoding; C<retlen> will be set to the length, in bytes, of that character, and the pointer C<s> will be advanced to the end of the character. -If C<s> does not point to a well-formed UTF8 character, an optional UTF8 -warning is produced. +If C<s> does not point to a well-formed UTF8 character, zero is +returned and retlen is set, if possible, to -1. =cut */ UV -Perl_utf8_to_uv(pTHX_ U8* s, I32* retlen) +Perl_utf8_to_uv_simple(pTHX_ U8* s, STRLEN* retlen) { - return Perl_utf8_to_uv_chk(aTHX_ s, retlen, 0); + return Perl_utf8_to_uv(aTHX_ s, (STRLEN)-1, retlen, 0); } /* utf8_distance(a,b) returns the number of UTF8 characters between @@ -302,30 +399,30 @@ Returns zero on failure, setting C<len> to -1. U8 * Perl_utf8_to_bytes(pTHX_ U8* s, STRLEN *len) { - dTHR; U8 *send; U8 *d; - U8 *save; - - send = s + *len; - d = save = s; + U8 *save = s; /* ensure valid UTF8 and chars < 256 before updating string */ - while (s < send) { - U8 c = *s++; + for (send = s + *len; s < send; ) { + U8 c = *s++; + if (c >= 0x80 && - ( (s >= send) || ((*s++ & 0xc0) != 0x80) || ((c & 0xfe) != 0xc2))) { - *len = -1; - return 0; - } + ((s >= send) || + ((*s++ & 0xc0) != 0x80) || ((c & 0xfe) != 0xc2))) { + *len = -1; + return 0; + } } - s = save; + + d = s = save; while (s < send) { - if (*s < 0x80) - *d++ = *s++; + if (*s < 0x80) { + *d++ = *s++; + } else { - I32 ulen; - *d++ = (U8)utf8_to_uv(s, &ulen); + STRLEN ulen; + *d++ = (U8)utf8_to_uv_simple(s, &ulen); s += ulen; } } @@ -853,7 +950,7 @@ Perl_to_utf8_upper(pTHX_ U8 *p) if (!PL_utf8_toupper) PL_utf8_toupper = swash_init("utf8", "ToUpper", &PL_sv_undef, 4, 0); uv = swash_fetch(PL_utf8_toupper, p); - return uv ? uv : utf8_to_uv_chk(p,0,0); + return uv ? uv : utf8_to_uv(p,STRLEN_MAX,0,0); } UV @@ -864,7 +961,7 @@ Perl_to_utf8_title(pTHX_ U8 *p) if (!PL_utf8_totitle) PL_utf8_totitle = swash_init("utf8", "ToTitle", &PL_sv_undef, 4, 0); uv = swash_fetch(PL_utf8_totitle, p); - return uv ? uv : utf8_to_uv_chk(p,0,0); + return uv ? uv : utf8_to_uv(p,STRLEN_MAX,0,0); } UV @@ -875,7 +972,7 @@ Perl_to_utf8_lower(pTHX_ U8 *p) if (!PL_utf8_tolower) PL_utf8_tolower = swash_init("utf8", "ToLower", &PL_sv_undef, 4, 0); uv = swash_fetch(PL_utf8_tolower, p); - return uv ? uv : utf8_to_uv_chk(p,0,0); + return uv ? uv : utf8_to_uv(p,STRLEN_MAX,0,0); } /* a "swash" is a swatch hash */ @@ -965,7 +1062,7 @@ Perl_swash_fetch(pTHX_ SV *sv, U8 *ptr) PUSHMARK(SP); EXTEND(SP,3); PUSHs((SV*)sv); - PUSHs(sv_2mortal(newSViv(utf8_to_uv_chk(ptr, 0, 0) & ~(needents - 1)))); + PUSHs(sv_2mortal(newSViv(utf8_to_uv(ptr, STRLEN_MAX, 0, 0) & ~(needents - 1)))); PUSHs(sv_2mortal(newSViv(needents))); PUTBACK; if (call_method("SWASHGET", G_SCALAR)) @@ -29,14 +29,25 @@ END_EXTERN_C #define UTF8_MAXLEN 13 /* how wide can a single UTF8 encoded character become */ -/*#define IN_UTF8 (PL_curcop->op_private & HINT_UTF8)*/ +/* #define IN_UTF8 (PL_curcop->op_private & HINT_UTF8) */ #define IN_BYTE (PL_curcop->op_private & HINT_BYTE) #define DO_UTF8(sv) (SvUTF8(sv) && !IN_BYTE) +#define UTF8_ALLOW_CONTINUATION 0x0001 +#define UTF8_ALLOW_NON_CONTINUATION 0x0002 +#define UTF8_ALLOW_FE_FF 0x0004 +#define UTF8_ALLOW_SHORT 0x0008 +#define UTF8_ALLOW_SURROGATE 0x0010 +#define UTF8_ALLOW_BOM 0x0020 +#define UTF8_ALLOW_FFFF 0x0040 +#define UTF8_ALLOW_LONG 0x0080 +#define UTF8_ALLOW_ANY 0x00ff +#define UTF8_CHECK_ONLY 0x0100 + #define UTF8SKIP(s) PL_utf8skip[*(U8*)s] #ifdef HAS_QUAD -#define UTF8LEN(uv) ( (uv) < 0x80 ? 1 : \ +#define UNISKIP(uv) ( (uv) < 0x80 ? 1 : \ (uv) < 0x800 ? 2 : \ (uv) < 0x10000 ? 3 : \ (uv) < 0x200000 ? 4 : \ @@ -45,7 +56,7 @@ END_EXTERN_C (uv) < 0x1000000000LL ? 7 : 13 ) #else /* No, I'm not even going to *TRY* putting #ifdef inside a #define */ -#define UTF8LEN(uv) ( (uv) < 0x80 ? 1 : \ +#define UNISKIP(uv) ( (uv) < 0x80 ? 1 : \ (uv) < 0x800 ? 2 : \ (uv) < 0x10000 ? 3 : \ (uv) < 0x200000 ? 4 : \ @@ -53,6 +64,8 @@ END_EXTERN_C (uv) < 0x80000000 ? 6 : 7 ) #endif +#define UNICODE_REPLACEMENT_CHARACTER 0xfffd + /* * Note: we try to be careful never to call the isXXX_utf8() functions * unless we're pretty sure we've seen the beginning of a UTF-8 character @@ -2933,7 +2933,7 @@ Perl_same_dirent(pTHX_ char *a, char *b) #endif /* !HAS_RENAME */ NV -Perl_scan_bin(pTHX_ char *start, I32 len, I32 *retlen) +Perl_scan_bin(pTHX_ char *start, STRLEN len, STRLEN *retlen) { register char *s = start; register NV rnv = 0.0; @@ -3004,7 +3004,7 @@ Perl_scan_bin(pTHX_ char *start, I32 len, I32 *retlen) } NV -Perl_scan_oct(pTHX_ char *start, I32 len, I32 *retlen) +Perl_scan_oct(pTHX_ char *start, STRLEN len, STRLEN *retlen) { register char *s = start; register NV rnv = 0.0; @@ -3074,7 +3074,7 @@ Perl_scan_oct(pTHX_ char *start, I32 len, I32 *retlen) } NV -Perl_scan_hex(pTHX_ char *start, I32 len, I32 *retlen) +Perl_scan_hex(pTHX_ char *start, STRLEN len, STRLEN *retlen) { register char *s = start; register NV rnv = 0.0; @@ -3605,6 +3605,7 @@ Perl_new_struct_thread(pTHX_ struct perl_thread *t) thr->specific = newAV(); thr->errsv = newSVpvn("", 0); thr->flags = THRf_R_JOINABLE; + thr->thr_done = 0; MUTEX_INIT(&thr->mutex); JMPENV_BOOTSTRAP; diff --git a/utils/h2xs.PL b/utils/h2xs.PL index 44b9ac888f..024faa4e64 100644 --- a/utils/h2xs.PL +++ b/utils/h2xs.PL @@ -524,6 +524,8 @@ EOD my @path_h_ini = @path_h; my ($name, %fullpath, %prefix, %seen_define, %prefixless, %const_names); +my $module = $opt_n; + if( @path_h ){ use Config; use File::Spec; @@ -542,6 +544,15 @@ if( @path_h ){ } foreach my $path_h (@path_h) { $name ||= $path_h; + $module ||= do { + $name =~ s/\.h$//; + if ( $name !~ /::/ ) { + $name =~ s#^.*/##; + $name = "\u$name"; + } + $name; + }; + if( $path_h =~ s#::#/#g && $opt_n ){ warn "Nesting of headerfile ignored with -n\n"; } @@ -550,19 +561,36 @@ if( @path_h ){ $path_h =~ s/,.*$// if $opt_x; $fullpath{$path_h} = $fullpath; + # Minor trickery: we can't chdir() before we processed the headers + # (so know the name of the extension), but the header may be in the + # extension directory... + my $tmp_path_h = $path_h; + my $rel_path_h = $path_h; + my @dirs = @paths; if (not -f $path_h) { - my $tmp_path_h = $path_h; + my $found; for my $dir (@paths) { - last if -f ($path_h = File::Spec->catfile($dir, $tmp_path_h)); + $found++, last + if -f ($path_h = File::Spec->catfile($dir, $tmp_path_h)); + } + if ($found) { + $rel_path_h = $path_h; + } else { + (my $epath = $module) =~ s,::,/,g; + $epath = File::Spec->catdir('ext', $epath) if -d 'ext'; + $rel_path_h = File::Spec->catfile($epath, $tmp_path_h); + $path_h = $tmp_path_h; # Used during -x + push @dirs, $epath; } } if (!$opt_c) { - die "Can't find $path_h\n" if ( ! $opt_f && ! -f $path_h ); + die "Can't find $tmp_path_h in @dirs\n" + if ( ! $opt_f && ! -f "$rel_path_h" ); # Scan the header file (we should deal with nested header files) # Record the names of simple #define constants into const_names # Function prototypes are processed below. - open(CH, "<$path_h") || die "Can't open $path_h: $!\n"; + open(CH, "<$rel_path_h") || die "Can't open $rel_path_h: $!\n"; defines: while (<CH>) { if (/^[ \t]*#[ \t]*define\s+([\$\w]+)\b(?!\()\s*(?=[^" \t])(.*)/) { @@ -603,14 +631,6 @@ if( @path_h ){ } -my $module = $opt_n || do { - $name =~ s/\.h$//; - if( $name !~ /::/ ){ - $name =~ s#^.*/##; - $name = "\u$name"; - } - $name; -}; my ($ext, $nested, @modparts, $modfname, $modpname); (chdir 'ext', $ext = 'ext/') if -d 'ext'; diff --git a/utils/perldoc.PL b/utils/perldoc.PL index e1dd783e86..313be205dd 100644 --- a/utils/perldoc.PL +++ b/utils/perldoc.PL @@ -409,7 +409,11 @@ sub page { } else { foreach my $pager (@pagers) { + if ($Is_VMS) { + last if system("$pager $tmp") == 0; # quoting prevents logical expansion + } else { last if system("$pager \"$tmp\"") == 0; + } } } } diff --git a/vms/ext/Stdio/Stdio.pm b/vms/ext/Stdio/Stdio.pm index b51f2c9f15..446b0785e1 100644 --- a/vms/ext/Stdio/Stdio.pm +++ b/vms/ext/Stdio/Stdio.pm @@ -134,7 +134,7 @@ This package C<ISA> IO::File, so that you can call IO::File methods on the handles returned by C<vmsopen> and C<vmssysopen>. The IO::File package is not initialized, however, until you actually call a method that VMS::Stdio doesn't provide. This -is doen to save startup time for users who don't wish to use +is done to save startup time for users who don't wish to use the IO::File methods. B<Note:> In order to conform to naming conventions for Perl @@ -201,7 +201,7 @@ true value if successful, and C<undef> if it fails. This function sets the default device and directory for the process. It is identical to the built-in chdir() operator, except that the change persists after Perl exits. It returns a true value on success, and -C<undef> if it encounters and error. +C<undef> if it encounters an error. =item sync diff --git a/vms/genconfig.pl b/vms/genconfig.pl index e500e760a2..ef1d5ad4a5 100644 --- a/vms/genconfig.pl +++ b/vms/genconfig.pl @@ -229,6 +229,8 @@ foreach (@ARGV) { d_wcstombs d_wctomb d_mblen d_mktime d_strcoll d_strxfrm ]) { print OUT "$_='$rtlhas'\n"; } + print OUT "d_stdio_ptr_lval_sets_cnt='undef'\n"; + print OUT "d_stdio_ptr_lval_nochange_cnt='undef'\n"; foreach (qw[ d_gettimeod d_uname d_truncate d_wait4 d_index d_pathconf d_fpathconf d_sysconf d_sigsetjmp ]) { print OUT "$_='$rtlnew'\n"; diff --git a/vms/perly_c.vms b/vms/perly_c.vms index 0676ebd249..640780af83 100644 --- a/vms/perly_c.vms +++ b/vms/perly_c.vms @@ -1749,7 +1749,7 @@ case 35: break; case 37: #line 269 "perly.y" -{ (void)scan_num("1"); yyval.opval = yylval.opval; } +{ (void)scan_num("1", &yylval); yyval.opval = yylval.opval; } break; case 39: #line 274 "perly.y" diff --git a/vos/Changes b/vos/Changes index 9af03d1c5f..ba0856ac94 100644 --- a/vos/Changes +++ b/vos/Changes @@ -1,6 +1,32 @@ This file documents the changes made to port Perl to the Stratus VOS operating system. +For 5.7: + Updated "build.cm" to build perl using either the alpha or GA + version of POSIX. + Updated "Changes". + Updated "compile_perl.cm" to use either the alpha or GA + version of POSIX. + Split "config.def" into config.alpha.def and config.ga.def; + one for each version. Use the configure_perl.cm macro + to select the appropriate version. + Split "config.h" into config.alpha.h and config.ga.h. Use the + configure_perl.cm macro to select the appropriate version. + Updated "config.pl". It now diagnoses undefined (missing) and + unused substitution variables. When a new version of + Perl comes out, run "configure_perl.cm", add any missing + definitions to config.*.def, and remove any unused + definitions. + Removed "config_h.SH_orig". It is no longer needed. + Added "configure_perl.cm". It is used to configure perl so that + it can be built with either version of VOS POSIX.1 support. + Added "install_perl.cm" to install Perl into the appropriate + system directories. + Updated "perl.bind" to work with either the alpha or GA + version of POSIX. + Updated "vosish.h" to just use the standard "unixish.h" since + there are no changes needed at this time. + After 5.005_63: Supplied "config.pl" perl script that takes "config_h.SH_orig" and "config.def" as input and produces "config.h.new". diff --git a/vos/build.cm b/vos/build.cm index 8719d050c4..f749538231 100644 --- a/vos/build.cm +++ b/vos/build.cm @@ -2,6 +2,8 @@ cpu option(-processor)name,allow(mc68020,i80860,pa7100,pa8000),=mc68020 recompile switch(-recompile),=1 rebind switch(-rebind),=1 + tgt_mod option(-target_module)module_name,='(current_module)' + version option(-version)name,allow(alpha,ga),=ga &end_parameters &echo command_lines & @@ -11,14 +13,22 @@ & necessary, to assign the correct pathname of the directory that & contains VOS POSIX.1 support. & -&set_string POSIX >vos_ftp_site>pub>vos>alpha>posix +&if &version& = alpha +&then &set_string POSIX >vos_ftp_site>pub>vos>alpha>posix +&else &set_string POSIX >system>posix_object_library & & See if the site has VOS POSIX.1 support loaded. If not, quit now. & &if ^ (exists &POSIX& -directory) &then &do &display_line build: VOS POSIX.1 support not found. &POSIX& - &return + &return 1 + &end +& +&if &cpu& = mc68020 & &version& = ga | &cpu& = i80860 & &version& = ga +&then &do + &display_line build: "-version ga" is incompatible with "-processor mc68020 or i80860" + &return 1 &end & & Set up the appropriate directory suffix for each architecture. @@ -43,7 +53,11 @@ &if &recompile& = 0 &then &goto CHECK_REBIND & -!set_library_paths include << < &POSIX&>incl &+ +&if &version& = alpha +&then !set_library_paths include << < &POSIX&>incl &+ + (master_disk)>system>include_library +&else !set_library_paths include << < &+ + (master_disk)>system>stcp>include_library &+ (master_disk)>system>include_library & &if (exists *.obj -link) @@ -52,7 +66,12 @@ & Suppress several harmless compiler warning and advice messages. & Use -list -show_include all -show_macros both_ways when debugging. & -&set_string cflags '-u -O4 -D_POSIX_C_SOURCE=199309L -DPERL_CORE' +&set_string cflags '-u -O4 -D_POSIX_C_SOURCE=199506L -DPERL_CORE' +& +& The following is a work-around for stcp-1437,8,9 +& +&if &version& = ga +&then &set_string cflags &cflags& -D_BSD_SOURCE & !cc <<av.c -suppress_diag 2006 2064 2065 &cpu& &cflags& &if (command_status) ^= 0 &then &return @@ -76,15 +95,26 @@ & &if (command_status) ^= 0 &then &return !cc <<mg.c -suppress_diag 2006 2064 2065 &cpu& &cflags& &if (command_status) ^= 0 &then &return -!cc <<miniperlmain.c -suppress_diag 2006 &cpu& &cflags& +!cc <<miniperlmain.c -suppress_diag 2006 2065 &cpu& &cflags& &if (command_status) ^= 0 &then &return !cc <<op.c -suppress_diag 2006 2064 2065 &cpu& &cflags& &if (command_status) ^= 0 &then &return +& +& We are essentially building miniperl for now. Until we +& get a POSIX shell on VOS we won't add any of the extensions. +& +& !link <<op.c opmini.c -delete +& &if (command_status) ^= 0 &then &return +& !cc opmini.c -suppress_diag 2006 2064 2065 &cpu& &cflags& -DPERL_EXTERNAL_GLOB +& &if (command_status) ^= 0 &then &return +& !unlink opmini.c +& &if (command_status) ^= 0 &then &return +& !cc <<perl.c -suppress_diag 2006 2053 2065 &cpu& &cflags& &+ - -DARCHLIB="/system/ported/perl/lib/5.005&obj2&" &+ - -DARCHLIB_EXP="/system/ported/perl/lib/5.005&obj2&" &+ - -DSITEARCH="/system/ported/perl/lib/site/5.005&obj2&" &+ - -DSITEARCH_EXP="/system/ported/perl/lib/site/5.005&obj2&" + -DARCHLIB="/system/ported/perl/lib/5.7&obj2&" &+ + -DARCHLIB_EXP="/system/ported/perl/lib/5.7&obj2&" &+ + -DSITEARCH="/system/ported/perl/lib/site/5.7&obj2&" &+ + -DSITEARCH_EXP="/system/ported/perl/lib/site/5.7&obj2&" &if (command_status) ^= 0 &then &return !cc <<perlapi.c &cpu& &cflags& &if (command_status) ^= 0 &then &return @@ -126,8 +156,11 @@ &if (command_status) ^= 0 &then &return !cc <<xsutils.c &cpu& &cflags& &if (command_status) ^= 0 &then &return +&if &version& = alpha +&then &do !cc <vos_dummies.c &cpu& -O4 &if (command_status) ^= 0 &then &return +&end & & If requested, bind the executable program module. & @@ -139,6 +172,10 @@ &then &set_string tcp_objlib (master_disk)>system>tcp_os>object_library&obj2& &else &set_string tcp_objlib (master_disk)>system>tcp_os>object_library & +&if (exists -directory (master_disk)>system>stcp>object_library&obj2&) +&then &set_string stcp_objlib (master_disk)>system>stcp>object_library&obj2& +&else &set_string stcp_objlib (master_disk)>system>stcp>object_library +& &if (exists -directory (master_disk)>system>object_library&obj2&) &then &set_string objlib (master_disk)>system>object_library&obj2& &else &set_string objlib (master_disk)>system>object_library @@ -147,11 +184,28 @@ &then &set_string c_objlib (master_disk)>system>c_object_library&obj2& &else &set_string c_objlib (master_disk)>system>c_object_library & -!set_library_paths object . &+ - &POSIX&>c>runtime>obj&obj& &+ +&if (exists -directory (master_disk)>system>posix_object_library&obj2&) +&then &set_string posix_objlib (master_disk)>system>posix_object_library&obj2& +&else &set_string posix_objlib (master_disk)>system>posix_object_library +& +&if &version& = alpha +&then !set_library_paths object . &tcp_objlib& &+ &POSIX&>c>sysv_runtime>obj&obj& &+ - &tcp_objlib& &objlib& &c_objlib& -!bind -control <perl.bind &cpu& -map + &POSIX&>c>runtime>obj&obj& &+ + &c_objlib& &objlib& +&else !set_library_paths object . &stcp_objlib& &+ + &stcp_objlib&>common &+ + &stcp_objlib&>net &+ + &stcp_objlib&>sbsd &+ + &stcp_objlib&>socket &+ + &posix_objlib&>bsd &+ + &posix_objlib& &+ + &c_objlib& &objlib& +&if &version& = alpha +&then !bind -control <perl.bind vos_dummies &+ + &tcp_objlib&>tcp_runtime &tcp_objlib&>tcp_gethost &+ + &cpu& -target_module &tgt_mod& -map +&else !bind -control <perl.bind &cpu& -target_module &tgt_mod& -map &if (command_status) ^= 0 &then &return !delete_file *.obj -no_ask -brief !unlink *.obj -no_ask -brief diff --git a/vos/compile_perl.cm b/vos/compile_perl.cm index 86a8d6a182..f8ecf3ba22 100644 --- a/vos/compile_perl.cm +++ b/vos/compile_perl.cm @@ -3,12 +3,15 @@ & build macro in that subdirectory to create the perl & executable program module file. & Written 99-02-03 by Paul Green (Paul_Green@stratus.com) +& Modified 00-10-24 by Paul Green & &begin_parameters - cpu option(-processor)name,allow(mc68020,i80860,pa7100,pa8000),=mc68020 + cpu option(-processor)name,allow(mc68020,i80860,pa7100,pa8000),=pa7100 recompile switch(-recompile),=1 rebind switch(-rebind),=1 module option(-module)module_name,='(current_module)' + tgt_mod option(-target_module)module_name,='(current_module)' + version option(-version)name,allow(alpha,ga),=ga &end_parameters &echo command_lines & @@ -35,6 +38,9 @@ &if ^ (exists obj&obj&>build.out) &then !create_file obj&obj&>build.out ; set_implicit_locking obj&obj&>build.out & +!configure_perl -version &version& +& !change_current_dir obj&obj& -!start_process (string <build -processor &cpu& &recompile& &rebind&) -module &module& +!start_process (string <build -processor &cpu& &recompile& &rebind& &+ + -target_module &tgt_mod& -version &version&) -module &module& !change_current_dir < diff --git a/vos/config.def b/vos/config.alpha.def index 4edc806b9c..84e1e0e108 100644 --- a/vos/config.def +++ b/vos/config.alpha.def @@ -8,7 +8,8 @@ $binexp='/system/ported/command_library' $byteorder='4321' $castflags='0' $cf_by='Paul_Green@stratus.com' -$cf_time='2000-02-03 19:13 UCT' +$cf_time='2000-10-23 18:48 UCT' +$CONFIG_SH='config.sh' $cpp_stuff='42' $cpplast='-' $cppminus='-' @@ -115,7 +116,7 @@ $d_index='undef' $d_inetaton='undef' $d_int64_t='undef' $d_isascii='define' -$d_isnan='define' +$d_isnan='undef' $d_isnanl='undef' $d_killpg='undef' $d_lchown='undef' @@ -170,9 +171,6 @@ $d_poll='define' $d_PRIeldbl='define' $d_PRIfldbl='define' $d_PRIgldbl='define' -$d_PRIEUldbl='define' -$d_PRIFUldbl='define' -$d_PRIGUldbl='define' $d_pthread_yield='undef' $d_pwage='undef' $d_pwchange='undef' @@ -182,7 +180,6 @@ $d_pwexpire='undef' $d_pwgecos='undef' $d_pwpasswd='undef' $d_pwquota='undef' -$d_qgcvt='undef' $d_quad='undef' $d_readdir='define' $d_readlink='define' @@ -194,6 +191,7 @@ $d_safemcpy='undef' $d_sanemcmp='define' $d_sched_yield='undef' $d_scm_rights='undef' +$d_SCNfldbl='define' $d_seekdir='undef' $d_select='define' $d_sem='undef' @@ -228,7 +226,6 @@ $d_shm='undef' $d_shmatprototype='define' $d_sigaction='undef' $d_sigsetjmp='undef' -$d_sitearch='undef' $d_socket='define' $d_sockpair='undef' $d_socks5_init='undef' @@ -238,6 +235,8 @@ $d_statfs_f_flags='undef' $d_statfs_s='undef' $d_stdio_cnt_lval='define' $d_stdio_ptr_lval='define' +$d_stdio_ptr_lval_sets_cnt='undef' +$d_stdio_ptr_lval_nochange_cnt='undef' $d_stdio_stream_array='define' $d_stdiobase='define' $d_stdstdio='define' @@ -314,7 +313,7 @@ $i_dirent='define' $i_dlfcn='undef' $i_fcntl='define' $i_float='define' -$i_grp='undef' +$i_grp='define' $i_iconv='undef' $i_ieeefp='undef' $i_inttypes='undef' @@ -333,7 +332,7 @@ $i_niin='define' $i_poll='undef' $i_prot='undef' $i_pthread='undef' -$i_pwd='undef' +$i_pwd='define' $i_rpcsvcdbm='undef' $i_sfio='undef' $i_sgtty='undef' @@ -390,6 +389,7 @@ $longsize='4' $lseeksize='4' $lseektype='off_t' $malloctype='void *' +$mmaptype='void *' $modetype='mode_t' $multiarch='undef' $myuname='VOS' @@ -430,15 +430,17 @@ $sig_num_init='0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24, $signal_t='void' $sitearch='' $sitearchexp='' -$sitelib='/system/ported/perl/lib/site/5.005' -$sitelibexp='/system/ported/perl/lib/site/5.005' +$sitelib='/system/ported/perl/lib/site/5.7' +$sitelibexp='/system/ported/perl/lib/site/5.7' $sitelib_stem='/system/ported/perl/lib/site' $sizesize='4' $sizetype='size_t' $socksizetype='int' +$sPRIeldbl='"Le"' $sPRIfldbl='"Lf"' $sPRIgldbl='"Lg"' -$src='%es#lang/vos_ftp_site/pub/vos/alpha/perl' +$src='/vos_ftp_site/pub/vos/posix/(alpha|ga)/perl' +$sSCNfldbl='"Lf"' $ssizetype='ssize_t' $startperl='!perl.pm' $stdchar='unsigned char' @@ -460,6 +462,7 @@ $uidformat='"d"' $uidsize='4' $uidsign='-1' $uidtype='uid_t' +$undef='$undef' $uquadtype='_error_' $use5005threads='undef' $use64bitall='undef' @@ -472,7 +475,6 @@ $usemorebits='undef' $usemultiplicity='undef' $useperlio='undef' $usesocks='undef' -$usethreads='undef' $uvoformat='"o"' $uvsize='4' $uvtype='unsigned int' @@ -482,6 +484,5 @@ $vendorarch='' $vendorarchexp='' $vendorlib_stem='' $vendorlibexp='' -$versiononly='undef' $voidflags='15' $xs_apiversion='5.00563' diff --git a/vos/config.h b/vos/config.alpha.h index 985e6ea5bc..30463bef9e 100644 --- a/vos/config.h +++ b/vos/config.alpha.h @@ -1,19 +1,19 @@ /* * This file was produced by running the config_h.SH script, which - * gets its values from $CONFIG_SH, which is generally produced by + * gets its values from config.sh, which is generally produced by * running Configure. * * Feel free to modify any of this as the need arises. Note, however, * that running config_h.SH again will wipe out any changes you've made. - * For a more permanent change edit $CONFIG_SH and rerun config_h.SH. + * For a more permanent change edit config.sh and rerun config_h.SH. * * \$Id: Config_h.U,v 3.0.1.5 1997/02/28 14:57:43 ram Exp $ */ /* * Package name : perl5 - * Source directory : %es#lang/vos_ftp_site/pub/vos/alpha/perl - * Configuration time: 2000-02-03 19:13 UCT + * Source directory : /vos_ftp_site/pub/vos/posix/(alpha|ga)/perl + * Configuration time: 2000-10-23 18:48 UCT * Configured by : Paul_Green@stratus.com * Target system : VOS */ @@ -1614,7 +1614,7 @@ * This symbol, if defined, indicates that the isnan routine is * available to check whether a double is a NaN. */ -#define HAS_ISNAN /**/ +/*#define HAS_ISNAN /**/ /* HAS_ISNANL: * This symbol, if defined, indicates that the isnanl routine is @@ -1714,7 +1714,7 @@ * Usually set to 'void *' or 'cadd_t'. */ /*#define HAS_MMAP /**/ -#define Mmap_t $mmaptype /**/ +#define Mmap_t void * /**/ /* HAS_MODFL: * This symbol, if defined, indicates that the modfl routine is @@ -2276,7 +2276,7 @@ * This symbol, if defined, indicates to the C program that struct group * in <grp.h> contains gr_passwd. */ -/*#define I_GRP /**/ +#define I_GRP /**/ /*#define GRPASSWD /**/ /* I_ICONV: @@ -2381,7 +2381,7 @@ * This symbol, if defined, indicates to the C program that struct passwd * contains pw_passwd. */ -/*#define I_PWD /**/ +#define I_PWD /**/ /*#define PWQUOTA /**/ /*#define PWAGE /**/ /*#define PWCHANGE /**/ @@ -2511,8 +2511,8 @@ */ #define PERL_PRIfldbl "Lf" /**/ #define PERL_PRIgldbl "Lg" /**/ -#define PERL_PRIeldbl $sPRIeldbl /**/ -# PERL_SCNfldbl $sSCNfldbl /**/ +#define PERL_PRIeldbl "Le" /**/ +#define PERL_SCNfldbl "Lf" /**/ /* Off_t: * This symbol holds the type used to declare offsets in the kernel. @@ -2865,8 +2865,8 @@ * This symbol contains the ~name expanded version of SITEARCH, to be used * in programs that are not prepared to deal with ~ expansion at run-time. */ -#define SITEARCH "" /**/ -#define SITEARCH_EXP "" /**/ +/*#define SITEARCH "" /**/ +/*#define SITEARCH_EXP "" /**/ /* SITELIB: * This symbol contains the name of the private library for this package. @@ -2888,8 +2888,8 @@ * removed. The elements in inc_version_list (inc_version_list.U) can * be tacked onto this variable to generate a list of directories to search. */ -#define SITELIB "/system/ported/perl/lib/site/5.005" /**/ -#define SITELIB_EXP "/system/ported/perl/lib/site/5.005" /**/ +#define SITELIB "/system/ported/perl/lib/site/5.7" /**/ +#define SITELIB_EXP "/system/ported/perl/lib/site/5.7" /**/ #define SITELIB_STEM "/system/ported/perl/lib/site" /**/ /* Size_t_size: @@ -3133,7 +3133,7 @@ * compatible with the present perl. (That is, pure perl modules * written for pm_apiversion will still work for the current * version). perl.c:incpush() and lib/lib.pm will automatically - * search in /system/ported/perl/lib/site/5.005 for older directories across major versions + * search in /system/ported/perl/lib/site/5.7 for older directories across major versions * back to pm_apiversion. This is only useful if you have a perl * library directory tree structured like the default one. The * versioned site_perl library was introduced in 5.005, so that's diff --git a/vos/config.ga.def b/vos/config.ga.def new file mode 100644 index 0000000000..c6ab96b1f6 --- /dev/null +++ b/vos/config.ga.def @@ -0,0 +1,487 @@ +$alignbytes='8' +$aphostname='' +$archlib='' +$archlibexp='' +$archname='vos' +$bin='/system/ported/command_library' +$binexp='/system/ported/command_library' +$byteorder='4321' +$castflags='0' +$cf_by='Paul_Green@stratus.com' +$cf_time='2000-10-24 15:35 UCT' +$CONFIG_SH='config.sh' +$cpp_stuff='42' +$cpplast='-' +$cppminus='-' +$cpprun='cc -E -' +$cppstdin='cc -E' +$crosscompile='undef' +$d_access='define' +$d_accessx='undef' +$d_alarm='define' +$d_archlib='undef' +$d_atolf='undef' +$d_atoll='undef' +$d_attribut='undef' +$d_bcmp='undef' +$d_bcopy='undef' +$d_bincompat5005='undef' +$d_bsdgetpgrp='undef' +$d_bsdsetpgrp='undef' +$d_bzero='undef' +$d_casti32='undef' +$d_castneg='define' +$d_charvspr='undef' +$d_chown='define' +$d_chroot='undef' +$d_chsize='undef' +$d_const='define' +$d_crypt='undef' +$d_csh='define' +$d_cuserid='undef' +$d_dbl_dig='define' +$d_difftime='define' +$d_dirnamlen='undef' +$d_dlerror='undef' +$d_dlsymun='undef' +$d_dosuid='undef' +$d_drand48proto='undef' +$d_dup2='define' +$d_eaccess='undef' +$d_endgrent='undef' +$d_endhent='define' +$d_endnent='define' +$d_endpent='define' +$d_endpwent='undef' +$d_endsent='define' +$d_eofnblk='define' +$d_fchmod='define' +$d_fchown='undef' +$d_fcntl='define' +$d_fd_set='undef' +$d_fgetpos='define' +$d_flexfnam='define' +$d_flock='undef' +$d_fork='define' +$d_fpathconf='define' +$d_fpos64_t='undef' +$d_frexpl='undef' +$d_fs_data_s='undef' +$d_fseeko='undef' +$d_fsetpos='define' +$d_fstatfs='undef' +$d_fstatvfs='undef' +$d_ftello='undef' +$d_Gconvert='sprintf((b),"%.*g",(n),(x))' +$d_getcwd='define' +$d_getespwnam='undef' +$d_getfsstat='undef' +$d_getgrent='undef' +$d_getgrps='undef' +$d_gethbyaddr='define' +$d_gethbyname='define' +$d_gethent='define' +$d_gethname='define' +$d_gethostprotos='define' +$d_getlogin='define' +$d_getmnt='undef' +$d_getmntent='undef' +$d_getnbyaddr='define' +$d_getnbyname='define' +$d_getnent='define' +$d_getnetprotos='define' +$d_getpbyname='define' +$d_getpbynumber='define' +$d_getpent='define' +$d_getpgid='undef' +$d_getpgrp2='undef' +$d_getpgrp='define' +$d_getppid='define' +$d_getprior='undef' +$d_getprotoprotos='define' +$d_getprpwnam='undef' +$d_getpwent='undef' +$d_getsbyname='define' +$d_getsbyport='define' +$d_getsent='define' +$d_getservprotos='define' +$d_getspnam='undef' +$d_gettimeod='undef' +$d_gnulibc='undef' +$d_grpasswd='undef' +$d_hasmntopt='undef' +$d_htonl='define' +$d_iconv='undef' +$d_index='undef' +$d_inetaton='undef' +$d_int64_t='undef' +$d_isascii='define' +$d_isnan='undef' +$d_isnanl='undef' +$d_killpg='undef' +$d_lchown='undef' +$d_ldbl_dig='define' +$d_link='undef' +$d_locconv='define' +$d_lockf='define' +$d_longdbl='define' +$d_longlong='undef' +$d_lseekproto='define' +$d_lstat='define' +$d_madvise='undef' +$d_mblen='define' +$d_mbstowcs='define' +$d_mbtowc='define' +$d_memchr='define' +$d_memcmp='define' +$d_memcpy='define' +$d_memmove='define' +$d_memset='define' +$d_mkdir='define' +$d_mkdtemp='undef' +$d_mkstemp='undef' +$d_mkstemps='undef' +$d_mkfifo='define' +$d_mktime='define' +$d_mmap='define' +$d_modfl='undef' +$d_mprotect='undef' +$d_msg='undef' +$d_msg_ctrunc='undef' +$d_msg_dontroute='undef' +$d_msg_oob='undef' +$d_msg_peek='undef' +$d_msg_proxy='undef' +$d_msync='undef' +$d_munmap='define' +$d_mymalloc='undef' +$d_nice='undef' +$d_nv_preserves_uv='define' +$d_nv_preserves_uv_bits='32' +$d_off64_t='undef' +$d_old_pthread_create_joinable='undef' +$d_oldpthreads='undef' +$d_open3='define' +$d_pathconf='define' +$d_perl_otherlibdirs='undef' +$d_pause='define' +$d_phostname='undef' +$d_pipe='define' +$d_poll='define' +$d_PRIeldbl='define' +$d_PRIfldbl='define' +$d_PRIgldbl='define' +$d_pthread_yield='undef' +$d_pwage='undef' +$d_pwchange='undef' +$d_pwclass='undef' +$d_pwcomment='undef' +$d_pwexpire='undef' +$d_pwgecos='undef' +$d_pwpasswd='undef' +$d_pwquota='undef' +$d_quad='undef' +$d_readdir='define' +$d_readlink='define' +$d_rename='define' +$d_rewinddir='define' +$d_rmdir='define' +$d_safebcpy='undef' +$d_safemcpy='undef' +$d_sanemcmp='define' +$d_sched_yield='undef' +$d_scm_rights='undef' +$d_SCNfldbl='define' +$d_seekdir='undef' +$d_select='define' +$d_sem='undef' +$d_semctl_semid_ds='undef' +$d_semctl_semun='undef' +$d_setegid='define' +$d_seteuid='define' +$d_setgrent='undef' +$d_setgrps='undef' +$d_sethent='define' +$d_setlinebuf='define' +$d_setlocale='define' +$d_setnent='define' +$d_setpent='define' +$d_setpgid='define' +$d_setpgrp2='undef' +$d_setpgrp='undef' +$d_setprior='undef' +$d_setproctitle='undef' +$d_setpwent='undef' +$d_setregid='undef' +$d_setresgid='undef' +$d_setresuid='undef' +$d_setreuid='undef' +$d_setrgid='undef' +$d_setruid='undef' +$d_setsent='define' +$d_setsid='define' +$d_setvbuf='define' +$d_sfio='undef' +$d_shm='undef' +$d_shmatprototype='define' +$d_sigaction='define' +$d_sigsetjmp='define' +$d_socket='define' +$d_sockpair='undef' +$d_socks5_init='undef' +$d_sqrtl='undef' +$d_statblks='undef' +$d_statfs_f_flags='undef' +$d_statfs_s='undef' +$d_stdio_cnt_lval='define' +$d_stdio_ptr_lval_sets_cnt='undef' +$d_stdio_ptr_lval_nochange_cnt='undef' +$d_stdio_stream_array='define' +$d_stdiobase='define' +$d_stdstdio='define' +$d_strchr='define' +$d_strcoll='define' +$d_strctcpy='define' +$d_strerrm='strerror(e)' +$d_strerror='define' +$d_strtod='define' +$d_strtol='define' +$d_strtold='undef' +$d_strtoll='undef' +$d_strtoul='define' +$d_strtoull='undef' +$d_strtouq='undef' +$d_strxfrm='define' +$d_suidsafe='define' +$d_symlink='define' +$d_syscall='undef' +$d_sysconf='define' +$d_syserrlst='define' +$d_system='define' +$d_tcgetpgrp='define' +$d_tcsetpgrp='define' +$d_telldir='undef' +$d_telldirproto='undef' +$d_times='define' +$d_truncate='undef' +$d_tzname='define' +$d_umask='define' +$d_uname='define' +$d_union_semun='undef' +$d_ustat='undef' +$d_vendorarch='define' +$d_vendorlib='define' +$d_vfork='undef' +$d_void_closedir='undef' +$d_volatile='define' +$d_vprintf='define' +$d_wait4='define' +$d_waitpid='define' +$d_wcstombs='define' +$d_wctomb='define' +$db_hashtype='int' +$db_prefixtype='int' +$defvoidused='15' +$direntrytype='struct dirent' +$doublesize='8' +$drand01='rand()/(RAND_MAX+1)' +$eagain='EAGAIN' +$ebcdic='undef' +$fflushall='undef' +$fflushNULL='define' +$fpostype='fpos_t' +$freetype='void' +$full_csh='/system/ported/command_library/bash.pm' +$full_sed='/system/ported/command_library/sed.pm' +$gidformat='"d"' +$gidsize='4' +$gidsign='-1' +$gidtype='gid_t' +$groupstype='gid_t' +$i16size='2' +$i16type='short' +$i32size='4' +$i32type='int' +$i64size='_error_' +$i64type='_error_' +$i8size='1' +$i8type='char' +$i_arpainet='define' +$i_dbm='undef' +$i_dirent='define' +$i_dlfcn='undef' +$i_fcntl='define' +$i_float='define' +$i_grp='define' +$i_iconv='undef' +$i_ieeefp='undef' +$i_inttypes='undef' +$i_libutil='undef' +$i_limits='define' +$i_locale='define' +$i_machcthr='undef' +$i_math='define' +$i_memory='undef' +$i_mntent='undef' +$i_ndbm='undef' +$i_netdb='define' +$i_neterrno='undef' +$i_netinettcp='define' +$i_niin='define' +$i_poll='undef' +$i_prot='undef' +$i_pthread='undef' +$i_pwd='define' +$i_rpcsvcdbm='undef' +$i_sfio='undef' +$i_sgtty='undef' +$i_shadow='undef' +$i_socks='undef' +$i_stdarg='define' +$i_stddef='define' +$i_stdlib='define' +$i_string='define' +$i_sunmath='undef' +$i_sysaccess='undef' +$i_sysdir='undef' +$i_sysfile='undef' +$i_sysioctl='define' +$i_syslog='undef' +$i_sysmode='undef' +$i_sysmount='undef' +$i_sysndir='undef' +$i_sysparam='undef' +$i_sysresrc='undef' +$i_syssecrt='undef' +$i_sysselct='define' +$i_sysstat='define' +$i_sysstatfs='undef' +$i_sysstatvfs='undef' +$i_systime='define' +$i_systimek='undef' +$i_systimes='define' +$i_systypes='define' +$i_sysuio='undef' +$i_sysun='undef' +$i_sysutsname='define' +$i_sysvfs='undef' +$i_syswait='define' +$i_termio='undef' +$i_termios='define' +$i_time='undef' +$i_unistd='define' +$i_ustat='undef' +$i_utime='define' +$i_values='define' +$i_varargs='undef' +$i_vfork='undef' +$Id='$Id' +$inc_version_list_init='0' +$installusrbinperl='undef' +$intsize='4' +$ivdformat='"d"' +$ivsize='4' +$ivtype='int' +$longdblsize='8' +$longlongsize='_error_' +$longsize='4' +$lseeksize='4' +$lseektype='off_t' +$malloctype='void *' +$mmaptype='void *' +$modetype='mode_t' +$multiarch='undef' +$myuname='VOS' +$netdb_hlen_type='int' +$netdb_host_type='char *' +$netdb_name_type='char *' +$netdb_net_type='long' +$nveformat='"e"' +$nvfformat='"f"' +$nvgformat='"g"' +$nvsize='8' +$nvtype='double' +$o_nonblock='O_NONBLOCK' +$old_pthread_create_joinable='' +$osname='VOS' +$otherlibdirs='' +$package='perl5' +$pidtype='pid_t' +$pm_apiversion='5.005' +$privlib='/system/ported/perl/lib/5.7' +$privlibexp='/system/ported/perl/lib/5.7' +$prototype='define' +$ptrsize='4' +$quadkind='_error_' +$quadtype='_error_' +$randbits='15' +$randseedtype='unsigned int' +$rd_nodata='-1' +$sched_yield='' +$seedfunc='srand' +$selectminbits='1' +$selecttype='fd_set *' +$sh='/system/ported/command_library/bash.pm' +$shmattype='void *' +$shortsize='2' +$sig_name_init='"ZERO","ABRT","FPE","ILL","INT","SEGV","TERM","USR1","USR2","IO","HUP","URG","ALRM","CHLD","CONT","KILL","STOP","PIPE","QUIT","BUS","TRAP","TSTP","TTIN","TTOU","RT1","RT2","RT3","RT4","RT5","RT6","RT7","RT8",0' +$sig_num_init='0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,0' +$signal_t='void' +$sitearch='' +$sitearchexp='' +$sitelib='/system/ported/perl/lib/site/5.7' +$sitelibexp='/system/ported/perl/lib/site/5.7' +$sitelib_stem='/system/ported/perl/lib/site' +$sizesize='4' +$sizetype='size_t' +$socksizetype='int' +$sPRIeldbl='"Le"' +$sPRIfldbl='"Lf"' +$sPRIgldbl='"Lg"' +$src='/vos_ftp_site/pub/vos/posix/(alpha|ga)/perl' +$sSCNfldbl='"Lf"' +$ssizetype='ssize_t' +$startperl='!perl.pm' +$stdchar='unsigned char' +$stdio_base='((fp)->_base)' +$stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)' +$stdio_cnt='((fp)->_cnt)' +$stdio_ptr='((fp)->_ptr)' +$stdio_stream_array='_iob' +$timetype='time_t' +$u16size='2' +$u16type='unsigned short' +$u32size='4' +$u32type='unsigned int' +$u64size='_error_' +$u64type='_error_' +$u8size='1' +$u8type='unsigned char' +$uidformat='"d"' +$uidsize='4' +$uidsign='-1' +$uidtype='uid_t' +$undef='$undef' +$uquadtype='_error_' +$use5005threads='undef' +$use64bitall='undef' +$use64bitint='undef' +$usedl='undef' +$useithreads='undef' +$uselargefiles='undef' +$uselongdouble='define' +$usemorebits='undef' +$usemultiplicity='undef' +$useperlio='undef' +$usesocks='undef' +$uvoformat='"o"' +$uvsize='4' +$uvtype='unsigned int' +$uvuformat='"u"' +$uvxformat='"x"' +$vendorarch='' +$vendorarchexp='' +$vendorlib_stem='' +$vendorlibexp='' +$voidflags='15' +$xs_apiversion='5.00563' diff --git a/vos/config_h.SH_orig b/vos/config.ga.h index a209e6d29f..ae5cf93129 100755..100644 --- a/vos/config_h.SH_orig +++ b/vos/config.ga.h @@ -1,45 +1,21 @@ -case "$CONFIG_SH" in -'') CONFIG_SH=config.sh ;; -esac -case "$CONFIG_H" in -'') CONFIG_H=config.h ;; -esac -case $CONFIG in -'') - if test -f $CONFIG_SH; then TOP=.; - elif test -f ../$CONFIG_SH; then TOP=..; - elif test -f ../../$CONFIG_SH; then TOP=../..; - elif test -f ../../../$CONFIG_SH; then TOP=../../..; - elif test -f ../../../../$CONFIG_SH; then TOP=../../../..; - else - echo "Can't find $CONFIG_SH."; exit 1 - fi - . $TOP/$CONFIG_SH - ;; -esac -case "$0" in -*/*) cd `expr X$0 : 'X\(.*\)/'` ;; -esac -echo "Extracting $CONFIG_H (with variable substitutions)" -sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un-def!#undef!' /* * This file was produced by running the config_h.SH script, which - * gets its values from $CONFIG_SH, which is generally produced by + * gets its values from config.sh, which is generally produced by * running Configure. * * Feel free to modify any of this as the need arises. Note, however, * that running config_h.SH again will wipe out any changes you've made. - * For a more permanent change edit $CONFIG_SH and rerun config_h.SH. + * For a more permanent change edit config.sh and rerun config_h.SH. * * \$Id: Config_h.U,v 3.0.1.5 1997/02/28 14:57:43 ram Exp $ */ /* - * Package name : $package - * Source directory : $src - * Configuration time: $cf_time - * Configured by : $cf_by - * Target system : $myuname + * Package name : perl5 + * Source directory : /vos_ftp_site/pub/vos/posix/(alpha|ga)/perl + * Configuration time: 2000-10-24 15:35 UCT + * Configured by : Paul_Green@stratus.com + * Target system : VOS */ #ifndef _config_h_ @@ -48,19 +24,19 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un /* LOC_SED: * This symbol holds the complete pathname to the sed program. */ -#define LOC_SED "$full_sed" /**/ +#define LOC_SED "/system/ported/command_library/sed.pm" /**/ /* HAS_ALARM: * This symbol, if defined, indicates that the alarm routine is * available. */ -#$d_alarm HAS_ALARM /**/ +#define HAS_ALARM /**/ /* HASATTRIBUTE: * This symbol indicates the C compiler can check for function attributes, * such as printf formats. This is normally only supported by GNU cc. */ -#$d_attribut HASATTRIBUTE /**/ +/*#define HASATTRIBUTE /**/ #ifndef HASATTRIBUTE #define __attribute__(_arg_) #endif @@ -69,37 +45,37 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * This symbol is defined if the bcmp() routine is available to * compare blocks of memory. */ -#$d_bcmp HAS_BCMP /**/ +/*#define HAS_BCMP /**/ /* HAS_BCOPY: * This symbol is defined if the bcopy() routine is available to * copy blocks of memory. */ -#$d_bcopy HAS_BCOPY /**/ +/*#define HAS_BCOPY /**/ /* HAS_BZERO: * This symbol is defined if the bzero() routine is available to * set a memory block to 0. */ -#$d_bzero HAS_BZERO /**/ +/*#define HAS_BZERO /**/ /* HAS_CHOWN: * This symbol, if defined, indicates that the chown routine is * available. */ -#$d_chown HAS_CHOWN /**/ +#define HAS_CHOWN /**/ /* HAS_CHROOT: * This symbol, if defined, indicates that the chroot routine is * available. */ -#$d_chroot HAS_CHROOT /**/ +/*#define HAS_CHROOT /**/ /* HAS_CHSIZE: * This symbol, if defined, indicates that the chsize routine is available * to truncate files. You might need a -lx to get this routine. */ -#$d_chsize HAS_CHSIZE /**/ +/*#define HAS_CHSIZE /**/ /* HASCONST: * This symbol, if defined, indicates that this C compiler knows about @@ -107,7 +83,7 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * within your programs. The mere use of the "const" keyword will * trigger the necessary tests. */ -#$d_const HASCONST /**/ +#define HASCONST /**/ #ifndef HASCONST #define const #endif @@ -116,13 +92,13 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * This symbol, if defined, indicates that the crypt routine is available * to encrypt passwords and the like. */ -#$d_crypt HAS_CRYPT /**/ +/*#define HAS_CRYPT /**/ /* HAS_CUSERID: * This symbol, if defined, indicates that the cuserid routine is * available to get character login names. */ -#$d_cuserid HAS_CUSERID /**/ +/*#define HAS_CUSERID /**/ /* HAS_DBL_DIG: * This symbol, if defined, indicates that this system's <float.h> @@ -130,20 +106,20 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * of significant digits in a double precision number. If this * symbol is not defined, a guess of 15 is usually pretty good. */ -#$d_dbl_dig HAS_DBL_DIG /* */ +#define HAS_DBL_DIG /* */ /* HAS_DIFFTIME: * This symbol, if defined, indicates that the difftime routine is * available. */ -#$d_difftime HAS_DIFFTIME /**/ +#define HAS_DIFFTIME /**/ /* HAS_DLERROR: * This symbol, if defined, indicates that the dlerror routine is * available to return a string describing the last error that * occurred from a call to dlopen(), dlclose() or dlsym(). */ -#$d_dlerror HAS_DLERROR /**/ +/*#define HAS_DLERROR /**/ /* SETUID_SCRIPTS_ARE_SECURE_NOW: * This symbol, if defined, indicates that the bug that prevents @@ -162,56 +138,56 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * subprocesses to which it must pass the filename rather than the * file descriptor of the script to be executed. */ -#$d_suidsafe SETUID_SCRIPTS_ARE_SECURE_NOW /**/ -#$d_dosuid DOSUID /**/ +#define SETUID_SCRIPTS_ARE_SECURE_NOW /**/ +/*#define DOSUID /**/ /* HAS_DUP2: * This symbol, if defined, indicates that the dup2 routine is * available to duplicate file descriptors. */ -#$d_dup2 HAS_DUP2 /**/ +#define HAS_DUP2 /**/ /* HAS_FCHMOD: * This symbol, if defined, indicates that the fchmod routine is available * to change mode of opened files. If unavailable, use chmod(). */ -#$d_fchmod HAS_FCHMOD /**/ +#define HAS_FCHMOD /**/ /* HAS_FCHOWN: * This symbol, if defined, indicates that the fchown routine is available * to change ownership of opened files. If unavailable, use chown(). */ -#$d_fchown HAS_FCHOWN /**/ +/*#define HAS_FCHOWN /**/ /* HAS_FCNTL: * This symbol, if defined, indicates to the C program that * the fcntl() function exists. */ -#$d_fcntl HAS_FCNTL /**/ +#define HAS_FCNTL /**/ /* HAS_FGETPOS: * This symbol, if defined, indicates that the fgetpos routine is * available to get the file position indicator, similar to ftell(). */ -#$d_fgetpos HAS_FGETPOS /**/ +#define HAS_FGETPOS /**/ /* HAS_FLOCK: * This symbol, if defined, indicates that the flock routine is * available to do file locking. */ -#$d_flock HAS_FLOCK /**/ +/*#define HAS_FLOCK /**/ /* HAS_FORK: * This symbol, if defined, indicates that the fork routine is * available. */ -#$d_fork HAS_FORK /**/ +#define HAS_FORK /**/ /* HAS_FSETPOS: * This symbol, if defined, indicates that the fsetpos routine is * available to set the file position indicator, similar to fseek(). */ -#$d_fsetpos HAS_FSETPOS /**/ +#define HAS_FSETPOS /**/ /* HAS_GETTIMEOFDAY: * This symbol, if defined, indicates that the gettimeofday() system @@ -219,7 +195,7 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * <sys/resource.h> needs to be included (see I_SYS_RESOURCE). * The type "Timeval" should be used to refer to "struct timeval". */ -#$d_gettimeod HAS_GETTIMEOFDAY /**/ +/*#define HAS_GETTIMEOFDAY /**/ #ifdef HAS_GETTIMEOFDAY #define Timeval struct timeval /* Structure used by gettimeofday() */ #endif @@ -229,106 +205,106 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * available to get the list of process groups. If unavailable, multiple * groups are probably not supported. */ -#$d_getgrps HAS_GETGROUPS /**/ +/*#define HAS_GETGROUPS /**/ /* HAS_GETLOGIN: * This symbol, if defined, indicates that the getlogin routine is * available to get the login name. */ -#$d_getlogin HAS_GETLOGIN /**/ +#define HAS_GETLOGIN /**/ /* HAS_GETPGID: * This symbol, if defined, indicates to the C program that * the getpgid(pid) function is available to get the * process group id. */ -#$d_getpgid HAS_GETPGID /**/ +/*#define HAS_GETPGID /**/ /* HAS_GETPGRP2: * This symbol, if defined, indicates that the getpgrp2() (as in DG/UX) * routine is available to get the current process group. */ -#$d_getpgrp2 HAS_GETPGRP2 /**/ +/*#define HAS_GETPGRP2 /**/ /* HAS_GETPPID: * This symbol, if defined, indicates that the getppid routine is * available to get the parent process ID. */ -#$d_getppid HAS_GETPPID /**/ +#define HAS_GETPPID /**/ /* HAS_GETPRIORITY: * This symbol, if defined, indicates that the getpriority routine is * available to get a process's priority. */ -#$d_getprior HAS_GETPRIORITY /**/ +/*#define HAS_GETPRIORITY /**/ /* HAS_INET_ATON: * This symbol, if defined, indicates to the C program that the * inet_aton() function is available to parse IP address "dotted-quad" * strings. */ -#$d_inetaton HAS_INET_ATON /**/ +/*#define HAS_INET_ATON /**/ /* HAS_KILLPG: * This symbol, if defined, indicates that the killpg routine is available * to kill process groups. If unavailable, you probably should use kill * with a negative process number. */ -#$d_killpg HAS_KILLPG /**/ +/*#define HAS_KILLPG /**/ /* HAS_LINK: * This symbol, if defined, indicates that the link routine is * available to create hard links. */ -#$d_link HAS_LINK /**/ +/*#define HAS_LINK /**/ /* HAS_LOCALECONV: * This symbol, if defined, indicates that the localeconv routine is * available for numeric and monetary formatting conventions. */ -#$d_locconv HAS_LOCALECONV /**/ +#define HAS_LOCALECONV /**/ /* HAS_LOCKF: * This symbol, if defined, indicates that the lockf routine is * available to do file locking. */ -#$d_lockf HAS_LOCKF /**/ +#define HAS_LOCKF /**/ /* HAS_LSTAT: * This symbol, if defined, indicates that the lstat routine is * available to do file stats on symbolic links. */ -#$d_lstat HAS_LSTAT /**/ +#define HAS_LSTAT /**/ /* HAS_MBLEN: * This symbol, if defined, indicates that the mblen routine is available * to find the number of bytes in a multibye character. */ -#$d_mblen HAS_MBLEN /**/ +#define HAS_MBLEN /**/ /* HAS_MBSTOWCS: * This symbol, if defined, indicates that the mbstowcs routine is * available to covert a multibyte string into a wide character string. */ -#$d_mbstowcs HAS_MBSTOWCS /**/ +#define HAS_MBSTOWCS /**/ /* HAS_MBTOWC: * This symbol, if defined, indicates that the mbtowc routine is available * to covert a multibyte to a wide character. */ -#$d_mbtowc HAS_MBTOWC /**/ +#define HAS_MBTOWC /**/ /* HAS_MEMCMP: * This symbol, if defined, indicates that the memcmp routine is available * to compare blocks of memory. */ -#$d_memcmp HAS_MEMCMP /**/ +#define HAS_MEMCMP /**/ /* HAS_MEMCPY: * This symbol, if defined, indicates that the memcpy routine is available * to copy blocks of memory. */ -#$d_memcpy HAS_MEMCPY /**/ +#define HAS_MEMCPY /**/ /* HAS_MEMMOVE: * This symbol, if defined, indicates that the memmove routine is available @@ -336,20 +312,20 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * only when HAS_SAFE_BCOPY is not defined. If neither is there, roll your * own version. */ -#$d_memmove HAS_MEMMOVE /**/ +#define HAS_MEMMOVE /**/ /* HAS_MEMSET: * This symbol, if defined, indicates that the memset routine is available * to set blocks of memory. */ -#$d_memset HAS_MEMSET /**/ +#define HAS_MEMSET /**/ /* HAS_MKDIR: * This symbol, if defined, indicates that the mkdir routine is available * to create directories. Otherwise you should fork off a new process to * exec /bin/mkdir. */ -#$d_mkdir HAS_MKDIR /**/ +#define HAS_MKDIR /**/ /* HAS_MKFIFO: * This symbol, if defined, indicates that the mkfifo routine is @@ -357,31 +333,31 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * do it for you. However, if mkfifo is there, mknod might require * super-user privileges which mkfifo will not. */ -#$d_mkfifo HAS_MKFIFO /**/ +#define HAS_MKFIFO /**/ /* HAS_MKTIME: * This symbol, if defined, indicates that the mktime routine is * available. */ -#$d_mktime HAS_MKTIME /**/ +#define HAS_MKTIME /**/ /* HAS_MSYNC: * This symbol, if defined, indicates that the msync system call is * available to synchronize a mapped file. */ -#$d_msync HAS_MSYNC /**/ +/*#define HAS_MSYNC /**/ /* HAS_MUNMAP: * This symbol, if defined, indicates that the munmap system call is * available to unmap a region, usually mapped by mmap(). */ -#$d_munmap HAS_MUNMAP /**/ +#define HAS_MUNMAP /**/ /* HAS_NICE: * This symbol, if defined, indicates that the nice routine is * available. */ -#$d_nice HAS_NICE /**/ +/*#define HAS_NICE /**/ /* HAS_PATHCONF: * This symbol, if defined, indicates that pathconf() is available @@ -393,122 +369,122 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * to determine file-system related limits and options associated * with a given open file descriptor. */ -#$d_pathconf HAS_PATHCONF /**/ -#$d_fpathconf HAS_FPATHCONF /**/ +#define HAS_PATHCONF /**/ +#define HAS_FPATHCONF /**/ /* HAS_PAUSE: * This symbol, if defined, indicates that the pause routine is * available to suspend a process until a signal is received. */ -#$d_pause HAS_PAUSE /**/ +#define HAS_PAUSE /**/ /* HAS_PIPE: * This symbol, if defined, indicates that the pipe routine is * available to create an inter-process channel. */ -#$d_pipe HAS_PIPE /**/ +#define HAS_PIPE /**/ /* HAS_POLL: * This symbol, if defined, indicates that the poll routine is * available to poll active file descriptors. You may safely * include <poll.h> when this symbol is defined. */ -#$d_poll HAS_POLL /**/ +#define HAS_POLL /**/ /* HAS_READDIR: * This symbol, if defined, indicates that the readdir routine is * available to read directory entries. You may have to include * <dirent.h>. See I_DIRENT. */ -#$d_readdir HAS_READDIR /**/ +#define HAS_READDIR /**/ /* HAS_SEEKDIR: * This symbol, if defined, indicates that the seekdir routine is * available. You may have to include <dirent.h>. See I_DIRENT. */ -#$d_seekdir HAS_SEEKDIR /**/ +/*#define HAS_SEEKDIR /**/ /* HAS_TELLDIR: * This symbol, if defined, indicates that the telldir routine is * available. You may have to include <dirent.h>. See I_DIRENT. */ -#$d_telldir HAS_TELLDIR /**/ +/*#define HAS_TELLDIR /**/ /* HAS_REWINDDIR: * This symbol, if defined, indicates that the rewinddir routine is * available. You may have to include <dirent.h>. See I_DIRENT. */ -#$d_rewinddir HAS_REWINDDIR /**/ +#define HAS_REWINDDIR /**/ /* HAS_READLINK: * This symbol, if defined, indicates that the readlink routine is * available to read the value of a symbolic link. */ -#$d_readlink HAS_READLINK /**/ +#define HAS_READLINK /**/ /* HAS_RENAME: * This symbol, if defined, indicates that the rename routine is available * to rename files. Otherwise you should do the unlink(), link(), unlink() * trick. */ -#$d_rename HAS_RENAME /**/ +#define HAS_RENAME /**/ /* HAS_RMDIR: * This symbol, if defined, indicates that the rmdir routine is * available to remove directories. Otherwise you should fork off a * new process to exec /bin/rmdir. */ -#$d_rmdir HAS_RMDIR /**/ +#define HAS_RMDIR /**/ /* HAS_SELECT: * This symbol, if defined, indicates that the select routine is * available to select active file descriptors. If the timeout field * is used, <sys/time.h> may need to be included. */ -#$d_select HAS_SELECT /**/ +#define HAS_SELECT /**/ /* HAS_SETEGID: * This symbol, if defined, indicates that the setegid routine is available * to change the effective gid of the current program. */ -#$d_setegid HAS_SETEGID /**/ +#define HAS_SETEGID /**/ /* HAS_SETEUID: * This symbol, if defined, indicates that the seteuid routine is available * to change the effective uid of the current program. */ -#$d_seteuid HAS_SETEUID /**/ +#define HAS_SETEUID /**/ /* HAS_SETLINEBUF: * This symbol, if defined, indicates that the setlinebuf routine is * available to change stderr or stdout from block-buffered or unbuffered * to a line-buffered mode. */ -#$d_setlinebuf HAS_SETLINEBUF /**/ +#define HAS_SETLINEBUF /**/ /* HAS_SETLOCALE: * This symbol, if defined, indicates that the setlocale routine is * available to handle locale-specific ctype implementations. */ -#$d_setlocale HAS_SETLOCALE /**/ +#define HAS_SETLOCALE /**/ /* HAS_SETPGID: * This symbol, if defined, indicates that the setpgid(pid, gpid) * routine is available to set process group ID. */ -#$d_setpgid HAS_SETPGID /**/ +#define HAS_SETPGID /**/ /* HAS_SETPGRP2: * This symbol, if defined, indicates that the setpgrp2() (as in DG/UX) * routine is available to set the current process group. */ -#$d_setpgrp2 HAS_SETPGRP2 /**/ +/*#define HAS_SETPGRP2 /**/ /* HAS_SETPRIORITY: * This symbol, if defined, indicates that the setpriority routine is * available to set a process's priority. */ -#$d_setprior HAS_SETPRIORITY /**/ +/*#define HAS_SETPRIORITY /**/ /* HAS_SETREGID: * This symbol, if defined, indicates that the setregid routine is @@ -520,8 +496,8 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * available to change the real, effective and saved gid of the current * process. */ -#$d_setregid HAS_SETREGID /**/ -#$d_setresgid HAS_SETRESGID /**/ +/*#define HAS_SETREGID /**/ +/*#define HAS_SETRESGID /**/ /* HAS_SETREUID: * This symbol, if defined, indicates that the setreuid routine is @@ -533,26 +509,26 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * available to change the real, effective and saved uid of the current * process. */ -#$d_setreuid HAS_SETREUID /**/ -#$d_setresuid HAS_SETRESUID /**/ +/*#define HAS_SETREUID /**/ +/*#define HAS_SETRESUID /**/ /* HAS_SETRGID: * This symbol, if defined, indicates that the setrgid routine is available * to change the real gid of the current program. */ -#$d_setrgid HAS_SETRGID /**/ +/*#define HAS_SETRGID /**/ /* HAS_SETRUID: * This symbol, if defined, indicates that the setruid routine is available * to change the real uid of the current program. */ -#$d_setruid HAS_SETRUID /**/ +/*#define HAS_SETRUID /**/ /* HAS_SETSID: * This symbol, if defined, indicates that the setsid routine is * available to set the process group ID. */ -#$d_setsid HAS_SETSID /**/ +#define HAS_SETSID /**/ /* Shmat_t: * This symbol holds the return type of the shmat() system call. @@ -565,8 +541,8 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * but not always right so it should be emitted by the program only * when HAS_SHMAT_PROTOTYPE is not defined to avoid conflicting defs. */ -#define Shmat_t $shmattype /**/ -#$d_shmatprototype HAS_SHMAT_PROTOTYPE /**/ +#define Shmat_t void * /**/ +#define HAS_SHMAT_PROTOTYPE /**/ /* HAS_STRCHR: * This symbol is defined to indicate that the strchr()/strrchr() @@ -577,105 +553,105 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * This symbol is defined to indicate that the index()/rindex() * functions are available for string searching. */ -#$d_strchr HAS_STRCHR /**/ -#$d_index HAS_INDEX /**/ +#define HAS_STRCHR /**/ +/*#define HAS_INDEX /**/ /* HAS_STRCOLL: * This symbol, if defined, indicates that the strcoll routine is * available to compare strings using collating information. */ -#$d_strcoll HAS_STRCOLL /**/ +#define HAS_STRCOLL /**/ /* USE_STRUCT_COPY: * This symbol, if defined, indicates that this C compiler knows how * to copy structures. If undefined, you'll need to use a block copy * routine of some sort instead. */ -#$d_strctcpy USE_STRUCT_COPY /**/ +#define USE_STRUCT_COPY /**/ /* HAS_STRTOD: * This symbol, if defined, indicates that the strtod routine is * available to provide better numeric string conversion than atof(). */ -#$d_strtod HAS_STRTOD /**/ +#define HAS_STRTOD /**/ /* HAS_STRTOL: * This symbol, if defined, indicates that the strtol routine is available * to provide better numeric string conversion than atoi() and friends. */ -#$d_strtol HAS_STRTOL /**/ +#define HAS_STRTOL /**/ /* HAS_STRTOUL: * This symbol, if defined, indicates that the strtoul routine is * available to provide conversion of strings to unsigned long. */ -#$d_strtoul HAS_STRTOUL /**/ +#define HAS_STRTOUL /**/ /* HAS_STRXFRM: * This symbol, if defined, indicates that the strxfrm() routine is * available to transform strings. */ -#$d_strxfrm HAS_STRXFRM /**/ +#define HAS_STRXFRM /**/ /* HAS_SYMLINK: * This symbol, if defined, indicates that the symlink routine is available * to create symbolic links. */ -#$d_symlink HAS_SYMLINK /**/ +#define HAS_SYMLINK /**/ /* HAS_SYSCALL: * This symbol, if defined, indicates that the syscall routine is * available to call arbitrary system calls. If undefined, that's tough. */ -#$d_syscall HAS_SYSCALL /**/ +/*#define HAS_SYSCALL /**/ /* HAS_SYSCONF: * This symbol, if defined, indicates that sysconf() is available * to determine system related limits and options. */ -#$d_sysconf HAS_SYSCONF /**/ +#define HAS_SYSCONF /**/ /* HAS_SYSTEM: * This symbol, if defined, indicates that the system routine is * available to issue a shell command. */ -#$d_system HAS_SYSTEM /**/ +#define HAS_SYSTEM /**/ /* HAS_TCGETPGRP: * This symbol, if defined, indicates that the tcgetpgrp routine is * available to get foreground process group ID. */ -#$d_tcgetpgrp HAS_TCGETPGRP /**/ +#define HAS_TCGETPGRP /**/ /* HAS_TCSETPGRP: * This symbol, if defined, indicates that the tcsetpgrp routine is * available to set foreground process group ID. */ -#$d_tcsetpgrp HAS_TCSETPGRP /**/ +#define HAS_TCSETPGRP /**/ /* HAS_TRUNCATE: * This symbol, if defined, indicates that the truncate routine is * available to truncate files. */ -#$d_truncate HAS_TRUNCATE /**/ +/*#define HAS_TRUNCATE /**/ /* HAS_TZNAME: * This symbol, if defined, indicates that the tzname[] array is * available to access timezone names. */ -#$d_tzname HAS_TZNAME /**/ +#define HAS_TZNAME /**/ /* HAS_UMASK: * This symbol, if defined, indicates that the umask routine is * available to set and get the value of the file creation mask. */ -#$d_umask HAS_UMASK /**/ +#define HAS_UMASK /**/ /* HASVOLATILE: * This symbol, if defined, indicates that this C compiler knows about * the volatile declaration. */ -#$d_volatile HASVOLATILE /**/ +#define HASVOLATILE /**/ #ifndef HASVOLATILE #define volatile #endif @@ -683,31 +659,31 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un /* HAS_WAIT4: * This symbol, if defined, indicates that wait4() exists. */ -#$d_wait4 HAS_WAIT4 /**/ +#define HAS_WAIT4 /**/ /* HAS_WAITPID: * This symbol, if defined, indicates that the waitpid routine is * available to wait for child process. */ -#$d_waitpid HAS_WAITPID /**/ +#define HAS_WAITPID /**/ /* HAS_WCSTOMBS: * This symbol, if defined, indicates that the wcstombs routine is * available to convert wide character strings to multibyte strings. */ -#$d_wcstombs HAS_WCSTOMBS /**/ +#define HAS_WCSTOMBS /**/ /* HAS_WCTOMB: * This symbol, if defined, indicates that the wctomb routine is available * to covert a wide character to a multibyte. */ -#$d_wctomb HAS_WCTOMB /**/ +#define HAS_WCTOMB /**/ /* I_ARPA_INET: * This symbol, if defined, indicates to the C program that it should * include <arpa/inet.h> to get inet_addr and friends declarations. */ -#$i_arpainet I_ARPA_INET /**/ +#define I_ARPA_INET /**/ /* I_DBM: * This symbol, if defined, indicates that <dbm.h> exists and should @@ -717,8 +693,8 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * This symbol, if defined, indicates that <rpcsvc/dbm.h> exists and * should be included. */ -#$i_dbm I_DBM /**/ -#$i_rpcsvcdbm I_RPCSVC_DBM /**/ +/*#define I_DBM /**/ +/*#define I_RPCSVC_DBM /**/ /* I_DIRENT: * This symbol, if defined, indicates to the C program that it should @@ -736,166 +712,166 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * whether dirent is available or not. You should use this pseudo type to * portably declare your directory entries. */ -#$i_dirent I_DIRENT /**/ -#$d_dirnamlen DIRNAMLEN /**/ -#define Direntry_t $direntrytype +#define I_DIRENT /**/ +/*#define DIRNAMLEN /**/ +#define Direntry_t struct dirent /* I_DLFCN: * This symbol, if defined, indicates that <dlfcn.h> exists and should * be included. */ -#$i_dlfcn I_DLFCN /**/ +/*#define I_DLFCN /**/ /* I_FCNTL: * This manifest constant tells the C program to include <fcntl.h>. */ -#$i_fcntl I_FCNTL /**/ +#define I_FCNTL /**/ /* I_FLOAT: * This symbol, if defined, indicates to the C program that it should * include <float.h> to get definition of symbols like DBL_MAX or * DBL_MIN, i.e. machine dependent floating point values. */ -#$i_float I_FLOAT /**/ +#define I_FLOAT /**/ /* I_LIMITS: * This symbol, if defined, indicates to the C program that it should * include <limits.h> to get definition of symbols like WORD_BIT or * LONG_MAX, i.e. machine dependant limitations. */ -#$i_limits I_LIMITS /**/ +#define I_LIMITS /**/ /* I_LOCALE: * This symbol, if defined, indicates to the C program that it should * include <locale.h>. */ -#$i_locale I_LOCALE /**/ +#define I_LOCALE /**/ /* I_MATH: * This symbol, if defined, indicates to the C program that it should * include <math.h>. */ -#$i_math I_MATH /**/ +#define I_MATH /**/ /* I_MEMORY: * This symbol, if defined, indicates to the C program that it should * include <memory.h>. */ -#$i_memory I_MEMORY /**/ +/*#define I_MEMORY /**/ /* I_NDBM: * This symbol, if defined, indicates that <ndbm.h> exists and should * be included. */ -#$i_ndbm I_NDBM /**/ +/*#define I_NDBM /**/ /* I_NET_ERRNO: * This symbol, if defined, indicates that <net/errno.h> exists and * should be included. */ -#$i_neterrno I_NET_ERRNO /**/ +/*#define I_NET_ERRNO /**/ /* I_NETINET_IN: * This symbol, if defined, indicates to the C program that it should * include <netinet/in.h>. Otherwise, you may try <sys/in.h>. */ -#$i_niin I_NETINET_IN /**/ +#define I_NETINET_IN /**/ /* I_SFIO: * This symbol, if defined, indicates to the C program that it should * include <sfio.h>. */ -#$i_sfio I_SFIO /**/ +/*#define I_SFIO /**/ /* I_STDDEF: * This symbol, if defined, indicates that <stddef.h> exists and should * be included. */ -#$i_stddef I_STDDEF /**/ +#define I_STDDEF /**/ /* I_STDLIB: * This symbol, if defined, indicates that <stdlib.h> exists and should * be included. */ -#$i_stdlib I_STDLIB /**/ +#define I_STDLIB /**/ /* I_STRING: * This symbol, if defined, indicates to the C program that it should * include <string.h> (USG systems) instead of <strings.h> (BSD systems). */ -#$i_string I_STRING /**/ +#define I_STRING /**/ /* I_SYS_DIR: * This symbol, if defined, indicates to the C program that it should * include <sys/dir.h>. */ -#$i_sysdir I_SYS_DIR /**/ +/*#define I_SYS_DIR /**/ /* I_SYS_FILE: * This symbol, if defined, indicates to the C program that it should * include <sys/file.h> to get definition of R_OK and friends. */ -#$i_sysfile I_SYS_FILE /**/ +/*#define I_SYS_FILE /**/ /* I_SYS_IOCTL: * This symbol, if defined, indicates that <sys/ioctl.h> exists and should * be included. Otherwise, include <sgtty.h> or <termio.h>. */ -#$i_sysioctl I_SYS_IOCTL /**/ +#define I_SYS_IOCTL /**/ /* I_SYS_NDIR: * This symbol, if defined, indicates to the C program that it should * include <sys/ndir.h>. */ -#$i_sysndir I_SYS_NDIR /**/ +/*#define I_SYS_NDIR /**/ /* I_SYS_PARAM: * This symbol, if defined, indicates to the C program that it should * include <sys/param.h>. */ -#$i_sysparam I_SYS_PARAM /**/ +/*#define I_SYS_PARAM /**/ /* I_SYS_RESOURCE: * This symbol, if defined, indicates to the C program that it should * include <sys/resource.h>. */ -#$i_sysresrc I_SYS_RESOURCE /**/ +/*#define I_SYS_RESOURCE /**/ /* I_SYS_SELECT: * This symbol, if defined, indicates to the C program that it should * include <sys/select.h> in order to get definition of struct timeval. */ -#$i_sysselct I_SYS_SELECT /**/ +#define I_SYS_SELECT /**/ /* I_SYS_STAT: * This symbol, if defined, indicates to the C program that it should * include <sys/stat.h>. */ -#$i_sysstat I_SYS_STAT /**/ +#define I_SYS_STAT /**/ /* I_SYS_TIMES: * This symbol, if defined, indicates to the C program that it should * include <sys/times.h>. */ -#$i_systimes I_SYS_TIMES /**/ +#define I_SYS_TIMES /**/ /* I_SYS_TYPES: * This symbol, if defined, indicates to the C program that it should * include <sys/types.h>. */ -#$i_systypes I_SYS_TYPES /**/ +#define I_SYS_TYPES /**/ /* I_SYS_UN: * This symbol, if defined, indicates to the C program that it should * include <sys/un.h> to get UNIX domain socket definitions. */ -#$i_sysun I_SYS_UN /**/ +/*#define I_SYS_UN /**/ /* I_SYS_WAIT: * This symbol, if defined, indicates to the C program that it should * include <sys/wait.h>. */ -#$i_syswait I_SYS_WAIT /**/ +#define I_SYS_WAIT /**/ /* I_TERMIO: * This symbol, if defined, indicates that the program should include @@ -913,21 +889,21 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * <sgtty.h> rather than <termio.h>. There are also differences in * the ioctl() calls that depend on the value of this symbol. */ -#$i_termio I_TERMIO /**/ -#$i_termios I_TERMIOS /**/ -#$i_sgtty I_SGTTY /**/ +/*#define I_TERMIO /**/ +#define I_TERMIOS /**/ +/*#define I_SGTTY /**/ /* I_UNISTD: * This symbol, if defined, indicates to the C program that it should * include <unistd.h>. */ -#$i_unistd I_UNISTD /**/ +#define I_UNISTD /**/ /* I_UTIME: * This symbol, if defined, indicates to the C program that it should * include <utime.h>. */ -#$i_utime I_UTIME /**/ +#define I_UTIME /**/ /* I_VALUES: * This symbol, if defined, indicates to the C program that it should @@ -935,7 +911,7 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * MAXLONG, i.e. machine dependant limitations. Probably, you * should use <limits.h> instead, if it is available. */ -#$i_values I_VALUES /**/ +#define I_VALUES /**/ /* I_STDARG: * This symbol, if defined, indicates that <stdarg.h> exists and should @@ -945,14 +921,14 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * This symbol, if defined, indicates to the C program that it should * include <varargs.h>. */ -#$i_stdarg I_STDARG /**/ -#$i_varargs I_VARARGS /**/ +#define I_STDARG /**/ +/*#define I_VARARGS /**/ /* I_VFORK: * This symbol, if defined, indicates to the C program that it should * include vfork.h. */ -#$i_vfork I_VFORK /**/ +/*#define I_VFORK /**/ /* CAN_PROTOTYPE: * If defined, this macro indicates that the C compiler can handle @@ -965,7 +941,7 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * * int main _((int argc, char *argv[])); */ -#$prototype CAN_PROTOTYPE /**/ +#define CAN_PROTOTYPE /**/ #ifdef CAN_PROTOTYPE #define _(args) args #else @@ -979,19 +955,19 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * /bin/pdksh, /bin/ash, /bin/bash, or even something such as * D:/bin/sh.exe. */ -#define SH_PATH "$sh" /**/ +#define SH_PATH "/system/ported/command_library/bash.pm" /**/ /* STDCHAR: * This symbol is defined to be the type of char used in stdio.h. * It has the values "unsigned char" or "char". */ -#define STDCHAR $stdchar /**/ +#define STDCHAR unsigned char /**/ /* CROSSCOMPILE: * This symbol, if defined, signifies that we our * build process is a cross-compilation. */ -#$crosscompile CROSSCOMPILE /**/ +/*#define CROSSCOMPILE /**/ /* INTSIZE: * This symbol contains the value of sizeof(int) so that the C @@ -1005,9 +981,9 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * This symbol contains the value of sizeof(short) so that the C * preprocessor can make decisions based on it. */ -#define INTSIZE $intsize /**/ -#define LONGSIZE $longsize /**/ -#define SHORTSIZE $shortsize /**/ +#define INTSIZE 4 /**/ +#define LONGSIZE 4 /**/ +#define SHORTSIZE 2 /**/ /* MULTIARCH: * This symbol, if defined, signifies that the build @@ -1016,18 +992,18 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * example with the NeXT "fat" binaries that contain executables * for several CPUs. */ -#$multiarch MULTIARCH /**/ +/*#define MULTIARCH /**/ /* HAS_QUAD: * This symbol, if defined, tells that there's a 64-bit integer type, * Quad_t, and its unsigned counterpar, Uquad_t. QUADKIND will be one * of QUAD_IS_INT, QUAD_IS_LONG, QUAD_IS_LONG_LONG, or QUAD_IS_INT64_T. */ -#$d_quad HAS_QUAD /**/ +/*#define HAS_QUAD /**/ #ifdef HAS_QUAD -# define Quad_t $quadtype /**/ -# define Uquad_t $uquadtype /**/ -# define QUADKIND $quadkind /**/ +# define Quad_t _error_ /**/ +# define Uquad_t _error_ /**/ +# define QUADKIND _error_ /**/ # define QUAD_IS_INT 1 # define QUAD_IS_LONG 2 # define QUAD_IS_LONG_LONG 3 @@ -1038,32 +1014,32 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * This symbol, if defined, indicates that the accessx routine is * available to do extended access checks. */ -#$d_accessx HAS_ACCESSX /**/ +/*#define HAS_ACCESSX /**/ /* HAS_EACCESS: * This symbol, if defined, indicates that the eaccess routine is * available to do extended access checks. */ -#$d_eaccess HAS_EACCESS /**/ +/*#define HAS_EACCESS /**/ /* I_SYS_ACCESS: * This symbol, if defined, indicates to the C program that it should * include <sys/access.h>. */ -#$i_sysaccess I_SYS_ACCESS /**/ +/*#define I_SYS_ACCESS /**/ /* I_SYS_SECURITY: * This symbol, if defined, indicates to the C program that it should * include <sys/security.h>. */ -#$i_syssecrt I_SYS_SECURITY /**/ +/*#define I_SYS_SECURITY /**/ /* OSNAME: * This symbol contains the name of the operating system, as determined * by Configure. You shouldn't rely on it too much; the specific * feature tests from Configure are generally more reliable. */ -#define OSNAME "$osname" /**/ +#define OSNAME "VOS" /**/ /* MEM_ALIGNBYTES: * This symbol contains the number of bytes required to align a @@ -1073,13 +1049,13 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un #if defined(CROSSCOMPILE) || defined(MULTIARCH) # define MEM_ALIGNBYTES 8 #else -#define MEM_ALIGNBYTES $alignbytes +#define MEM_ALIGNBYTES 8 #endif /* ARCHLIB: * This variable, if defined, holds the name of the directory in * which the user wants to put architecture-dependent public - * library files for $package. It is most often a local directory + * library files for perl5. It is most often a local directory * such as /usr/local/lib. Programs using this variable must be * prepared to deal with filename expansion. If ARCHLIB is the * same as PRIVLIB, it is not defined, since presumably the @@ -1089,8 +1065,8 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * This symbol contains the ~name expanded version of ARCHLIB, to be used * in programs that are not prepared to deal with ~ expansion at run-time. */ -#$d_archlib ARCHLIB "$archlib" /**/ -#$d_archlib ARCHLIB_EXP "$archlibexp" /**/ +/*#define ARCHLIB "" /**/ +/*#define ARCHLIB_EXP "" /**/ /* ARCHNAME: * This symbol holds a string representing the architecture name. @@ -1098,19 +1074,19 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * where library files may be held under a private library, for * instance. */ -#define ARCHNAME "$archname" /**/ +#define ARCHNAME "vos" /**/ /* HAS_ATOLF: * This symbol, if defined, indicates that the atolf routine is * available to convert strings into long doubles. */ -#$d_atolf HAS_ATOLF /**/ +/*#define HAS_ATOLF /**/ /* HAS_ATOLL: * This symbol, if defined, indicates that the atoll routine is * available to convert strings into long longs. */ -#$d_atoll HAS_ATOLL /**/ +/*#define HAS_ATOLL /**/ /* BIN: * This symbol holds the path of the bin directory where the package will @@ -1120,8 +1096,8 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * This symbol is the filename expanded version of the BIN symbol, for * programs that do not want to deal with that at run-time. */ -#define BIN "$bin" /**/ -#define BIN_EXP "$binexp" /**/ +#define BIN "/system/ported/command_library" /**/ +#define BIN_EXP "/system/ported/command_library" /**/ /* PERL_BINCOMPAT_5005: * This symbol, if defined, indicates that this version of Perl should be @@ -1129,7 +1105,7 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * that use features like threads and multiplicity it is always $undef * for those versions. */ -#$d_bincompat5005 PERL_BINCOMPAT_5005 /**/ +/*#define PERL_BINCOMPAT_5005 /**/ /* BYTEORDER: * This symbol holds the hexadecimal constant defined in byteorder, @@ -1171,7 +1147,7 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un # define BYTEORDER 0x4321 # endif #else -#define BYTEORDER 0x$byteorder /* large digits for MSB */ +#define BYTEORDER 0x4321 /* large digits for MSB */ #endif /* NeXT */ /* CAT2: @@ -1180,12 +1156,12 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un /* STRINGIFY: * This macro surrounds its token with double quotes. */ -#if $cpp_stuff == 1 +#if 42 == 1 #define CAT2(a,b) a/**/b #define STRINGIFY(a) "a" /* If you can get stringification with catify, tell me how! */ #endif -#if $cpp_stuff == 42 +#if 42 == 42 #define PeRl_CaTiFy(a, b) a ## b #define PeRl_StGiFy(a) #a /* the additional level of indirection enables these macros to be @@ -1194,7 +1170,7 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un #define StGiFy(a) PeRl_StGiFy(a) #define STRINGIFY(a) PeRl_StGiFy(a) #endif -#if $cpp_stuff != 1 && $cpp_stuff != 42 +#if 42 != 1 && 42 != 42 # include "Bletch: How does this C preprocessor catenate tokens?" #endif @@ -1223,23 +1199,23 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * This symbol is intended to be used along with CPPRUN in the same manner * symbol CPPMINUS is used with CPPSTDIN. It contains either "-" or "". */ -#define CPPSTDIN "$cppstdin" -#define CPPMINUS "$cppminus" -#define CPPRUN "$cpprun" -#define CPPLAST "$cpplast" +#define CPPSTDIN "cc -E" +#define CPPMINUS "-" +#define CPPRUN "cc -E -" +#define CPPLAST "-" /* HAS_ACCESS: * This manifest constant lets the C program know that the access() * system call is available to check for accessibility using real UID/GID. * (always present on UNIX.) */ -#$d_access HAS_ACCESS /**/ +#define HAS_ACCESS /**/ /* CASTI32: * This symbol is defined if the C compiler can cast negative * or large floating point numbers to 32-bit ints. */ -#$d_casti32 CASTI32 /**/ +/*#define CASTI32 /**/ /* CASTNEGFLOAT: * This symbol is defined if the C compiler can cast negative @@ -1253,14 +1229,14 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * 2 = couldn't cast >= 0x80000000 * 4 = couldn't cast in argument expression list */ -#$d_castneg CASTNEGFLOAT /**/ -#define CASTFLAGS $castflags /**/ +#define CASTNEGFLOAT /**/ +#define CASTFLAGS 0 /**/ /* VOID_CLOSEDIR: * This symbol, if defined, indicates that the closedir() routine * does not return a value. */ -#$d_void_closedir VOID_CLOSEDIR /**/ +/*#define VOID_CLOSEDIR /**/ /* HAS_CSH: * This symbol, if defined, indicates that the C-shell exists. @@ -1268,9 +1244,9 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un /* CSH: * This symbol, if defined, contains the full pathname of csh. */ -#$d_csh HAS_CSH /**/ +#define HAS_CSH /**/ #ifdef HAS_CSH -#define CSH "$full_csh" /**/ +#define CSH "/system/ported/command_library/bash.pm" /**/ #endif /* DLSYM_NEEDS_UNDERSCORE: @@ -1279,7 +1255,7 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * makes sense if you *have* dlsym, which we will presume is the * case if you're using dl_dlopen.xs. */ -#$d_dlsymun DLSYM_NEEDS_UNDERSCORE /**/ +/*#define DLSYM_NEEDS_UNDERSCORE /**/ /* HAS_DRAND48_PROTO: * This symbol, if defined, indicates that the system provides @@ -1287,91 +1263,91 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * to the program to supply one. A good guess is * extern double drand48 _((void)); */ -#$d_drand48proto HAS_DRAND48_PROTO /**/ +/*#define HAS_DRAND48_PROTO /**/ /* HAS_ENDGRENT: * This symbol, if defined, indicates that the getgrent routine is * available for finalizing sequential access of the group database. */ -#$d_endgrent HAS_ENDGRENT /**/ +/*#define HAS_ENDGRENT /**/ /* HAS_ENDHOSTENT: * This symbol, if defined, indicates that the endhostent() routine is * available to close whatever was being used for host queries. */ -#$d_endhent HAS_ENDHOSTENT /**/ +#define HAS_ENDHOSTENT /**/ /* HAS_ENDNETENT: * This symbol, if defined, indicates that the endnetent() routine is * available to close whatever was being used for network queries. */ -#$d_endnent HAS_ENDNETENT /**/ +#define HAS_ENDNETENT /**/ /* HAS_ENDPROTOENT: * This symbol, if defined, indicates that the endprotoent() routine is * available to close whatever was being used for protocol queries. */ -#$d_endpent HAS_ENDPROTOENT /**/ +#define HAS_ENDPROTOENT /**/ /* HAS_ENDPWENT: * This symbol, if defined, indicates that the getgrent routine is * available for finalizing sequential access of the passwd database. */ -#$d_endpwent HAS_ENDPWENT /**/ +/*#define HAS_ENDPWENT /**/ /* HAS_ENDSERVENT: * This symbol, if defined, indicates that the endservent() routine is * available to close whatever was being used for service queries. */ -#$d_endsent HAS_ENDSERVENT /**/ +#define HAS_ENDSERVENT /**/ /* HAS_FD_SET: * This symbol, when defined, indicates presence of the fd_set typedef * in <sys/types.h> */ -#$d_fd_set HAS_FD_SET /**/ +/*#define HAS_FD_SET /**/ /* FLEXFILENAMES: * This symbol, if defined, indicates that the system supports filenames * longer than 14 characters. */ -#$d_flexfnam FLEXFILENAMES /**/ +#define FLEXFILENAMES /**/ /* HAS_FPOS64_T: * This symbol will be defined if the C compiler supports fpos64_t. */ -#$d_fpos64_t HAS_FPOS64_T /**/ +/*#define HAS_FPOS64_T /**/ /* HAS_FREXPL: * This symbol, if defined, indicates that the frexpl routine is * available to break a long double floating-point number into * a normalized fraction and an integral power of 2. */ -#$d_frexpl HAS_FREXPL /**/ +/*#define HAS_FREXPL /**/ /* HAS_STRUCT_FS_DATA: * This symbol, if defined, indicates that the struct fs_data * to do statfs() is supported. */ -#$d_fs_data_s HAS_STRUCT_FS_DATA /**/ +/*#define HAS_STRUCT_FS_DATA /**/ /* HAS_FSEEKO: * This symbol, if defined, indicates that the fseeko routine is * available to fseek beyond 32 bits (useful for ILP32 hosts). */ -#$d_fseeko HAS_FSEEKO /**/ +/*#define HAS_FSEEKO /**/ /* HAS_FSTATFS: * This symbol, if defined, indicates that the fstatfs routine is * available to stat filesystems by file descriptors. */ -#$d_fstatfs HAS_FSTATFS /**/ +/*#define HAS_FSTATFS /**/ /* HAS_FTELLO: * This symbol, if defined, indicates that the ftello routine is * available to ftell beyond 32 bits (useful for ILP32 hosts). */ -#$d_ftello HAS_FTELLO /**/ +/*#define HAS_FTELLO /**/ /* Gconvert: * This preprocessor macro is defined to convert a floating point @@ -1388,49 +1364,49 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * d_Gconvert='sprintf((b),"%.*g",(n),(x))' * The last two assume trailing zeros should not be kept. */ -#define Gconvert(x,n,t,b) $d_Gconvert +#define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x)) /* HAS_GETCWD: * This symbol, if defined, indicates that the getcwd routine is * available to get the current working directory. */ -#$d_getcwd HAS_GETCWD /**/ +#define HAS_GETCWD /**/ /* HAS_GETESPWNAM: * This symbol, if defined, indicates that the getespwnam system call is * available to retrieve enchanced (shadow) password entries by name. */ -#$d_getespwnam HAS_GETESPWNAM /**/ +/*#define HAS_GETESPWNAM /**/ /* HAS_GETFSSTAT: * This symbol, if defined, indicates that the getfsstat routine is * available to stat filesystems in bulk. */ -#$d_getfsstat HAS_GETFSSTAT /**/ +/*#define HAS_GETFSSTAT /**/ /* HAS_GETGRENT: * This symbol, if defined, indicates that the getgrent routine is * available for sequential access of the group database. */ -#$d_getgrent HAS_GETGRENT /**/ +/*#define HAS_GETGRENT /**/ /* HAS_GETHOSTBYADDR: * This symbol, if defined, indicates that the gethostbyaddr() routine is * available to look up hosts by their IP addresses. */ -#$d_gethbyaddr HAS_GETHOSTBYADDR /**/ +#define HAS_GETHOSTBYADDR /**/ /* HAS_GETHOSTBYNAME: * This symbol, if defined, indicates that the gethostbyname() routine is * available to look up host names in some data base or other. */ -#$d_gethbyname HAS_GETHOSTBYNAME /**/ +#define HAS_GETHOSTBYNAME /**/ /* HAS_GETHOSTENT: * This symbol, if defined, indicates that the gethostent() routine is * available to look up host names in some data base or another. */ -#$d_gethent HAS_GETHOSTENT /**/ +#define HAS_GETHOSTENT /**/ /* HAS_GETHOSTNAME: * This symbol, if defined, indicates that the C program may use the @@ -1454,11 +1430,11 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * contents of PHOSTNAME as a command to feed to the popen() routine * to derive the host name. */ -#$d_gethname HAS_GETHOSTNAME /**/ -#$d_uname HAS_UNAME /**/ -#$d_phostname HAS_PHOSTNAME /**/ +#define HAS_GETHOSTNAME /**/ +#define HAS_UNAME /**/ +/*#define HAS_PHOSTNAME /**/ #ifdef HAS_PHOSTNAME -#define PHOSTNAME "$aphostname" /* How to get the host name */ +#define PHOSTNAME "" /* How to get the host name */ #endif /* HAS_GETHOST_PROTOS: @@ -1467,37 +1443,37 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * gethostbyaddr(). Otherwise, it is up to the program to guess * them. See netdbtype.U for probing for various Netdb_xxx_t types. */ -#$d_gethostprotos HAS_GETHOST_PROTOS /**/ +#define HAS_GETHOST_PROTOS /**/ /* HAS_GETMNT: * This symbol, if defined, indicates that the getmnt routine is * available to get filesystem mount info by filename. */ -#$d_getmnt HAS_GETMNT /**/ +/*#define HAS_GETMNT /**/ /* HAS_GETMNTENT: * This symbol, if defined, indicates that the getmntent routine is * available to iterate through mounted file systems to get their info. */ -#$d_getmntent HAS_GETMNTENT /**/ +/*#define HAS_GETMNTENT /**/ /* HAS_GETNETBYADDR: * This symbol, if defined, indicates that the getnetbyaddr() routine is * available to look up networks by their IP addresses. */ -#$d_getnbyaddr HAS_GETNETBYADDR /**/ +#define HAS_GETNETBYADDR /**/ /* HAS_GETNETBYNAME: * This symbol, if defined, indicates that the getnetbyname() routine is * available to look up networks by their names. */ -#$d_getnbyname HAS_GETNETBYNAME /**/ +#define HAS_GETNETBYNAME /**/ /* HAS_GETNETENT: * This symbol, if defined, indicates that the getnetent() routine is * available to look up network names in some data base or another. */ -#$d_getnent HAS_GETNETENT /**/ +#define HAS_GETNETENT /**/ /* HAS_GETNET_PROTOS: * This symbol, if defined, indicates that <netdb.h> includes @@ -1505,13 +1481,13 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * getnetbyaddr(). Otherwise, it is up to the program to guess * them. See netdbtype.U for probing for various Netdb_xxx_t types. */ -#$d_getnetprotos HAS_GETNET_PROTOS /**/ +#define HAS_GETNET_PROTOS /**/ /* HAS_GETPROTOENT: * This symbol, if defined, indicates that the getprotoent() routine is * available to look up protocols in some data base or another. */ -#$d_getpent HAS_GETPROTOENT /**/ +#define HAS_GETPROTOENT /**/ /* HAS_GETPROTOBYNAME: * This symbol, if defined, indicates that the getprotobyname() @@ -1521,8 +1497,8 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * This symbol, if defined, indicates that the getprotobynumber() * routine is available to look up protocols by their number. */ -#$d_getpbyname HAS_GETPROTOBYNAME /**/ -#$d_getpbynumber HAS_GETPROTOBYNUMBER /**/ +#define HAS_GETPROTOBYNAME /**/ +#define HAS_GETPROTOBYNUMBER /**/ /* HAS_GETPROTO_PROTOS: * This symbol, if defined, indicates that <netdb.h> includes @@ -1530,26 +1506,26 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * getprotobyaddr(). Otherwise, it is up to the program to guess * them. See netdbtype.U for probing for various Netdb_xxx_t types. */ -#$d_getprotoprotos HAS_GETPROTO_PROTOS /**/ +#define HAS_GETPROTO_PROTOS /**/ /* HAS_GETPRPWNAM: * This symbol, if defined, indicates that the getprpwnam system call is * available to retrieve protected (shadow) password entries by name. */ -#$d_getprpwnam HAS_GETPRPWNAM /**/ +/*#define HAS_GETPRPWNAM /**/ /* HAS_GETPWENT: * This symbol, if defined, indicates that the getpwent routine is * available for sequential access of the passwd database. * If this is not available, the older getpw() function may be available. */ -#$d_getpwent HAS_GETPWENT /**/ +/*#define HAS_GETPWENT /**/ /* HAS_GETSERVENT: * This symbol, if defined, indicates that the getservent() routine is * available to look up network services in some data base or another. */ -#$d_getsent HAS_GETSERVENT /**/ +#define HAS_GETSERVENT /**/ /* HAS_GETSERV_PROTOS: * This symbol, if defined, indicates that <netdb.h> includes @@ -1557,13 +1533,13 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * getservbyaddr(). Otherwise, it is up to the program to guess * them. See netdbtype.U for probing for various Netdb_xxx_t types. */ -#$d_getservprotos HAS_GETSERV_PROTOS /**/ +#define HAS_GETSERV_PROTOS /**/ /* HAS_GETSPNAM: * This symbol, if defined, indicates that the getspnam system call is * available to retrieve SysV shadow password entries by name. */ -#$d_getspnam HAS_GETSPNAM /**/ +/*#define HAS_GETSPNAM /**/ /* HAS_GETSERVBYNAME: * This symbol, if defined, indicates that the getservbyname() @@ -1573,14 +1549,14 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * This symbol, if defined, indicates that the getservbyport() * routine is available to look up services by their port. */ -#$d_getsbyname HAS_GETSERVBYNAME /**/ -#$d_getsbyport HAS_GETSERVBYPORT /**/ +#define HAS_GETSERVBYNAME /**/ +#define HAS_GETSERVBYPORT /**/ /* HAS_GNULIBC: * This symbol, if defined, indicates to the C program that * the GNU C library is being used. */ -#$d_gnulibc HAS_GNULIBC /**/ +/*#define HAS_GNULIBC /**/ #if defined(HAS_GNULIBC) && !defined(_GNU_SOURCE) # define _GNU_SOURCE #endif @@ -1588,7 +1564,7 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * This symbol, if defined, indicates that the hasmntopt routine is * available to query the mount options of file systems. */ -#$d_hasmntopt HAS_HASMNTOPT /**/ +/*#define HAS_HASMNTOPT /**/ /* HAS_HTONL: * This symbol, if defined, indicates that the htonl() routine (and @@ -1610,48 +1586,48 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * friends htonl() htons() ntohl()) are available to do network * order byte swapping. */ -#$d_htonl HAS_HTONL /**/ -#$d_htonl HAS_HTONS /**/ -#$d_htonl HAS_NTOHL /**/ -#$d_htonl HAS_NTOHS /**/ +#define HAS_HTONL /**/ +#define HAS_HTONS /**/ +#define HAS_NTOHL /**/ +#define HAS_NTOHS /**/ /* HAS_ICONV: * This symbol, if defined, indicates that the iconv routine is * available to do character set conversions. */ -#$d_iconv HAS_ICONV /**/ +/*#define HAS_ICONV /**/ /* HAS_INT64_T: * This symbol will defined if the C compiler supports int64_t. * Usually the <inttypes.h> needs to be included, but sometimes * <sys/types.h> is enough. */ -#$d_int64_t HAS_INT64_T /**/ +/*#define HAS_INT64_T /**/ /* HAS_ISASCII: * This manifest constant lets the C program know that isascii * is available. */ -#$d_isascii HAS_ISASCII /**/ +#define HAS_ISASCII /**/ /* HAS_ISNAN: * This symbol, if defined, indicates that the isnan routine is * available to check whether a double is a NaN. */ -#$d_isnan HAS_ISNAN /**/ +/*#define HAS_ISNAN /**/ /* HAS_ISNANL: * This symbol, if defined, indicates that the isnanl routine is * available to check whether a long double is a NaN. */ -#$d_isnanl HAS_ISNANL /**/ +/*#define HAS_ISNANL /**/ /* HAS_LCHOWN: * This symbol, if defined, indicates that the lchown routine is * available to operate on a symbolic link (instead of following the * link). */ -#$d_lchown HAS_LCHOWN /**/ +/*#define HAS_LCHOWN /**/ /* HAS_LDBL_DIG: * This symbol, if defined, indicates that this system's <float.h> @@ -1659,7 +1635,7 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * of significant digits in a long double precision number. Unlike * for DBL_DIG, there's no good guess for LDBL_DIG if it is undefined. */ -#$d_ldbl_dig HAS_LDBL_DIG /* */ +#define HAS_LDBL_DIG /* */ /* HAS_LONG_DOUBLE: * This symbol will be defined if the C compiler supports long @@ -1670,9 +1646,9 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * C preprocessor can make decisions based on it. It is only * defined if the system supports long doubles. */ -#$d_longdbl HAS_LONG_DOUBLE /**/ +#define HAS_LONG_DOUBLE /**/ #ifdef HAS_LONG_DOUBLE -#define LONG_DOUBLESIZE $longdblsize /**/ +#define LONG_DOUBLESIZE 8 /**/ #endif /* HAS_LONG_LONG: @@ -1683,9 +1659,9 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * C preprocessor can make decisions based on it. It is only * defined if the system supports long long. */ -#$d_longlong HAS_LONG_LONG /**/ +/*#define HAS_LONG_LONG /**/ #ifdef HAS_LONG_LONG -#define LONGLONGSIZE $longlongsize /**/ +#define LONGLONGSIZE _error_ /**/ #endif /* HAS_LSEEK_PROTO: @@ -1694,39 +1670,39 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * to the program to supply one. A good guess is * extern off_t lseek(int, off_t, int); */ -#$d_lseekproto HAS_LSEEK_PROTO /**/ +#define HAS_LSEEK_PROTO /**/ /* HAS_MADVISE: * This symbol, if defined, indicates that the madvise system call is * available to map a file into memory. */ -#$d_madvise HAS_MADVISE /**/ +/*#define HAS_MADVISE /**/ /* HAS_MEMCHR: * This symbol, if defined, indicates that the memchr routine is available * to locate characters within a C string. */ -#$d_memchr HAS_MEMCHR /**/ +#define HAS_MEMCHR /**/ /* HAS_MKDTEMP: * This symbol, if defined, indicates that the mkdtemp routine is * available to exclusively create a uniquely named temporary directory. */ -#$d_mkdtemp HAS_MKDTEMP /**/ +/*#define HAS_MKDTEMP /**/ /* HAS_MKSTEMP: * This symbol, if defined, indicates that the mkstemp routine is * available to exclusively create and open a uniquely named * temporary file. */ -#$d_mkstemp HAS_MKSTEMP /**/ +/*#define HAS_MKSTEMP /**/ /* HAS_MKSTEMPS: * This symbol, if defined, indicates that the mkstemps routine is * available to excluslvely create and open a uniquely named * (with a suffix) temporary file. */ -#$d_mkstemps HAS_MKSTEMPS /**/ +/*#define HAS_MKSTEMPS /**/ /* HAS_MMAP: * This symbol, if defined, indicates that the mmap system call is @@ -1737,38 +1713,38 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * (and simultaneously the type of the first argument). * Usually set to 'void *' or 'cadd_t'. */ -#$d_mmap HAS_MMAP /**/ -#define Mmap_t $mmaptype /**/ +#define HAS_MMAP /**/ +#define Mmap_t void * /**/ /* HAS_MODFL: * This symbol, if defined, indicates that the modfl routine is * available to split a long double x into a fractional part f and * an integer part i such that |f| < 1.0 and (f + i) = x. */ -#$d_modfl HAS_MODFL /**/ +/*#define HAS_MODFL /**/ /* HAS_MPROTECT: * This symbol, if defined, indicates that the mprotect system call is * available to modify the access protection of a memory mapped file. */ -#$d_mprotect HAS_MPROTECT /**/ +/*#define HAS_MPROTECT /**/ /* HAS_MSG: * This symbol, if defined, indicates that the entire msg*(2) library is * supported (IPC mechanism based on message queues). */ -#$d_msg HAS_MSG /**/ +/*#define HAS_MSG /**/ /* HAS_OFF64_T: * This symbol will be defined if the C compiler supports off64_t. */ -#$d_off64_t HAS_OFF64_T /**/ +/*#define HAS_OFF64_T /**/ /* HAS_OPEN3: * This manifest constant lets the C program know that the three * argument form of open(2) is available. */ -#$d_open3 HAS_OPEN3 /**/ +#define HAS_OPEN3 /**/ /* OLD_PTHREAD_CREATE_JOINABLE: * This symbol, if defined, indicates how to create pthread @@ -1778,7 +1754,7 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * If defined, known values are PTHREAD_CREATE_UNDETACHED * and __UNDETACHED. */ -#$d_old_pthread_create_joinable OLD_PTHREAD_CREATE_JOINABLE $old_pthread_create_joinable /**/ +/*#define OLD_PTHREAD_CREATE_JOINABLE /**/ /* HAS_PTHREAD_YIELD: * This symbol, if defined, indicates that the pthread_yield @@ -1795,9 +1771,9 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * routine is available to yield the execution of the current * thread. sched_yield is preferable to pthread_yield. */ -#$d_pthread_yield HAS_PTHREAD_YIELD /**/ -#define SCHED_YIELD $sched_yield /**/ -#$d_sched_yield HAS_SCHED_YIELD /**/ +/*#define HAS_PTHREAD_YIELD /**/ +#define SCHED_YIELD /**/ +/*#define HAS_SCHED_YIELD /**/ /* HAS_SAFE_BCOPY: * This symbol, if defined, indicates that the bcopy routine is available @@ -1805,7 +1781,7 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * probably use memmove() or memcpy(). If neither is defined, roll your * own version. */ -#$d_safebcpy HAS_SAFE_BCOPY /**/ +/*#define HAS_SAFE_BCOPY /**/ /* HAS_SAFE_MEMCPY: * This symbol, if defined, indicates that the memcpy routine is available @@ -1813,94 +1789,94 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * probably use memmove() or memcpy(). If neither is defined, roll your * own version. */ -#$d_safemcpy HAS_SAFE_MEMCPY /**/ +/*#define HAS_SAFE_MEMCPY /**/ /* HAS_SANE_MEMCMP: * This symbol, if defined, indicates that the memcmp routine is available * and can be used to compare relative magnitudes of chars with their high * bits set. If it is not defined, roll your own version. */ -#$d_sanemcmp HAS_SANE_MEMCMP /**/ +#define HAS_SANE_MEMCMP /**/ /* HAS_SEM: * This symbol, if defined, indicates that the entire sem*(2) library is * supported. */ -#$d_sem HAS_SEM /**/ +/*#define HAS_SEM /**/ /* HAS_SETGRENT: * This symbol, if defined, indicates that the setgrent routine is * available for initializing sequential access of the group database. */ -#$d_setgrent HAS_SETGRENT /**/ +/*#define HAS_SETGRENT /**/ /* HAS_SETGROUPS: * This symbol, if defined, indicates that the setgroups() routine is * available to set the list of process groups. If unavailable, multiple * groups are probably not supported. */ -#$d_setgrps HAS_SETGROUPS /**/ +/*#define HAS_SETGROUPS /**/ /* HAS_SETHOSTENT: * This symbol, if defined, indicates that the sethostent() routine is * available. */ -#$d_sethent HAS_SETHOSTENT /**/ +#define HAS_SETHOSTENT /**/ /* HAS_SETNETENT: * This symbol, if defined, indicates that the setnetent() routine is * available. */ -#$d_setnent HAS_SETNETENT /**/ +#define HAS_SETNETENT /**/ /* HAS_SETPROTOENT: * This symbol, if defined, indicates that the setprotoent() routine is * available. */ -#$d_setpent HAS_SETPROTOENT /**/ +#define HAS_SETPROTOENT /**/ /* HAS_SETPROCTITLE: * This symbol, if defined, indicates that the setproctitle routine is * available to set process title. */ -#$d_setproctitle HAS_SETPROCTITLE /**/ +/*#define HAS_SETPROCTITLE /**/ /* HAS_SETPWENT: * This symbol, if defined, indicates that the setpwent routine is * available for initializing sequential access of the passwd database. */ -#$d_setpwent HAS_SETPWENT /**/ +/*#define HAS_SETPWENT /**/ /* HAS_SETSERVENT: * This symbol, if defined, indicates that the setservent() routine is * available. */ -#$d_setsent HAS_SETSERVENT /**/ +#define HAS_SETSERVENT /**/ /* HAS_SETVBUF: * This symbol, if defined, indicates that the setvbuf routine is * available to change buffering on an open stdio stream. * to a line-buffered mode. */ -#$d_setvbuf HAS_SETVBUF /**/ +#define HAS_SETVBUF /**/ /* USE_SFIO: * This symbol, if defined, indicates that sfio should * be used. */ -#$d_sfio USE_SFIO /**/ +/*#define USE_SFIO /**/ /* HAS_SHM: * This symbol, if defined, indicates that the entire shm*(2) library is * supported. */ -#$d_shm HAS_SHM /**/ +/*#define HAS_SHM /**/ /* HAS_SIGACTION: * This symbol, if defined, indicates that Vr4's sigaction() routine * is available. */ -#$d_sigaction HAS_SIGACTION /**/ +#define HAS_SIGACTION /**/ /* HAS_SIGSETJMP: * This variable indicates to the C program that the sigsetjmp() @@ -1922,7 +1898,7 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * traditional longjmp() if siglongjmp isn't available. * See HAS_SIGSETJMP. */ -#$d_sigsetjmp HAS_SIGSETJMP /**/ +#define HAS_SIGSETJMP /**/ #ifdef HAS_SIGSETJMP #define Sigjmp_buf sigjmp_buf #define Sigsetjmp(buf,save_mask) sigsetjmp((buf),(save_mask)) @@ -1971,33 +1947,33 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * Checking just with #ifdef might not be enough because this symbol * has been known to be an enum. */ -#$d_socket HAS_SOCKET /**/ -#$d_sockpair HAS_SOCKETPAIR /**/ -#$d_msg_ctrunc HAS_MSG_CTRUNC /**/ -#$d_msg_dontroute HAS_MSG_DONTROUTE /**/ -#$d_msg_oob HAS_MSG_OOB /**/ -#$d_msg_peek HAS_MSG_PEEK /**/ -#$d_msg_proxy HAS_MSG_PROXY /**/ -#$d_scm_rights HAS_SCM_RIGHTS /**/ +#define HAS_SOCKET /**/ +/*#define HAS_SOCKETPAIR /**/ +/*#define HAS_MSG_CTRUNC /**/ +/*#define HAS_MSG_DONTROUTE /**/ +/*#define HAS_MSG_OOB /**/ +/*#define HAS_MSG_PEEK /**/ +/*#define HAS_MSG_PROXY /**/ +/*#define HAS_SCM_RIGHTS /**/ /* HAS_SOCKS5_INIT: * This symbol, if defined, indicates that the socks5_init routine is * available to initialize SOCKS 5. */ -#$d_socks5_init HAS_SOCKS5_INIT /**/ +/*#define HAS_SOCKS5_INIT /**/ /* HAS_SQRTL: * This symbol, if defined, indicates that the sqrtl routine is * available to do long double square roots. */ -#$d_sqrtl HAS_SQRTL /**/ +/*#define HAS_SQRTL /**/ /* USE_STAT_BLOCKS: * This symbol is defined if this system has a stat structure declaring * st_blksize and st_blocks. */ #ifndef USE_STAT_BLOCKS -#$d_statblks USE_STAT_BLOCKS /**/ +/*#define USE_STAT_BLOCKS /**/ #endif /* HAS_STRUCT_STATFS_F_FLAGS: @@ -2009,19 +1985,19 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * have statfs() and struct statfs, they have ustat() and getmnt() * with struct ustat and struct fs_data. */ -#$d_statfs_f_flags HAS_STRUCT_STATFS_F_FLAGS /**/ +/*#define HAS_STRUCT_STATFS_F_FLAGS /**/ /* HAS_STRUCT_STATFS: * This symbol, if defined, indicates that the struct statfs * to do statfs() is supported. */ -#$d_statfs_s HAS_STRUCT_STATFS /**/ +/*#define HAS_STRUCT_STATFS /**/ /* HAS_FSTATVFS: * This symbol, if defined, indicates that the fstatvfs routine is * available to stat filesystems by file descriptors. */ -#$d_fstatvfs HAS_FSTATVFS /**/ +/*#define HAS_FSTATVFS /**/ /* USE_STDIO_PTR: * This symbol is defined if the _ptr and _cnt fields (or similar) @@ -2048,12 +2024,12 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * This symbol is defined if the FILE_cnt macro can be used as an * lvalue. */ -#$d_stdstdio USE_STDIO_PTR /**/ +#define USE_STDIO_PTR /**/ #ifdef USE_STDIO_PTR -#define FILE_ptr(fp) $stdio_ptr -#$d_stdio_ptr_lval STDIO_PTR_LVALUE /**/ -#define FILE_cnt(fp) $stdio_cnt -#$d_stdio_cnt_lval STDIO_CNT_LVALUE /**/ +#define FILE_ptr(fp) ((fp)->_ptr) +#define STDIO_PTR_LVALUE /**/ +#define FILE_cnt(fp) ((fp)->_cnt) +#define STDIO_CNT_LVALUE /**/ #endif /* USE_STDIO_BASE: @@ -2076,10 +2052,10 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * structure pointed to its argument. This macro will always be defined * if USE_STDIO_BASE is defined. */ -#$d_stdiobase USE_STDIO_BASE /**/ +#define USE_STDIO_BASE /**/ #ifdef USE_STDIO_BASE -#define FILE_base(fp) $stdio_base -#define FILE_bufsiz(fp) $stdio_bufsiz +#define FILE_base(fp) ((fp)->_base) +#define FILE_bufsiz(fp) ((fp)->_cnt + (fp)->_ptr - (fp)->_base) #endif /* HAS_STRERROR: @@ -2097,33 +2073,33 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * not available to translate error numbers to strings but sys_errlist[] * array is there. */ -#$d_strerror HAS_STRERROR /**/ -#$d_syserrlst HAS_SYS_ERRLIST /**/ -#define Strerror(e) $d_strerrm +#define HAS_STRERROR /**/ +#define HAS_SYS_ERRLIST /**/ +#define Strerror(e) strerror(e) /* HAS_STRTOLD: * This symbol, if defined, indicates that the strtold routine is * available to convert strings to long doubles. */ -#$d_strtold HAS_STRTOLD /**/ +/*#define HAS_STRTOLD /**/ /* HAS_STRTOLL: * This symbol, if defined, indicates that the strtoll routine is * available to convert strings to long longs. */ -#$d_strtoll HAS_STRTOLL /**/ +/*#define HAS_STRTOLL /**/ /* HAS_STRTOULL: * This symbol, if defined, indicates that the strtoull routine is * available to convert strings to unsigned long longs. */ -#$d_strtoull HAS_STRTOULL /**/ +/*#define HAS_STRTOULL /**/ /* HAS_STRTOUQ: * This symbol, if defined, indicates that the strtouq routine is * available to convert strings to unsigned long longs (quads). */ -#$d_strtouq HAS_STRTOUQ /**/ +/*#define HAS_STRTOUQ /**/ /* HAS_TELLDIR_PROTO: * This symbol, if defined, indicates that the system provides @@ -2131,21 +2107,21 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * to the program to supply one. A good guess is * extern long telldir _((DIR*)); */ -#$d_telldirproto HAS_TELLDIR_PROTO /**/ +/*#define HAS_TELLDIR_PROTO /**/ /* Time_t: * This symbol holds the type returned by time(). It can be long, * or time_t on BSD sites (in which case <sys/types.h> should be * included). */ -#define Time_t $timetype /* Time type */ +#define Time_t time_t /* Time type */ /* HAS_TIMES: * This symbol, if defined, indicates that the times() routine exists. * Note that this became obsolete on some systems (SUNOS), which now * use getrusage(). It may be necessary to include <sys/times.h>. */ -#$d_times HAS_TIMES /**/ +#define HAS_TIMES /**/ /* HAS_UNION_SEMUN: * This symbol, if defined, indicates that the union semun is @@ -2165,20 +2141,20 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * This symbol, if defined, indicates that struct semid_ds * is * used for semctl IPC_STAT. */ -#$d_union_semun HAS_UNION_SEMUN /**/ -#$d_semctl_semun USE_SEMCTL_SEMUN /**/ -#$d_semctl_semid_ds USE_SEMCTL_SEMID_DS /**/ +/*#define HAS_UNION_SEMUN /**/ +/*#define USE_SEMCTL_SEMUN /**/ +/*#define USE_SEMCTL_SEMID_DS /**/ /* HAS_USTAT: * This symbol, if defined, indicates that the ustat system call is * available to query file system statistics by dev_t. */ -#$d_ustat HAS_USTAT /**/ +/*#define HAS_USTAT /**/ /* HAS_VFORK: * This symbol, if defined, indicates that vfork() exists. */ -#$d_vfork HAS_VFORK /**/ +/*#define HAS_VFORK /**/ /* Signal_t: * This symbol's value is either "void" or "int", corresponding to the @@ -2186,7 +2162,7 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * a signal handler using "Signal_t (*handler)()", and define the * handler using "Signal_t handler(sig)". */ -#define Signal_t $signal_t /* Signal handler's return type */ +#define Signal_t void /* Signal handler's return type */ /* HAS_VPRINTF: * This symbol, if defined, indicates that the vprintf routine is available @@ -2199,26 +2175,26 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * is up to the package author to declare vsprintf correctly based on the * symbol. */ -#$d_vprintf HAS_VPRINTF /**/ -#$d_charvspr USE_CHAR_VSPRINTF /**/ +#define HAS_VPRINTF /**/ +/*#define USE_CHAR_VSPRINTF /**/ /* USE_DYNAMIC_LOADING: * This symbol, if defined, indicates that dynamic loading of * some sort is available. */ -#$usedl USE_DYNAMIC_LOADING /**/ +/*#define USE_DYNAMIC_LOADING /**/ /* DOUBLESIZE: * This symbol contains the size of a double, so that the C preprocessor * can make decisions based on it. */ -#define DOUBLESIZE $doublesize /**/ +#define DOUBLESIZE 8 /**/ /* EBCDIC: * This symbol, if defined, indicates that this system uses * EBCDIC encoding. */ -#$ebcdic EBCDIC /**/ +/*#define EBCDIC /**/ /* FFLUSH_NULL: * This symbol, if defined, tells that fflush(NULL) does flush @@ -2231,31 +2207,31 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * Note that if fflushNULL is defined, fflushall will not * even be probed for and will be left undefined. */ -#$fflushNULL FFLUSH_NULL /**/ -#$fflushall FFLUSH_ALL /**/ +#define FFLUSH_NULL /**/ +/*#define FFLUSH_ALL /**/ /* Fpos_t: * This symbol holds the type used to declare file positions in libc. * It can be fpos_t, long, uint, etc... It may be necessary to include * <sys/types.h> to get any typedef'ed information. */ -#define Fpos_t $fpostype /* File position type */ +#define Fpos_t fpos_t /* File position type */ /* Gid_t_f: * This symbol defines the format string used for printing a Gid_t. */ -#define Gid_t_f $gidformat /**/ +#define Gid_t_f "d" /**/ /* Gid_t_sign: * This symbol holds the signedess of a Gid_t. * 1 for unsigned, -1 for signed. */ -#define Gid_t_sign $gidsign /* GID sign */ +#define Gid_t_sign -1 /* GID sign */ /* Gid_t_size: * This symbol holds the size of a Gid_t in bytes. */ -#define Gid_t_size $gidsize /* GID size */ +#define Gid_t_size 4 /* GID size */ /* Gid_t: * This symbol holds the return type of getgid() and the type of @@ -2264,7 +2240,7 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * gid_t, etc... It may be necessary to include <sys/types.h> to get * any typedef'ed information. */ -#define Gid_t $gidtype /* Type for getgid(), etc... */ +#define Gid_t gid_t /* Type for getgid(), etc... */ /* Groups_t: * This symbol holds the type used for the second argument to @@ -2276,7 +2252,7 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * getgroups() or setgroups().. */ #if defined(HAS_GETGROUPS) || defined(HAS_SETGROUPS) -#define Groups_t $groupstype /* Type for 2nd arg to [sg]etgroups() */ +#define Groups_t gid_t /* Type for 2nd arg to [sg]etgroups() */ #endif /* DB_Prefix_t: @@ -2289,8 +2265,8 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * in the <db.h> header file. In older versions of DB, it was * int, while in newer ones it is size_t. */ -#define DB_Hash_t $db_hashtype /**/ -#define DB_Prefix_t $db_prefixtype /**/ +#define DB_Hash_t int /**/ +#define DB_Prefix_t int /**/ /* I_GRP: * This symbol, if defined, indicates to the C program that it should @@ -2300,74 +2276,74 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * This symbol, if defined, indicates to the C program that struct group * in <grp.h> contains gr_passwd. */ -#$i_grp I_GRP /**/ -#$d_grpasswd GRPASSWD /**/ +#define I_GRP /**/ +/*#define GRPASSWD /**/ /* I_ICONV: * This symbol, if defined, indicates that <iconv.h> exists and * should be included. */ -#$i_iconv I_ICONV /**/ +/*#define I_ICONV /**/ /* I_IEEEFP: * This symbol, if defined, indicates that <ieeefp.h> exists and * should be included. */ -#$i_ieeefp I_IEEEFP /**/ +/*#define I_IEEEFP /**/ /* I_INTTYPES: * This symbol, if defined, indicates to the C program that it should * include <inttypes.h>. */ -#$i_inttypes I_INTTYPES /**/ +/*#define I_INTTYPES /**/ /* I_LIBUTIL: * This symbol, if defined, indicates that <libutil.h> exists and * should be included. */ -#$i_libutil I_LIBUTIL /**/ +/*#define I_LIBUTIL /**/ /* I_MACH_CTHREADS: * This symbol, if defined, indicates to the C program that it should * include <mach/cthreads.h>. */ -#$i_machcthr I_MACH_CTHREADS /**/ +/*#define I_MACH_CTHREADS /**/ /* I_MNTENT: * This symbol, if defined, indicates that <mntent.h> exists and * should be included. */ -#$i_mntent I_MNTENT /**/ +/*#define I_MNTENT /**/ /* I_NETDB: * This symbol, if defined, indicates that <netdb.h> exists and * should be included. */ -#$i_netdb I_NETDB /**/ +#define I_NETDB /**/ /* I_NETINET_TCP: * This symbol, if defined, indicates to the C program that it should * include <netinet/tcp.h>. */ -#$i_netinettcp I_NETINET_TCP /**/ +#define I_NETINET_TCP /**/ /* I_POLL: * This symbol, if defined, indicates that <poll.h> exists and * should be included. */ -#$i_poll I_POLL /**/ +/*#define I_POLL /**/ /* I_PROT: * This symbol, if defined, indicates that <prot.h> exists and * should be included. */ -#$i_prot I_PROT /**/ +/*#define I_PROT /**/ /* I_PTHREAD: * This symbol, if defined, indicates to the C program that it should * include <pthread.h>. */ -#$i_pthread I_PTHREAD /**/ +/*#define I_PTHREAD /**/ /* I_PWD: * This symbol, if defined, indicates to the C program that it should @@ -2405,80 +2381,80 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * This symbol, if defined, indicates to the C program that struct passwd * contains pw_passwd. */ -#$i_pwd I_PWD /**/ -#$d_pwquota PWQUOTA /**/ -#$d_pwage PWAGE /**/ -#$d_pwchange PWCHANGE /**/ -#$d_pwclass PWCLASS /**/ -#$d_pwexpire PWEXPIRE /**/ -#$d_pwcomment PWCOMMENT /**/ -#$d_pwgecos PWGECOS /**/ -#$d_pwpasswd PWPASSWD /**/ +#define I_PWD /**/ +/*#define PWQUOTA /**/ +/*#define PWAGE /**/ +/*#define PWCHANGE /**/ +/*#define PWCLASS /**/ +/*#define PWEXPIRE /**/ +/*#define PWCOMMENT /**/ +/*#define PWGECOS /**/ +/*#define PWPASSWD /**/ /* I_SHADOW: * This symbol, if defined, indicates that <shadow.h> exists and * should be included. */ -#$i_shadow I_SHADOW /**/ +/*#define I_SHADOW /**/ /* I_SOCKS: * This symbol, if defined, indicates that <socks.h> exists and * should be included. */ -#$i_socks I_SOCKS /**/ +/*#define I_SOCKS /**/ /* I_SUNMATH: * This symbol, if defined, indicates that <sunmath.h> exists and * should be included. */ -#$i_sunmath I_SUNMATH /**/ +/*#define I_SUNMATH /**/ /* I_SYSLOG: * This symbol, if defined, indicates that <syslog.h> exists and * should be included. */ -#$i_syslog I_SYSLOG /**/ +/*#define I_SYSLOG /**/ /* I_SYSMODE: * This symbol, if defined, indicates that <sys/mode.h> exists and * should be included. */ -#$i_sysmode I_SYSMODE /**/ +/*#define I_SYSMODE /**/ /* I_SYS_MOUNT: * This symbol, if defined, indicates that <sys/mount.h> exists and * should be included. */ -#$i_sysmount I_SYS_MOUNT /**/ +/*#define I_SYS_MOUNT /**/ /* I_SYS_STATFS: * This symbol, if defined, indicates that <sys/statfs.h> exists. */ -#$i_sysstatfs I_SYS_STATFS /**/ +/*#define I_SYS_STATFS /**/ /* I_SYS_STATVFS: * This symbol, if defined, indicates that <sys/statvfs.h> exists and * should be included. */ -#$i_sysstatvfs I_SYS_STATVFS /**/ +/*#define I_SYS_STATVFS /**/ /* I_SYSUIO: * This symbol, if defined, indicates that <sys/uio.h> exists and * should be included. */ -#$i_sysuio I_SYSUIO /**/ +/*#define I_SYSUIO /**/ /* I_SYSUTSNAME: * This symbol, if defined, indicates that <sys/utsname.h> exists and * should be included. */ -#$i_sysutsname I_SYSUTSNAME /**/ +#define I_SYSUTSNAME /**/ /* I_SYS_VFS: * This symbol, if defined, indicates that <sys/vfs.h> exists and * should be included. */ -#$i_sysvfs I_SYS_VFS /**/ +/*#define I_SYS_VFS /**/ /* I_TIME: * This symbol, if defined, indicates to the C program that it should @@ -2492,15 +2468,15 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * This symbol, if defined, indicates to the C program that it should * include <sys/time.h> with KERNEL defined. */ -#$i_time I_TIME /**/ -#$i_systime I_SYS_TIME /**/ -#$i_systimek I_SYS_TIME_KERNEL /**/ +/*#define I_TIME /**/ +#define I_SYS_TIME /**/ +/*#define I_SYS_TIME_KERNEL /**/ /* I_USTAT: * This symbol, if defined, indicates that <ustat.h> exists and * should be included. */ -#$i_ustat I_USTAT /**/ +/*#define I_USTAT /**/ /* PERL_INC_VERSION_LIST: * This variable specifies the list of subdirectories in over @@ -2509,13 +2485,13 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * for a C initialization string. See the inc_version_list entry * in Porting/Glossary for more details. */ -#define PERL_INC_VERSION_LIST $inc_version_list_init /**/ +#define PERL_INC_VERSION_LIST 0 /**/ /* INSTALL_USR_BIN_PERL: * This symbol, if defined, indicates that Perl is to be installed * also as /usr/bin/perl. */ -#$installusrbinperl INSTALL_USR_BIN_PERL /**/ +/*#define INSTALL_USR_BIN_PERL /**/ /* PERL_PRIfldbl: * This symbol, if defined, contains the string used by stdio to @@ -2533,10 +2509,10 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * This symbol, if defined, contains the string used by stdio to * format long doubles (format 'f') for input. */ -#$d_PRIfldbl PERL_PRIfldbl $sPRIfldbl /**/ -#$d_PRIgldbl PERL_PRIgldbl $sPRIgldbl /**/ -#$d_PRIeldbl PERL_PRIeldbl $sPRIeldbl /**/ -#$d_SCNfldbl PERL_SCNfldbl $sSCNfldbl /**/ +#define PERL_PRIfldbl "Lf" /**/ +#define PERL_PRIgldbl "Lg" /**/ +#define PERL_PRIeldbl "Le" /**/ +#define PERL_SCNfldbl "Lf" /**/ /* Off_t: * This symbol holds the type used to declare offsets in the kernel. @@ -2549,9 +2525,9 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un /* Off_t_size: * This symbol holds the number of bytes used by the Off_t. */ -#define Off_t $lseektype /* <offset> type */ -#define LSEEKSIZE $lseeksize /* <offset> size */ -#define Off_t_size $lseeksize /* <offset> size */ +#define Off_t off_t /* <offset> type */ +#define LSEEKSIZE 4 /* <offset> size */ +#define Off_t_size 4 /* <offset> size */ /* Free_t: * This variable contains the return type of free(). It is usually @@ -2560,13 +2536,13 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un /* Malloc_t: * This symbol is the type of pointer returned by malloc and realloc. */ -#define Malloc_t $malloctype /**/ -#define Free_t $freetype /**/ +#define Malloc_t void * /**/ +#define Free_t void /**/ /* MYMALLOC: * This symbol, if defined, indicates that we're using our own malloc. */ -#$d_mymalloc MYMALLOC /**/ +/*#define MYMALLOC /**/ /* Mode_t: * This symbol holds the type used to declare file modes @@ -2574,7 +2550,7 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * int or unsigned short. It may be necessary to include <sys/types.h> * to get any typedef'ed information. */ -#define Mode_t $modetype /* file mode parameter for system calls */ +#define Mode_t mode_t /* file mode parameter for system calls */ /* VAL_O_NONBLOCK: * This symbol is to be used during open() or fcntl(F_SETFL) to turn on @@ -2598,10 +2574,10 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * a non-blocking file descriptor will return 0 on EOF, and not the value * held in RD_NODATA (-1 usually, in that case!). */ -#define VAL_O_NONBLOCK $o_nonblock -#define VAL_EAGAIN $eagain -#define RD_NODATA $rd_nodata -#$d_eofnblk EOF_NONBLOCK +#define VAL_O_NONBLOCK O_NONBLOCK +#define VAL_EAGAIN EAGAIN +#define RD_NODATA -1 +#define EOF_NONBLOCK /* Netdb_host_t: * This symbol holds the type used for the 1st argument @@ -2619,10 +2595,10 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * This symbol holds the type used for the 1st argument to * getnetbyaddr(). */ -#define Netdb_host_t $netdb_host_type /**/ -#define Netdb_hlen_t $netdb_hlen_type /**/ -#define Netdb_name_t $netdb_name_type /**/ -#define Netdb_net_t $netdb_net_type /**/ +#define Netdb_host_t char * /**/ +#define Netdb_hlen_t int /**/ +#define Netdb_name_t char * /**/ +#define Netdb_net_t long /**/ /* PERL_OTHERLIBDIRS: * This variable contains a colon-separated set of paths for the perl @@ -2632,7 +2608,7 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * and architecture-specific directories. See PERL_INC_VERSION_LIST * for more details. */ -#$d_perl_otherlibdirs PERL_OTHERLIBDIRS "$otherlibdirs" /**/ +/*#define PERL_OTHERLIBDIRS "" /**/ /* IVTYPE: * This symbol defines the C type used for Perl's IV. @@ -2708,34 +2684,34 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * This symbol contains the number of bits a variable of type NVTYPE * can preserve of a variable of type UVTYPE. */ -#define IVTYPE $ivtype /**/ -#define UVTYPE $uvtype /**/ -#define I8TYPE $i8type /**/ -#define U8TYPE $u8type /**/ -#define I16TYPE $i16type /**/ -#define U16TYPE $u16type /**/ -#define I32TYPE $i32type /**/ -#define U32TYPE $u32type /**/ +#define IVTYPE int /**/ +#define UVTYPE unsigned int /**/ +#define I8TYPE char /**/ +#define U8TYPE unsigned char /**/ +#define I16TYPE short /**/ +#define U16TYPE unsigned short /**/ +#define I32TYPE int /**/ +#define U32TYPE unsigned int /**/ #ifdef HAS_QUAD -#define I64TYPE $i64type /**/ -#define U64TYPE $u64type /**/ +#define I64TYPE _error_ /**/ +#define U64TYPE _error_ /**/ #endif -#define NVTYPE $nvtype /**/ -#define IVSIZE $ivsize /**/ -#define UVSIZE $uvsize /**/ -#define I8SIZE $i8size /**/ -#define U8SIZE $u8size /**/ -#define I16SIZE $i16size /**/ -#define U16SIZE $u16size /**/ -#define I32SIZE $i32size /**/ -#define U32SIZE $u32size /**/ +#define NVTYPE double /**/ +#define IVSIZE 4 /**/ +#define UVSIZE 4 /**/ +#define I8SIZE 1 /**/ +#define U8SIZE 1 /**/ +#define I16SIZE 2 /**/ +#define U16SIZE 2 /**/ +#define I32SIZE 4 /**/ +#define U32SIZE 4 /**/ #ifdef HAS_QUAD -#define I64SIZE $i64size /**/ -#define U64SIZE $u64size /**/ +#define I64SIZE _error_ /**/ +#define U64SIZE _error_ /**/ #endif -#define NVSIZE $nvsize /**/ -#$d_nv_preserves_uv NV_PRESERVES_UV -#define NV_PRESERVES_UV_BITS $d_nv_preserves_uv_bits +#define NVSIZE 8 /**/ +#define NV_PRESERVES_UV +#define NV_PRESERVES_UV_BITS 32 /* IVdf: * This symbol defines the format string used for printing a Perl IV @@ -2765,20 +2741,20 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * This symbol defines the format string used for printing a Perl NV * using %g-ish floating point format. */ -#define IVdf $ivdformat /**/ -#define UVuf $uvuformat /**/ -#define UVof $uvoformat /**/ -#define UVxf $uvxformat /**/ -#define NVef $nveformat /**/ -#define NVff $nvfformat /**/ -#define NVgf $nvgformat /**/ +#define IVdf "d" /**/ +#define UVuf "u" /**/ +#define UVof "o" /**/ +#define UVxf "x" /**/ +#define NVef "e" /**/ +#define NVff "f" /**/ +#define NVgf "g" /**/ /* Pid_t: * This symbol holds the type used to declare process ids in the kernel. * It can be int, uint, pid_t, etc... It may be necessary to include * <sys/types.h> to get any typedef'ed information. */ -#define Pid_t $pidtype /* PID type */ +#define Pid_t pid_t /* PID type */ /* PRIVLIB: * This symbol contains the name of the private library for this package. @@ -2790,8 +2766,8 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * This symbol contains the ~name expanded version of PRIVLIB, to be used * in programs that are not prepared to deal with ~ expansion at run-time. */ -#define PRIVLIB "$privlib" /**/ -#define PRIVLIB_EXP "$privlibexp" /**/ +#define PRIVLIB "/system/ported/perl/lib/5.7" /**/ +#define PRIVLIB_EXP "/system/ported/perl/lib/5.7" /**/ /* PTRSIZE: * This symbol contains the size of a pointer, so that the C preprocessor @@ -2799,7 +2775,7 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * the compiler supports (void *); otherwise it will be * sizeof(char *). */ -#define PTRSIZE $ptrsize /**/ +#define PTRSIZE 4 /**/ /* Drand01: * This macro is to be used to generate uniformly distributed @@ -2821,10 +2797,10 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * function used to generate normalized random numbers. * Values include 15, 16, 31, and 48. */ -#define Drand01() $drand01 /**/ -#define Rand_seed_t $randseedtype /**/ -#define seedDrand01(x) $seedfunc((Rand_seed_t)x) /**/ -#define RANDBITS $randbits /**/ +#define Drand01() rand()/(RAND_MAX+1) /**/ +#define Rand_seed_t unsigned int /**/ +#define seedDrand01(x) srand((Rand_seed_t)x) /**/ +#define RANDBITS 15 /**/ /* SELECT_MIN_BITS: * This symbol holds the minimum number of bits operated by select. @@ -2833,7 +2809,7 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * is either n or 32*ceil(n/32), especially many little-endians do * the latter. This is only useful if you have select(), naturally. */ -#define SELECT_MIN_BITS $selectminbits /**/ +#define SELECT_MIN_BITS 1 /**/ /* Select_fd_set_t: * This symbol holds the type used for the 2nd, 3rd, and 4th @@ -2841,7 +2817,7 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * is defined, and 'int *' otherwise. This is only useful if you * have select(), of course. */ -#define Select_fd_set_t $selecttype /**/ +#define Select_fd_set_t fd_set * /**/ /* SIG_NAME: * This symbol contains a list of signal names in order of @@ -2871,8 +2847,8 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * The last element is 0, corresponding to the 0 at the end of * the sig_name list. */ -#define SIG_NAME $sig_name_init /**/ -#define SIG_NUM $sig_num_init /**/ +#define SIG_NAME "ZERO","ABRT","FPE","ILL","INT","SEGV","TERM","USR1","USR2","IO","HUP","URG","ALRM","CHLD","CONT","KILL","STOP","PIPE","QUIT","BUS","TRAP","TSTP","TTIN","TTOU","RT1","RT2","RT3","RT4","RT5","RT6","RT7","RT8",0 /**/ +#define SIG_NUM 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,0 /**/ /* SITEARCH: * This symbol contains the name of the private library for this package. @@ -2889,8 +2865,8 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * This symbol contains the ~name expanded version of SITEARCH, to be used * in programs that are not prepared to deal with ~ expansion at run-time. */ -#define SITEARCH "$sitearch" /**/ -#define SITEARCH_EXP "$sitearchexp" /**/ +/*#define SITEARCH "" /**/ +/*#define SITEARCH_EXP "" /**/ /* SITELIB: * This symbol contains the name of the private library for this package. @@ -2912,14 +2888,14 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * removed. The elements in inc_version_list (inc_version_list.U) can * be tacked onto this variable to generate a list of directories to search. */ -#define SITELIB "$sitelib" /**/ -#define SITELIB_EXP "$sitelibexp" /**/ -#define SITELIB_STEM "$sitelib_stem" /**/ +#define SITELIB "/system/ported/perl/lib/site/5.7" /**/ +#define SITELIB_EXP "/system/ported/perl/lib/site/5.7" /**/ +#define SITELIB_STEM "/system/ported/perl/lib/site" /**/ /* Size_t_size: * This symbol holds the size of a Size_t in bytes. */ -#define Size_t_size $sizesize /* */ +#define Size_t_size 4 /* */ /* Size_t: * This symbol holds the type used to declare length parameters @@ -2927,13 +2903,13 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * unsigned long, int, etc. It may be necessary to include * <sys/types.h> to get any typedef'ed information. */ -#define Size_t $sizetype /* length paramater for string functions */ +#define Size_t size_t /* length paramater for string functions */ /* Sock_size_t: * This symbol holds the type used for the size argument of * various socket calls (just the base type, not the pointer-to). */ -#define Sock_size_t $socksizetype /**/ +#define Sock_size_t int /**/ /* SSize_t: * This symbol holds the type used by functions that return @@ -2943,14 +2919,14 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * to get any typedef'ed information. * We will pick a type such that sizeof(SSize_t) == sizeof(Size_t). */ -#define SSize_t $ssizetype /* signed count of bytes */ +#define SSize_t ssize_t /* signed count of bytes */ /* STARTPERL: * This variable contains the string to put in front of a perl * script to make sure (one hopes) that it runs with perl and not * some shell. */ -#define STARTPERL "$startperl" /**/ +#define STARTPERL "!perl.pm" /**/ /* HAS_STDIO_STREAM_ARRAY: * This symbol, if defined, tells that there is an array @@ -2960,31 +2936,31 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * This symbol tells the name of the array holding the stdio streams. * Usual values include _iob, __iob, and __sF. */ -#$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY /**/ -#define STDIO_STREAM_ARRAY $stdio_stream_array +#define HAS_STDIO_STREAM_ARRAY /**/ +#define STDIO_STREAM_ARRAY _iob /* Uid_t_f: * This symbol defines the format string used for printing a Uid_t. */ -#define Uid_t_f $uidformat /**/ +#define Uid_t_f "d" /**/ /* Uid_t_sign: * This symbol holds the signedess of a Uid_t. * 1 for unsigned, -1 for signed. */ -#define Uid_t_sign $uidsign /* UID sign */ +#define Uid_t_sign -1 /* UID sign */ /* Uid_t_size: * This symbol holds the size of a Uid_t in bytes. */ -#define Uid_t_size $uidsize /* UID size */ +#define Uid_t_size 4 /* UID size */ /* Uid_t: * This symbol holds the type used to declare user ids in the kernel. * It can be int, ushort, uid_t, etc... It may be necessary to include * <sys/types.h> to get any typedef'ed information. */ -#define Uid_t $uidtype /* UID type */ +#define Uid_t uid_t /* UID type */ /* USE_64_BIT_INT: * This symbol, if defined, indicates that 64-bit integers should @@ -3005,11 +2981,11 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * you may need at least to reboot your OS to 64-bit mode. */ #ifndef USE_64_BIT_INT -#$use64bitint USE_64_BIT_INT /**/ +/*#define USE_64_BIT_INT /**/ #endif #ifndef USE_64_BIT_ALL -#$use64bitall USE_64_BIT_ALL /**/ +/*#define USE_64_BIT_ALL /**/ #endif /* USE_LARGE_FILES: @@ -3017,7 +2993,7 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * should be used when available. */ #ifndef USE_LARGE_FILES -#$uselargefiles USE_LARGE_FILES /**/ +/*#define USE_LARGE_FILES /**/ #endif /* USE_LONG_DOUBLE: @@ -3025,7 +3001,7 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * be used when available. */ #ifndef USE_LONG_DOUBLE -#$uselongdouble USE_LONG_DOUBLE /**/ +#define USE_LONG_DOUBLE /**/ #endif /* USE_MORE_BITS: @@ -3033,7 +3009,7 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * long doubles should be used when available. */ #ifndef USE_MORE_BITS -#$usemorebits USE_MORE_BITS /**/ +/*#define USE_MORE_BITS /**/ #endif /* MULTIPLICITY: @@ -3041,7 +3017,7 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * be built to use multiplicity. */ #ifndef MULTIPLICITY -#$usemultiplicity MULTIPLICITY /**/ +/*#define MULTIPLICITY /**/ #endif /* USE_PERLIO: @@ -3050,7 +3026,7 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * used in a fully backward compatible manner. */ #ifndef USE_PERLIO -#$useperlio USE_PERLIO /**/ +/*#define USE_PERLIO /**/ #endif /* USE_SOCKS: @@ -3058,7 +3034,7 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * be built to use socks. */ #ifndef USE_SOCKS -#$usesocks USE_SOCKS /**/ +/*#define USE_SOCKS /**/ #endif /* USE_ITHREADS: @@ -3073,12 +3049,12 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * This symbol, if defined, indicates that Perl should * be built to use the old draft POSIX threads API. */ -#$use5005threads USE_5005THREADS /**/ -#$useithreads USE_ITHREADS /**/ +/*#define USE_5005THREADS /**/ +/*#define USE_ITHREADS /**/ #if defined(USE_5005THREADS) && !defined(USE_ITHREADS) #define USE_THREADS /* until src is revised*/ #endif -#$d_oldpthreads OLD_PTHREADS_API /**/ +/*#define OLD_PTHREADS_API /**/ /* PERL_VENDORARCH: * If defined, this symbol contains the name of a private library. @@ -3095,8 +3071,8 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * This symbol contains the ~name expanded version of PERL_VENDORARCH, to be used * in programs that are not prepared to deal with ~ expansion at run-time. */ -#$d_vendorarch PERL_VENDORARCH "$vendorarch" /**/ -#$d_vendorarch PERL_VENDORARCH_EXP "$vendorarchexp" /**/ +#define PERL_VENDORARCH "" /**/ +#define PERL_VENDORARCH_EXP "" /**/ /* PERL_VENDORLIB_EXP: * This symbol contains the ~name expanded version of VENDORLIB, to be used @@ -3107,8 +3083,8 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * removed. The elements in inc_version_list (inc_version_list.U) can * be tacked onto this variable to generate a list of directories to search. */ -#$d_vendorlib PERL_VENDORLIB_EXP "$vendorlibexp" /**/ -#$d_vendorlib PERL_VENDORLIB_STEM "$vendorlib_stem" /**/ +#define PERL_VENDORLIB_EXP "" /**/ +#define PERL_VENDORLIB_STEM "" /**/ /* VOIDFLAGS: * This symbol indicates how much support of the void type is given by this @@ -3127,9 +3103,9 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * level of void support necessary is not present, defines void to int. */ #ifndef VOIDUSED -#define VOIDUSED $defvoidused +#define VOIDUSED 15 #endif -#define VOIDFLAGS $voidflags +#define VOIDFLAGS 15 #if (VOIDFLAGS & VOIDUSED) != VOIDUSED #define void int /* is void to be avoided? */ #define M_VOID /* Xenix strikes again */ @@ -3138,7 +3114,7 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un /* PERL_XS_APIVERSION: * This variable contains the version of the oldest perl binary * compatible with the present perl. perl.c:incpush() and - * lib/lib.pm will automatically search in $sitearch for older + * lib/lib.pm will automatically search in for older * directories across major versions back to xs_apiversion. * This is only useful if you have a perl library directory tree * structured like the default one. @@ -3157,7 +3133,7 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * compatible with the present perl. (That is, pure perl modules * written for pm_apiversion will still work for the current * version). perl.c:incpush() and lib/lib.pm will automatically - * search in $sitelib for older directories across major versions + * search in /system/ported/perl/lib/site/5.7 for older directories across major versions * back to pm_apiversion. This is only useful if you have a perl * library directory tree structured like the default one. The * versioned site_perl library was introduced in 5.005, so that's @@ -3167,8 +3143,8 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * (presumably) be similar. * See the INSTALL file for how this works. */ -#define PERL_XS_APIVERSION "$xs_apiversion" -#define PERL_PM_APIVERSION "$pm_apiversion" +#define PERL_XS_APIVERSION "5.00563" +#define PERL_PM_APIVERSION "5.005" /* HAS_GETPGRP: * This symbol, if defined, indicates that the getpgrp routine is @@ -3178,8 +3154,8 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * This symbol, if defined, indicates that getpgrp needs one * arguments whereas USG one needs none. */ -#$d_getpgrp HAS_GETPGRP /**/ -#$d_bsdgetpgrp USE_BSD_GETPGRP /**/ +#define HAS_GETPGRP /**/ +/*#define USE_BSD_GETPGRP /**/ /* HAS_SETPGRP: * This symbol, if defined, indicates that the setpgrp routine is @@ -3190,8 +3166,7 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * arguments whereas USG one needs none. See also HAS_SETPGID * for a POSIX interface. */ -#$d_setpgrp HAS_SETPGRP /**/ -#$d_bsdsetpgrp USE_BSD_SETPGRP /**/ +/*#define HAS_SETPGRP /**/ +/*#define USE_BSD_SETPGRP /**/ #endif -!GROK!THIS! diff --git a/vos/config.pl b/vos/config.pl index c6014ade9a..c865ba158b 100644 --- a/vos/config.pl +++ b/vos/config.pl @@ -3,6 +3,7 @@ # # Written January 24, 2000 by Jarkko Hietaniemi [jhi@iki.fi] # Modified February 2, 2000 by Paul Green [Paul_Green@stratus.com] +# Modified October 23, 2000 by Paul Green [Paul_Green@stratus.com] # # Read in the definitions file @@ -13,6 +14,7 @@ if (open(CONFIG_DEF, "config.def")) { if (/^([^=]+)='(.*)'$/) { my ($var, $val) = ($1, $2); $define{$var} = $val; + $used{$var} = 0; } else { warn "config.def: $.: illegal line: $_"; } @@ -27,8 +29,9 @@ close (CONFIG_DEF); # Open the template input file. # -unless (open(CONFIG_SH, "config_h.SH_orig")) { - die "$0: Cannot open config_h.SH_orig: $!"; +$lineno = 0; +unless (open(CONFIG_SH, "../config_h.SH")) { + die "$0: Cannot open ../config_h.SH: $!"; } # @@ -44,6 +47,7 @@ unless (open(CONFIG_H, ">config.h.new")) { # while (<CONFIG_SH>) { + $lineno = $lineno + 1; last if /^sed <<!GROK!THIS!/; } @@ -53,20 +57,34 @@ while (<CONFIG_SH>) { # while (<CONFIG_SH>) { + $lineno = $lineno + 1; last if /^!GROK!THIS!/; # +# The definition of SITEARCH and SITEARCH_EXP has to be commented-out. +# The easiest way to do this is to special-case it here. +# + if (/^#define SITEARCH*/) { + s@(^.*$)@/*$1@; + } +# # The case of #$d_foo at the BOL has to be handled carefully. # If $d_foo is "undef", then we must first comment out the entire line. # - if (/^#\$\w+/) { - s@^#(\$\w+)@("$define{$1}" eq "undef")?"/*#define":"#$define{$1}"@e; + if (/^#(\$\w+)/) { + if (exists $define{$1}) { + $used{$1}=1; + s@^#(\$\w+)@("$define{$1}" eq "undef") ? + "/*#define":"#$define{$1}"@e; + } } # # There could be multiple $variables on this line. # Find and replace all of them. # if (/(\$\w+)/) { - s/(\$\w+)/(exists $define{$1}) ? $define{$1} : $1/ge; + s/(\$\w+)/(exists $define{$1}) ? + (($used{$1}=1),$define{$1}) : + ((print "Undefined keyword $1 on line $lineno\n"),$1)/ge; print CONFIG_H; } # @@ -82,3 +100,10 @@ unless (close (CONFIG_H)) { } close (CONFIG_SH); + +while (($key,$value) = each %used) { + if ($value == 0) { + print "Unused keyword definition: $key\n"; + } +} + diff --git a/vos/configure_perl.cm b/vos/configure_perl.cm new file mode 100644 index 0000000000..49611f9a66 --- /dev/null +++ b/vos/configure_perl.cm @@ -0,0 +1,24 @@ +& This command macro configures perl to build with +& either the alpha or generally-available version of +& VOS POSIX.1 support. +& Written 00-10-24 by Paul Green (Paul_Green@stratus.com) +& +&begin_parameters + version option(-version)name,allow(alpha,ga),=ga +&end_parameters +&echo command_lines +& +&if (file_info config.&version&.def date_modified) > (file_info config.&version&.h date_modified) +&then &do +!copy_file config.&version&.def config.def -delete +& +& NOTE: We must invoke Perl 5 not Perl 4. If necessary, edit the +& next line to say "perl5 config.pl". +& +!perl config.pl +!rename config.h.new config.&version&.h -delete +!delete_file config.def +&end +& +&if (file_info config.&version&.h date_modified) ^= (file_info config.h date_modified) +&then !copy_file config.&version&.h config.h -delete -keep_dates diff --git a/vos/install_perl.cm b/vos/install_perl.cm new file mode 100644 index 0000000000..95fe064ea6 --- /dev/null +++ b/vos/install_perl.cm @@ -0,0 +1,69 @@ +& Macro to install the perl components into the right directories +& Written 00-10-24 by Paul Green (Paul_Green@stratus.com) +& +&begin_parameters + cpu option(-processor)name,allow(mc68020,i80860,pa7100,pa8000),=mc68020 +&end_parameters priv +&echo command_lines +& +&if &cpu& = mc68020 +&then &set_string obj '' +&if &cpu& = i80860 +&then &set_string obj .860 +&if &cpu& = pa7100 +&then &set_string obj .7100 +&if &cpu& = pa8000 +&then &set_string obj .8000 +& +&set_string MDS (master_disk)>system +& +&if ^ (exists -directory &MDS&>ported) +&then !create_dir &MDS&>ported +& +&if ^ (exists -directory &MDS&>ported>command_library) +&then !create_dir &MDS&>ported>command_library +& +&if ^ (exists -directory &MDS&>ported>perl) +&then !create_dir &MDS&>ported>perl +& +&if ^ (exists -directory &MDS&>ported>perl>lib) +&then !create_dir &MDS&>ported>perl>lib +& +&if ^ (exists -directory &MDS&>ported>perl>lib>5.7) +&then !create_dir &MDS&>ported>perl>lib>5.7 +& +&if ^ (exists -directory &MDS&>ported>perl>lib>5.7.68k) +&then !create_dir &MDS&>ported>perl>lib>5.7.68k +& +&if ^ (exists -directory &MDS&>ported>perl>lib>5.7.860) +&then !create_dir &MDS&>ported>perl>lib>5.7.860 +& +&if ^ (exists -directory &MDS&>ported>perl>lib>5.7.7100) +&then !create_dir &MDS&>ported>perl>lib>5.7.7100 +& +&if ^ (exists -directory &MDS&>ported>perl>lib>5.7.8000) +&then !create_dir &MDS&>ported>perl>lib>5.7.8000 +& +&if ^ (exists -directory &MDS&>ported>perl>lib>site) +&then !create_dir &MDS&>ported>perl>lib>site +& +&if ^ (exists -directory &MDS&>ported>perl>lib>site>5.7) +&then !create_dir &MDS&>ported>perl>lib>site>5.7 +& +&if ^ (exists -directory &MDS&>ported>perl>lib>site>5.7.68k) +&then !create_dir &MDS&>ported>perl>lib>site>5.7.68k +& +&if ^ (exists -directory &MDS&>ported>perl>lib>site>5.7.860) +&then !create_dir &MDS&>ported>perl>lib>site>5.7.860 +& +&if ^ (exists -directory &MDS&>ported>perl>lib>site>5.7.7100) +&then !create_dir &MDS&>ported>perl>lib>site>5.7.7100 +& +&if ^ (exists -directory &MDS&>ported>perl>lib>site>5.7.8000) +&then !create_dir &MDS&>ported>perl>lib>site>5.7.8000 +& +!copy_dir <lib &MDS&>ported>perl>lib>5.7 -delete +& +!copy_file obj&obj&>perl.pm &MDS&>ported>command_library>perl.pm.new -delete +!rename &MDS&>ported>command_library>perl.pm *.(date).(time) -delete +!rename &MDS&>ported>command_library>perl.pm.new perl.pm -delete diff --git a/vos/perl.bind b/vos/perl.bind index 714ce3d680..1e77e5a6de 100644 --- a/vos/perl.bind +++ b/vos/perl.bind @@ -31,9 +31,6 @@ modules: miniperlmain, universal, utf8, util, - xsutils, - vos_dummies, - tcp_runtime, - tcp_gethost; + xsutils; end; diff --git a/vos/vosish.h b/vos/vosish.h index 5a6b0796f8..d600065698 100644 --- a/vos/vosish.h +++ b/vos/vosish.h @@ -1,140 +1 @@ -/* - * The following symbols are defined if your operating system supports - * functions by that name. All Unixes I know of support them, thus they - * are not checked by the configuration script, but are directly defined - * here. - */ - -/* HAS_IOCTL: - * This symbol, if defined, indicates that the ioctl() routine is - * available to set I/O characteristics - */ -#define HAS_IOCTL / **/ - -/* HAS_UTIME: - * This symbol, if defined, indicates that the routine utime() is - * available to update the access and modification times of files. - */ -#define HAS_UTIME / **/ - -/* HAS_GROUP - * This symbol, if defined, indicates that the getgrnam() and - * getgrgid() routines are available to get group entries. - * The getgrent() has a separate definition, HAS_GETGRENT. - */ -/*#define HAS_GROUP / **/ - -/* HAS_PASSWD - * This symbol, if defined, indicates that the getpwnam() and - * getpwuid() routines are available to get password entries. - * The getpwent() has a separate definition, HAS_GETPWENT. - */ -/*#define HAS_PASSWD / **/ - -#define HAS_KILL -#define HAS_WAIT - -/* USEMYBINMODE - * This symbol, if defined, indicates that the program should - * use the routine my_binmode(FILE *fp, char iotype, int mode) to insure - * that a file is in "binary" mode -- that is, that no translation - * of bytes occurs on read or write operations. - */ -#undef USEMYBINMODE - -/* Stat_t: - * This symbol holds the type used to declare buffers for information - * returned by stat(). It's usually just struct stat. It may be necessary - * to include <sys/stat.h> and <sys/types.h> to get any typedef'ed - * information. - */ -#define Stat_t struct stat - -/* USE_STAT_RDEV: - * This symbol is defined if this system has a stat structure declaring - * st_rdev - */ -/*#define USE_STAT_RDEV / **/ - -/* ACME_MESS: - * This symbol, if defined, indicates that error messages should be - * should be generated in a format that allows the use of the Acme - * GUI/editor's autofind feature. - */ -#undef ACME_MESS /**/ - -/* UNLINK_ALL_VERSIONS: - * This symbol, if defined, indicates that the program should arrange - * to remove all versions of a file if unlink() is called. This is - * probably only relevant for VMS. - */ -/* #define UNLINK_ALL_VERSIONS / **/ - -/* VMS: - * This symbol, if defined, indicates that the program is running under - * VMS. It is currently automatically set by cpps running under VMS, - * and is included here for completeness only. - */ -/* #define VMS / **/ - -/* ALTERNATE_SHEBANG: - * This symbol, if defined, contains a "magic" string which may be used - * as the first line of a Perl program designed to be executed directly - * by name, instead of the standard Unix #!. If ALTERNATE_SHEBANG - * begins with a character other then #, then Perl will only treat - * it as a command line if if finds the string "perl" in the first - * word; otherwise it's treated as the first line of code in the script. - * (IOW, Perl won't hand off to another interpreter via an alternate - * shebang sequence that might be legal Perl code.) - */ -/* #define ALTERNATE_SHEBANG "#!" / **/ - -#if !defined(NSIG) || defined(M_UNIX) || defined(M_XENIX) || defined(__NetBSD__) -# include <signal.h> -#endif - -#ifndef SIGABRT -# define SIGABRT SIGILL -#endif -#ifndef SIGILL -# define SIGILL 6 /* blech */ -#endif -#define ABORT() kill(PerlProc_getpid(),SIGABRT); - -/* - * fwrite1() should be a routine with the same calling sequence as fwrite(), - * but which outputs all of the bytes requested as a single stream (unlike - * fwrite() itself, which on some systems outputs several distinct records - * if the number_of_items parameter is >1). - */ -#define fwrite1 fwrite - -#define Stat(fname,bufptr) stat((fname),(bufptr)) -#define Fstat(fd,bufptr) fstat((fd),(bufptr)) -#define Fflush(fp) fflush(fp) -#define Mkdir(path,mode) mkdir((path),(mode)) - -/* these should be set in a hint file, not here */ -#ifndef PERL_SYS_INIT -#ifdef PERL_SCO5 -# define PERL_SYS_INIT(c,v) fpsetmask(0); MALLOC_INIT -#else -# ifdef POSIX_BC -# define PERL_SYS_INIT(c,v) sigignore(SIGFPE); MALLOC_INIT -# else -# ifdef CYGWIN -# define PERL_SYS_INIT(c,v) Perl_my_setenv_init(&environ); MALLOC_INIT -# else -# define PERL_SYS_INIT(c,v) MALLOC_INIT -# endif -# endif -#endif -#endif - -#ifndef PERL_SYS_TERM -#define PERL_SYS_TERM() MALLOC_TERM -#endif - -#define BIT_BUCKET "/dev/null" - -#define dXSUB_SYS +#include "unixish.h" diff --git a/win32/config.bc b/win32/config.bc index 097d4290ab..afc148c252 100644 --- a/win32/config.bc +++ b/win32/config.bc @@ -319,6 +319,8 @@ d_statfs_s='undef' d_statvfs='undef' d_stdio_cnt_lval='define' d_stdio_ptr_lval='define' +d_stdio_ptr_lval_sets_cnt='undef' +d_stdio_ptr_lval_nochange_cnt='undef' d_stdio_stream_array='undef' d_stdiobase='define' d_stdstdio='define' diff --git a/win32/config.gc b/win32/config.gc index 9251b24f3d..b196486825 100644 --- a/win32/config.gc +++ b/win32/config.gc @@ -319,6 +319,8 @@ d_statfs_s='undef' d_statvfs='undef' d_stdio_cnt_lval='define' d_stdio_ptr_lval='define' +d_stdio_ptr_lval_sets_cnt='undef' +d_stdio_ptr_lval_nochange_cnt='undef' d_stdio_stream_array='undef' d_stdiobase='define' d_stdstdio='define' diff --git a/win32/config.vc b/win32/config.vc index 61558e5612..071b4649ec 100644 --- a/win32/config.vc +++ b/win32/config.vc @@ -319,6 +319,8 @@ d_statfs_s='undef' d_statvfs='undef' d_stdio_cnt_lval='define' d_stdio_ptr_lval='define' +d_stdio_ptr_lval_sets_cnt='undef' +d_stdio_ptr_lval_nochange_cnt='undef' d_stdio_stream_array='undef' d_stdiobase='define' d_stdstdio='define' diff --git a/x2p/find2perl.PL b/x2p/find2perl.PL index 25d0135528..4d74d06e1b 100644 --- a/x2p/find2perl.PL +++ b/x2p/find2perl.PL @@ -37,6 +37,7 @@ my \$perlpath = "$Config{perlpath}"; print OUT <<'!NO!SUBS!'; use strict; use vars qw/$statdone/; +use File::Spec::Functions 'curdir'; my $startperl = "#! $perlpath -w"; # @@ -57,7 +58,7 @@ my @roots = (); while ($ARGV[0] =~ /^[^-!(]/) { push(@roots, shift); } -@roots = ('.') unless @roots; +@roots = (curdir()) unless @roots; for (@roots) { $_ = "e($_) } my $roots = join(', ', @roots); @@ -674,6 +675,7 @@ sub n { sub quote { my $string = shift; + $string =~ s/\\/\\\\/g; $string =~ s/'/\\'/g; "'$string'"; } |