mirror of
https://git.savannah.gnu.org/git/coreutils.git
synced 2025-09-10 07:59:52 +02:00
Compare commits
357 Commits
FILEUTILS-
...
FILEUTILS-
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
07a5b9fe8e | ||
|
|
cb954e6a87 | ||
|
|
2d463bbcb5 | ||
|
|
7d957fac2e | ||
|
|
238e6f6a40 | ||
|
|
9625a6cdaf | ||
|
|
05b9afe56b | ||
|
|
84f044b998 | ||
|
|
bc885b89c1 | ||
|
|
24c3de8eb7 | ||
|
|
a2c6534e1d | ||
|
|
38c9d6d2b6 | ||
|
|
a8f75cc5c9 | ||
|
|
467a9bfd4b | ||
|
|
c0dfa7f21b | ||
|
|
9e0faa6d18 | ||
|
|
7e74cfab42 | ||
|
|
c77b696d1e | ||
|
|
2c13a275ca | ||
|
|
48a0c3d403 | ||
|
|
a59624613d | ||
|
|
88869ee024 | ||
|
|
505f12e2e4 | ||
|
|
4473f3cb6e | ||
|
|
4ae35f8a89 | ||
|
|
cd9a08e476 | ||
|
|
6025f81e94 | ||
|
|
e7dc64cdaf | ||
|
|
ee34311b45 | ||
|
|
ec20f35608 | ||
|
|
0d148ec872 | ||
|
|
751a3dc73b | ||
|
|
43aa4122fc | ||
|
|
a6d3060450 | ||
|
|
015e2e77ed | ||
|
|
b10a3f942e | ||
|
|
ca787f30f6 | ||
|
|
ac68c4f0c9 | ||
|
|
45d503f7f9 | ||
|
|
3aaa173ce2 | ||
|
|
7f7cdc86f9 | ||
|
|
c54cb6e13b | ||
|
|
c900767da2 | ||
|
|
9f0e21b7ca | ||
|
|
7442141536 | ||
|
|
2aa0dbcc2e | ||
|
|
94fa239afa | ||
|
|
4872440d7a | ||
|
|
821fddfdc5 | ||
|
|
9a5044f0ea | ||
|
|
2f07328f17 | ||
|
|
09619556e6 | ||
|
|
5b070b2329 | ||
|
|
a12101a224 | ||
|
|
62b3fd4e81 | ||
|
|
c4ece6d8cb | ||
|
|
69649d98b1 | ||
|
|
99ce6d77e0 | ||
|
|
3f9c40bdcb | ||
|
|
3b1dbb8f30 | ||
|
|
6de09f9d18 | ||
|
|
eaec7699ac | ||
|
|
e960794409 | ||
|
|
82eb2dcf9e | ||
|
|
c1fb8566f6 | ||
|
|
ef68c26a22 | ||
|
|
8ec1a397be | ||
|
|
9b531d8675 | ||
|
|
fc965709f9 | ||
|
|
44a61d78bb | ||
|
|
9195b6970b | ||
|
|
eaacf48c40 | ||
|
|
263bc0f77b | ||
|
|
29d4ea7270 | ||
|
|
9196dbf945 | ||
|
|
98edf21e5e | ||
|
|
7dfa1c9eaa | ||
|
|
c1ea7960a5 | ||
|
|
076e82b82b | ||
|
|
779b181b61 | ||
|
|
97f8518205 | ||
|
|
d713f56660 | ||
|
|
fed619866d | ||
|
|
5d8751167c | ||
|
|
77f5cd6359 | ||
|
|
523442d018 | ||
|
|
b04492c62b | ||
|
|
87110cd9f2 | ||
|
|
7744b342e1 | ||
|
|
56fee444e2 | ||
|
|
cef9c0a44a | ||
|
|
af1ef50ae1 | ||
|
|
a2f2ba51bc | ||
|
|
8bf7657cd4 | ||
|
|
4d319867cf | ||
|
|
9fe649e01a | ||
|
|
922d1292c3 | ||
|
|
f525fd81ca | ||
|
|
89826ef420 | ||
|
|
a2e1454d4b | ||
|
|
276d118b10 | ||
|
|
fe9d964a78 | ||
|
|
54f4eb2224 | ||
|
|
86fb9cb9ec | ||
|
|
7082d762aa | ||
|
|
22099863b4 | ||
|
|
a4c1c9627e | ||
|
|
53ab150d29 | ||
|
|
1a3dfa550d | ||
|
|
2b9e4c6914 | ||
|
|
8908c87cb0 | ||
|
|
7049562dce | ||
|
|
e7ae216189 | ||
|
|
70ede084c0 | ||
|
|
becdfba8b9 | ||
|
|
cb6a8b722b | ||
|
|
2ecbb0307d | ||
|
|
95ec5d7e78 | ||
|
|
11a5174aa6 | ||
|
|
a9ec82981b | ||
|
|
cbf82d876b | ||
|
|
8c5f91e5ad | ||
|
|
da9211c1c1 | ||
|
|
26756c6f82 | ||
|
|
604691004d | ||
|
|
70db3065cb | ||
|
|
d91597a2e8 | ||
|
|
1b0f03e1da | ||
|
|
e21cf52e03 | ||
|
|
4ab3a8a345 | ||
|
|
35c2b35dbd | ||
|
|
9550ca6b71 | ||
|
|
5b181c3bd6 | ||
|
|
b02f28bab4 | ||
|
|
68e327564d | ||
|
|
e363353a48 | ||
|
|
954d1b451f | ||
|
|
8b036d56ef | ||
|
|
758bbda788 | ||
|
|
ae7d45cdc9 | ||
|
|
6cb040753f | ||
|
|
42d3b0be50 | ||
|
|
cdc04ccc0e | ||
|
|
509abea3f1 | ||
|
|
67a1a846c4 | ||
|
|
d3b6e5f4fb | ||
|
|
b83bf32695 | ||
|
|
65c540d59c | ||
|
|
ab8dea5328 | ||
|
|
a90a97ba1d | ||
|
|
21cf7cf8c2 | ||
|
|
9f4ddf5976 | ||
|
|
25668ab60b | ||
|
|
d12341e78a | ||
|
|
34ad3d2d3b | ||
|
|
bece904517 | ||
|
|
d869e3fdc0 | ||
|
|
33a1515274 | ||
|
|
890d74d50b | ||
|
|
f0f15679fb | ||
|
|
b4b06d9c39 | ||
|
|
e11c197cc2 | ||
|
|
5967a93b4f | ||
|
|
1f4c0ed890 | ||
|
|
9a6aae1ed7 | ||
|
|
3f05e0467f | ||
|
|
ea020acdd2 | ||
|
|
3b713062cd | ||
|
|
f5f0c17fe9 | ||
|
|
d34ec08816 | ||
|
|
7316f85aaa | ||
|
|
3c2295f52c | ||
|
|
d3e2cd9eca | ||
|
|
bf527b6094 | ||
|
|
eb3b7c64d0 | ||
|
|
0695444a89 | ||
|
|
cf00554f8f | ||
|
|
1b9f58551d | ||
|
|
4e83f9789c | ||
|
|
29064b5f4f | ||
|
|
fadedac410 | ||
|
|
06f14ae760 | ||
|
|
1592f752f6 | ||
|
|
84b4618b26 | ||
|
|
414cf1b428 | ||
|
|
b76f341922 | ||
|
|
10f96d621c | ||
|
|
306ea2b028 | ||
|
|
ff5b4df30b | ||
|
|
20bc02752b | ||
|
|
410a3c94e8 | ||
|
|
c94e186b91 | ||
|
|
e42efa6866 | ||
|
|
115a5d0e61 | ||
|
|
f28d5ba125 | ||
|
|
f22e54a579 | ||
|
|
888b0fe143 | ||
|
|
e0c1e743cc | ||
|
|
3e60c9744d | ||
|
|
3cce240e0a | ||
|
|
17a4ddab33 | ||
|
|
d2e1175756 | ||
|
|
9fec9172be | ||
|
|
da25811932 | ||
|
|
dc4fd4c43b | ||
|
|
26ba9ca9df | ||
|
|
f749a71868 | ||
|
|
43ca488eae | ||
|
|
b0c149e78f | ||
|
|
97bc6652e7 | ||
|
|
e0ad1ee4d1 | ||
|
|
af821763c5 | ||
|
|
4a90a25973 | ||
|
|
570fa71fb3 | ||
|
|
8d891cbf63 | ||
|
|
58d4fd72fe | ||
|
|
b517135765 | ||
|
|
f4e4297031 | ||
|
|
22d584b475 | ||
|
|
f6aaba2b34 | ||
|
|
c970990a0a | ||
|
|
500f608a4d | ||
|
|
e5eed12981 | ||
|
|
8be71eeb83 | ||
|
|
06683af3c4 | ||
|
|
38d09e7907 | ||
|
|
0e777744cb | ||
|
|
9a887e5ca4 | ||
|
|
495729b1dc | ||
|
|
75e5479220 | ||
|
|
db0dadb263 | ||
|
|
3c21ae616f | ||
|
|
ac25bd69bf | ||
|
|
87364848e2 | ||
|
|
015d9b3c3f | ||
|
|
8a3a8c7126 | ||
|
|
003cf75202 | ||
|
|
51f90506ba | ||
|
|
4a0813fecb | ||
|
|
ee991227ee | ||
|
|
4d57863e63 | ||
|
|
d6c548c783 | ||
|
|
357c999a88 | ||
|
|
6222e67d7f | ||
|
|
110bd4aa65 | ||
|
|
97d75acb2c | ||
|
|
8d598fb33d | ||
|
|
ceb02a40aa | ||
|
|
ea9ec4ab46 | ||
|
|
37f6675617 | ||
|
|
a9583f3841 | ||
|
|
fd008ba80b | ||
|
|
1eb017af63 | ||
|
|
7a545dda54 | ||
|
|
27aafa985a | ||
|
|
df9cb5d5c0 | ||
|
|
375b687738 | ||
|
|
955e21bb83 | ||
|
|
29547b55e4 | ||
|
|
15633a30c4 | ||
|
|
6522d1a579 | ||
|
|
dbe0ba8119 | ||
|
|
ec29f8c718 | ||
|
|
d7d06726a7 | ||
|
|
2b8ef64969 | ||
|
|
5118d57563 | ||
|
|
6bff151edc | ||
|
|
f8453c637e | ||
|
|
551f17ed6f | ||
|
|
944dc00d0c | ||
|
|
e38501be52 | ||
|
|
7b36cfca74 | ||
|
|
75b8fb688f | ||
|
|
5667ae159f | ||
|
|
88d0241214 | ||
|
|
c3f528b978 | ||
|
|
fb888f11ab | ||
|
|
731688ecd5 | ||
|
|
7004c53ab4 | ||
|
|
501ee2ebd6 | ||
|
|
e159d72704 | ||
|
|
a31aa355b3 | ||
|
|
69834c7c98 | ||
|
|
bfea519d18 | ||
|
|
51282eaf75 | ||
|
|
1e25b6e3d3 | ||
|
|
38acb920eb | ||
|
|
8b3cbe63d8 | ||
|
|
c7c2516a4d | ||
|
|
fa7427c2ea | ||
|
|
c39158b8ec | ||
|
|
041b69340d | ||
|
|
f4db32ef36 | ||
|
|
b966f347ee | ||
|
|
49f27cd70e | ||
|
|
2bb9d3c528 | ||
|
|
b311b41561 | ||
|
|
0cb6dcf585 | ||
|
|
e213c687aa | ||
|
|
cb1d4eb4f2 | ||
|
|
45ed22a319 | ||
|
|
977e79ed76 | ||
|
|
a842553181 | ||
|
|
1f6728404c | ||
|
|
1b4f931bf4 | ||
|
|
2da1b2088f | ||
|
|
b99ab6e97d | ||
|
|
13e5d17494 | ||
|
|
f92719d4dc | ||
|
|
e60b747ade | ||
|
|
7cb251e782 | ||
|
|
f3ade72018 | ||
|
|
59998135d0 | ||
|
|
87f9e231c3 | ||
|
|
8e7da4a47c | ||
|
|
f54c8f6d80 | ||
|
|
9eedfd2482 | ||
|
|
a498f54f37 | ||
|
|
4394c38352 | ||
|
|
7914fb4069 | ||
|
|
e6e8ae14c9 | ||
|
|
c704267b26 | ||
|
|
3972420f3b | ||
|
|
94c2a11f47 | ||
|
|
d15c8cbe43 | ||
|
|
b5c28b7097 | ||
|
|
06adce5358 | ||
|
|
d9ce52992c | ||
|
|
83db4858d0 | ||
|
|
21b87a6ab7 | ||
|
|
975daefaad | ||
|
|
3b3e52352c | ||
|
|
aa014b906c | ||
|
|
2a5e98c9a4 | ||
|
|
dcaa4b656e | ||
|
|
5c6d6248e9 | ||
|
|
f8be5ac8df | ||
|
|
32acfd66d0 | ||
|
|
dd16dfb3e3 | ||
|
|
2d4f0fea3a | ||
|
|
46166ad9b7 | ||
|
|
bf97e5a0b8 | ||
|
|
422a7fdc78 | ||
|
|
19270e99bc | ||
|
|
91dc8874b0 | ||
|
|
58d6acdfd3 | ||
|
|
431652a886 | ||
|
|
2e487bb6da | ||
|
|
c92163b6e9 | ||
|
|
8782f7a817 | ||
|
|
a58c222775 | ||
|
|
44538bbbd8 | ||
|
|
65df533705 | ||
|
|
392902344a | ||
|
|
bf588140c5 | ||
|
|
0f2fbadbea | ||
|
|
50225cad77 |
@@ -4,6 +4,10 @@
|
||||
# It is necessary if you want to build targets usually of interest
|
||||
# only to the maintainer.
|
||||
|
||||
# Systems where /bin/sh is not the default shell need this. The $(shell)
|
||||
# command below won't work with e.g. stock DOS/Windows shells.
|
||||
SHELL = /bin/sh
|
||||
|
||||
have-Makefile := $(shell test -f Makefile && echo yes)
|
||||
|
||||
# If the user runs GNU make but has not yet run ./configure,
|
||||
|
||||
@@ -13,6 +13,7 @@ maintainer-check:
|
||||
|
||||
# Tag before making distribution. Also, don't make a distribution if
|
||||
# checks fail. Also, make sure the NEWS file is up-to-date.
|
||||
# FIXME: use dist-hook/my-dist like distcheck-hook/my-distcheck.
|
||||
cvs-dist: maintainer-check
|
||||
pkg=`echo "$(PACKAGE)" | tr a-z A-Z`; \
|
||||
ver=`echo "$(VERSION)" | sed 's/\./_/g'`; \
|
||||
@@ -27,7 +28,7 @@ cvs-dist: maintainer-check
|
||||
$(MAKE) dist
|
||||
|
||||
t=./=test
|
||||
my-distcheck: dist
|
||||
my-distcheck:
|
||||
-rm -rf $(t)
|
||||
mkdir $(t)
|
||||
GZIP=$(GZIP) $(TAR) -C $(t) -zxf $(distdir).tar.gz
|
||||
|
||||
8
THANKS
8
THANKS
@@ -4,6 +4,8 @@ The rest of the addresses are still in the ChangeLog.
|
||||
Achim Blumensath: blume@corona.oche.de
|
||||
aldomel: aldomel@ix.netcom.com
|
||||
Akim Demaille: demaille@inf.enst.fr
|
||||
Alain Magloire: alain@qnx.com
|
||||
Alexey Solovyov: alekso@math.uu.se
|
||||
Andreas Jaeger: jaeger@gnu.org
|
||||
Andreas Schwab: schwab@issan.informatik.uni-dortmund.de
|
||||
Andries Brouwer: Andries.Brouwer@cwi.nl
|
||||
@@ -16,6 +18,7 @@ Bob McCracken: kerouac@ravenet.com
|
||||
Brendan O'Dea: bod@compusol.com.au
|
||||
Charles Karney: karney@pppl.gov
|
||||
Christian von Roques: roques@pond.sub.org
|
||||
Colin Plumb: colin@nyx.net
|
||||
Dirk Lattermann: dlatt@t-online.de
|
||||
Don Parsons: dparsons@synapse.kent.edu
|
||||
Eirik Fuller: eirik@netcom.com
|
||||
@@ -29,6 +32,7 @@ Hugh Daniel: hugh@xanadu.com
|
||||
James: james@albion.glarp.com
|
||||
James Antill: jmanti%essex.ac.uk@seralph21.essex.ac.uk
|
||||
James Tanis: jtt@soscorp.com
|
||||
Jamie Lokier: jamie@imbolc.ucc.ie
|
||||
Jesse Thilo: jgt2@eecs.lehigh.edu
|
||||
Joakim Rosqvist: dvljrt@cs.umu.se
|
||||
Johan Danielsson: joda@pdc.kth.se
|
||||
@@ -44,6 +48,7 @@ Mark Kettenis: kettenis@phys.uva.nl
|
||||
Marty Leisner: leisner@sdsp.mc.xerox.com
|
||||
Masami Takikawa: takikawm@CS.ORST.EDU
|
||||
Matthew S. Levine: mslevine@theory.lcs.mit.edu
|
||||
Matthew Swift: swift@alum.mit.edu
|
||||
Michiel Bacchiani: bacchian@raven.bu.edu
|
||||
Miles Bader: miles@gnu.ai.mit.edu
|
||||
Noel Cragg: noel@red-bean.com
|
||||
@@ -52,11 +57,14 @@ Per Kristian Hove: perhov@math.ntnu.no
|
||||
Peter Eriksson: peter@ifm.liu.se
|
||||
Paul Eggert: eggert@twinsun.com
|
||||
Philippe De Muyter: phdm@macqel.be
|
||||
Rainer Orth: ro@TechFak.Uni-Bielefeld.DE
|
||||
Ross Ridge: rridge@calum.csclub.uwaterloo.ca
|
||||
Santiago Vila Doncel: sanvila@unex.es
|
||||
Stuart Kemp: skemp@peter.bmc.com
|
||||
Thomas Bushnell, n/BSG: thomas@gnu.ai.mit.edu
|
||||
Torbjorn Lindgren: tl@funcom.no
|
||||
Tony Leneis: tony@plaza.ds.adp.com
|
||||
Ulrich Drepper: drepper@cygnus.com
|
||||
Volker Borchert: bt@teknon.de
|
||||
Michael Veksler: mveksler@techunix.technion.ac.il
|
||||
Wayne Stewart: wstewa@atl.com
|
||||
|
||||
@@ -1,20 +1,19 @@
|
||||
Makefile
|
||||
fileutils.info
|
||||
version.texi
|
||||
fileutils.info*
|
||||
fileutils.log
|
||||
fileutils.dvi
|
||||
fileutils.aux
|
||||
fileutils.toc
|
||||
fileutils.cp
|
||||
fileutils.fn
|
||||
fileutils.vr
|
||||
fileutils.tp
|
||||
fileutils.ky
|
||||
fileutils.pg
|
||||
fileutils.cm
|
||||
fileutils.fl
|
||||
fileutils.op
|
||||
fileutils.cp
|
||||
fileutils.cps
|
||||
fileutils.dvi
|
||||
fileutils.fl
|
||||
fileutils.fn
|
||||
fileutils.info
|
||||
fileutils.info*
|
||||
fileutils.ky
|
||||
fileutils.log
|
||||
fileutils.op
|
||||
fileutils.pg
|
||||
fileutils.toc
|
||||
fileutils.tp
|
||||
fileutils.vr
|
||||
stamp-vti
|
||||
version.texi
|
||||
|
||||
137
doc/Makefile.in
137
doc/Makefile.in
@@ -1,6 +1,6 @@
|
||||
# Makefile.in generated automatically by automake 1.3b from Makefile.am
|
||||
# Makefile.in generated automatically by automake 1.4a from Makefile.am
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
@@ -11,7 +11,7 @@
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
|
||||
SHELL = /bin/sh
|
||||
SHELL = @SHELL@
|
||||
|
||||
srcdir = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
@@ -46,7 +46,7 @@ AUTOMAKE = @AUTOMAKE@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
transform = @program_transform_name@
|
||||
@@ -106,7 +106,6 @@ mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
||||
CONFIG_HEADER = ../config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
TEXI2DVI = texi2dvi
|
||||
TEXINFO_TEX = $(srcdir)/texinfo.tex
|
||||
INFO_DEPS = fileutils.info
|
||||
DVIS = fileutils.dvi
|
||||
TEXINFOS = fileutils.texi
|
||||
@@ -116,13 +115,12 @@ version.texi
|
||||
|
||||
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
|
||||
|
||||
TAR = tar
|
||||
GZIP = --best
|
||||
all: Makefile $(INFO_DEPS)
|
||||
|
||||
TAR = gtar
|
||||
GZIP_ENV = --best
|
||||
all: all-redirect
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .dvi .info .ps .texi .texinfo .txi
|
||||
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
|
||||
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
|
||||
cd $(top_srcdir) && $(AUTOMAKE) --gnits doc/Makefile
|
||||
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
|
||||
@@ -130,18 +128,18 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
|
||||
&& CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
|
||||
|
||||
|
||||
version.texi: stamp-vti
|
||||
cp $(srcdir)/stamp-vti $(srcdir)/version.texi
|
||||
$(srcdir)/version.texi: stamp-vti
|
||||
@:
|
||||
|
||||
stamp-vti: fileutils.texi $(top_srcdir)/configure.in
|
||||
@echo "@set UPDATED `cd $(srcdir) \
|
||||
&& $(SHELL) ./mdate-sh fileutils.texi`" > vti.tmp
|
||||
$(srcdir)/stamp-vti: fileutils.texi $(top_srcdir)/configure.in
|
||||
@echo "@set UPDATED `$(SHELL) $(srcdir)/mdate-sh $(srcdir)/fileutils.texi`" > vti.tmp
|
||||
@echo "@set EDITION $(VERSION)" >> vti.tmp
|
||||
@echo "@set VERSION $(VERSION)" >> vti.tmp
|
||||
@cmp -s vti.tmp $(srcdir)/stamp-vti \
|
||||
|| (echo "Updating $(srcdir)/stamp-vti"; \
|
||||
cp vti.tmp $(srcdir)/stamp-vti)
|
||||
@cmp -s vti.tmp $(srcdir)/version.texi \
|
||||
|| (echo "Updating $(srcdir)/version.texi"; \
|
||||
cp vti.tmp $(srcdir)/version.texi)
|
||||
-@rm -f vti.tmp
|
||||
@cp $(srcdir)/version.texi $@
|
||||
|
||||
mostlyclean-vti:
|
||||
-rm -f vti.tmp
|
||||
@@ -151,7 +149,7 @@ clean-vti:
|
||||
distclean-vti:
|
||||
|
||||
maintainer-clean-vti:
|
||||
-rm -f stamp-vti version.texi
|
||||
-rm -f $(srcdir)/stamp-vti $(srcdir)/version.texi
|
||||
|
||||
fileutils.info: fileutils.texi version.texi
|
||||
fileutils.dvi: fileutils.texi version.texi
|
||||
@@ -165,7 +163,7 @@ DVIPS = dvips
|
||||
&& $(MAKEINFO) `echo $< | sed 's,.*/,,'`
|
||||
|
||||
.texi.dvi:
|
||||
TEXINPUTS=$(srcdir):$$TEXINPUTS \
|
||||
TEXINPUTS=.:$$TEXINPUTS \
|
||||
MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(TEXI2DVI) $<
|
||||
|
||||
.texi:
|
||||
@@ -184,7 +182,7 @@ DVIPS = dvips
|
||||
&& $(MAKEINFO) `echo $< | sed 's,.*/,,'`
|
||||
|
||||
.texinfo.dvi:
|
||||
TEXINPUTS=$(srcdir):$$TEXINPUTS \
|
||||
TEXINPUTS=.:$$TEXINPUTS \
|
||||
MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(TEXI2DVI) $<
|
||||
|
||||
.txi.info:
|
||||
@@ -193,7 +191,7 @@ DVIPS = dvips
|
||||
&& $(MAKEINFO) `echo $< | sed 's,.*/,,'`
|
||||
|
||||
.txi.dvi:
|
||||
TEXINPUTS=$(srcdir):$$TEXINPUTS \
|
||||
TEXINPUTS=.:$$TEXINPUTS \
|
||||
MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(TEXI2DVI) $<
|
||||
|
||||
.txi:
|
||||
@@ -206,7 +204,8 @@ DVIPS = dvips
|
||||
install-info-am: $(INFO_DEPS)
|
||||
@$(NORMAL_INSTALL)
|
||||
$(mkinstalldirs) $(DESTDIR)$(infodir)
|
||||
@for file in $(INFO_DEPS); do \
|
||||
@list='$(INFO_DEPS)'; \
|
||||
for file in $$list; do \
|
||||
d=$(srcdir); \
|
||||
for ifile in `cd $$d && echo $$file $$file-[0-9] $$file-[0-9][0-9]`; do \
|
||||
if test -f $$d/$$ifile; then \
|
||||
@@ -217,7 +216,8 @@ install-info-am: $(INFO_DEPS)
|
||||
done
|
||||
@$(POST_INSTALL)
|
||||
@if $(SHELL) -c 'install-info --version | sed 1q | fgrep -s -v -i debian' >/dev/null 2>&1; then \
|
||||
for file in $(INFO_DEPS); do \
|
||||
list='$(INFO_DEPS)'; \
|
||||
for file in $$list; do \
|
||||
echo " install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$file";\
|
||||
install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$file || :;\
|
||||
done; \
|
||||
@@ -228,17 +228,20 @@ uninstall-info:
|
||||
@if $(SHELL) -c 'install-info --version | sed 1q | fgrep -s -v -i debian' >/dev/null 2>&1; then \
|
||||
ii=yes; \
|
||||
else ii=; fi; \
|
||||
for file in $(INFO_DEPS); do \
|
||||
list='$(INFO_DEPS)'; \
|
||||
for file in $$list; do \
|
||||
test -z "$ii" \
|
||||
|| install-info --info-dir=$(DESTDIR)$(infodir) --remove $$file; \
|
||||
done
|
||||
@$(NORMAL_UNINSTALL)
|
||||
for file in $(INFO_DEPS); do \
|
||||
list='$(INFO_DEPS)'; \
|
||||
for file in $$list; do \
|
||||
(cd $(DESTDIR)$(infodir) && rm -f $$file $$file-[0-9] $$file-[0-9][0-9]); \
|
||||
done
|
||||
|
||||
dist-info: $(INFO_DEPS)
|
||||
for base in $(INFO_DEPS); do \
|
||||
list='$(INFO_DEPS)'; \
|
||||
for base in $$list; do \
|
||||
d=$(srcdir); \
|
||||
for file in `cd $$d && eval echo $$base*`; do \
|
||||
test -f $(distdir)/$$file \
|
||||
@@ -249,18 +252,17 @@ dist-info: $(INFO_DEPS)
|
||||
|
||||
mostlyclean-aminfo:
|
||||
-rm -f fileutils.aux fileutils.cp fileutils.cps fileutils.dvi \
|
||||
fileutils.fl fileutils.fn fileutils.fns fileutils.ky \
|
||||
fileutils.kys fileutils.ps fileutils.log fileutils.pg \
|
||||
fileutils.toc fileutils.tp fileutils.tps fileutils.vr \
|
||||
fileutils.vrs fileutils.op fileutils.tr fileutils.cv \
|
||||
fileutils.cn
|
||||
fileutils.fn fileutils.fns fileutils.ky fileutils.kys \
|
||||
fileutils.ps fileutils.log fileutils.pg fileutils.toc \
|
||||
fileutils.tp fileutils.tps fileutils.vr fileutils.vrs \
|
||||
fileutils.op fileutils.tr fileutils.cv fileutils.cn
|
||||
|
||||
clean-aminfo:
|
||||
|
||||
distclean-aminfo:
|
||||
|
||||
maintainer-clean-aminfo:
|
||||
for i in $(INFO_DEPS); do \
|
||||
cd $(srcdir) && for i in $(INFO_DEPS); do \
|
||||
rm -f $$i; \
|
||||
if test "`echo $$i-[0-9]*`" != "$$i-[0-9]*"; then \
|
||||
rm -f $$i-[0-9]*; \
|
||||
@@ -282,28 +284,38 @@ distdir: $(DISTFILES)
|
||||
&& $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnits doc/Makefile
|
||||
@for file in $(DISTFILES); do \
|
||||
d=$(srcdir); \
|
||||
test -f $(distdir)/$$file \
|
||||
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file; \
|
||||
if test -d $$d/$$file; then \
|
||||
cp -pr $$/$$file $(distdir)/$$file; \
|
||||
else \
|
||||
test -f $(distdir)/$$file \
|
||||
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file || :; \
|
||||
fi; \
|
||||
done
|
||||
$(MAKE) $(AM_MAKEFLAGS) top_distdir="$(top_distdir)" distdir="$(distdir)" dist-info
|
||||
info: $(INFO_DEPS)
|
||||
dvi: $(DVIS)
|
||||
check: all
|
||||
installcheck:
|
||||
install-exec:
|
||||
@$(NORMAL_INSTALL)
|
||||
info-am: $(INFO_DEPS)
|
||||
info: info-am
|
||||
dvi-am: $(DVIS)
|
||||
dvi: dvi-am
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
installcheck-am:
|
||||
installcheck: installcheck-am
|
||||
install-exec-am:
|
||||
install-exec: install-exec-am
|
||||
|
||||
install-data: install-info-am
|
||||
@$(NORMAL_INSTALL)
|
||||
|
||||
install: install-exec install-data all
|
||||
@:
|
||||
|
||||
uninstall: uninstall-info
|
||||
install-data-am: install-info-am
|
||||
install-data: install-data-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
install: install-am
|
||||
uninstall-am: uninstall-info
|
||||
uninstall: uninstall-am
|
||||
all-am: Makefile $(INFO_DEPS)
|
||||
all-redirect: all-am
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install
|
||||
$(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
|
||||
installdirs:
|
||||
$(mkinstalldirs) $(DESTDIR)$(infodir)
|
||||
|
||||
@@ -317,22 +329,31 @@ distclean-generic:
|
||||
-rm -f config.cache config.log stamp-h stamp-h[0-9]*
|
||||
|
||||
maintainer-clean-generic:
|
||||
mostlyclean: mostlyclean-vti mostlyclean-aminfo mostlyclean-generic
|
||||
mostlyclean-am: mostlyclean-vti mostlyclean-aminfo mostlyclean-generic
|
||||
|
||||
clean: clean-vti clean-aminfo clean-generic mostlyclean
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
distclean: distclean-vti distclean-aminfo distclean-generic clean
|
||||
-rm -f config.status
|
||||
clean-am: clean-vti clean-aminfo clean-generic mostlyclean-am
|
||||
|
||||
maintainer-clean: maintainer-clean-vti maintainer-clean-aminfo \
|
||||
maintainer-clean-generic distclean
|
||||
clean: clean-am
|
||||
|
||||
distclean-am: distclean-vti distclean-aminfo distclean-generic clean-am
|
||||
|
||||
distclean: distclean-am
|
||||
|
||||
maintainer-clean-am: maintainer-clean-vti maintainer-clean-aminfo \
|
||||
maintainer-clean-generic distclean-am
|
||||
@echo "This command is intended for maintainers to use;"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
|
||||
.PHONY: mostlyclean-vti distclean-vti clean-vti maintainer-clean-vti \
|
||||
install-info-am uninstall-info mostlyclean-aminfo distclean-aminfo \
|
||||
clean-aminfo maintainer-clean-aminfo tags distdir info dvi installcheck \
|
||||
install-exec install-data install uninstall all installdirs \
|
||||
clean-aminfo maintainer-clean-aminfo tags distdir info-am info dvi-am \
|
||||
dvi check check-am installcheck-am installcheck install-exec-am \
|
||||
install-exec install-data-am install-data install-am install \
|
||||
uninstall-am uninstall all-redirect all-am all installdirs \
|
||||
mostlyclean-generic distclean-generic clean-generic \
|
||||
maintainer-clean-generic clean mostlyclean distclean maintainer-clean
|
||||
|
||||
|
||||
@@ -113,7 +113,7 @@ by the Foundation.
|
||||
@end titlepage
|
||||
|
||||
|
||||
@ifinfo
|
||||
@ifnottex
|
||||
@node Top
|
||||
@top GNU shell utilities
|
||||
|
||||
@@ -140,7 +140,7 @@ This manual documents version @value{VERSION} of the GNU shell utilities.
|
||||
|
||||
* Index:: General index.
|
||||
@end menu
|
||||
@end ifinfo
|
||||
@end ifnottex
|
||||
|
||||
|
||||
@node Introduction
|
||||
|
||||
450
doc/texinfo.tex
450
doc/texinfo.tex
@@ -3,9 +3,9 @@
|
||||
% Load plain if necessary, i.e., if running under initex.
|
||||
\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
|
||||
%
|
||||
\def\texinfoversion{1998-12-19}%
|
||||
\def\texinfoversion{1999-02-04}%
|
||||
%
|
||||
% Copyright (C) 1985, 86, 88, 90, 91, 92, 93, 94, 95, 96, 97, 98
|
||||
% Copyright (C) 1985, 86, 88, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99
|
||||
% Free Software Foundation, Inc.
|
||||
%
|
||||
% This texinfo.tex file is free software; you can redistribute it and/or
|
||||
@@ -30,29 +30,33 @@
|
||||
% Please try the latest version of texinfo.tex before submitting bug
|
||||
% reports; you can get the latest version from:
|
||||
% ftp://ftp.gnu.org/pub/gnu/texinfo.tex
|
||||
% /home/gd/gnu/doc/texinfo.tex on the GNU machines.
|
||||
% (and all GNU mirrors, see http://www.gnu.org/order/ftp.html)
|
||||
% ftp://tug.org/tex/texinfo.tex
|
||||
% ftp://ctan.org/macros/texinfo/texinfo.tex
|
||||
% (and all CTAN mirrors, finger ctan@ctan.org for a list).
|
||||
% The texinfo.tex in the texinfo distribution itself could well be out
|
||||
% /home/gd/gnu/doc/texinfo.tex on the GNU machines.
|
||||
% The texinfo.tex in any given Texinfo distribution could well be out
|
||||
% of date, so if that's what you're using, please check.
|
||||
%
|
||||
% Send bug reports to bug-texinfo@gnu.org.
|
||||
% Please include a precise test case in each bug report,
|
||||
% including a complete document with which we can reproduce the problem.
|
||||
%
|
||||
% There is a small home page for Texinfo at http://texinfo.org/.
|
||||
%
|
||||
% Send bug reports to bug-texinfo@gnu.org. Please include including a
|
||||
% complete document in each bug report with which we can reproduce the
|
||||
% problem. Patches are, of course, greatly appreciated.
|
||||
%
|
||||
% To process a Texinfo manual with TeX, it's most reliable to use the
|
||||
% texi2dvi shell script that comes with the distribution. For simple
|
||||
% manuals, however, you can get away with:
|
||||
% texi2dvi shell script that comes with the distribution. For a simple
|
||||
% manual foo.texi, however, you can get away with this:
|
||||
% tex foo.texi
|
||||
% texindex foo.??
|
||||
% tex foo.texi
|
||||
% tex foo.texi
|
||||
% dvips foo.dvi -o # or whatever, to process the dvi file.
|
||||
% dvips foo.dvi -o # or whatever, to process the dvi file; this makes foo.ps.
|
||||
% The extra runs of TeX get the cross-reference information correct.
|
||||
% Sometimes one run after texindex suffices, and sometimes you need more
|
||||
% than two; texi2dvi does it as many times as necessary.
|
||||
%
|
||||
% It is possible to adapt texinfo.tex for other languages. You can get
|
||||
% the existing language-specific files from ftp://ftp.gnu.org/gnu/texinfo/.
|
||||
|
||||
\message{Loading texinfo [version \texinfoversion]:}
|
||||
|
||||
@@ -92,19 +96,45 @@
|
||||
\newlinechar = `^^J
|
||||
|
||||
% Set up fixed words for English if not already set.
|
||||
\ifx\putwordAppendix\undefined \gdef\putwordAppendix{Appendix}\fi
|
||||
\ifx\putwordChapter\undefined \gdef\putwordChapter{Chapter}\fi
|
||||
\ifx\putwordfile\undefined \gdef\putwordfile{file}\fi
|
||||
\ifx\putwordInfo\undefined \gdef\putwordInfo{Info}\fi
|
||||
\ifx\putwordMethodon\undefined \gdef\putwordMethodon{Method on}\fi
|
||||
\ifx\putwordon\undefined \gdef\putwordon{on}\fi
|
||||
\ifx\putwordpage\undefined \gdef\putwordpage{page}\fi
|
||||
\ifx\putwordsection\undefined \gdef\putwordsection{section}\fi
|
||||
\ifx\putwordSection\undefined \gdef\putwordSection{Section}\fi
|
||||
\ifx\putwordsee\undefined \gdef\putwordsee{see}\fi
|
||||
\ifx\putwordSee\undefined \gdef\putwordSee{See}\fi
|
||||
\ifx\putwordShortContents\undefined \gdef\putwordShortContents{Short Contents}\fi
|
||||
\ifx\putwordTableofContents\undefined\gdef\putwordTableofContents{Table of Contents}\fi
|
||||
\ifx\putwordAppendix\undefined \gdef\putwordAppendix{Appendix}\fi
|
||||
\ifx\putwordChapter\undefined \gdef\putwordChapter{Chapter}\fi
|
||||
\ifx\putwordfile\undefined \gdef\putwordfile{file}\fi
|
||||
\ifx\putwordIndexIsEmpty\undefined \gdef\putwordIndexIsEmpty{(Index is empty)}\fi
|
||||
\ifx\putwordIndexNonexistent\undefined \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi
|
||||
\ifx\putwordInfo\undefined \gdef\putwordInfo{Info}\fi
|
||||
\ifx\putwordMethodon\undefined \gdef\putwordMethodon{Method on}\fi
|
||||
\ifx\putwordNoTitle\undefined \gdef\putwordNoTitle{No Title}\fi
|
||||
\ifx\putwordof\undefined \gdef\putwordof{of}\fi
|
||||
\ifx\putwordon\undefined \gdef\putwordon{on}\fi
|
||||
\ifx\putwordpage\undefined \gdef\putwordpage{page}\fi
|
||||
\ifx\putwordsection\undefined \gdef\putwordsection{section}\fi
|
||||
\ifx\putwordSection\undefined \gdef\putwordSection{Section}\fi
|
||||
\ifx\putwordsee\undefined \gdef\putwordsee{see}\fi
|
||||
\ifx\putwordSee\undefined \gdef\putwordSee{See}\fi
|
||||
\ifx\putwordShortTOC\undefined \gdef\putwordShortTOC{Short Contents}\fi
|
||||
\ifx\putwordTOC\undefined \gdef\putwordTOC{Table of Contents}\fi
|
||||
%
|
||||
\ifx\putwordMJan\undefined \gdef\putwordMJan{January}\fi
|
||||
\ifx\putwordMFeb\undefined \gdef\putwordMFeb{February}\fi
|
||||
\ifx\putwordMMar\undefined \gdef\putwordMMar{March}\fi
|
||||
\ifx\putwordMApr\undefined \gdef\putwordMApr{April}\fi
|
||||
\ifx\putwordMMay\undefined \gdef\putwordMMay{May}\fi
|
||||
\ifx\putwordMJun\undefined \gdef\putwordMJun{June}\fi
|
||||
\ifx\putwordMJul\undefined \gdef\putwordMJul{July}\fi
|
||||
\ifx\putwordMAug\undefined \gdef\putwordMAug{August}\fi
|
||||
\ifx\putwordMSep\undefined \gdef\putwordMSep{September}\fi
|
||||
\ifx\putwordMOct\undefined \gdef\putwordMOct{October}\fi
|
||||
\ifx\putwordMNov\undefined \gdef\putwordMNov{November}\fi
|
||||
\ifx\putwordMDec\undefined \gdef\putwordMDec{December}\fi
|
||||
%
|
||||
\ifx\putwordDefmac\undefined \gdef\putwordDefmac{Macro}\fi
|
||||
\ifx\putwordDefspec\undefined \gdef\putwordDefspec{Special Form}\fi
|
||||
\ifx\putwordDefivar\undefined \gdef\putwordDefivar{Instance Variable}\fi
|
||||
\ifx\putwordDefvar\undefined \gdef\putwordDefvar{Variable}\fi
|
||||
\ifx\putwordDefopt\undefined \gdef\putwordDefopt{User Option}\fi
|
||||
\ifx\putwordDeftypevar\undefined \gdef\putwordDeftypevar{Variable}\fi
|
||||
\ifx\putwordDeffunc\undefined \gdef\putwordDeffunc{Function}\fi
|
||||
\ifx\putwordDeftypefun\undefined \gdef\putwordDeftypefun{Function}\fi
|
||||
|
||||
% Ignore a token.
|
||||
%
|
||||
@@ -143,7 +173,7 @@
|
||||
|
||||
% For @cropmarks command.
|
||||
% Do @cropmarks to get crop marks.
|
||||
%
|
||||
%
|
||||
\newif\ifcropmarks
|
||||
\let\cropmarks = \cropmarkstrue
|
||||
%
|
||||
@@ -618,7 +648,7 @@ where each line of input produces a line of output.}
|
||||
}
|
||||
|
||||
% @enddots{} is an end-of-sentence ellipsis.
|
||||
%
|
||||
%
|
||||
\def\enddots{%
|
||||
\leavevmode
|
||||
\hbox to 2em{%
|
||||
@@ -844,7 +874,7 @@ where each line of input produces a line of output.}
|
||||
% We need to warn folks that they may have trouble with TeX 3.0.
|
||||
% This uses \immediate\write16 rather than \message to get newlines.
|
||||
\immediate\write16{}
|
||||
\immediate\write16{***WARNING*** for users of Unix TeX 3.0!}
|
||||
\immediate\write16{WARNING: for users of Unix TeX 3.0!}
|
||||
\immediate\write16{This manual trips a bug in TeX version 3.0 (tex hangs).}
|
||||
\immediate\write16{If you are running another version of TeX, relax.}
|
||||
\immediate\write16{If you are running Unix TeX 3.0, kill this TeX process.}
|
||||
@@ -980,7 +1010,7 @@ where each line of input produces a line of output.}
|
||||
% contains other Texinfo commands, it's almost certain it will fail
|
||||
% (although perhaps we could fix that with sufficient work to do a
|
||||
% one-level expansion on the result, instead of complete).
|
||||
%
|
||||
%
|
||||
\def\expandablevalue#1{%
|
||||
\expandafter\ifx\csname SET#1\endcsname\relax
|
||||
{[No value for ``#1'']}%
|
||||
@@ -1088,7 +1118,7 @@ where each line of input produces a line of output.}
|
||||
% So open here the files we need to have open while reading the input.
|
||||
% This makes it possible to make a .fmt file for texinfo.
|
||||
\def\setfilename{%
|
||||
\iflinks
|
||||
\iflinks
|
||||
\readauxfile
|
||||
\fi % \openindices needs to do some work in any case.
|
||||
\openindices
|
||||
@@ -1107,7 +1137,7 @@ where each line of input produces a line of output.}
|
||||
}
|
||||
|
||||
% Called from \setfilename.
|
||||
%
|
||||
%
|
||||
\def\openindices{%
|
||||
\newindex{cp}%
|
||||
\newcodeindex{fn}%
|
||||
@@ -1479,17 +1509,24 @@ where each line of input produces a line of output.}
|
||||
\let\env=\code
|
||||
\let\command=\code
|
||||
|
||||
% @uref (abbreviation for `urlref') takes an optional second argument
|
||||
% specifying the text to display. First (mandatory) arg is the url.
|
||||
% Perhaps eventually put in a hypertex \special here.
|
||||
%
|
||||
\def\uref#1{\urefxxx #1,,\finish}
|
||||
\def\urefxxx#1,#2,#3\finish{%
|
||||
\setbox0 = \hbox{\ignorespaces #2}%
|
||||
% @uref (abbreviation for `urlref') takes an optional (comma-separated)
|
||||
% second argument specifying the text to display and an optional third
|
||||
% arg as text to display instead of (rather than in addition to) the url
|
||||
% itself. First (mandatory) arg is the url. Perhaps eventually put in
|
||||
% a hypertex \special here.
|
||||
%
|
||||
\def\uref#1{\douref #1,,,\finish}
|
||||
\def\douref#1,#2,#3,#4\finish{%
|
||||
\setbox0 = \hbox{\ignorespaces #3}%
|
||||
\ifdim\wd0 > 0pt
|
||||
\unhbox0\ (\code{#1})%
|
||||
\unhbox0 % third arg given, show only that
|
||||
\else
|
||||
\code{#1}%
|
||||
\setbox0 = \hbox{\ignorespaces #2}%
|
||||
\ifdim\wd0 > 0pt
|
||||
\unhbox0\ (\code{#1})% second arg given, show both it and url
|
||||
\else
|
||||
\code{#1}% only url given, so show it
|
||||
\fi
|
||||
\fi
|
||||
}
|
||||
|
||||
@@ -1540,7 +1577,7 @@ where each line of input produces a line of output.}
|
||||
|
||||
% Do an implicit @contents or @shortcontents after @end titlepage if the
|
||||
% user says @setcontentsaftertitlepage or @setshortcontentsaftertitlepage.
|
||||
%
|
||||
%
|
||||
\newif\ifsetcontentsaftertitlepage
|
||||
\let\setcontentsaftertitlepage = \setcontentsaftertitlepagetrue
|
||||
\newif\ifsetshortcontentsaftertitlepage
|
||||
@@ -1749,22 +1786,18 @@ where each line of input produces a line of output.}
|
||||
|
||||
% Subroutines used in generating headings
|
||||
% Produces Day Month Year style of output.
|
||||
\def\today{\number\day\space
|
||||
\ifcase\month\or
|
||||
January\or February\or March\or April\or May\or June\or
|
||||
July\or August\or September\or October\or November\or December\fi
|
||||
\space\number\year}
|
||||
\def\today{%
|
||||
\number\day\space
|
||||
\ifcase\month
|
||||
\or\putwordMJan\or\putwordMFeb\or\putwordMMar\or\putwordMApr
|
||||
\or\putwordMMay\or\putwordMJun\or\putwordMJul\or\putwordMAug
|
||||
\or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec
|
||||
\fi
|
||||
\space\number\year}
|
||||
|
||||
% Use this if you want the Month Day, Year style of output.
|
||||
%\def\today{\ifcase\month\or
|
||||
%January\or February\or March\or April\or May\or June\or
|
||||
%July\or August\or September\or October\or November\or December\fi
|
||||
%\space\number\day, \number\year}
|
||||
|
||||
% @settitle line... specifies the title of the document, for headings
|
||||
% It generates no output of its own
|
||||
|
||||
\def\thistitle{No Title}
|
||||
% @settitle line... specifies the title of the document, for headings.
|
||||
% It generates no output of its own.
|
||||
\def\thistitle{\putwordNoTitle}
|
||||
\def\settitle{\parsearg\settitlezzz}
|
||||
\def\settitlezzz #1{\gdef\thistitle{#1}}
|
||||
|
||||
@@ -1841,7 +1874,7 @@ July\or August\or September\or October\or November\or December\fi
|
||||
\itemxneedsnegativevskipfalse
|
||||
\else
|
||||
% The item text fits into the space. Start a paragraph, so that the
|
||||
% following text (if any) will end up on the same line.
|
||||
% following text (if any) will end up on the same line.
|
||||
\noindent
|
||||
% Do this with kerns and \unhbox so that if there is a footnote in
|
||||
% the item text, it can migrate to the main vertical list and
|
||||
@@ -2138,7 +2171,7 @@ July\or August\or September\or October\or November\or December\fi
|
||||
\multitablelinespace=0pt
|
||||
|
||||
% Macros used to set up halign preamble:
|
||||
%
|
||||
%
|
||||
\let\endsetuptable\relax
|
||||
\def\xendsetuptable{\endsetuptable}
|
||||
\let\columnfractions\relax
|
||||
@@ -2229,15 +2262,15 @@ July\or August\or September\or October\or November\or December\fi
|
||||
% In order to keep entries from bumping into each other
|
||||
% we will add a \leftskip of \multitablecolspace to all columns after
|
||||
% the first one.
|
||||
%
|
||||
%
|
||||
% If a template has been used, we will add \multitablecolspace
|
||||
% to the width of each template entry.
|
||||
%
|
||||
%
|
||||
% If the user has set preamble in terms of percent of \hsize we will
|
||||
% use that dimension as the width of the column, and the \leftskip
|
||||
% will keep entries from bumping into each other. Table will start at
|
||||
% left margin and final column will justify at right margin.
|
||||
%
|
||||
%
|
||||
% Make sure we don't inherit \rightskip from the outer environment.
|
||||
\rightskip=0pt
|
||||
\ifnum\colcount=1
|
||||
@@ -2401,9 +2434,11 @@ width0pt\relax} \fi
|
||||
% (Must be a way to avoid doing expansion at all, and thus not have to
|
||||
% laboriously list every single command here.)
|
||||
\def\@{@}% will be @@ when we switch to @ as escape char.
|
||||
% need these in case \tex is in effect and \{ is a \delimiter again.
|
||||
\let\{ = \lbracecmd
|
||||
\let\} = \rbracecmd
|
||||
% Need these in case \tex is in effect and \{ is a \delimiter again.
|
||||
% But can't use \lbracecmd and \rbracecmd because texindex assumes
|
||||
% braces and backslashes are used only as delimiters.
|
||||
\let\{ = \mylbrace
|
||||
\let\} = \myrbrace
|
||||
\def\_{{\realbackslash _}}%
|
||||
\def\w{\realbackslash w }%
|
||||
\def\bf{\realbackslash bf }%
|
||||
@@ -2453,6 +2488,8 @@ width0pt\relax} \fi
|
||||
\let\value = \expandablevalue
|
||||
%
|
||||
\unsepspaces
|
||||
% Turn off macro expansion
|
||||
\turnoffmacros
|
||||
}
|
||||
|
||||
% If an index command is used in an @example environment, any spaces
|
||||
@@ -2538,14 +2575,14 @@ width0pt\relax} \fi
|
||||
\def\emptymacro{\empty}
|
||||
|
||||
% Most index entries go through here, but \dosubind is the general case.
|
||||
%
|
||||
%
|
||||
\def\doind#1#2{\dosubind{#1}{#2}\empty}
|
||||
|
||||
% Workhorse for all \fooindexes.
|
||||
% #1 is name of index, #2 is stuff to put there, #3 is subentry --
|
||||
% \empty if called from \doind, as we usually are. The main exception
|
||||
% is with defuns, which call us directly.
|
||||
%
|
||||
%
|
||||
\def\dosubind#1#2#3{%
|
||||
% Put the index entry in the margin if desired.
|
||||
\ifx\SETmarginindex\relax\else
|
||||
@@ -2570,24 +2607,28 @@ width0pt\relax} \fi
|
||||
\def\subentry{ #3}%
|
||||
\fi
|
||||
%
|
||||
% First process the index-string with all font commands turned off
|
||||
% to get the string to sort by.
|
||||
% First process the index entry with all font commands turned
|
||||
% off to get the string to sort by.
|
||||
{\indexnofonts \xdef\indexsorttmp{#2\subentry}}%
|
||||
%
|
||||
% Now produce the complete index entry, with both the sort key and the
|
||||
% original text, including any font commands.
|
||||
% Now the real index entry with the fonts.
|
||||
\toks0 = {#2}%
|
||||
%
|
||||
% If third (subentry) arg is present, add it to the index
|
||||
% string. And include a space.
|
||||
\ifx\thirdarg\emptymacro \else
|
||||
\toks0 = \expandafter{\the\toks0 \space #3}%
|
||||
\fi
|
||||
%
|
||||
% Set up the complete index entry, with both the sort key
|
||||
% and the original text, including any font commands. We write
|
||||
% three arguments to \entry to the .?? file, texindex reduces to
|
||||
% two when writing the .??s sorted result.
|
||||
\edef\temp{%
|
||||
\write\csname#1indfile\endcsname{%
|
||||
\realbackslash entry{\indexsorttmp}{\folio}{\the\toks0}}%
|
||||
}%
|
||||
%
|
||||
% If third (subentry) arg is present, add it to the index string.
|
||||
\ifx\thirdarg\emptymacro \else
|
||||
\toks0 = {#3}%
|
||||
\edef\temp{\temp{\the\toks0}}%
|
||||
\fi
|
||||
%
|
||||
% If a skip is the last thing on the list now, preserve it
|
||||
% by backing up by \lastskip, doing the \write, then inserting
|
||||
% the skip again. Otherwise, the whatsit generated by the
|
||||
@@ -2599,12 +2640,12 @@ width0pt\relax} \fi
|
||||
% will have extra space inserted, because the \medbreak in the
|
||||
% start of the @defun won't see the skip inserted by the @end of
|
||||
% the previous defun.
|
||||
%
|
||||
%
|
||||
% But don't do any of this if we're not in vertical mode. We
|
||||
% don't want to do a \vskip and prematurely end a paragraph.
|
||||
%
|
||||
%
|
||||
% Avoid page breaks due to these extra skips, too.
|
||||
%
|
||||
%
|
||||
\iflinks
|
||||
\ifvmode
|
||||
\skip0 = \lastskip
|
||||
@@ -2613,7 +2654,7 @@ width0pt\relax} \fi
|
||||
%
|
||||
\temp % do the write
|
||||
%
|
||||
%
|
||||
%
|
||||
\ifvmode \ifdim\skip0 = 0pt \else \nobreak\vskip\skip0 \fi \fi
|
||||
\fi
|
||||
}%
|
||||
@@ -2677,7 +2718,7 @@ width0pt\relax} \fi
|
||||
% and it loses the chapter title and the aux file entries for the
|
||||
% index. The easiest way to prevent this problem is to make sure
|
||||
% there is some text.
|
||||
(Index is nonexistent)
|
||||
\putwordIndexNonexistent
|
||||
\else
|
||||
%
|
||||
% If the index file exists but is empty, then \openin leaves \ifeof
|
||||
@@ -2685,7 +2726,7 @@ width0pt\relax} \fi
|
||||
% it can discover if there is anything in it.
|
||||
\read 1 to \temp
|
||||
\ifeof 1
|
||||
(Index is empty)
|
||||
\putwordIndexIsEmpty
|
||||
\else
|
||||
% Index files are almost Texinfo source, but we use \ as the escape
|
||||
% character. It would be better to use @, but that's too big a change
|
||||
@@ -2710,7 +2751,7 @@ width0pt\relax} \fi
|
||||
%
|
||||
% Remove any glue we may have, we'll be inserting our own.
|
||||
\removelastskip
|
||||
%
|
||||
%
|
||||
% We like breaks before the index initials, so insert a bonus.
|
||||
\penalty -300
|
||||
%
|
||||
@@ -2718,7 +2759,7 @@ width0pt\relax} \fi
|
||||
% baselineskips increases the chance of the dots lining up from column
|
||||
% to column. It still won't often be perfect, because of the stretch
|
||||
% we need before each entry, but it's better.
|
||||
%
|
||||
%
|
||||
% No shrink because it confuses \balancecolumns.
|
||||
\vskip 1.67\baselineskip plus .5\baselineskip
|
||||
\leftline{\secbf #1}%
|
||||
@@ -2817,24 +2858,26 @@ width0pt\relax} \fi
|
||||
|
||||
\def\begindoublecolumns{\begingroup % ended by \enddoublecolumns
|
||||
% Grab any single-column material above us.
|
||||
\output = {\global\setbox\partialpage = \vbox{%
|
||||
%
|
||||
\output = {%
|
||||
%
|
||||
% Here is a possibility not foreseen in manmac: if we accumulate a
|
||||
% whole lot of material, we might end up calling this \output
|
||||
% routine twice in a row (see the doublecol-lose test, which is
|
||||
% essentially a couple of indexes with @setchapternewpage off). In
|
||||
% that case, we must prevent the second \partialpage from
|
||||
% simply overwriting the first, causing us to lose the page.
|
||||
% This will preserve it until a real output routine can ship it
|
||||
% out. Generally, \partialpage will be empty when this runs and
|
||||
% this will be a no-op.
|
||||
\unvbox\partialpage
|
||||
% that case we just ship out what is in \partialpage with the normal
|
||||
% output routine. Generally, \partialpage will be empty when this
|
||||
% runs and this will be a no-op. See the indexspread.tex test case.
|
||||
\ifvoid\partialpage \else
|
||||
\onepageout{\pagecontents\partialpage}%
|
||||
\fi
|
||||
%
|
||||
% Unvbox the main output page.
|
||||
\unvbox255
|
||||
\kern-\topskip \kern\baselineskip
|
||||
}}%
|
||||
\eject
|
||||
\global\setbox\partialpage = \vbox{%
|
||||
% Unvbox the main output page.
|
||||
\unvbox\PAGE
|
||||
\kern-\topskip \kern\baselineskip
|
||||
}%
|
||||
}%
|
||||
\eject % run that output routine to set \partialpage
|
||||
%
|
||||
% Use the double-column output routine for subsequent pages.
|
||||
\output = {\doublecolumnout}%
|
||||
@@ -2868,7 +2911,7 @@ width0pt\relax} \fi
|
||||
|
||||
% The double-column output routine for all double-column pages except
|
||||
% the last.
|
||||
%
|
||||
%
|
||||
\def\doublecolumnout{%
|
||||
\splittopskip=\topskip \splitmaxdepth=\maxdepth
|
||||
% Get the available space for the double columns -- the normal
|
||||
@@ -2886,7 +2929,6 @@ width0pt\relax} \fi
|
||||
\def\pagesofar{%
|
||||
% Re-output the contents of the output page -- any previous material,
|
||||
% followed by the two boxes we just split, in box0 and box2.
|
||||
\advance\vsize by \ht\partialpage
|
||||
\unvbox\partialpage
|
||||
%
|
||||
\hsize = \doublecolumnhsize
|
||||
@@ -2895,7 +2937,7 @@ width0pt\relax} \fi
|
||||
}
|
||||
\def\enddoublecolumns{%
|
||||
\output = {%
|
||||
% Split the last of the double-column material. Leave on the
|
||||
% Split the last of the double-column material. Leave it on the
|
||||
% current page, no automatic page break.
|
||||
\balancecolumns
|
||||
%
|
||||
@@ -2907,14 +2949,15 @@ width0pt\relax} \fi
|
||||
% called on to balance too much material, but if it is, this makes
|
||||
% the output somewhat more palatable.)
|
||||
\global\output = {\onepageout{\pagecontents\PAGE}}%
|
||||
%
|
||||
% \pagegoal was set to the doubled \vsize above, since we restarted
|
||||
% the current page. We're now back to normal single-column
|
||||
% typesetting, so reset \pagegoal to the normal \vsize.
|
||||
\pagegoal = \vsize
|
||||
}%
|
||||
\eject
|
||||
\endgroup % started in \begindoublecolumns
|
||||
%
|
||||
% \pagegoal was set to the doubled \vsize above, since we restarted
|
||||
% the current page. We're now back to normal single-column
|
||||
% typesetting, so reset \pagegoal to the normal \vsize (after the
|
||||
% \endgroup where \vsize got restored).
|
||||
\pagegoal = \vsize
|
||||
}
|
||||
\def\balancecolumns{%
|
||||
% Called at the end of the double column material.
|
||||
@@ -3432,10 +3475,10 @@ width0pt\relax} \fi
|
||||
% Write an entry to the toc file, opening it if necessary.
|
||||
% Called from @chapter, etc. We supply {\folio} at the end of the
|
||||
% argument, which will end up as the last argument to the \...entry macro.
|
||||
%
|
||||
%
|
||||
% We open the .toc file here instead of at @setfilename or any other
|
||||
% given time so that @contents can be put in the document anywhere.
|
||||
%
|
||||
%
|
||||
\newif\iftocfileopened
|
||||
\def\writetocentry#1{%
|
||||
\iftocfileopened\else
|
||||
@@ -3451,7 +3494,7 @@ width0pt\relax} \fi
|
||||
|
||||
% Finish up the main text and prepare to read what we've written
|
||||
% to \tocfile.
|
||||
%
|
||||
%
|
||||
\def\startcontents#1{%
|
||||
% If @setchapternewpage on, and @headings double, the contents should
|
||||
% start on an odd page, unlike chapters. Thus, we maintain
|
||||
@@ -3479,13 +3522,14 @@ width0pt\relax} \fi
|
||||
|
||||
% Normal (long) toc.
|
||||
\def\contents{%
|
||||
\startcontents{\putwordTableofContents}%
|
||||
\startcontents{\putwordTOC}%
|
||||
\openin 1 \jobname.toc
|
||||
\ifeof 1 \else
|
||||
\closein 1
|
||||
\input \jobname.toc
|
||||
\fi
|
||||
\vfill \eject
|
||||
\contentsalignmacro % in case @setchapternewpage odd is in effect
|
||||
\endgroup
|
||||
\lastnegativepageno = \pageno
|
||||
\pageno = \savepageno
|
||||
@@ -3493,7 +3537,7 @@ width0pt\relax} \fi
|
||||
|
||||
% And just the chapters.
|
||||
\def\summarycontents{%
|
||||
\startcontents{\putwordShortContents}%
|
||||
\startcontents{\putwordShortTOC}%
|
||||
%
|
||||
\let\chapentry = \shortchapentry
|
||||
\let\unnumbchapentry = \shortunnumberedentry
|
||||
@@ -3515,6 +3559,7 @@ width0pt\relax} \fi
|
||||
\input \jobname.toc
|
||||
\fi
|
||||
\vfill \eject
|
||||
\contentsalignmacro % in case @setchapternewpage odd is in effect
|
||||
\endgroup
|
||||
\lastnegativepageno = \pageno
|
||||
\pageno = \savepageno
|
||||
@@ -3839,7 +3884,7 @@ width0pt\relax} \fi
|
||||
|
||||
% Define the \E... control sequence only if we are inside the particular
|
||||
% environment, so the error checking in \end will work.
|
||||
%
|
||||
%
|
||||
% To end an @example-like environment, we first end the paragraph (via
|
||||
% \afterenvbreak's vertical glue), and then the group. That way we keep
|
||||
% the zero \parskip that the environments set -- \parskip glue will be
|
||||
@@ -3864,7 +3909,7 @@ width0pt\relax} \fi
|
||||
% redefines). We must call \example (or whatever) last in the
|
||||
% definition, since it reads the return following the @example (or
|
||||
% whatever) command.
|
||||
%
|
||||
%
|
||||
% This actually allows (for example) @end display inside an
|
||||
% @smalldisplay. Too bad, but makeinfo will catch the error anyway.
|
||||
%
|
||||
@@ -3920,7 +3965,7 @@ width0pt\relax} \fi
|
||||
\def\flushleft{\begingroup \def\Eflushleft{\nonfillfinish\endgroup}\format}
|
||||
|
||||
% @flushright.
|
||||
%
|
||||
%
|
||||
\def\flushright{\begingroup
|
||||
\let\nonarrowing = t
|
||||
\nonfillstart
|
||||
@@ -4062,7 +4107,7 @@ width0pt\relax} \fi
|
||||
% #2 is the \...x control sequence for consecutive fns (which we define).
|
||||
% #3 is the control sequence to call to resume processing.
|
||||
% #4, delimited by the space, is the class name.
|
||||
%
|
||||
%
|
||||
\def\defmethparsebody#1#2#3#4 {\begingroup\inENV %
|
||||
\medbreak %
|
||||
% Define the end token that this defining construct specifies
|
||||
@@ -4080,7 +4125,7 @@ width0pt\relax} \fi
|
||||
% #3 is the control sequence to call to resume processing.
|
||||
% #4, delimited by the space, is the class name.
|
||||
% #5 is the method's return type.
|
||||
%
|
||||
%
|
||||
\def\deftypemethparsebody#1#2#3#4 #5 {\begingroup\inENV %
|
||||
\medbreak %
|
||||
% Define the end token that this defining construct specifies
|
||||
@@ -4240,7 +4285,7 @@ width0pt\relax} \fi
|
||||
\def\defun{\defparsebody\Edefun\defunx\defunheader}
|
||||
|
||||
\def\defunheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index
|
||||
\begingroup\defname {#1}{Function}%
|
||||
\begingroup\defname {#1}{\putwordDeffunc}%
|
||||
\defunargs {#2}\endgroup %
|
||||
\catcode 61=\other % Turn off change made in \defparsebody
|
||||
}
|
||||
@@ -4254,7 +4299,7 @@ width0pt\relax} \fi
|
||||
% #1 is the data type, #2 the name, #3 the args.
|
||||
\def\deftypefunheaderx #1#2 #3\relax{%
|
||||
\doind {fn}{\code{#2}}% Make entry in function index
|
||||
\begingroup\defname {\defheaderxcond#1\relax$$$#2}{Function}%
|
||||
\begingroup\defname {\defheaderxcond#1\relax$$$#2}{\putwordDeftypefun}%
|
||||
\deftypefunargs {#3}\endgroup %
|
||||
\catcode 61=\other % Turn off change made in \defparsebody
|
||||
}
|
||||
@@ -4285,7 +4330,7 @@ width0pt\relax} \fi
|
||||
\def\defmac{\defparsebody\Edefmac\defmacx\defmacheader}
|
||||
|
||||
\def\defmacheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index
|
||||
\begingroup\defname {#1}{Macro}%
|
||||
\begingroup\defname {#1}{\putwordDefmac}%
|
||||
\defunargs {#2}\endgroup %
|
||||
\catcode 61=\other % Turn off change made in \defparsebody
|
||||
}
|
||||
@@ -4295,7 +4340,7 @@ width0pt\relax} \fi
|
||||
\def\defspec{\defparsebody\Edefspec\defspecx\defspecheader}
|
||||
|
||||
\def\defspecheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index
|
||||
\begingroup\defname {#1}{Special Form}%
|
||||
\begingroup\defname {#1}{\putwordDefspec}%
|
||||
\defunargs {#2}\endgroup %
|
||||
\catcode 61=\other % Turn off change made in \defparsebody
|
||||
}
|
||||
@@ -4320,7 +4365,7 @@ width0pt\relax} \fi
|
||||
|
||||
\def\defopheader #1#2#3{%
|
||||
\dosubind {fn}{\code{#2}}{\putwordon\ #1}% Make entry in function index
|
||||
\begingroup\defname {#2}{\defoptype{} on #1}%
|
||||
\begingroup\defname {#2}{\defoptype{}\putwordon\ #1}%
|
||||
\defunargs {#3}\endgroup %
|
||||
}
|
||||
|
||||
@@ -4357,8 +4402,8 @@ width0pt\relax} \fi
|
||||
\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}
|
||||
|
||||
\def\defcvarheader #1#2#3{%
|
||||
\dosubind {vr}{\code{#2}}{of #1}% Make entry in var index
|
||||
\begingroup\defname {#2}{\defcvtype{} of #1}%
|
||||
\dosubind {vr}{\code{#2}}{\putwordof\ #1}% Make entry in var index
|
||||
\begingroup\defname {#2}{\defcvtype\ \putwordof\ #1}%
|
||||
\defvarargs {#3}\endgroup %
|
||||
}
|
||||
|
||||
@@ -4367,8 +4412,8 @@ width0pt\relax} \fi
|
||||
\def\defivar{\defvrparsebody\Edefivar\defivarx\defivarheader}
|
||||
|
||||
\def\defivarheader #1#2#3{%
|
||||
\dosubind {vr}{\code{#2}}{of #1}% Make entry in var index
|
||||
\begingroup\defname {#2}{Instance Variable of #1}%
|
||||
\dosubind {vr}{\code{#2}}{\putwordof\ #1}% Make entry in var index
|
||||
\begingroup\defname {#2}{\putwordDefivar\ \putwordof\ #1}%
|
||||
\defvarargs {#3}\endgroup %
|
||||
}
|
||||
|
||||
@@ -4401,7 +4446,7 @@ width0pt\relax} \fi
|
||||
\def\defvar{\defvarparsebody\Edefvar\defvarx\defvarheader}
|
||||
|
||||
\def\defvarheader #1#2{\doind {vr}{\code{#1}}% Make entry in var index
|
||||
\begingroup\defname {#1}{Variable}%
|
||||
\begingroup\defname {#1}{\putwordDefvar}%
|
||||
\defvarargs {#2}\endgroup %
|
||||
}
|
||||
|
||||
@@ -4410,7 +4455,7 @@ width0pt\relax} \fi
|
||||
\def\defopt{\defvarparsebody\Edefopt\defoptx\defoptheader}
|
||||
|
||||
\def\defoptheader #1#2{\doind {vr}{\code{#1}}% Make entry in var index
|
||||
\begingroup\defname {#1}{User Option}%
|
||||
\begingroup\defname {#1}{\putwordDefopt}%
|
||||
\defvarargs {#2}\endgroup %
|
||||
}
|
||||
|
||||
@@ -4422,7 +4467,7 @@ width0pt\relax} \fi
|
||||
% is actually part of the data type, which should not be put into the index.
|
||||
\def\deftypevarheader #1#2{%
|
||||
\dovarind#2 \relax% Make entry in variables index
|
||||
\begingroup\defname {\defheaderxcond#1\relax$$$#2}{Variable}%
|
||||
\begingroup\defname {\defheaderxcond#1\relax$$$#2}{\putwordDeftypevar}%
|
||||
\interlinepenalty=10000
|
||||
\endgraf\nobreak\vskip -\parskip\nobreak
|
||||
\endgroup}
|
||||
@@ -4468,14 +4513,17 @@ width0pt\relax} \fi
|
||||
\message{macros,}
|
||||
% @macro.
|
||||
|
||||
% To do this right we need a feature of e-TeX, \scantokens,
|
||||
% To do this right we need a feature of e-TeX, \scantokens,
|
||||
% which we arrange to emulate with a temporary file in ordinary TeX.
|
||||
\ifx\eTeXversion\undefined
|
||||
\newwrite\macscribble
|
||||
\def\scanmacro#1{%
|
||||
\begingroup \newlinechar`\^^M
|
||||
% Undo catcode changes of \startcontents and \doprintindex
|
||||
\catcode`\@=0 \catcode`\\=12 \escapechar=`\@
|
||||
\toks0={#1}%
|
||||
\immediate\openout\macscribble=\jobname.tmp
|
||||
\immediate\write\macscribble{#1}%
|
||||
\immediate\write\macscribble{\the\toks0}%
|
||||
\immediate\closeout\macscribble
|
||||
\let\xeatspaces\eatspaces
|
||||
\input \jobname.tmp
|
||||
@@ -4484,12 +4532,16 @@ width0pt\relax} \fi
|
||||
\else
|
||||
\def\scanmacro#1{%
|
||||
\begingroup \newlinechar`\^^M
|
||||
% Undo catcode changes of \startcontents and \doprintindex
|
||||
\catcode`\@=0 \catcode`\\=12 \escapechar=`\@
|
||||
\let\xeatspaces\eatspaces\scantokens{#1}\endgroup}
|
||||
\fi
|
||||
|
||||
\newcount\paramno % Count of parameters
|
||||
\newtoks\macname % Macro name
|
||||
\newif\ifrecursive % Is it recursive?
|
||||
\def\macrolist{} % List of all defined macros in the form
|
||||
% \do\macro1\do\macro2...
|
||||
|
||||
% Utility routines.
|
||||
% Thisdoes \let #1 = #2, except with \csnames.
|
||||
@@ -4521,8 +4573,8 @@ width0pt\relax} \fi
|
||||
% all characters are catcode 10, 11 or 12, except \ which is active
|
||||
% (as in normal texinfo). It is necessary to change the definition of \.
|
||||
|
||||
% It's necessary to have hard CRs when the macro is executed. This is
|
||||
% done by making ^^M (\endlinechar) catcode 12 when reading the macro
|
||||
% It's necessary to have hard CRs when the macro is executed. This is
|
||||
% done by making ^^M (\endlinechar) catcode 12 when reading the macro
|
||||
% body, and then making it the \newlinechar in \scanmacro.
|
||||
|
||||
\def\macrobodyctxt{%
|
||||
@@ -4551,7 +4603,7 @@ width0pt\relax} \fi
|
||||
\catcode`\\=12}
|
||||
|
||||
% \mbodybackslash is the definition of \ in @macro bodies.
|
||||
% It maps \foo\ => \csname macarg.foo\endcsname => #N
|
||||
% It maps \foo\ => \csname macarg.foo\endcsname => #N
|
||||
% where N is the macro parameter number.
|
||||
% We define \csname macarg.\endcsname to be \realbackslash, so
|
||||
% \\ in macro replacement text gets you a backslash.
|
||||
@@ -4570,25 +4622,48 @@ width0pt\relax} \fi
|
||||
\ifx\argl\empty % no arguments
|
||||
\paramno=0%
|
||||
\else
|
||||
\expandafter\parsemargdef \argl;%
|
||||
\expandafter\parsemargdef \argl;%
|
||||
\fi
|
||||
\expandafter\ifx \csname macsave.\the\macname\endcsname \relax
|
||||
\cslet{macsave.\the\macname}{\the\macname}%
|
||||
\else
|
||||
\if1\csname ismacro.\the\macname\endcsname
|
||||
\message{Warning: redefining \the\macname}%
|
||||
\else
|
||||
\expandafter\ifx\csname \the\macname\endcsname \relax
|
||||
\else \errmessage{The name \the\macname\space is reserved}\fi
|
||||
\global\cslet{macsave.\the\macname}{\the\macname}%
|
||||
\global\expandafter\let\csname ismacro.\the\macname\endcsname=1%
|
||||
% Add the macroname to \macrolist
|
||||
\toks0 = \expandafter{\macrolist\do}%
|
||||
\xdef\macrolist{\the\toks0
|
||||
\expandafter\noexpand\csname\the\macname\endcsname}%
|
||||
\fi
|
||||
\begingroup \macrobodyctxt
|
||||
\ifrecursive \expandafter\parsermacbody
|
||||
\else \expandafter\parsemacbody
|
||||
\else \expandafter\parsemacbody
|
||||
\fi}
|
||||
|
||||
\def\unmacro{\parsearg\unmacroxxx}
|
||||
\def\unmacroxxx#1{%
|
||||
\expandafter\ifx \csname macsave.\the\macname\endcsname \relax
|
||||
\errmessage{Macro \the\macname\ not defined.}%
|
||||
\if1\csname ismacro.#1\endcsname
|
||||
\global\cslet{#1}{macsave.#1}%
|
||||
\global\expandafter\let \csname ismacro.#1\endcsname=0%
|
||||
% Remove the macro name from \macrolist
|
||||
\begingroup
|
||||
\edef\tempa{\expandafter\noexpand\csname#1\endcsname}
|
||||
\def\do##1{%
|
||||
\def\tempb{##1}%
|
||||
\ifx\tempa\tempb
|
||||
% remove this
|
||||
\else
|
||||
\toks0 = \expandafter{\newmacrolist\do}%
|
||||
\edef\newmacrolist{\the\toks0\expandafter\noexpand\tempa}%
|
||||
\fi}
|
||||
\def\newmacrolist{}%
|
||||
% Execute macro list to define \newmacrolist
|
||||
\macrolist
|
||||
\global\let\macrolist\newmacrolist
|
||||
\endgroup
|
||||
\else
|
||||
\cslet{#1}{macsave.#1}%
|
||||
\expandafter\let \csname macsave.\the\macname\endcsname \undefined
|
||||
\errmessage{Macro #1 not defined}%
|
||||
\fi
|
||||
}
|
||||
|
||||
@@ -4647,7 +4722,8 @@ width0pt\relax} \fi
|
||||
\or % 1
|
||||
\expandafter\xdef\csname\the\macname\endcsname{%
|
||||
\bgroup\noexpand\macroargctxt
|
||||
\noexpand\braceorline\csname\the\macname xxx\endcsname}%
|
||||
\noexpand\braceorline
|
||||
\expandafter\noexpand\csname\the\macname xxx\endcsname}%
|
||||
\expandafter\xdef\csname\the\macname xxx\endcsname##1{%
|
||||
\egroup\noexpand\scanmacro{\temp}}%
|
||||
\else % many
|
||||
@@ -4655,11 +4731,11 @@ width0pt\relax} \fi
|
||||
\bgroup\noexpand\macroargctxt
|
||||
\noexpand\csname\the\macname xx\endcsname}
|
||||
\expandafter\xdef\csname\the\macname xx\endcsname##1{%
|
||||
\csname\the\macname xxx\endcsname ##1,}%
|
||||
\expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
|
||||
\expandafter\expandafter
|
||||
\expandafter\xdef
|
||||
\expandafter\expandafter
|
||||
\csname\the\macname xxx\endcsname
|
||||
\csname\the\macname xxx\endcsname
|
||||
\paramlist{\egroup\noexpand\scanmacro{\temp}}%
|
||||
\fi
|
||||
\else
|
||||
@@ -4671,7 +4747,8 @@ width0pt\relax} \fi
|
||||
\or % 1
|
||||
\expandafter\xdef\csname\the\macname\endcsname{%
|
||||
\bgroup\noexpand\macroargctxt
|
||||
\noexpand\braceorline\csname\the\macname xxx\endcsname}%
|
||||
\noexpand\braceorline
|
||||
\expandafter\noexpand\csname\the\macname xxx\endcsname}%
|
||||
\expandafter\xdef\csname\the\macname xxx\endcsname##1{%
|
||||
\egroup
|
||||
\noexpand\norecurse{\the\macname}%
|
||||
@@ -4679,9 +4756,9 @@ width0pt\relax} \fi
|
||||
\else % many
|
||||
\expandafter\xdef\csname\the\macname\endcsname{%
|
||||
\bgroup\noexpand\macroargctxt
|
||||
\noexpand\csname\the\macname xx\endcsname}
|
||||
\expandafter\noexpand\csname\the\macname xx\endcsname}
|
||||
\expandafter\xdef\csname\the\macname xx\endcsname##1{%
|
||||
\csname\the\macname xxx\endcsname ##1,}%
|
||||
\expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
|
||||
\expandafter\expandafter
|
||||
\expandafter\xdef
|
||||
\expandafter\expandafter
|
||||
@@ -4702,9 +4779,13 @@ width0pt\relax} \fi
|
||||
\def\braceorline#1{\let\next=#1\futurelet\nchar\braceorlinexxx}
|
||||
\def\braceorlinexxx{%
|
||||
\ifx\nchar\bgroup\else
|
||||
\expandafter\parsearg
|
||||
\expandafter\parsearg
|
||||
\fi \next}
|
||||
|
||||
% We mant to disable all macros during \shipout so that they are not
|
||||
% expanded by \write.
|
||||
\def\turnoffmacros{\begingroup \def\do##1{\let\noexpand##1=\relax}%
|
||||
\edef\next{\macrolist}\expandafter\endgroup\next}
|
||||
|
||||
\message{cross references,}
|
||||
\newwrite\auxfile
|
||||
@@ -4748,7 +4829,7 @@ width0pt\relax} \fi
|
||||
|
||||
|
||||
% @anchor{NAME} -- define xref target at arbitrary point.
|
||||
%
|
||||
%
|
||||
\def\anchor#1{\setref{#1}{Ynothing}}
|
||||
|
||||
|
||||
@@ -4757,7 +4838,7 @@ width0pt\relax} \fi
|
||||
% to set \indexdummies so commands such as @code in a section title
|
||||
% aren't expanded. It would be nicer not to expand the titles in the
|
||||
% first place, but there's so many layers that that is hard to do.
|
||||
%
|
||||
%
|
||||
\def\setref#1#2{{%
|
||||
\indexdummies
|
||||
\dosetq{#1-title}{Ytitle}%
|
||||
@@ -4821,7 +4902,7 @@ width0pt\relax} \fi
|
||||
\setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}%
|
||||
\ifdim \wd2 > 0pt \refx{#1-snt}\space\fi
|
||||
}%
|
||||
% [mynode],
|
||||
% [mynode],
|
||||
[\printednodename],\space
|
||||
% page 3
|
||||
\turnoffactive \putwordpage\tie\refx{#1-pg}{}%
|
||||
@@ -4910,7 +4991,7 @@ width0pt\relax} \fi
|
||||
}
|
||||
|
||||
% This is the macro invoked by entries in the aux file.
|
||||
%
|
||||
%
|
||||
\def\xrdef#1{\begingroup
|
||||
% Reenable \ as an escape while reading the second argument.
|
||||
\catcode`\\ = 0
|
||||
@@ -5135,7 +5216,7 @@ width0pt\relax} \fi
|
||||
|
||||
% @image. We use the macros from epsf.tex to support this.
|
||||
% If epsf.tex is not installed and @image is used, we complain.
|
||||
%
|
||||
%
|
||||
% Check for and read epsf.tex up front. If we read it only at @image
|
||||
% time, we might be inside a group, and then its definitions would get
|
||||
% undone and the next image would fail.
|
||||
@@ -5151,18 +5232,22 @@ width0pt\relax} \fi
|
||||
\newif\ifwarnednoepsf
|
||||
\newhelp\noepsfhelp{epsf.tex must be installed for images to
|
||||
work. It is also included in the Texinfo distribution, or you can get
|
||||
it from ftp://ftp.tug.org/tex/epsf.tex.}
|
||||
it from ftp://tug.org/tex/epsf.tex.}
|
||||
%
|
||||
% Only complain once about lack of epsf.tex.
|
||||
\def\image#1{%
|
||||
\ifx\epsfbox\undefined
|
||||
\ifwarnednoepsf \else
|
||||
\errhelp = \noepsfhelp
|
||||
\errmessage{epsf.tex not found, images will be ignored}%
|
||||
\global\warnednoepsftrue
|
||||
\ifx\pdfoutput\undefined
|
||||
\ifx\epsfbox\undefined
|
||||
\ifwarnednoepsf \else
|
||||
\errhelp = \noepsfhelp
|
||||
\errmessage{epsf.tex not found, images will be ignored}%
|
||||
\global\warnednoepsftrue
|
||||
\fi
|
||||
\else
|
||||
\imagexxx #1,,,\finish
|
||||
\fi
|
||||
\else
|
||||
\imagexxx #1,,,\finish
|
||||
\centerline{\pdfimage #1.pdf}%
|
||||
\fi
|
||||
}
|
||||
%
|
||||
@@ -5181,14 +5266,46 @@ width0pt\relax} \fi
|
||||
\centerline{\epsfbox{#1.eps}}%
|
||||
\bigbreak
|
||||
\else
|
||||
% In the middle of a paragraph, no extra space.
|
||||
\epsfbox{#1.eps}%
|
||||
\fi
|
||||
}
|
||||
|
||||
|
||||
\message{paper sizes,}
|
||||
% And other related parameters.
|
||||
\message{localization,}
|
||||
|
||||
% @documentlanguage is usually given very early, just after
|
||||
% @setfilename. If done too late, it may not override everything
|
||||
% properly. Single argument is the language abbreviation.
|
||||
% It would be nice if we could set up a hyphenation file here.
|
||||
%
|
||||
\def\documentlanguage{\parsearg\dodocumentlanguage}
|
||||
\def\dodocumentlanguage#1{%
|
||||
\tex % read txi-??.tex file in plain TeX.
|
||||
% Read the file if it exists.
|
||||
\openin 1 txi-#1.tex
|
||||
\ifeof1
|
||||
\errhelp = \nolanghelp
|
||||
\errmessage{Cannot read language file txi-#1.tex}%
|
||||
\let\temp = \relax
|
||||
\else
|
||||
\def\temp{\input txi-#1.tex }%
|
||||
\fi
|
||||
\temp
|
||||
\endgroup
|
||||
}
|
||||
\newhelp\nolanghelp{The given language definition file cannot be found or
|
||||
is empty. Maybe you need to install it? In the current directory
|
||||
should work if nowhere else does.}
|
||||
|
||||
|
||||
% @documentencoding should change something in TeX eventually, most
|
||||
% likely, but for now just recognize it.
|
||||
\let\documentencoding = \comment
|
||||
|
||||
|
||||
% Page size parameters.
|
||||
%
|
||||
\newdimen\defaultparindent \defaultparindent = 15pt
|
||||
|
||||
\chapheadingskip = 15pt plus 4pt minus 2pt
|
||||
@@ -5208,8 +5325,7 @@ width0pt\relax} \fi
|
||||
% Use TeX 3.0's \emergencystretch to help line breaking, but if we're
|
||||
% using an old version of TeX, don't do anything. We want the amount of
|
||||
% stretch added to depend on the line length, hence the dependence on
|
||||
% \hsize. This makes it come to about 9pt for the 8.5x11 format. We
|
||||
% call this whenever the paper size is set.
|
||||
% \hsize. We call this whenever the paper size is set.
|
||||
%
|
||||
\def\setemergencystretch{%
|
||||
\ifx\emergencystretch\thisisundefined
|
||||
@@ -5217,7 +5333,7 @@ width0pt\relax} \fi
|
||||
\def\emergencystretch{\dimen0}%
|
||||
\else
|
||||
\emergencystretch = \hsize
|
||||
\divide\emergencystretch by 45
|
||||
\divide\emergencystretch by 40
|
||||
\fi
|
||||
}
|
||||
|
||||
@@ -5310,7 +5426,7 @@ width0pt\relax} \fi
|
||||
% @pagesizes TEXTHEIGHT[,TEXTWIDTH]
|
||||
% Perhaps we should allow setting the margins, \topskip, \parskip,
|
||||
% and/or leading, also. Or perhaps we should compute them somehow.
|
||||
%
|
||||
%
|
||||
\def\pagesizes{\parsearg\pagesizesxxx}
|
||||
\def\pagesizesxxx#1{\pagesizesyyy #1,,\finish}
|
||||
\def\pagesizesyyy#1,#2,#3\finish{{%
|
||||
@@ -5324,7 +5440,7 @@ width0pt\relax} \fi
|
||||
}}
|
||||
|
||||
% Set default to letter.
|
||||
%
|
||||
%
|
||||
\letterpaper
|
||||
|
||||
\message{and turning on texinfo input format.}
|
||||
|
||||
@@ -41,6 +41,7 @@ START-INFO-DIR-ENTRY
|
||||
* sum: (textutils)sum invocation. Print traditional checksum.
|
||||
* tac: (textutils)tac invocation. Reverse files.
|
||||
* tail: (textutils)tail invocation. Output the last part of files.
|
||||
* tsort: (textutils)tsort invocation. Topological sort.
|
||||
* tr: (textutils)tr invocation. Translate characters.
|
||||
* unexpand: (textutils)unexpand invocation. Convert spaces to tabs.
|
||||
* uniq: (textutils)uniq invocation. Uniqify files.
|
||||
@@ -102,7 +103,7 @@ by the Foundation.
|
||||
@end titlepage
|
||||
|
||||
|
||||
@ifinfo
|
||||
@ifnottex
|
||||
@node Top
|
||||
@top GNU text utilities
|
||||
|
||||
@@ -118,7 +119,7 @@ This manual documents version @value{VERSION} of the GNU text utilities.
|
||||
* Formatting file contents:: fmt pr fold
|
||||
* Output of parts of files:: head tail split csplit
|
||||
* Summarizing files:: wc sum cksum md5sum
|
||||
* Operating on sorted files:: sort uniq comm ptx
|
||||
* Operating on sorted files:: sort uniq comm ptx tsort
|
||||
* Operating on fields within a line:: cut paste join
|
||||
* Operating on characters:: tr expand unexpand
|
||||
* Opening the software toolbox:: The software tools philosophy.
|
||||
@@ -160,6 +161,7 @@ Operating on sorted files
|
||||
* uniq invocation:: Uniqify files.
|
||||
* comm invocation:: Compare two sorted files line by line.
|
||||
* ptx invocation:: Produce a permuted index of file contents.
|
||||
* tsort invocation:: Topological sort.
|
||||
|
||||
@code{ptx}: Produce permuted indexes
|
||||
|
||||
@@ -201,7 +203,7 @@ Opening the software toolbox
|
||||
@end detailmenu
|
||||
@end menu
|
||||
|
||||
@end ifinfo
|
||||
@end ifnottex
|
||||
|
||||
|
||||
@node Introduction
|
||||
@@ -307,11 +309,32 @@ The program accepts the following options. Also see @ref{Common options}.
|
||||
@opindex --show-all
|
||||
Equivalent to @samp{-vET}.
|
||||
|
||||
@item -B
|
||||
@itemx --binary
|
||||
@opindex -B
|
||||
@opindex --binary
|
||||
@cindex binary and text I/O in cat
|
||||
On MS-DOS and MS-Windows only, causes @code{cat} read and write the
|
||||
files in binary mode. By default, @code{cat} on MS-DOS/MS-Windows uses
|
||||
binary mode only when standard output is redirected to a file or a pipe;
|
||||
this option overrides that. Binary file I/O is used so that the files
|
||||
retain their format (Unix text as opposed to DOS text and binary),
|
||||
because @code{cat} is frequently used as file copying program. Some
|
||||
options (see below) cause @code{cat} read and write files in text mode
|
||||
because then the original file contents aren't important (e.g., when
|
||||
lines are numbered by @code{cat}, or when line endings should be
|
||||
marked). This is so these options work as DOS/Windows users would
|
||||
expect; for example, DOS-style text files have their lines end with
|
||||
@key{CR-LF} pair of characters which won't be processed as an empty line
|
||||
by @samp{-b} unless the file is read in text mode.
|
||||
|
||||
@item -b
|
||||
@itemx --number-nonblank
|
||||
@opindex -b
|
||||
@opindex --number-nonblank
|
||||
Number all nonblank output lines, starting with 1.
|
||||
Number all nonblank output lines, starting with 1. On MS-DOS and
|
||||
MS-Windows, this option causes @code{cat} to read and write files in
|
||||
text mode.
|
||||
|
||||
@item -e
|
||||
@opindex -e
|
||||
@@ -321,20 +344,25 @@ Equivalent to @samp{-vE}.
|
||||
@itemx --show-ends
|
||||
@opindex -E
|
||||
@opindex --show-ends
|
||||
Display a @samp{$} after the end of each line.
|
||||
Display a @samp{$} after the end of each line. On MS-DOS and
|
||||
MS-Windows, this option causes @code{cat} to read and write files in
|
||||
text mode.
|
||||
|
||||
@item -n
|
||||
@itemx --number
|
||||
@opindex -n
|
||||
@opindex --number
|
||||
Number all output lines, starting with 1.
|
||||
Number all output lines, starting with 1. On MS-DOS and MS-Windows,
|
||||
this option causes @code{cat} to read and write files in text mode.
|
||||
|
||||
@item -s
|
||||
@itemx --squeeze-blank
|
||||
@opindex -s
|
||||
@opindex --squeeze-blank
|
||||
@cindex squeezing blank lines
|
||||
Replace multiple adjacent blank lines with a single blank line.
|
||||
Replace multiple adjacent blank lines with a single blank line. On
|
||||
MS-DOS and MS-Windows, this option causes @code{cat} to read and write
|
||||
files in text mode.
|
||||
|
||||
@item -t
|
||||
@opindex -t
|
||||
@@ -355,8 +383,10 @@ Ignored; for Unix compatibility.
|
||||
@opindex -v
|
||||
@opindex --show-nonprinting
|
||||
Display control characters except for @key{LFD} and @key{TAB} using
|
||||
@samp{^} notation and precede characters that have the high bit set
|
||||
with @samp{M-}.
|
||||
@samp{^} notation and precede characters that have the high bit set with
|
||||
@samp{M-}. On MS-DOS and MS-Windows, this option causes @code{cat} to
|
||||
read files and standard input in DOS binary mode, so the @key{CR}
|
||||
characters at the end of each line are also visible.
|
||||
|
||||
@end table
|
||||
|
||||
@@ -394,7 +424,10 @@ precedes in the file.
|
||||
@itemx --regex
|
||||
@opindex -r
|
||||
@opindex --regex
|
||||
Treat the separator string as a regular expression.
|
||||
Treat the separator string as a regular expression. Users of @code{tac}
|
||||
on MS-DOS/MS-Windows should note that, since @code{tac} reads files in
|
||||
binary mode, each line of a text file might end with a CR/LF pair
|
||||
instead of the Unix-style LF.
|
||||
|
||||
@item -s @var{separator}
|
||||
@itemx --separator=@var{separator}
|
||||
@@ -1359,16 +1392,47 @@ Output the last @var{bytes} bytes, instead of final lines. Appending
|
||||
by 1048576.
|
||||
|
||||
@item -f
|
||||
@itemx --follow
|
||||
@itemx --follow[=@var{how}]
|
||||
@opindex -f
|
||||
@opindex --follow
|
||||
@cindex growing files
|
||||
@vindex name @r{follow option}
|
||||
@vindex descriptor @r{follow option}
|
||||
Loop forever trying to read more characters at the end of the file,
|
||||
presumably because the file is growing. Ignored if reading from a pipe.
|
||||
presumably because the file is growing. This option is ignored when
|
||||
reading from a pipe.
|
||||
If more than one file is given, @code{tail} prints a header whenever it
|
||||
gets output from a different file, to indicate which file that output is
|
||||
from.
|
||||
|
||||
There are two ways to specify how you'd like to track files with this option,
|
||||
but that difference is noticeable only when a followed file is removed.
|
||||
If you'd like to continue to track the end of a growing file even after
|
||||
it has been unlinked, use @samp{--follow=descriptor}. This is the default
|
||||
behavior, but it is not useful if you're tracking a log file that may be
|
||||
rotated (removed and reopened). In that case, use @samp{--follow=name} to
|
||||
track the named file by reopening it periodically
|
||||
@c FIXME: cross reference to the new option name
|
||||
to see if it has been removed and recreated by some other program.
|
||||
|
||||
No matter which method you use, if the tracked file is determined to have
|
||||
shrunk, @code{tail} prints a message saying the file has been truncated
|
||||
and resumes tracking the end of the file from the newly-determined endpoint.
|
||||
|
||||
When a file is removed, @code{tail}'s behavior depends on whether it is
|
||||
following the name or the descriptor. When following by name, tail can
|
||||
detect that a file has been removed and gives a message to that effect,
|
||||
and if @samp{--allow-missing} has been specified it will continue checking
|
||||
periodically to see if the file reappears.
|
||||
When following a descriptor, tail does not detect that the file has
|
||||
been unlinked and issues no message.
|
||||
|
||||
The option values @samp{descriptor} and @samp{name} may be specified only
|
||||
with the long form of the option, not with @samp{-f}.
|
||||
|
||||
@c FIXME-describe --allow-missing [useful only with --follow]
|
||||
@c FIXME-describe --sleep-interval [useful only with --follow]
|
||||
|
||||
@itemx -n @var{n}
|
||||
@itemx --lines=@var{n}
|
||||
@opindex -n
|
||||
@@ -1788,7 +1852,8 @@ The program accepts the following options. Also see @ref{Common options}.
|
||||
Treat all input files as binary. This option has no effect on Unix
|
||||
systems, since they don't distinguish between binary and text files.
|
||||
This option is useful on systems that have different internal and
|
||||
external character representations.
|
||||
external character representations. On MS-DOS and MS-Windows, this is
|
||||
the default.
|
||||
|
||||
@item -c
|
||||
@itemx --check
|
||||
@@ -1858,7 +1923,8 @@ These commands work with (or produce) sorted files.
|
||||
* sort invocation:: Sort text files.
|
||||
* uniq invocation:: Uniqify files.
|
||||
* comm invocation:: Compare two sorted files line by line.
|
||||
* ptx invocation::
|
||||
* ptx invocation:: Produce a permuted index of file contents.
|
||||
* tsort invocation:: Topological sort.
|
||||
@end menu
|
||||
|
||||
|
||||
@@ -2046,9 +2112,9 @@ check that no pair of consecutive lines compares equal.
|
||||
@opindex -k
|
||||
@cindex sort field
|
||||
The recommended, @sc{POSIX}, option for specifying a sort field. The field
|
||||
consists of the line between @var{pos1} and @var{pos2} (or the end of
|
||||
the line, if @var{pos2} is omitted), inclusive. Fields and character
|
||||
positions are numbered starting with 1. See below.
|
||||
consists of the part of the line between @var{pos1} and @var{pos2} (or the
|
||||
end of the line, if @var{pos2} is omitted), inclusive. Fields and
|
||||
character positions are numbered starting with 1. See below.
|
||||
|
||||
@item -z
|
||||
@opindex -z
|
||||
@@ -2183,6 +2249,16 @@ and an explicit @samp{n} with the second key specifier.
|
||||
sort -t : -b -k 5,5 -k 3,3n /etc/passwd
|
||||
@end example
|
||||
|
||||
@c This example is a bit contrived and needs more explanation.
|
||||
@c @item
|
||||
@c Sort records separated by an arbitrary string by using a pipe to convert
|
||||
@c each record delimiter string to @samp{\0}, then using sort's -z option,
|
||||
@c and converting each @samp{\0} back to the original record delimiter.
|
||||
@c
|
||||
@c @example
|
||||
@c printf 'c\n\nb\n\na\n'|perl -0pe 's/\n\n/\n\0/g'|sort -z|perl -0pe 's/\0/\n/g'
|
||||
@c @end example
|
||||
|
||||
@end itemize
|
||||
|
||||
|
||||
@@ -2253,6 +2329,17 @@ Ignore differences in case when comparing lines.
|
||||
@cindex duplicate lines, outputting
|
||||
Print only duplicate lines.
|
||||
|
||||
@item -D
|
||||
@itemx --all-repeated
|
||||
@opindex -D
|
||||
@opindex --all-repeated
|
||||
@cindex all duplicate lines, outputting
|
||||
Print all duplicate lines and only duplicate lines.
|
||||
This option is useful mainly in conjunction with other options e.g.,
|
||||
to ignore case or to compare only selected fields.
|
||||
This is a GNU extension.
|
||||
@c FIXME: give an example showing *how* it's useful
|
||||
|
||||
@item -u
|
||||
@itemx --unique
|
||||
@opindex -u
|
||||
@@ -2309,6 +2396,57 @@ Upon normal completion @code{comm} produces an exit code of zero.
|
||||
If there is an error it exits with nonzero status.
|
||||
|
||||
|
||||
@node tsort invocation
|
||||
@section @code{tsort}: Topological sort
|
||||
|
||||
@pindex tsort
|
||||
@cindex topological sort
|
||||
|
||||
@code{tsort} performs a topological sort on the given @var{file}, or
|
||||
standard input if no input file is given or for a @var{file} of
|
||||
@samp{-}. Synopsis:
|
||||
|
||||
@example
|
||||
tsort [@var{option}] [@var{file}]
|
||||
@end example
|
||||
|
||||
@code{tsort} reads its input as pairs of strings, separated by blanks,
|
||||
indicating a partial ordering. The output is a total ordering that
|
||||
corresponds to the given partial ordering.
|
||||
|
||||
For example
|
||||
|
||||
@example
|
||||
tsort <<EOF
|
||||
a b c
|
||||
d
|
||||
e f
|
||||
b c d e
|
||||
EOF
|
||||
@end example
|
||||
|
||||
@noindent
|
||||
will produce the output
|
||||
|
||||
@example
|
||||
a
|
||||
b
|
||||
c
|
||||
d
|
||||
e
|
||||
f
|
||||
@end example
|
||||
|
||||
@code{tsort} will detect cycles in the input and writes the first cycle
|
||||
encountered to standard error.
|
||||
|
||||
Note that for a given partial ordering, generally there is no unique
|
||||
total ordering.
|
||||
|
||||
The only options are @samp{--help} and @samp{--version}. @xref{Common
|
||||
options}.
|
||||
|
||||
|
||||
@node ptx invocation
|
||||
@section @code{ptx}: Produce permuted indexes
|
||||
|
||||
@@ -2371,7 +2509,7 @@ convention more than once per program invocation.
|
||||
@node General options in ptx
|
||||
@subsection General options
|
||||
|
||||
@table @code
|
||||
@table @samp
|
||||
|
||||
@item -C
|
||||
@itemx --copyright
|
||||
@@ -2408,7 +2546,7 @@ expression for a keyword allows foreign or diacriticized letters.
|
||||
Keyword sorting, however, is still crude; it obeys the underlying
|
||||
character set ordering quite blindly.
|
||||
|
||||
@table @code
|
||||
@table @samp
|
||||
|
||||
@item -f
|
||||
@itemx --ignore-case
|
||||
@@ -2420,18 +2558,18 @@ Fold lower case letters to upper case for sorting.
|
||||
@node Input processing in ptx
|
||||
@subsection Word selection and input processing
|
||||
|
||||
@table @code
|
||||
@table @samp
|
||||
|
||||
@item -b @var{file}
|
||||
@item --break-file=@var{file}
|
||||
|
||||
This option is an alternative way to option @code{-W} for describing
|
||||
which characters make up words. This option introduces the name of a
|
||||
This option provides an alternative (to @samp{-W}) method of describing
|
||||
which characters make up words. It introduces the name of a
|
||||
file which contains a list of characters which can@emph{not} be part of
|
||||
one word, this file is called the @dfn{Break file}. Any character which
|
||||
is not part of the Break file is a word constituent. If both options
|
||||
@code{-b} and @code{-W} are specified, then @code{-W} has precedence and
|
||||
@code{-b} is ignored.
|
||||
@samp{-b} and @samp{-W} are specified, then @samp{-W} has precedence and
|
||||
@samp{-b} is ignored.
|
||||
|
||||
When GNU extensions are enabled, the only way to avoid newline as a
|
||||
break character is to write all the break characters in the file with no
|
||||
@@ -2446,7 +2584,7 @@ The file associated with this option contains a list of words which will
|
||||
never be taken as keywords in concordance output. It is called the
|
||||
@dfn{Ignore file}. The file contains exactly one word in each line; the
|
||||
end of line separation of words is not subject to the value of the
|
||||
@code{-S} option.
|
||||
@samp{-S} option.
|
||||
|
||||
There is a default Ignore file used by @code{ptx} when this option is
|
||||
not specified, usually found in @file{/usr/local/lib/eign} if this has
|
||||
@@ -2460,7 +2598,7 @@ The file associated with this option contains a list of words which will
|
||||
be retained in concordance output, any word not mentioned in this file
|
||||
is ignored. The file is called the @dfn{Only file}. The file contains
|
||||
exactly one word in each line; the end of line separation of words is
|
||||
not subject to the value of the @code{-S} option.
|
||||
not subject to the value of the @samp{-S} option.
|
||||
|
||||
There is no default for the Only file. In the case there are both an
|
||||
Only file and an Ignore file, a word will be subject to be a keyword
|
||||
@@ -2473,12 +2611,12 @@ On each input line, the leading sequence of non white characters will be
|
||||
taken to be a reference that has the purpose of identifying this input
|
||||
line on the produced permuted index. For more information about reference
|
||||
production, see @xref{Output formatting in ptx}.
|
||||
Using this option changes the default value for option @code{-S}.
|
||||
Using this option changes the default value for option @samp{-S}.
|
||||
|
||||
Using this option, the program does not try very hard to remove
|
||||
references from contexts in output, but it succeeds in doing so
|
||||
@emph{when} the context ends exactly at the newline. If option
|
||||
@code{-r} is used with @code{-S} default value, or when GNU extensions
|
||||
@samp{-r} is used with @samp{-S} default value, or when GNU extensions
|
||||
are disabled, this condition is always met and references are completely
|
||||
excluded from the output contexts.
|
||||
|
||||
@@ -2490,25 +2628,25 @@ line or the end of a sentence. In fact, there is other distinction
|
||||
between end of lines or end of sentences than the effect of this regular
|
||||
expression, and input line boundaries have no special significance
|
||||
outside this option. By default, when GNU extensions are enabled and if
|
||||
@code{-r} option is not used, end of sentences are used. In this
|
||||
@samp{-r} option is not used, end of sentences are used. In this
|
||||
case, the precise @var{regex} is imported from GNU emacs:
|
||||
|
||||
@example
|
||||
[.?!][]\"')@}]*\\($\\|\t\\| \\)[ \t\n]*
|
||||
@end example
|
||||
|
||||
Whenever GNU extensions are disabled or if @code{-r} option is used, end
|
||||
Whenever GNU extensions are disabled or if @samp{-r} option is used, end
|
||||
of lines are used; in this case, the default @var{regexp} is just:
|
||||
|
||||
@example
|
||||
\n
|
||||
@end example
|
||||
|
||||
Using an empty REGEXP is equivalent to completely disabling end of line or end
|
||||
of sentence recognition. In this case, the whole file is considered to
|
||||
be a single big line or sentence. The user might want to disallow all
|
||||
truncation flag generation as well, through option @code{-F ""}.
|
||||
@xref{Regexps, , Syntax of Regular Expressions, emacs, The GNU Emacs
|
||||
Using an empty @var{regexp} is equivalent to completely disabling end of
|
||||
line or end of sentence recognition. In this case, the whole file is
|
||||
considered to be a single big line or sentence. The user might want to
|
||||
disallow all truncation flag generation as well, through option @samp{-F
|
||||
""}. @xref{Regexps, , Syntax of Regular Expressions, emacs, The GNU Emacs
|
||||
Manual}.
|
||||
|
||||
When the keywords happen to be near the beginning of the input line or
|
||||
@@ -2530,11 +2668,11 @@ the corresponding characters by @code{ptx} itself.
|
||||
|
||||
This option selects which regular expression will describe each keyword.
|
||||
By default, if GNU extensions are enabled, a word is a sequence of
|
||||
letters; the @var{regexp} used is @code{\w+}. When GNU extensions are
|
||||
letters; the @var{regexp} used is @samp{\w+}. When GNU extensions are
|
||||
disabled, a word is by default anything which ends with a space, a tab
|
||||
or a newline; the @var{regexp} used is @code{[^ \t\n]+}.
|
||||
or a newline; the @var{regexp} used is @samp{[^ \t\n]+}.
|
||||
|
||||
An empty REGEXP is equivalent to not using this option, letting the
|
||||
An empty @var{regexp} is equivalent to not using this option, letting the
|
||||
default dive in. @xref{Regexps, , Syntax of Regular Expressions, emacs,
|
||||
The GNU Emacs Manual}.
|
||||
|
||||
@@ -2548,15 +2686,15 @@ the corresponding characters by @code{ptx} itself.
|
||||
@node Output formatting in ptx
|
||||
@subsection Output formatting
|
||||
|
||||
Output format is mainly controlled by @code{-O} and @code{-T} options,
|
||||
described in the table below. When neither @code{-O} nor @code{-T} is
|
||||
Output format is mainly controlled by @samp{-O} and @samp{-T} options,
|
||||
described in the table below. When neither @samp{-O} nor @samp{-T} is
|
||||
selected, and if GNU extensions are enabled, the program choose an
|
||||
output format suited for a dumb terminal. Each keyword occurrence is
|
||||
output to the center of one line, surrounded by its left and right
|
||||
contexts. Each field is properly justified, so the concordance output
|
||||
could readily be observed. As a special feature, if automatic
|
||||
references are selected by option @code{-A} and are output before the
|
||||
left context, that is, if option @code{-R} is @emph{not} selected, then
|
||||
references are selected by option @samp{-A} and are output before the
|
||||
left context, that is, if option @samp{-R} is @emph{not} selected, then
|
||||
a colon is added after the reference; this nicely interfaces with GNU
|
||||
Emacs @code{next-error} processing. In this default output format, each
|
||||
white space character, like newline and tab, is merely changed to
|
||||
@@ -2567,7 +2705,7 @@ characters is transmitted verbatim.
|
||||
|
||||
Output format is further controlled by the following options.
|
||||
|
||||
@table @code
|
||||
@table @samp
|
||||
|
||||
@item -g @var{number}
|
||||
@itemx --gap-size=@var{number}
|
||||
@@ -2580,7 +2718,7 @@ line.
|
||||
|
||||
Select the output maximum width of each final line. If references are
|
||||
used, they are included or excluded from the output maximum width
|
||||
depending on the value of option @code{-R}. If this option is not
|
||||
depending on the value of option @samp{-R}. If this option is not
|
||||
selected, that is, when references are output before the left context,
|
||||
the output maximum width takes into account the maximum length of all
|
||||
references. If this options is selected, that is, when references are
|
||||
@@ -2594,22 +2732,22 @@ them.
|
||||
Select automatic references. Each input line will have an automatic
|
||||
reference made up of the file name and the line ordinal, with a single
|
||||
colon between them. However, the file name will be empty when standard
|
||||
input is being read. If both @code{-A} and @code{-r} are selected, then
|
||||
input is being read. If both @samp{-A} and @samp{-r} are selected, then
|
||||
the input reference is still read and skipped, but the automatic
|
||||
reference is used at output time, overriding the input reference.
|
||||
|
||||
@item -R
|
||||
@itemx --right-side-refs
|
||||
|
||||
In default output format, when option @code{-R} is not used, any
|
||||
reference produced by the effect of options @code{-r} or @code{-A} are
|
||||
In default output format, when option @samp{-R} is not used, any
|
||||
reference produced by the effect of options @samp{-r} or @samp{-A} are
|
||||
given to the far right of output lines, after the right context. In
|
||||
default output format, when option @code{-R} is specified, references
|
||||
default output format, when option @samp{-R} is specified, references
|
||||
are rather given to the beginning of each output line, before the left
|
||||
context. For any other output format, option @code{-R} is almost
|
||||
context. For any other output format, option @samp{-R} is almost
|
||||
ignored, except for the fact that the width of references is @emph{not}
|
||||
taken into account in total output width given by @code{-w} whenever
|
||||
@code{-R} is selected.
|
||||
taken into account in total output width given by @samp{-w} whenever
|
||||
@samp{-R} is selected.
|
||||
|
||||
This option is automatically selected whenever GNU extensions are
|
||||
disabled.
|
||||
@@ -2620,15 +2758,15 @@ disabled.
|
||||
This option will request that any truncation in the output be reported
|
||||
using the string @var{string}. Most output fields theoretically extend
|
||||
towards the beginning or the end of the current line, or current
|
||||
sentence, as selected with option @code{-S}. But there is a maximum
|
||||
allowed output line width, changeable through option @code{-w}, which is
|
||||
sentence, as selected with option @samp{-S}. But there is a maximum
|
||||
allowed output line width, changeable through option @samp{-w}, which is
|
||||
further divided into space for various output fields. When a field has
|
||||
to be truncated because cannot extend until the beginning or the end of
|
||||
the current line to fit in the, then a truncation occurs. By default,
|
||||
the string used is a single slash, as in @code{-F /}.
|
||||
the string used is a single slash, as in @samp{-F /}.
|
||||
|
||||
@var{string} may have more than one character, as in @code{-F ...}.
|
||||
Also, in the particular case @var{string} is empty (@code{-F ""}),
|
||||
@var{string} may have more than one character, as in @samp{-F ...}.
|
||||
Also, in the particular case @var{string} is empty (@samp{-F ""}),
|
||||
truncation flagging is disabled, and no truncation marks are appended in
|
||||
this case.
|
||||
|
||||
@@ -2673,9 +2811,9 @@ line will look like:
|
||||
@end example
|
||||
|
||||
@noindent
|
||||
so it will be possible to write write a @code{\xx} definition to take
|
||||
care of the output typesetting. Note that when references are not being
|
||||
produced, that is, neither option @code{-A} nor option @code{-r} is
|
||||
so it will be possible to write a @code{\xx} definition to take care of
|
||||
the output typesetting. Note that when references are not being
|
||||
produced, that is, neither option @samp{-A} nor option @samp{-r} is
|
||||
selected, the last parameter of each @code{\xx} call is inhibited.
|
||||
Option @samp{-M} might be used to change @samp{xx} to another macro
|
||||
name.
|
||||
@@ -2734,10 +2872,10 @@ meaning when GNU extensions are enabled, as explained below.
|
||||
@item
|
||||
By default, concordance output is not formatted for @code{troff} or
|
||||
@code{nroff}. It is rather formatted for a dumb terminal. @code{troff}
|
||||
or @code{nroff} output may still be selected through option @code{-O}.
|
||||
or @code{nroff} output may still be selected through option @samp{-O}.
|
||||
|
||||
@item
|
||||
Unless @code{-R} option is used, the maximum reference width is
|
||||
Unless @samp{-R} option is used, the maximum reference width is
|
||||
subtracted from the total output line width. With GNU extensions
|
||||
disabled, width of references is not taken into account in the output
|
||||
line width computations.
|
||||
@@ -3950,9 +4088,9 @@ appropriate tool, build one.
|
||||
|
||||
As of this writing, all the programs we've discussed are available via
|
||||
anonymous @code{ftp} from @code{prep.ai.mit.edu} as
|
||||
@file{/pub/gnu/textutils-1.9.tar.gz} directory.@footnote{Version 1.9 was
|
||||
current when this column was written. Check the nearest GNU archive for
|
||||
the current version.}
|
||||
@file{/pub/gnu/textutils-1.9.tar.gz}.@footnote{Version 1.9 was current
|
||||
when this column was written. Check the nearest GNU archive for the
|
||||
current version. The main GNU FTP site is now @code{ftp.gnu.org}.}
|
||||
|
||||
None of what I have presented in this column is new. The Software Tools
|
||||
philosophy was first introduced in the book @cite{Software Tools},
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
.deps
|
||||
Makefile
|
||||
getdate.c
|
||||
safe-stat.h
|
||||
safe-stat.c
|
||||
getdate.tab.c
|
||||
lstat.c
|
||||
safe-lstat.c
|
||||
safe-lstat.h
|
||||
getdate.tab.c
|
||||
.deps
|
||||
safe-stat.c
|
||||
safe-stat.h
|
||||
stat.c
|
||||
lstat.c
|
||||
|
||||
21
lib/.gdb-history
Normal file
21
lib/.gdb-history
Normal file
@@ -0,0 +1,21 @@
|
||||
r 206.65.212.10
|
||||
b main
|
||||
r
|
||||
n
|
||||
s
|
||||
n
|
||||
p addr
|
||||
p addr
|
||||
p he->h_name
|
||||
n
|
||||
q
|
||||
b canon_host
|
||||
r 206.65.212.10
|
||||
n
|
||||
p he
|
||||
p *he
|
||||
n
|
||||
n
|
||||
p (he->h_addrtype)
|
||||
n
|
||||
q
|
||||
322
lib/Makefile.in
322
lib/Makefile.in
@@ -1,6 +1,6 @@
|
||||
# Makefile.in generated automatically by automake 1.3b from Makefile.am
|
||||
# Makefile.in generated automatically by automake 1.4a from Makefile.am
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
@@ -11,7 +11,7 @@
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
|
||||
SHELL = /bin/sh
|
||||
SHELL = @SHELL@
|
||||
|
||||
srcdir = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
@@ -46,7 +46,7 @@ AUTOMAKE = @AUTOMAKE@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
transform = @program_transform_name@
|
||||
@@ -96,23 +96,14 @@ noinst_LIBRARIES = libfu.a
|
||||
|
||||
INCLUDES = -I.. -I$(srcdir) -I../intl
|
||||
|
||||
libfu_a_SOURCES = getdate.y posixtm.c getopt.c getopt1.c \
|
||||
addext.c argmatch.c backupfile.c basename.c \
|
||||
closeout.c dirname.c exclude.c filemode.c \
|
||||
full-write.c human.c idcache.c \
|
||||
isdir.c long-options.c makepath.c modechange.c hash.c path-concat.c \
|
||||
quotearg.c safe-read.c save-cwd.c savedir.c stripslash.c userspec.c xgetcwd.c \
|
||||
xmalloc.c xstrdup.c xstrtol.c xstrtoul.c yesno.c
|
||||
libfu_a_SOURCES = getdate.y posixtm.c getopt.c getopt1.c addext.c argmatch.c backupfile.c basename.c closeout.c dirname.c exclude.c filemode.c full-write.c human.c idcache.c isdir.c long-options.c makepath.c modechange.c hash.c path-concat.c quotearg.c safe-read.c save-cwd.c savedir.c stripslash.c userspec.c xgetcwd.c xmalloc.c xstrdup.c xstrtol.c xstrtoul.c yesno.c
|
||||
|
||||
|
||||
libfu_a_LIBADD = @LIBOBJS@ @ALLOCA@
|
||||
libfu_a_DEPENDENCIES = $(libfu_a_LIBADD)
|
||||
|
||||
noinst_HEADERS = argmatch.h backupfile.h closeout.h \
|
||||
dirname.h error.h exclude.h filemode.h fnmatch.h fsusage.h \
|
||||
getdate.h getline.h getopt.h group-member.h human.h lchown.h long-options.h \
|
||||
makepath.h modechange.h mountlist.h hash.h path-concat.h pathmax.h \
|
||||
posixtm.h quotearg.h regex.h safe-read.h save-cwd.h savedir.h strverscmp.h \
|
||||
xalloc.h xstrtol.h xstrtoul.h
|
||||
noinst_HEADERS = argmatch.h backupfile.h closeout.h dirname.h error.h exclude.h filemode.h fnmatch.h fsusage.h getdate.h getline.h getopt.h group-member.h human.h lchown.h long-options.h makepath.h modechange.h mountlist.h hash.h path-concat.h pathmax.h posixtm.h quotearg.h regex.h safe-read.h save-cwd.h savedir.h strverscmp.h xalloc.h xstrtol.h xstrtoul.h
|
||||
|
||||
|
||||
BUILT_SOURCES = getdate.c lstat.c stat.c
|
||||
|
||||
@@ -138,7 +129,8 @@ xstrdup$U.o xstrtol$U.o xstrtoul$U.o yesno$U.o
|
||||
AR = ar
|
||||
CFLAGS = @CFLAGS@
|
||||
COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||
LINK = $(CC) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@
|
||||
CCLD = $(CC)
|
||||
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@
|
||||
HEADERS = $(noinst_HEADERS)
|
||||
|
||||
DIST_COMMON = Makefile.am Makefile.in TODO alloca.c chown.c error.c \
|
||||
@@ -146,41 +138,39 @@ error.h euidaccess.c fileblocks.c fnmatch.c fsusage.c ftruncate.c \
|
||||
getdate.c getgroups.c getline.c group-member.c lchown.c lstat.c \
|
||||
malloc.c memcmp.c memcpy.c memset.c mkdir.c mktime.c mountlist.c \
|
||||
obstack.c obstack.h realloc.c regex.c rename.c rmdir.c rpmatch.c stat.c \
|
||||
stpcpy.c strcasecmp.c strdup.c strftime.c strndup.c strstr.c strtol.c \
|
||||
strtoul.c strverscmp.c utime.c ylwrap
|
||||
stpcpy.c strcasecmp.c strdup.c strftime.c strncasecmp.c strndup.c \
|
||||
strstr.c strtol.c strtoul.c strverscmp.c utime.c
|
||||
|
||||
|
||||
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
|
||||
|
||||
TAR = tar
|
||||
GZIP = --best
|
||||
TAR = gtar
|
||||
GZIP_ENV = --best
|
||||
DEP_FILES = .deps/addext.P .deps/alloca.P .deps/argmatch.P \
|
||||
.deps/backupfile.P .deps/basename.P .deps/chown.P .deps/closeout.P \
|
||||
.deps/dirname.P .deps/error.P .deps/euidaccess.P .deps/exclude.P \
|
||||
.deps/fileblocks.P .deps/filemode.P .deps/fnmatch.P .deps/fsusage.P \
|
||||
.deps/ftruncate.P .deps/full-write.P .deps/getdate .deps/getdate.P \
|
||||
.deps/getgroups.P .deps/getline.P .deps/getopt.P .deps/getopt1.P \
|
||||
.deps/group-member.P .deps/hash.P .deps/human.P .deps/idcache.P \
|
||||
.deps/isdir.P .deps/lchown.P .deps/long-options.P .deps/lstat \
|
||||
.deps/lstat.P .deps/makepath.P .deps/malloc.P .deps/memcmp.P \
|
||||
.deps/memcpy.P .deps/memset.P .deps/mkdir.P .deps/mktime.P \
|
||||
.deps/modechange.P .deps/mountlist.P .deps/obstack.P \
|
||||
.deps/ftruncate.P .deps/full-write.P .deps/getdate.P .deps/getgroups.P \
|
||||
.deps/getline.P .deps/getopt.P .deps/getopt1.P .deps/group-member.P \
|
||||
.deps/hash.P .deps/human.P .deps/idcache.P .deps/isdir.P .deps/lchown.P \
|
||||
.deps/long-options.P .deps/lstat.P .deps/makepath.P .deps/malloc.P \
|
||||
.deps/memcmp.P .deps/memcpy.P .deps/memset.P .deps/mkdir.P \
|
||||
.deps/mktime.P .deps/modechange.P .deps/mountlist.P .deps/obstack.P \
|
||||
.deps/path-concat.P .deps/posixtm.P .deps/quotearg.P .deps/realloc.P \
|
||||
.deps/regex.P .deps/rename.P .deps/rmdir.P .deps/rpmatch.P \
|
||||
.deps/safe-read.P .deps/save-cwd.P .deps/savedir.P .deps/stat \
|
||||
.deps/stat.P .deps/stpcpy.P .deps/strcasecmp.P .deps/strdup.P \
|
||||
.deps/strftime.P .deps/stripslash.P .deps/strndup.P .deps/strstr.P \
|
||||
.deps/safe-read.P .deps/save-cwd.P .deps/savedir.P .deps/stat.P \
|
||||
.deps/stpcpy.P .deps/strcasecmp.P .deps/strdup.P .deps/strftime.P \
|
||||
.deps/stripslash.P .deps/strncasecmp.P .deps/strndup.P .deps/strstr.P \
|
||||
.deps/strtol.P .deps/strtoul.P .deps/strverscmp.P .deps/userspec.P \
|
||||
.deps/utime.P .deps/xgetcwd.P .deps/xmalloc.P .deps/xstrdup.P \
|
||||
.deps/xstrtol.P .deps/xstrtoul.P .deps/yesno.P
|
||||
SOURCES = $(libfu_a_SOURCES)
|
||||
OBJECTS = $(libfu_a_OBJECTS)
|
||||
|
||||
all: Makefile $(LIBRARIES) $(HEADERS)
|
||||
|
||||
all: all-redirect
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .S .c .o .s .y
|
||||
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
|
||||
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
|
||||
cd $(top_srcdir) && $(AUTOMAKE) --gnits lib/Makefile
|
||||
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
|
||||
@@ -232,153 +222,148 @@ libfu.a: $(libfu_a_OBJECTS) $(libfu_a_DEPENDENCIES)
|
||||
-rm -f libfu.a
|
||||
$(AR) cru libfu.a $(libfu_a_OBJECTS) $(libfu_a_LIBADD)
|
||||
$(RANLIB) libfu.a
|
||||
.y.c:
|
||||
$(YACC) $(AM_YFLAGS) $(YFLAGS) $< && mv y.tab.c $*.c
|
||||
if test -f y.tab.h; then \
|
||||
if cmp -s y.tab.h $*.h; then rm -f y.tab.h; else mv y.tab.h $*.h; fi; \
|
||||
else :; fi
|
||||
getdate.h: getdate.c
|
||||
|
||||
addext_.c: addext.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/addext.c; then echo $(srcdir)/addext.c; else echo addext.c; fi` | $(ANSI2KNR) > addext_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/addext.c; then echo $(srcdir)/addext.c; else echo addext.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > addext_.c
|
||||
alloca_.c: alloca.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/alloca.c; then echo $(srcdir)/alloca.c; else echo alloca.c; fi` | $(ANSI2KNR) > alloca_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/alloca.c; then echo $(srcdir)/alloca.c; else echo alloca.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > alloca_.c
|
||||
argmatch_.c: argmatch.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/argmatch.c; then echo $(srcdir)/argmatch.c; else echo argmatch.c; fi` | $(ANSI2KNR) > argmatch_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/argmatch.c; then echo $(srcdir)/argmatch.c; else echo argmatch.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > argmatch_.c
|
||||
backupfile_.c: backupfile.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/backupfile.c; then echo $(srcdir)/backupfile.c; else echo backupfile.c; fi` | $(ANSI2KNR) > backupfile_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/backupfile.c; then echo $(srcdir)/backupfile.c; else echo backupfile.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > backupfile_.c
|
||||
basename_.c: basename.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/basename.c; then echo $(srcdir)/basename.c; else echo basename.c; fi` | $(ANSI2KNR) > basename_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/basename.c; then echo $(srcdir)/basename.c; else echo basename.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > basename_.c
|
||||
chown_.c: chown.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/chown.c; then echo $(srcdir)/chown.c; else echo chown.c; fi` | $(ANSI2KNR) > chown_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/chown.c; then echo $(srcdir)/chown.c; else echo chown.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > chown_.c
|
||||
closeout_.c: closeout.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/closeout.c; then echo $(srcdir)/closeout.c; else echo closeout.c; fi` | $(ANSI2KNR) > closeout_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/closeout.c; then echo $(srcdir)/closeout.c; else echo closeout.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > closeout_.c
|
||||
dirname_.c: dirname.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/dirname.c; then echo $(srcdir)/dirname.c; else echo dirname.c; fi` | $(ANSI2KNR) > dirname_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/dirname.c; then echo $(srcdir)/dirname.c; else echo dirname.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > dirname_.c
|
||||
error_.c: error.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/error.c; then echo $(srcdir)/error.c; else echo error.c; fi` | $(ANSI2KNR) > error_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/error.c; then echo $(srcdir)/error.c; else echo error.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > error_.c
|
||||
euidaccess_.c: euidaccess.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/euidaccess.c; then echo $(srcdir)/euidaccess.c; else echo euidaccess.c; fi` | $(ANSI2KNR) > euidaccess_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/euidaccess.c; then echo $(srcdir)/euidaccess.c; else echo euidaccess.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > euidaccess_.c
|
||||
exclude_.c: exclude.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/exclude.c; then echo $(srcdir)/exclude.c; else echo exclude.c; fi` | $(ANSI2KNR) > exclude_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/exclude.c; then echo $(srcdir)/exclude.c; else echo exclude.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > exclude_.c
|
||||
fileblocks_.c: fileblocks.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/fileblocks.c; then echo $(srcdir)/fileblocks.c; else echo fileblocks.c; fi` | $(ANSI2KNR) > fileblocks_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/fileblocks.c; then echo $(srcdir)/fileblocks.c; else echo fileblocks.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > fileblocks_.c
|
||||
filemode_.c: filemode.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/filemode.c; then echo $(srcdir)/filemode.c; else echo filemode.c; fi` | $(ANSI2KNR) > filemode_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/filemode.c; then echo $(srcdir)/filemode.c; else echo filemode.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > filemode_.c
|
||||
fnmatch_.c: fnmatch.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/fnmatch.c; then echo $(srcdir)/fnmatch.c; else echo fnmatch.c; fi` | $(ANSI2KNR) > fnmatch_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/fnmatch.c; then echo $(srcdir)/fnmatch.c; else echo fnmatch.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > fnmatch_.c
|
||||
fsusage_.c: fsusage.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/fsusage.c; then echo $(srcdir)/fsusage.c; else echo fsusage.c; fi` | $(ANSI2KNR) > fsusage_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/fsusage.c; then echo $(srcdir)/fsusage.c; else echo fsusage.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > fsusage_.c
|
||||
ftruncate_.c: ftruncate.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/ftruncate.c; then echo $(srcdir)/ftruncate.c; else echo ftruncate.c; fi` | $(ANSI2KNR) > ftruncate_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/ftruncate.c; then echo $(srcdir)/ftruncate.c; else echo ftruncate.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > ftruncate_.c
|
||||
full-write_.c: full-write.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/full-write.c; then echo $(srcdir)/full-write.c; else echo full-write.c; fi` | $(ANSI2KNR) > full-write_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/full-write.c; then echo $(srcdir)/full-write.c; else echo full-write.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > full-write_.c
|
||||
getdate_.c: getdate.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/getdate.c; then echo $(srcdir)/getdate.c; else echo getdate.c; fi` | $(ANSI2KNR) > getdate_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/getdate.c; then echo $(srcdir)/getdate.c; else echo getdate.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > getdate_.c
|
||||
getgroups_.c: getgroups.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/getgroups.c; then echo $(srcdir)/getgroups.c; else echo getgroups.c; fi` | $(ANSI2KNR) > getgroups_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/getgroups.c; then echo $(srcdir)/getgroups.c; else echo getgroups.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > getgroups_.c
|
||||
getline_.c: getline.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/getline.c; then echo $(srcdir)/getline.c; else echo getline.c; fi` | $(ANSI2KNR) > getline_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/getline.c; then echo $(srcdir)/getline.c; else echo getline.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > getline_.c
|
||||
getopt_.c: getopt.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/getopt.c; then echo $(srcdir)/getopt.c; else echo getopt.c; fi` | $(ANSI2KNR) > getopt_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/getopt.c; then echo $(srcdir)/getopt.c; else echo getopt.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > getopt_.c
|
||||
getopt1_.c: getopt1.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/getopt1.c; then echo $(srcdir)/getopt1.c; else echo getopt1.c; fi` | $(ANSI2KNR) > getopt1_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/getopt1.c; then echo $(srcdir)/getopt1.c; else echo getopt1.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > getopt1_.c
|
||||
group-member_.c: group-member.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/group-member.c; then echo $(srcdir)/group-member.c; else echo group-member.c; fi` | $(ANSI2KNR) > group-member_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/group-member.c; then echo $(srcdir)/group-member.c; else echo group-member.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > group-member_.c
|
||||
hash_.c: hash.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/hash.c; then echo $(srcdir)/hash.c; else echo hash.c; fi` | $(ANSI2KNR) > hash_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/hash.c; then echo $(srcdir)/hash.c; else echo hash.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > hash_.c
|
||||
human_.c: human.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/human.c; then echo $(srcdir)/human.c; else echo human.c; fi` | $(ANSI2KNR) > human_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/human.c; then echo $(srcdir)/human.c; else echo human.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > human_.c
|
||||
idcache_.c: idcache.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/idcache.c; then echo $(srcdir)/idcache.c; else echo idcache.c; fi` | $(ANSI2KNR) > idcache_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/idcache.c; then echo $(srcdir)/idcache.c; else echo idcache.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > idcache_.c
|
||||
isdir_.c: isdir.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/isdir.c; then echo $(srcdir)/isdir.c; else echo isdir.c; fi` | $(ANSI2KNR) > isdir_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/isdir.c; then echo $(srcdir)/isdir.c; else echo isdir.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > isdir_.c
|
||||
lchown_.c: lchown.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/lchown.c; then echo $(srcdir)/lchown.c; else echo lchown.c; fi` | $(ANSI2KNR) > lchown_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/lchown.c; then echo $(srcdir)/lchown.c; else echo lchown.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > lchown_.c
|
||||
long-options_.c: long-options.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/long-options.c; then echo $(srcdir)/long-options.c; else echo long-options.c; fi` | $(ANSI2KNR) > long-options_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/long-options.c; then echo $(srcdir)/long-options.c; else echo long-options.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > long-options_.c
|
||||
lstat_.c: lstat.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/lstat.c; then echo $(srcdir)/lstat.c; else echo lstat.c; fi` | $(ANSI2KNR) > lstat_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/lstat.c; then echo $(srcdir)/lstat.c; else echo lstat.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > lstat_.c
|
||||
makepath_.c: makepath.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/makepath.c; then echo $(srcdir)/makepath.c; else echo makepath.c; fi` | $(ANSI2KNR) > makepath_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/makepath.c; then echo $(srcdir)/makepath.c; else echo makepath.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > makepath_.c
|
||||
malloc_.c: malloc.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/malloc.c; then echo $(srcdir)/malloc.c; else echo malloc.c; fi` | $(ANSI2KNR) > malloc_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/malloc.c; then echo $(srcdir)/malloc.c; else echo malloc.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > malloc_.c
|
||||
memcmp_.c: memcmp.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/memcmp.c; then echo $(srcdir)/memcmp.c; else echo memcmp.c; fi` | $(ANSI2KNR) > memcmp_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/memcmp.c; then echo $(srcdir)/memcmp.c; else echo memcmp.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > memcmp_.c
|
||||
memcpy_.c: memcpy.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/memcpy.c; then echo $(srcdir)/memcpy.c; else echo memcpy.c; fi` | $(ANSI2KNR) > memcpy_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/memcpy.c; then echo $(srcdir)/memcpy.c; else echo memcpy.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > memcpy_.c
|
||||
memset_.c: memset.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/memset.c; then echo $(srcdir)/memset.c; else echo memset.c; fi` | $(ANSI2KNR) > memset_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/memset.c; then echo $(srcdir)/memset.c; else echo memset.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > memset_.c
|
||||
mkdir_.c: mkdir.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/mkdir.c; then echo $(srcdir)/mkdir.c; else echo mkdir.c; fi` | $(ANSI2KNR) > mkdir_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/mkdir.c; then echo $(srcdir)/mkdir.c; else echo mkdir.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > mkdir_.c
|
||||
mktime_.c: mktime.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/mktime.c; then echo $(srcdir)/mktime.c; else echo mktime.c; fi` | $(ANSI2KNR) > mktime_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/mktime.c; then echo $(srcdir)/mktime.c; else echo mktime.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > mktime_.c
|
||||
modechange_.c: modechange.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/modechange.c; then echo $(srcdir)/modechange.c; else echo modechange.c; fi` | $(ANSI2KNR) > modechange_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/modechange.c; then echo $(srcdir)/modechange.c; else echo modechange.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > modechange_.c
|
||||
mountlist_.c: mountlist.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/mountlist.c; then echo $(srcdir)/mountlist.c; else echo mountlist.c; fi` | $(ANSI2KNR) > mountlist_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/mountlist.c; then echo $(srcdir)/mountlist.c; else echo mountlist.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > mountlist_.c
|
||||
obstack_.c: obstack.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/obstack.c; then echo $(srcdir)/obstack.c; else echo obstack.c; fi` | $(ANSI2KNR) > obstack_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/obstack.c; then echo $(srcdir)/obstack.c; else echo obstack.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > obstack_.c
|
||||
path-concat_.c: path-concat.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/path-concat.c; then echo $(srcdir)/path-concat.c; else echo path-concat.c; fi` | $(ANSI2KNR) > path-concat_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/path-concat.c; then echo $(srcdir)/path-concat.c; else echo path-concat.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > path-concat_.c
|
||||
posixtm_.c: posixtm.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/posixtm.c; then echo $(srcdir)/posixtm.c; else echo posixtm.c; fi` | $(ANSI2KNR) > posixtm_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/posixtm.c; then echo $(srcdir)/posixtm.c; else echo posixtm.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > posixtm_.c
|
||||
quotearg_.c: quotearg.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/quotearg.c; then echo $(srcdir)/quotearg.c; else echo quotearg.c; fi` | $(ANSI2KNR) > quotearg_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/quotearg.c; then echo $(srcdir)/quotearg.c; else echo quotearg.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > quotearg_.c
|
||||
realloc_.c: realloc.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/realloc.c; then echo $(srcdir)/realloc.c; else echo realloc.c; fi` | $(ANSI2KNR) > realloc_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/realloc.c; then echo $(srcdir)/realloc.c; else echo realloc.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > realloc_.c
|
||||
regex_.c: regex.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/regex.c; then echo $(srcdir)/regex.c; else echo regex.c; fi` | $(ANSI2KNR) > regex_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/regex.c; then echo $(srcdir)/regex.c; else echo regex.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > regex_.c
|
||||
rename_.c: rename.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/rename.c; then echo $(srcdir)/rename.c; else echo rename.c; fi` | $(ANSI2KNR) > rename_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/rename.c; then echo $(srcdir)/rename.c; else echo rename.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > rename_.c
|
||||
rmdir_.c: rmdir.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/rmdir.c; then echo $(srcdir)/rmdir.c; else echo rmdir.c; fi` | $(ANSI2KNR) > rmdir_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/rmdir.c; then echo $(srcdir)/rmdir.c; else echo rmdir.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > rmdir_.c
|
||||
rpmatch_.c: rpmatch.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/rpmatch.c; then echo $(srcdir)/rpmatch.c; else echo rpmatch.c; fi` | $(ANSI2KNR) > rpmatch_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/rpmatch.c; then echo $(srcdir)/rpmatch.c; else echo rpmatch.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > rpmatch_.c
|
||||
safe-read_.c: safe-read.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/safe-read.c; then echo $(srcdir)/safe-read.c; else echo safe-read.c; fi` | $(ANSI2KNR) > safe-read_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/safe-read.c; then echo $(srcdir)/safe-read.c; else echo safe-read.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > safe-read_.c
|
||||
save-cwd_.c: save-cwd.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/save-cwd.c; then echo $(srcdir)/save-cwd.c; else echo save-cwd.c; fi` | $(ANSI2KNR) > save-cwd_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/save-cwd.c; then echo $(srcdir)/save-cwd.c; else echo save-cwd.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > save-cwd_.c
|
||||
savedir_.c: savedir.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/savedir.c; then echo $(srcdir)/savedir.c; else echo savedir.c; fi` | $(ANSI2KNR) > savedir_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/savedir.c; then echo $(srcdir)/savedir.c; else echo savedir.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > savedir_.c
|
||||
stat_.c: stat.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/stat.c; then echo $(srcdir)/stat.c; else echo stat.c; fi` | $(ANSI2KNR) > stat_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/stat.c; then echo $(srcdir)/stat.c; else echo stat.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > stat_.c
|
||||
stpcpy_.c: stpcpy.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/stpcpy.c; then echo $(srcdir)/stpcpy.c; else echo stpcpy.c; fi` | $(ANSI2KNR) > stpcpy_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/stpcpy.c; then echo $(srcdir)/stpcpy.c; else echo stpcpy.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > stpcpy_.c
|
||||
strcasecmp_.c: strcasecmp.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/strcasecmp.c; then echo $(srcdir)/strcasecmp.c; else echo strcasecmp.c; fi` | $(ANSI2KNR) > strcasecmp_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/strcasecmp.c; then echo $(srcdir)/strcasecmp.c; else echo strcasecmp.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > strcasecmp_.c
|
||||
strdup_.c: strdup.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/strdup.c; then echo $(srcdir)/strdup.c; else echo strdup.c; fi` | $(ANSI2KNR) > strdup_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/strdup.c; then echo $(srcdir)/strdup.c; else echo strdup.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > strdup_.c
|
||||
strftime_.c: strftime.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/strftime.c; then echo $(srcdir)/strftime.c; else echo strftime.c; fi` | $(ANSI2KNR) > strftime_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/strftime.c; then echo $(srcdir)/strftime.c; else echo strftime.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > strftime_.c
|
||||
stripslash_.c: stripslash.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/stripslash.c; then echo $(srcdir)/stripslash.c; else echo stripslash.c; fi` | $(ANSI2KNR) > stripslash_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/stripslash.c; then echo $(srcdir)/stripslash.c; else echo stripslash.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > stripslash_.c
|
||||
strncasecmp_.c: strncasecmp.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/strncasecmp.c; then echo $(srcdir)/strncasecmp.c; else echo strncasecmp.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > strncasecmp_.c
|
||||
strndup_.c: strndup.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/strndup.c; then echo $(srcdir)/strndup.c; else echo strndup.c; fi` | $(ANSI2KNR) > strndup_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/strndup.c; then echo $(srcdir)/strndup.c; else echo strndup.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > strndup_.c
|
||||
strstr_.c: strstr.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/strstr.c; then echo $(srcdir)/strstr.c; else echo strstr.c; fi` | $(ANSI2KNR) > strstr_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/strstr.c; then echo $(srcdir)/strstr.c; else echo strstr.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > strstr_.c
|
||||
strtol_.c: strtol.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/strtol.c; then echo $(srcdir)/strtol.c; else echo strtol.c; fi` | $(ANSI2KNR) > strtol_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/strtol.c; then echo $(srcdir)/strtol.c; else echo strtol.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > strtol_.c
|
||||
strtoul_.c: strtoul.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/strtoul.c; then echo $(srcdir)/strtoul.c; else echo strtoul.c; fi` | $(ANSI2KNR) > strtoul_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/strtoul.c; then echo $(srcdir)/strtoul.c; else echo strtoul.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > strtoul_.c
|
||||
strverscmp_.c: strverscmp.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/strverscmp.c; then echo $(srcdir)/strverscmp.c; else echo strverscmp.c; fi` | $(ANSI2KNR) > strverscmp_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/strverscmp.c; then echo $(srcdir)/strverscmp.c; else echo strverscmp.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > strverscmp_.c
|
||||
userspec_.c: userspec.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/userspec.c; then echo $(srcdir)/userspec.c; else echo userspec.c; fi` | $(ANSI2KNR) > userspec_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/userspec.c; then echo $(srcdir)/userspec.c; else echo userspec.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > userspec_.c
|
||||
utime_.c: utime.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/utime.c; then echo $(srcdir)/utime.c; else echo utime.c; fi` | $(ANSI2KNR) > utime_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/utime.c; then echo $(srcdir)/utime.c; else echo utime.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > utime_.c
|
||||
xgetcwd_.c: xgetcwd.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/xgetcwd.c; then echo $(srcdir)/xgetcwd.c; else echo xgetcwd.c; fi` | $(ANSI2KNR) > xgetcwd_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/xgetcwd.c; then echo $(srcdir)/xgetcwd.c; else echo xgetcwd.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > xgetcwd_.c
|
||||
xmalloc_.c: xmalloc.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/xmalloc.c; then echo $(srcdir)/xmalloc.c; else echo xmalloc.c; fi` | $(ANSI2KNR) > xmalloc_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/xmalloc.c; then echo $(srcdir)/xmalloc.c; else echo xmalloc.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > xmalloc_.c
|
||||
xstrdup_.c: xstrdup.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/xstrdup.c; then echo $(srcdir)/xstrdup.c; else echo xstrdup.c; fi` | $(ANSI2KNR) > xstrdup_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/xstrdup.c; then echo $(srcdir)/xstrdup.c; else echo xstrdup.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > xstrdup_.c
|
||||
xstrtol_.c: xstrtol.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/xstrtol.c; then echo $(srcdir)/xstrtol.c; else echo xstrtol.c; fi` | $(ANSI2KNR) > xstrtol_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/xstrtol.c; then echo $(srcdir)/xstrtol.c; else echo xstrtol.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > xstrtol_.c
|
||||
xstrtoul_.c: xstrtoul.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/xstrtoul.c; then echo $(srcdir)/xstrtoul.c; else echo xstrtoul.c; fi` | $(ANSI2KNR) > xstrtoul_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/xstrtoul.c; then echo $(srcdir)/xstrtoul.c; else echo xstrtoul.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > xstrtoul_.c
|
||||
yesno_.c: yesno.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/yesno.c; then echo $(srcdir)/yesno.c; else echo yesno.c; fi` | $(ANSI2KNR) > yesno_.c
|
||||
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/yesno.c; then echo $(srcdir)/yesno.c; else echo yesno.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > yesno_.c
|
||||
addext_.o alloca_.o argmatch_.o backupfile_.o basename_.o chown_.o \
|
||||
closeout_.o dirname_.o error_.o euidaccess_.o exclude_.o fileblocks_.o \
|
||||
filemode_.o fnmatch_.o fsusage_.o ftruncate_.o full-write_.o getdate_.o \
|
||||
@@ -388,15 +373,26 @@ makepath_.o malloc_.o memcmp_.o memcpy_.o memset_.o mkdir_.o mktime_.o \
|
||||
modechange_.o mountlist_.o obstack_.o path-concat_.o posixtm_.o \
|
||||
quotearg_.o realloc_.o regex_.o rename_.o rmdir_.o rpmatch_.o \
|
||||
safe-read_.o save-cwd_.o savedir_.o stat_.o stpcpy_.o strcasecmp_.o \
|
||||
strdup_.o strftime_.o stripslash_.o strndup_.o strstr_.o strtol_.o \
|
||||
strtoul_.o strverscmp_.o userspec_.o utime_.o xgetcwd_.o xmalloc_.o \
|
||||
xstrdup_.o xstrtol_.o xstrtoul_.o yesno_.o : $(ANSI2KNR)
|
||||
strdup_.o strftime_.o stripslash_.o strncasecmp_.o strndup_.o strstr_.o \
|
||||
strtol_.o strtoul_.o strverscmp_.o userspec_.o utime_.o xgetcwd_.o \
|
||||
xmalloc_.o xstrdup_.o xstrtol_.o xstrtoul_.o yesno_.o : $(ANSI2KNR)
|
||||
.y.c:
|
||||
$(YACC) $(AM_YFLAGS) $(YFLAGS) $< && mv y.tab.c $*.c
|
||||
if test -f y.tab.h; then \
|
||||
if cmp -s y.tab.h $*.h; then rm -f y.tab.h; else mv y.tab.h $*.h; fi; \
|
||||
else :; fi
|
||||
getdate.h: getdate.c
|
||||
|
||||
|
||||
tags: TAGS
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP)
|
||||
list='$(SOURCES) $(HEADERS)'; \
|
||||
unique=`for i in $$list; do echo $$i; done | \
|
||||
awk ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
here=`pwd` && cd $(srcdir) \
|
||||
&& mkid -f$$here/ID $(SOURCES) $(HEADERS) $(LISP)
|
||||
&& mkid -f$$here/ID $$unique $(LISP)
|
||||
|
||||
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP)
|
||||
tags=; \
|
||||
@@ -429,9 +425,13 @@ distdir: $(DISTFILES)
|
||||
&& $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnits lib/Makefile
|
||||
@for file in $(DISTFILES); do \
|
||||
d=$(srcdir); \
|
||||
test -f $(distdir)/$$file \
|
||||
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file; \
|
||||
if test -d $$d/$$file; then \
|
||||
cp -pr $$/$$file $(distdir)/$$file; \
|
||||
else \
|
||||
test -f $(distdir)/$$file \
|
||||
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file || :; \
|
||||
fi; \
|
||||
done
|
||||
|
||||
DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :)
|
||||
@@ -443,37 +443,51 @@ mostlyclean-depend:
|
||||
clean-depend:
|
||||
|
||||
distclean-depend:
|
||||
-rm -rf .deps
|
||||
|
||||
maintainer-clean-depend:
|
||||
-rm -rf .deps
|
||||
|
||||
%.o: %.c
|
||||
@echo '$(COMPILE) -c $<'; \
|
||||
$(COMPILE) -Wp,-MD,.deps/$(*F).P -c $<
|
||||
$(COMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
|
||||
@-cp .deps/$(*F).pp .deps/$(*F).P; \
|
||||
tr ' ' '\012' < .deps/$(*F).pp \
|
||||
| sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
|
||||
>> .deps/$(*F).P; \
|
||||
rm .deps/$(*F).pp
|
||||
|
||||
%.lo: %.c
|
||||
@echo '$(LTCOMPILE) -c $<'; \
|
||||
$(LTCOMPILE) -Wp,-MD,.deps/$(*F).p -c $<
|
||||
@-sed -e 's/^\([^:]*\)\.o:/\1.lo \1.o:/' \
|
||||
< .deps/$(*F).p > .deps/$(*F).P
|
||||
@-rm -f .deps/$(*F).p
|
||||
info:
|
||||
dvi:
|
||||
check: all
|
||||
installcheck:
|
||||
install-exec:
|
||||
@$(NORMAL_INSTALL)
|
||||
$(LTCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
|
||||
@-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \
|
||||
< .deps/$(*F).pp > .deps/$(*F).P; \
|
||||
tr ' ' '\012' < .deps/$(*F).pp \
|
||||
| sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
|
||||
>> .deps/$(*F).P; \
|
||||
rm -f .deps/$(*F).pp
|
||||
info-am:
|
||||
info: info-am
|
||||
dvi-am:
|
||||
dvi: dvi-am
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
installcheck-am:
|
||||
installcheck: installcheck-am
|
||||
install-exec-am:
|
||||
install-exec: install-exec-am
|
||||
|
||||
install-data:
|
||||
@$(NORMAL_INSTALL)
|
||||
|
||||
install: install-exec install-data all
|
||||
@:
|
||||
|
||||
uninstall:
|
||||
install-data-am:
|
||||
install-data: install-data-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
install: install-am
|
||||
uninstall-am:
|
||||
uninstall: uninstall-am
|
||||
all-am: Makefile $(LIBRARIES) $(HEADERS)
|
||||
all-redirect: all-am
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install
|
||||
$(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
|
||||
installdirs:
|
||||
|
||||
|
||||
@@ -487,32 +501,42 @@ distclean-generic:
|
||||
|
||||
maintainer-clean-generic:
|
||||
-test -z "getdatehgetdatec$(BUILT_SOURCES)" || rm -f getdateh getdatec $(BUILT_SOURCES)
|
||||
mostlyclean: mostlyclean-noinstLIBRARIES mostlyclean-compile \
|
||||
mostlyclean-am: mostlyclean-noinstLIBRARIES mostlyclean-compile \
|
||||
mostlyclean-kr mostlyclean-tags mostlyclean-depend \
|
||||
mostlyclean-generic
|
||||
|
||||
clean: clean-noinstLIBRARIES clean-compile clean-kr clean-tags \
|
||||
clean-depend clean-generic mostlyclean
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
distclean: distclean-noinstLIBRARIES distclean-compile distclean-kr \
|
||||
distclean-tags distclean-depend distclean-generic clean
|
||||
-rm -f config.status
|
||||
clean-am: clean-noinstLIBRARIES clean-compile clean-kr clean-tags \
|
||||
clean-depend clean-generic mostlyclean-am
|
||||
|
||||
maintainer-clean: maintainer-clean-noinstLIBRARIES \
|
||||
clean: clean-am
|
||||
|
||||
distclean-am: distclean-noinstLIBRARIES distclean-compile distclean-kr \
|
||||
distclean-tags distclean-depend distclean-generic \
|
||||
clean-am
|
||||
|
||||
distclean: distclean-am
|
||||
|
||||
maintainer-clean-am: maintainer-clean-noinstLIBRARIES \
|
||||
maintainer-clean-compile maintainer-clean-kr \
|
||||
maintainer-clean-tags maintainer-clean-depend \
|
||||
maintainer-clean-generic distclean
|
||||
maintainer-clean-generic distclean-am
|
||||
@echo "This command is intended for maintainers to use;"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
|
||||
.PHONY: mostlyclean-noinstLIBRARIES distclean-noinstLIBRARIES \
|
||||
clean-noinstLIBRARIES maintainer-clean-noinstLIBRARIES \
|
||||
mostlyclean-compile distclean-compile clean-compile \
|
||||
maintainer-clean-compile mostlyclean-kr distclean-kr clean-kr \
|
||||
maintainer-clean-kr tags mostlyclean-tags distclean-tags clean-tags \
|
||||
maintainer-clean-tags distdir mostlyclean-depend distclean-depend \
|
||||
clean-depend maintainer-clean-depend info dvi installcheck install-exec \
|
||||
install-data install uninstall all installdirs mostlyclean-generic \
|
||||
clean-depend maintainer-clean-depend info-am info dvi-am dvi check \
|
||||
check-am installcheck-am installcheck install-exec-am install-exec \
|
||||
install-data-am install-data install-am install uninstall-am uninstall \
|
||||
all-redirect all-am all installdirs mostlyclean-generic \
|
||||
distclean-generic clean-generic maintainer-clean-generic clean \
|
||||
mostlyclean distclean maintainer-clean
|
||||
|
||||
|
||||
15
lib/addext.c
15
lib/addext.c
@@ -1,5 +1,5 @@
|
||||
/* addext.c -- add an extension to a file name
|
||||
Copyright (C) 1990, 1997 Free Software Foundation, Inc.
|
||||
Copyright (C) 1990, 1997, 1998, 1999 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -23,10 +23,10 @@
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_DOS_FILE_NAMES
|
||||
#define HAVE_DOS_FILE_NAMES 0
|
||||
# define HAVE_DOS_FILE_NAMES 0
|
||||
#endif
|
||||
#ifndef HAVE_LONG_FILE_NAMES
|
||||
#define HAVE_LONG_FILE_NAMES 0
|
||||
# define HAVE_LONG_FILE_NAMES 0
|
||||
#endif
|
||||
|
||||
#include <backupfile.h>
|
||||
@@ -35,7 +35,7 @@
|
||||
# include <limits.h>
|
||||
#endif
|
||||
#ifndef _POSIX_NAME_MAX
|
||||
#define _POSIX_NAME_MAX 14
|
||||
# define _POSIX_NAME_MAX 14
|
||||
#endif
|
||||
|
||||
#include <sys/types.h>
|
||||
@@ -49,14 +49,13 @@
|
||||
# include <unistd.h>
|
||||
#endif
|
||||
|
||||
char *base_name PARAMS ((char const *));
|
||||
|
||||
/* Append to FILENAME the extension EXT, unless the result would be too long,
|
||||
in which case just append the character E. */
|
||||
|
||||
void
|
||||
addext (filename, ext, e)
|
||||
char *filename;
|
||||
char const *ext;
|
||||
int e;
|
||||
addext (char *filename, char const *ext, int e)
|
||||
{
|
||||
char *s = base_name (filename);
|
||||
size_t slen = strlen (s), extlen = strlen (ext);
|
||||
|
||||
297
lib/argmatch.c
297
lib/argmatch.c
@@ -1,5 +1,5 @@
|
||||
/* argmatch.c -- find a match for a string in an array
|
||||
Copyright (C) 1990, 1997 Free Software Foundation, Inc.
|
||||
Copyright (C) 1990, 1998, 1999 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -12,36 +12,86 @@
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; see the file COPYING.
|
||||
If not, write to the Free Software Foundation,
|
||||
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
along with this program; if not, write to the Free Software Foundation,
|
||||
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
|
||||
/* Written by David MacKenzie <djm@gnu.ai.mit.edu> */
|
||||
/* Written by David MacKenzie <djm@ai.mit.edu>
|
||||
Modified by Akim Demaille <demaille@inf.enst.fr> */
|
||||
|
||||
#if HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#include <argmatch.h>
|
||||
|
||||
#include <sys/types.h>
|
||||
#include "argmatch.h"
|
||||
|
||||
#include <stdio.h>
|
||||
#if HAVE_STRING_H
|
||||
#ifdef STDC_HEADERS
|
||||
# include <string.h>
|
||||
#else
|
||||
# include <strings.h>
|
||||
#endif
|
||||
|
||||
/* If ARG is an unambiguous match for an element of the
|
||||
null-terminated array OPTLIST, return the index in OPTLIST
|
||||
of the matched element, else -1 if it does not match any element
|
||||
or -2 if it is ambiguous (is a prefix of more than one element). */
|
||||
#if HAVE_LOCALE_H
|
||||
# include <locale.h>
|
||||
#endif
|
||||
|
||||
int
|
||||
argmatch (const char *arg, const char *const *optlist)
|
||||
#if ENABLE_NLS
|
||||
# include <libintl.h>
|
||||
# define _(Text) gettext (Text)
|
||||
#else
|
||||
# define _(Text) Text
|
||||
#endif
|
||||
|
||||
#include "error.h"
|
||||
#include "quotearg.h"
|
||||
|
||||
/* When reporting an invalid argument, show nonprinting characters
|
||||
by using the quoting style ARGMATCH_QUOTING_STYLE. Do not use
|
||||
literal_quoting_style. */
|
||||
#ifndef ARGMATCH_QUOTING_STYLE
|
||||
# define ARGMATCH_QUOTING_STYLE escape_quoting_style
|
||||
#endif
|
||||
|
||||
/* The following test is to work around the gross typo in
|
||||
systems like Sony NEWS-OS Release 4.0C, whereby EXIT_FAILURE
|
||||
is defined to 0, not 1. */
|
||||
#if !EXIT_FAILURE
|
||||
# undef EXIT_FAILURE
|
||||
# define EXIT_FAILURE 1
|
||||
#endif
|
||||
|
||||
/* Non failing version of argmatch call this function after failing. */
|
||||
#ifndef ARGMATCH_DIE
|
||||
# define ARGMATCH_DIE exit (EXIT_FAILURE)
|
||||
#endif
|
||||
|
||||
#ifdef ARGMATCH_DIE_DECL
|
||||
ARGMATCH_DIE_DECL;
|
||||
#endif
|
||||
|
||||
static void
|
||||
__argmatch_die (void)
|
||||
{
|
||||
int i; /* Temporary index in OPTLIST. */
|
||||
ARGMATCH_DIE;
|
||||
}
|
||||
|
||||
/* Used by XARGMATCH and XARGCASEMATCH. See description in argmatch.h.
|
||||
Default to __argmatch_die, but allow caller to change this at run-time. */
|
||||
argmatch_exit_fn argmatch_die = __argmatch_die;
|
||||
|
||||
|
||||
/* If ARG is an unambiguous match for an element of the
|
||||
null-terminated array ARGLIST, return the index in ARGLIST
|
||||
of the matched element, else -1 if it does not match any element
|
||||
or -2 if it is ambiguous (is a prefix of more than one element).
|
||||
If SENSITIVE, comparison is case sensitive.
|
||||
|
||||
If VALLIST is none null, use it to resolve ambiguities limited to
|
||||
synonyms, i.e., for
|
||||
"yes", "yop" -> 0
|
||||
"no", "nope" -> 1
|
||||
"y" is a valid argument, for `0', and "n" for `1'. */
|
||||
|
||||
static int
|
||||
__argmatch_internal (const char *arg, const char *const *arglist,
|
||||
const char *vallist, size_t valsize,
|
||||
int case_sensitive)
|
||||
{
|
||||
int i; /* Temporary index in ARGLIST. */
|
||||
size_t arglen; /* Length of ARG. */
|
||||
int matchind = -1; /* Index of first nonexact match. */
|
||||
int ambiguous = 0; /* If nonzero, multiple nonexact match(es). */
|
||||
@@ -49,19 +99,30 @@ argmatch (const char *arg, const char *const *optlist)
|
||||
arglen = strlen (arg);
|
||||
|
||||
/* Test all elements for either exact match or abbreviated matches. */
|
||||
for (i = 0; optlist[i]; i++)
|
||||
for (i = 0; arglist[i]; i++)
|
||||
{
|
||||
if (!strncmp (optlist[i], arg, arglen))
|
||||
if (case_sensitive
|
||||
? !strncmp (arglist[i], arg, arglen)
|
||||
: !strncasecmp (arglist[i], arg, arglen))
|
||||
{
|
||||
if (strlen (optlist[i]) == arglen)
|
||||
if (strlen (arglist[i]) == arglen)
|
||||
/* Exact match found. */
|
||||
return i;
|
||||
else if (matchind == -1)
|
||||
/* First nonexact match found. */
|
||||
matchind = i;
|
||||
else
|
||||
/* Second nonexact match found. */
|
||||
ambiguous = 1;
|
||||
{
|
||||
/* Second nonexact match found. */
|
||||
if (vallist == NULL
|
||||
|| memcmp (vallist + valsize * matchind,
|
||||
vallist + valsize * i, valsize))
|
||||
{
|
||||
/* There is a real ambiguity, or we could not
|
||||
disambiguate. */
|
||||
ambiguous = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (ambiguous)
|
||||
@@ -70,16 +131,186 @@ argmatch (const char *arg, const char *const *optlist)
|
||||
return matchind;
|
||||
}
|
||||
|
||||
/* argmatch - case sensitive version */
|
||||
int
|
||||
argmatch (const char *arg, const char *const *arglist,
|
||||
const char *vallist, size_t valsize)
|
||||
{
|
||||
return __argmatch_internal (arg, arglist, vallist, valsize, 1);
|
||||
}
|
||||
|
||||
/* argcasematch - case insensitive version */
|
||||
int
|
||||
argcasematch (const char *arg, const char *const *arglist,
|
||||
const char *vallist, size_t valsize)
|
||||
{
|
||||
return __argmatch_internal (arg, arglist, vallist, valsize, 0);
|
||||
}
|
||||
|
||||
/* Error reporting for argmatch.
|
||||
KIND is a description of the type of entity that was being matched.
|
||||
CONTEXT is a description of the type of entity that was being matched.
|
||||
VALUE is the invalid value that was given.
|
||||
PROBLEM is the return value from argmatch. */
|
||||
|
||||
void
|
||||
invalid_arg (const char *kind, const char *value, int problem)
|
||||
argmatch_invalid (const char *context, const char *value, int problem)
|
||||
{
|
||||
const char *fmt = (problem == -1
|
||||
? "%s: invalid %s `%s'\n"
|
||||
: "%s: ambiguous %s `%s'\n");
|
||||
fprintf (stderr, fmt, program_name, kind, value);
|
||||
enum quoting_style saved_quoting_style;
|
||||
char const *format;
|
||||
|
||||
/* Make sure to have a good quoting style to report errors.
|
||||
literal is insane here. */
|
||||
saved_quoting_style = get_quoting_style (NULL);
|
||||
set_quoting_style (NULL, ARGMATCH_QUOTING_STYLE);
|
||||
|
||||
format = (problem == -1
|
||||
? _("invalid argument `%s' for `%s'")
|
||||
: _("ambiguous argument `%s' for `%s'"));
|
||||
|
||||
error (0, 0, format, quotearg (value), context);
|
||||
|
||||
set_quoting_style (NULL, saved_quoting_style);
|
||||
}
|
||||
|
||||
/* List the valid arguments for argmatch.
|
||||
ARGLIST is the same as in argmatch.
|
||||
VALLIST is a pointer to an array of values.
|
||||
VALSIZE is the size of the elements of VALLIST */
|
||||
void
|
||||
argmatch_valid (const char *const *arglist,
|
||||
const char *vallist, size_t valsize)
|
||||
{
|
||||
int i;
|
||||
const char *last_val = NULL;
|
||||
|
||||
/* We try to put synonyms on the same line. The assumption is that
|
||||
synonyms follow each other */
|
||||
fprintf (stderr, _("Valid arguments are:"));
|
||||
for (i = 0; arglist[i]; i++)
|
||||
if ((i == 0)
|
||||
|| memcmp (last_val, vallist + valsize * i, valsize))
|
||||
{
|
||||
fprintf (stderr, "\n - `%s'", arglist[i]);
|
||||
last_val = vallist + valsize * i;
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf (stderr, ", `%s'", arglist[i]);
|
||||
}
|
||||
putc ('\n', stderr);
|
||||
}
|
||||
|
||||
/* Never failing versions of the previous functions.
|
||||
|
||||
CONTEXT is the context for which argmatch is called (e.g.,
|
||||
"--version-control", or "$VERSION_CONTROL" etc.). Upon failure,
|
||||
calls the (supposed never to return) function EXIT_FN. */
|
||||
|
||||
int
|
||||
__xargmatch_internal (const char *context,
|
||||
const char *arg, const char *const *arglist,
|
||||
const char *vallist, size_t valsize,
|
||||
int case_sensitive,
|
||||
argmatch_exit_fn exit_fn)
|
||||
{
|
||||
int res = __argmatch_internal (arg, arglist,
|
||||
vallist, valsize,
|
||||
case_sensitive);
|
||||
if (res >= 0)
|
||||
/* Success. */
|
||||
return res;
|
||||
|
||||
/* We failed. Explain why. */
|
||||
argmatch_invalid (context, arg, res);
|
||||
argmatch_valid (arglist, vallist, valsize);
|
||||
(*exit_fn) ();
|
||||
|
||||
return -1; /* To please the compilers. */
|
||||
}
|
||||
|
||||
/* Look for VALUE in VALLIST, an array of objects of size VALSIZE and
|
||||
return the first corresponding argument in ARGLIST */
|
||||
const char *
|
||||
argmatch_to_argument (const char *value,
|
||||
const char *const *arglist,
|
||||
const char *vallist, size_t valsize)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; arglist[i]; i++)
|
||||
if (!memcmp (value, vallist + valsize * i, valsize))
|
||||
return arglist[i];
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#ifdef TEST
|
||||
/*
|
||||
* Based on "getversion.c" by David MacKenzie <djm@gnu.ai.mit.edu>
|
||||
*/
|
||||
char *program_name;
|
||||
extern const char *getenv ();
|
||||
|
||||
/* When to make backup files. */
|
||||
enum backup_type
|
||||
{
|
||||
/* Never make backups. */
|
||||
none,
|
||||
|
||||
/* Make simple backups of every file. */
|
||||
simple,
|
||||
|
||||
/* Make numbered backups of files that already have numbered backups,
|
||||
and simple backups of the others. */
|
||||
numbered_existing,
|
||||
|
||||
/* Make numbered backups of every file. */
|
||||
numbered
|
||||
};
|
||||
|
||||
/* Two tables describing arguments (keys) and their corresponding
|
||||
values */
|
||||
static const char *const backup_args[] =
|
||||
{
|
||||
"no", "none", "off",
|
||||
"simple", "never",
|
||||
"existing", "nil",
|
||||
"numbered", "t",
|
||||
0
|
||||
};
|
||||
|
||||
static const enum backup_type backup_vals[] =
|
||||
{
|
||||
none, none, none,
|
||||
simple, simple,
|
||||
numbered_existing, numbered_existing,
|
||||
numbered, numbered
|
||||
};
|
||||
|
||||
int
|
||||
main (int argc, const char *const *argv)
|
||||
{
|
||||
const char *cp;
|
||||
enum backup_type backup_type = none;
|
||||
|
||||
program_name = (char *) argv[0];
|
||||
|
||||
if (argc > 2)
|
||||
{
|
||||
fprintf (stderr, "Usage: %s [VERSION_CONTROL]\n", program_name);
|
||||
exit (1);
|
||||
}
|
||||
|
||||
if ((cp = getenv ("VERSION_CONTROL")))
|
||||
backup_type = XARGCASEMATCH ("$VERSION_CONTROL", cp,
|
||||
backup_args, backup_vals);
|
||||
|
||||
if (argc == 2)
|
||||
backup_type = XARGCASEMATCH (program_name, argv[1],
|
||||
backup_args, backup_vals);
|
||||
|
||||
printf ("The version control is `%s'\n",
|
||||
ARGMATCH_TO_ARGUMENT (backup_type, backup_args, backup_vals));
|
||||
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
135
lib/argmatch.h
135
lib/argmatch.h
@@ -1,12 +1,129 @@
|
||||
/* argmatch.h -- declarations for matching arguments against option lists */
|
||||
/* argmatch.h -- definitions and prototypes for argmatch.c
|
||||
Copyright (C) 1990, 1998, 1999 Free Software Foundation, Inc.
|
||||
|
||||
#if defined __STDC__ || __GNUC__
|
||||
# define __ARGMATCH_P(args) args
|
||||
#else
|
||||
# define __ARGMATCH_P(args) ()
|
||||
#endif
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
int argmatch __ARGMATCH_P ((const char *, const char * const *));
|
||||
void invalid_arg __ARGMATCH_P ((const char *, const char *, int));
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
extern char *program_name;
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software Foundation,
|
||||
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
|
||||
/* Written by David MacKenzie <djm@ai.mit.edu>
|
||||
Modified by Akim Demaille <demaille@inf.enst.fr> */
|
||||
|
||||
#ifndef ARGMATCH_H_
|
||||
# define ARGMATCH_H_ 1
|
||||
|
||||
# if HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
# endif
|
||||
|
||||
# include <sys/types.h>
|
||||
|
||||
# ifndef PARAMS
|
||||
# if PROTOTYPES || (defined (__STDC__) && __STDC__)
|
||||
# define PARAMS(args) args
|
||||
# else
|
||||
# define PARAMS(args) ()
|
||||
# endif /* GCC. */
|
||||
# endif /* Not PARAMS. */
|
||||
|
||||
/* Assert there are as many real arguments as there are values
|
||||
(argument list ends with a NULL guard). There is no execution
|
||||
cost, since it will be statically evalauted to `assert (0)' or
|
||||
`assert (1)'. Unfortunately there is no -Wassert-0. */
|
||||
|
||||
# undef ARRAY_CARDINALITY
|
||||
# define ARRAY_CARDINALITY(Array) (sizeof ((Array)) / sizeof (*(Array)))
|
||||
|
||||
# define ARGMATCH_ASSERT(Arglist, Vallist) \
|
||||
assert (ARRAY_CARDINALITY ((Arglist)) == ARRAY_CARDINALITY ((Vallist)) + 1)
|
||||
|
||||
/* Return the index of the element of ARGLIST (NULL terminated) that
|
||||
matches with ARG. If VALLIST is not NULL, then use it to resolve
|
||||
false ambiguities (i.e., different matches of ARG but corresponding
|
||||
to the same values in VALLIST). */
|
||||
|
||||
int argmatch
|
||||
PARAMS ((const char *arg, const char *const *arglist,
|
||||
const char *vallist, size_t valsize));
|
||||
int argcasematch
|
||||
PARAMS ((const char *arg, const char *const *arglist,
|
||||
const char *vallist, size_t valsize));
|
||||
|
||||
# define ARGMATCH(Arg, Arglist, Vallist) \
|
||||
argmatch ((Arg), (Arglist), (const char *) (Vallist), sizeof (*(Vallist)))
|
||||
|
||||
# define ARGCASEMATCH(Arg, Arglist, Vallist) \
|
||||
argcasematch ((Arg), (Arglist), (const char *) (Vallist), sizeof (*(Vallist)))
|
||||
|
||||
/* xargmatch calls this function when it fails. This function should not
|
||||
return. By default, this is a function that calls ARGMATCH_DIE which
|
||||
in turn defaults to `exit (EXIT_FAILURE)'. */
|
||||
typedef void (*argmatch_exit_fn) PARAMS ((void));
|
||||
extern argmatch_exit_fn argmatch_die;
|
||||
|
||||
/* Report on stderr why argmatch failed. Report correct values. */
|
||||
|
||||
void argmatch_invalid
|
||||
PARAMS ((const char *context, const char *value, int problem));
|
||||
|
||||
/* Left for compatibility with the old name invalid_arg */
|
||||
|
||||
# define invalid_arg(Context, Value, Problem) \
|
||||
argmatch_invalid ((Context), (Value), (Problem))
|
||||
|
||||
|
||||
|
||||
/* Report on stderr the list of possible arguments. */
|
||||
|
||||
void argmatch_valid
|
||||
PARAMS ((const char *const *arglist,
|
||||
const char *vallist, size_t valsize));
|
||||
|
||||
# define ARGMATCH_VALID(Arglist, Vallist) \
|
||||
argmatch_valid (Arglist, (const char *) Vallist, sizeof (*(Vallist)))
|
||||
|
||||
|
||||
|
||||
/* Same as argmatch, but upon failure, reports a explanation on the
|
||||
failure, and exits using the function EXIT_FN. */
|
||||
|
||||
int __xargmatch_internal
|
||||
PARAMS ((const char *context,
|
||||
const char *arg, const char *const *arglist,
|
||||
const char *vallist, size_t valsize,
|
||||
int case_sensitive, argmatch_exit_fn exit_fn));
|
||||
|
||||
/* Programmer friendly interface to __xargmatch_internal. */
|
||||
|
||||
# define XARGMATCH(Context, Arg, Arglist, Vallist) \
|
||||
(Vallist [__xargmatch_internal ((Context), (Arg), (Arglist), \
|
||||
(const char *) (Vallist), \
|
||||
sizeof (*(Vallist)), \
|
||||
1, argmatch_die)])
|
||||
|
||||
# define XARGCASEMATCH(Context, Arg, Arglist, Vallist) \
|
||||
(Vallist [__xargmatch_internal ((Context), (Arg), (Arglist), \
|
||||
(const char *) (Vallist), \
|
||||
sizeof (*(Vallist)), \
|
||||
0, argmatch_die)])
|
||||
|
||||
/* Convert a value into a corresponding argument. */
|
||||
|
||||
const char *argmatch_to_argument
|
||||
PARAMS ((char const *value, const char *const *arglist,
|
||||
const char *vallist, size_t valsize));
|
||||
|
||||
# define ARGMATCH_TO_ARGUMENT(Value, Arglist, Vallist) \
|
||||
argmatch_to_argument ((char const *) &(Value), (Arglist), \
|
||||
(const char *) (Vallist), sizeof (*(Vallist)))
|
||||
|
||||
#endif /* ARGMATCH_H_ */
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* backupfile.c -- make Emacs style backup file names
|
||||
Copyright (C) 1990-1997, 1998 Free Software Foundation, Inc.
|
||||
Copyright (C) 1990-1997, 1998, 1999 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -64,6 +64,12 @@
|
||||
char *malloc ();
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_DECL_GETENV
|
||||
char *getenv ();
|
||||
#endif
|
||||
|
||||
char *base_name PARAMS ((char const *));
|
||||
|
||||
#if HAVE_DIRENT_H || HAVE_NDIR_H || HAVE_SYS_DIR_H || HAVE_SYS_NDIR_H
|
||||
# define HAVE_DIR 1
|
||||
#else
|
||||
@@ -214,29 +220,49 @@ version_number (const char *base, const char *backup, size_t base_length)
|
||||
|
||||
static const char * const backup_args[] =
|
||||
{
|
||||
"never", "simple", "nil", "existing", "t", "numbered", 0
|
||||
/* In a series of synonyms, present the most meaning full first, so
|
||||
that argmatch_valid be more readable. */
|
||||
"none", "off",
|
||||
"simple", "never",
|
||||
"existing", "nil",
|
||||
"numbered", "t",
|
||||
0
|
||||
};
|
||||
|
||||
static const enum backup_type backup_types[] =
|
||||
{
|
||||
simple, simple, numbered_existing, numbered_existing, numbered, numbered
|
||||
none, none,
|
||||
simple, simple,
|
||||
numbered_existing, numbered_existing,
|
||||
numbered, numbered
|
||||
};
|
||||
|
||||
/* Return the type of backup indicated by VERSION.
|
||||
Unique abbreviations are accepted. */
|
||||
/* Return the type of backup specified by VERSION.
|
||||
If VERSION is NULL or the empty string, return numbered_existing.
|
||||
If VERSION is invalid or ambiguous, fail with a diagnostic appropriate
|
||||
for the specified CONTEXT. Unambiguous abbreviations are accepted. */
|
||||
|
||||
enum backup_type
|
||||
get_version (const char *version)
|
||||
get_version (const char *context, const char *version)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (version == 0 || *version == 0)
|
||||
return numbered_existing;
|
||||
i = argmatch (version, backup_args);
|
||||
if (i < 0)
|
||||
{
|
||||
invalid_arg ("version control type", version, i);
|
||||
exit (2);
|
||||
}
|
||||
return backup_types[i];
|
||||
else
|
||||
return XARGMATCH (context, version, backup_args, backup_types);
|
||||
}
|
||||
|
||||
|
||||
/* Return the type of backup specified by VERSION.
|
||||
If VERSION is NULL, use the value of the envvar VERSION_CONTROL.
|
||||
If the specified string is invalid or ambiguous, fail with a diagnostic
|
||||
appropriate for the specified CONTEXT.
|
||||
Unambiguous abbreviations are accepted. */
|
||||
|
||||
enum backup_type
|
||||
xget_version (const char *context, const char *version)
|
||||
{
|
||||
if (version && *version)
|
||||
return get_version (context, version);
|
||||
else
|
||||
return get_version ("$VERSION_CONTROL", getenv ("VERSION_CONTROL"));
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* backupfile.h -- declarations for making Emacs style backup file names
|
||||
Copyright (C) 1990, 1991, 1992, 1997, 1998 Free Software Foundation, Inc.
|
||||
Copyright (C) 1990-1992, 1997-1999 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -52,9 +52,9 @@ extern char const *simple_backup_suffix;
|
||||
# endif
|
||||
# endif
|
||||
|
||||
char *base_name PARAMS ((char const *));
|
||||
char *find_backup_file_name PARAMS ((char const *, enum backup_type));
|
||||
enum backup_type get_version PARAMS ((char const *));
|
||||
enum backup_type get_version PARAMS ((char const *context, char const *arg));
|
||||
enum backup_type xget_version PARAMS ((char const *context, char const *arg));
|
||||
void addext PARAMS ((char *, char const *, int));
|
||||
|
||||
#endif /* ! BACKUPFILE_H_ */
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* Host name canonicalization
|
||||
|
||||
Copyright (C) 1995 Free Software Foundation, Inc.
|
||||
Copyright (C) 1995, 1999 Free Software Foundation, Inc.
|
||||
|
||||
Written by Miles Bader <miles@gnu.ai.mit.edu>
|
||||
|
||||
@@ -46,8 +46,7 @@
|
||||
/* Returns the canonical hostname associated with HOST (allocated in a static
|
||||
buffer), or 0 if it can't be determined. */
|
||||
char *
|
||||
canon_host (host)
|
||||
char *host;
|
||||
canon_host (const char *host)
|
||||
{
|
||||
#ifdef HAVE_GETHOSTBYNAME
|
||||
struct hostent *he = gethostbyname (host);
|
||||
@@ -79,3 +78,17 @@ canon_host (host)
|
||||
#endif /* HAVE_GETHOSTBYNAME */
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef TEST_CANON_HOST
|
||||
int
|
||||
main (int argc, char **argv)
|
||||
{
|
||||
int i;
|
||||
for (i = 1; i < argc; i++)
|
||||
{
|
||||
char *s = canon_host (argv[i]);
|
||||
printf ("%s: %s\n", argv[i], (s ? s : "<undef>"));
|
||||
}
|
||||
exit (0);
|
||||
}
|
||||
#endif /* TEST_CANON_HOST */
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* closeout.c - close standard output
|
||||
Copyright (C) 1998 Free Software Foundation, Inc.
|
||||
Copyright (C) 1998, 1999 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -42,7 +42,23 @@ extern int errno;
|
||||
#include "closeout.h"
|
||||
#include "error.h"
|
||||
|
||||
/* Close standard output, exiting with status STATUS on failure. */
|
||||
/* Close standard output, exiting with status STATUS on failure.
|
||||
If a program writes *anything* to stdout, that program should close
|
||||
stdout and make sure that the close succeeds. Otherwise, suppose that
|
||||
you go to the extreme of checking the return status of every function
|
||||
that does an explicit write to stdout. The last printf can succeed in
|
||||
writing to the internal stream buffer, and yet the fclose(stdout) could
|
||||
still fail (due e.g., to a disk full error) when it tries to write
|
||||
out that buffered data. Thus, you would be left with an incomplete
|
||||
output file and the offending program would exit successfully.
|
||||
|
||||
Besides, it's wasteful to check the return value from every call
|
||||
that writes to stdout -- just let the internal stream state record
|
||||
the failure. That's what the ferror test is checking below.
|
||||
|
||||
It's important to detect such failures and exit nonzero because many
|
||||
tools (most notably `make' and other build-management systems) depend
|
||||
on being able to detect failure in other tools via their exit status. */
|
||||
void
|
||||
close_stdout_status (int status)
|
||||
{
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* filemode.c -- make a string describing file modes
|
||||
Copyright (C) 1985, 1990, 1993, 1998 Free Software Foundation, Inc.
|
||||
Copyright (C) 1985, 1990, 1993, 1998, 1999 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -89,6 +89,9 @@
|
||||
#if !defined(S_ISNWK) && defined(S_IFNWK) /* HP/UX */
|
||||
# define S_ISNWK(m) (((m) & S_IFMT) == S_IFNWK)
|
||||
#endif
|
||||
#if !defined(S_ISDOOR) && defined(S_IFDOOR) /* Solaris 2.5 and up */
|
||||
# define S_ISDOOR(m) (((m) & S_IFMT) == S_IFDOOR)
|
||||
#endif
|
||||
|
||||
/* Look at read, write, and execute bits in BITS and set
|
||||
flags in CHARS accordingly. */
|
||||
@@ -142,6 +145,7 @@ setst (short unsigned int bits, char *chars)
|
||||
/* Return a character indicating the type of file described by
|
||||
file mode BITS:
|
||||
'd' for directories
|
||||
'D' for doors
|
||||
'b' for block special files
|
||||
'c' for character special files
|
||||
'm' for multiplexor files
|
||||
@@ -185,6 +189,10 @@ ftypelet (long int bits)
|
||||
if (S_ISNWK (bits))
|
||||
return 'n';
|
||||
#endif
|
||||
#ifdef S_ISDOOR
|
||||
if (S_ISDOOR (bits))
|
||||
return 'D';
|
||||
#endif
|
||||
|
||||
/* The following two tests are for Cray DMF (Data Migration
|
||||
Facility), which is a HSM file system. A migrated file has a
|
||||
|
||||
@@ -53,6 +53,14 @@
|
||||
# include <string.h>
|
||||
#endif
|
||||
|
||||
#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7)
|
||||
# define __attribute__(x)
|
||||
#endif
|
||||
|
||||
#ifndef ATTRIBUTE_UNUSED
|
||||
# define ATTRIBUTE_UNUSED __attribute__ ((__unused__))
|
||||
#endif
|
||||
|
||||
/* Some old versions of bison generate parsers that use bcopy.
|
||||
That loses on systems that don't provide the function, so we have
|
||||
to redefine it here. */
|
||||
@@ -471,7 +479,7 @@ static TABLE const MonthDayTable[] = {
|
||||
{ "thurs", tDAY, 4 },
|
||||
{ "friday", tDAY, 5 },
|
||||
{ "saturday", tDAY, 6 },
|
||||
{ NULL }
|
||||
{ NULL, 0, 0 }
|
||||
};
|
||||
|
||||
/* Time units table. */
|
||||
@@ -486,7 +494,7 @@ static TABLE const UnitsTable[] = {
|
||||
{ "min", tMINUTE_UNIT, 1 },
|
||||
{ "second", tSEC_UNIT, 1 },
|
||||
{ "sec", tSEC_UNIT, 1 },
|
||||
{ NULL }
|
||||
{ NULL, 0, 0 }
|
||||
};
|
||||
|
||||
/* Assorted relative-time words. */
|
||||
@@ -511,7 +519,7 @@ static TABLE const OtherTable[] = {
|
||||
{ "eleventh", tUNUMBER, 11 },
|
||||
{ "twelfth", tUNUMBER, 12 },
|
||||
{ "ago", tAGO, 1 },
|
||||
{ NULL }
|
||||
{ NULL, 0, 0 }
|
||||
};
|
||||
|
||||
/* The timezone table. */
|
||||
@@ -596,7 +604,7 @@ static TABLE const TimezoneTable[] = {
|
||||
{ "nzst", tZONE, -HOUR (12) }, /* New Zealand Standard */
|
||||
{ "nzdt", tDAYZONE, -HOUR (12) }, /* New Zealand Daylight */
|
||||
{ "idle", tZONE, -HOUR (12) }, /* International Date Line East */
|
||||
{ NULL }
|
||||
{ NULL, 0, 0 }
|
||||
};
|
||||
|
||||
/* Military timezone table. */
|
||||
@@ -626,7 +634,7 @@ static TABLE const MilitaryTable[] = {
|
||||
{ "x", tZONE, HOUR (-11) },
|
||||
{ "y", tZONE, HOUR (-12) },
|
||||
{ "z", tZONE, HOUR ( 0) },
|
||||
{ NULL }
|
||||
{ NULL, 0, 0 }
|
||||
};
|
||||
|
||||
|
||||
@@ -635,7 +643,7 @@ static TABLE const MilitaryTable[] = {
|
||||
/* ARGSUSED */
|
||||
static int
|
||||
yyerror (s)
|
||||
char *s;
|
||||
char *s ATTRIBUTE_UNUSED;
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -98,8 +98,14 @@
|
||||
extern int errno;
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_GETLOADAVG
|
||||
#if HAVE_LOCALE_H
|
||||
# include <locale.h>
|
||||
#endif
|
||||
#if !HAVE_SETLOCALE
|
||||
# define setlocale(Category, Locale) /* empty */
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_GETLOADAVG
|
||||
|
||||
/* The existing Emacs configuration files define a macro called
|
||||
LOAD_AVE_CVT, which accepts a value of type LOAD_AVE_TYPE, and
|
||||
@@ -638,8 +644,11 @@ getloadavg (loadavg, nelem)
|
||||
if (count <= 0)
|
||||
return -1;
|
||||
|
||||
/* The following sscanf must use the C locale. */
|
||||
setlocale (LC_NUMERIC, "C");
|
||||
count = sscanf (ldavgbuf, "%lf %lf %lf",
|
||||
&load_ave[0], &load_ave[1], &load_ave[2]);
|
||||
setlocale (LC_NUMERIC, "");
|
||||
if (count < 1)
|
||||
return -1;
|
||||
|
||||
|
||||
136
lib/getopt.c
136
lib/getopt.c
@@ -1,47 +1,42 @@
|
||||
/* Getopt for GNU.
|
||||
NOTE: getopt is now part of the C library, so if you don't know what
|
||||
"Keep this file name-space clean" means, talk to roland@gnu.ai.mit.edu
|
||||
"Keep this file name-space clean" means, talk to drepper@gnu.org
|
||||
before changing it!
|
||||
|
||||
Copyright (C) 1987, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97
|
||||
Copyright (C) 1987, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
the C library, however. The master source lives in /gd/gnu/lib.
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
NOTE: The canonical source of this file is maintained with the GNU C Library.
|
||||
Bugs can be reported to bug-glibc@prep.ai.mit.edu.
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Library General Public License for more details.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
||||
USA. */
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
/* This tells Alpha OSF/1 not to define a getopt prototype in <stdio.h>.
|
||||
Ditto for AIX 3.2 and <stdlib.h>. */
|
||||
#ifndef _NO_PROTO
|
||||
#define _NO_PROTO
|
||||
# define _NO_PROTO
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#if !defined (__STDC__) || !__STDC__
|
||||
#if !defined __STDC__ || !__STDC__
|
||||
/* This is a separate conditional since some stdc systems
|
||||
reject `defined (const)'. */
|
||||
#ifndef const
|
||||
#define const
|
||||
#endif
|
||||
# ifndef const
|
||||
# define const
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#include <stdio.h>
|
||||
@@ -55,11 +50,11 @@ USA. */
|
||||
it is simpler to just do this in the source for each such file. */
|
||||
|
||||
#define GETOPT_INTERFACE_VERSION 2
|
||||
#if !defined (_LIBC) && defined (__GLIBC__) && __GLIBC__ >= 2
|
||||
#include <gnu-versions.h>
|
||||
#if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION
|
||||
#define ELIDE_CODE
|
||||
#endif
|
||||
#if !defined _LIBC && defined __GLIBC__ && __GLIBC__ >= 2
|
||||
# include <gnu-versions.h>
|
||||
# if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION
|
||||
# define ELIDE_CODE
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifndef ELIDE_CODE
|
||||
@@ -70,32 +65,26 @@ USA. */
|
||||
#ifdef __GNU_LIBRARY__
|
||||
/* Don't include stdlib.h for non-GNU C libraries because some of them
|
||||
contain conflicting prototypes for getopt. */
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
# include <stdlib.h>
|
||||
# include <unistd.h>
|
||||
#endif /* GNU C library. */
|
||||
|
||||
#ifdef VMS
|
||||
#include <unixlib.h>
|
||||
#if HAVE_STRING_H - 0
|
||||
#include <string.h>
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined (WIN32) && !defined (__CYGWIN32__)
|
||||
/* It's not Unix, really. See? Capital letters. */
|
||||
#include <windows.h>
|
||||
#define getpid() GetCurrentProcessId()
|
||||
# include <unixlib.h>
|
||||
# if HAVE_STRING_H - 0
|
||||
# include <string.h>
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifndef _
|
||||
/* This is for other GNU distributions with internationalized messages.
|
||||
When compiling libc, the _ macro is predefined. */
|
||||
#ifdef HAVE_LIBINTL_H
|
||||
# include <libintl.h>
|
||||
# define _(msgid) gettext (msgid)
|
||||
#else
|
||||
# define _(msgid) (msgid)
|
||||
#endif
|
||||
# ifdef HAVE_LIBINTL_H
|
||||
# include <libintl.h>
|
||||
# define _(msgid) gettext (msgid)
|
||||
# else
|
||||
# define _(msgid) (msgid)
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* This version of `getopt' appears to the caller like standard Unix `getopt'
|
||||
@@ -205,14 +194,22 @@ static char *posixly_correct;
|
||||
because there are many ways it can cause trouble.
|
||||
On some systems, it contains special magic macros that don't work
|
||||
in GCC. */
|
||||
#include <string.h>
|
||||
#define my_index strchr
|
||||
# include <string.h>
|
||||
# define my_index strchr
|
||||
#else
|
||||
|
||||
# if HAVE_STRING_H
|
||||
# include <string.h>
|
||||
# else
|
||||
# include <strings.h>
|
||||
# endif
|
||||
|
||||
/* Avoid depending on library functions or files
|
||||
whose names are inconsistent. */
|
||||
|
||||
char *getenv ();
|
||||
#ifndef getenv
|
||||
extern char *getenv ();
|
||||
#endif
|
||||
|
||||
static char *
|
||||
my_index (str, chr)
|
||||
@@ -233,11 +230,11 @@ my_index (str, chr)
|
||||
#ifdef __GNUC__
|
||||
/* Note that Motorola Delta 68k R3V7 comes with GCC but not stddef.h.
|
||||
That was relevant to code that was here before. */
|
||||
#if !defined (__STDC__) || !__STDC__
|
||||
# if (!defined __STDC__ || !__STDC__) && !defined strlen
|
||||
/* gcc with -traditional declares the built-in strlen to return int,
|
||||
and has done so at least since version 2.4.5. -- rms. */
|
||||
extern int strlen (const char *);
|
||||
#endif /* not __STDC__ */
|
||||
# endif /* not __STDC__ */
|
||||
#endif /* __GNUC__ */
|
||||
|
||||
#endif /* not __GNU_LIBRARY__ */
|
||||
@@ -264,8 +261,6 @@ static int nonoption_flags_len;
|
||||
static int original_argc;
|
||||
static char *const *original_argv;
|
||||
|
||||
extern pid_t __libc_pid;
|
||||
|
||||
/* Make sure the environment variable bash 2.0 puts in the environment
|
||||
is valid for the getopt call we must make sure that the ARGV passed
|
||||
to getopt is that one passed to the process. */
|
||||
@@ -278,7 +273,9 @@ store_args_and_env (int argc, char *const *argv)
|
||||
original_argc = argc;
|
||||
original_argv = argv;
|
||||
}
|
||||
# ifdef text_set_element
|
||||
text_set_element (__libc_subinit, store_args_and_env);
|
||||
# endif /* text_set_element */
|
||||
|
||||
# define SWAP_FLAGS(ch1, ch2) \
|
||||
if (nonoption_flags_len > 0) \
|
||||
@@ -300,7 +297,7 @@ text_set_element (__libc_subinit, store_args_and_env);
|
||||
`first_nonopt' and `last_nonopt' are relocated so that they describe
|
||||
the new indices of the non-options in ARGV after they are moved. */
|
||||
|
||||
#if defined (__STDC__) && __STDC__
|
||||
#if defined __STDC__ && __STDC__
|
||||
static void exchange (char **);
|
||||
#endif
|
||||
|
||||
@@ -331,9 +328,9 @@ exchange (argv)
|
||||
nonoption_flags_len = nonoption_flags_max_len = 0;
|
||||
else
|
||||
{
|
||||
memcpy (new_str, __getopt_nonoption_flags, nonoption_flags_max_len);
|
||||
memset (&new_str[nonoption_flags_max_len], '\0',
|
||||
top + 1 - nonoption_flags_max_len);
|
||||
memset (__mempcpy (new_str, __getopt_nonoption_flags,
|
||||
nonoption_flags_max_len),
|
||||
'\0', top + 1 - nonoption_flags_max_len);
|
||||
nonoption_flags_max_len = top + 1;
|
||||
__getopt_nonoption_flags = new_str;
|
||||
}
|
||||
@@ -386,7 +383,7 @@ exchange (argv)
|
||||
|
||||
/* Initialize the internal data when the first call is made. */
|
||||
|
||||
#if defined (__STDC__) && __STDC__
|
||||
#if defined __STDC__ && __STDC__
|
||||
static const char *_getopt_initialize (int, char *const *, const char *);
|
||||
#endif
|
||||
static const char *
|
||||
@@ -442,11 +439,8 @@ _getopt_initialize (argc, argv, optstring)
|
||||
if (__getopt_nonoption_flags == NULL)
|
||||
nonoption_flags_max_len = -1;
|
||||
else
|
||||
{
|
||||
memcpy (__getopt_nonoption_flags, orig_str, len);
|
||||
memset (&__getopt_nonoption_flags[len], '\0',
|
||||
nonoption_flags_max_len - len);
|
||||
}
|
||||
memset (__mempcpy (__getopt_nonoption_flags, orig_str, len),
|
||||
'\0', nonoption_flags_max_len - len);
|
||||
}
|
||||
}
|
||||
nonoption_flags_len = nonoption_flags_max_len;
|
||||
@@ -538,11 +532,11 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
|
||||
from the shell indicating it is not an option. The later information
|
||||
is only used when the used in the GNU libc. */
|
||||
#ifdef _LIBC
|
||||
#define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0' \
|
||||
|| (optind < nonoption_flags_len \
|
||||
&& __getopt_nonoption_flags[optind] == '1'))
|
||||
# define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0' \
|
||||
|| (optind < nonoption_flags_len \
|
||||
&& __getopt_nonoption_flags[optind] == '1'))
|
||||
#else
|
||||
#define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0')
|
||||
# define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0')
|
||||
#endif
|
||||
|
||||
if (nextchar == NULL || *nextchar == '\0')
|
||||
@@ -705,12 +699,12 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
|
||||
if (argv[optind - 1][1] == '-')
|
||||
/* --option */
|
||||
fprintf (stderr,
|
||||
_("%s: option `--%s' doesn't allow an argument\n"),
|
||||
_("%s: option `--%s' doesn't allow an argument\n"),
|
||||
argv[0], pfound->name);
|
||||
else
|
||||
/* +option or -option */
|
||||
fprintf (stderr,
|
||||
_("%s: option `%c%s' doesn't allow an argument\n"),
|
||||
_("%s: option `%c%s' doesn't allow an argument\n"),
|
||||
argv[0], argv[optind - 1][0], pfound->name);
|
||||
}
|
||||
|
||||
|
||||
114
lib/getopt.h
114
lib/getopt.h
@@ -1,28 +1,27 @@
|
||||
/* Declarations for getopt.
|
||||
Copyright (C) 1989,90,91,92,93,94,96,97 Free Software Foundation, Inc.
|
||||
Copyright (C) 1989,90,91,92,93,94,96,97,98 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
the C library, however. The master source lives in /gd/gnu/lib.
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
NOTE: The canonical source of this file is maintained with the GNU C Library.
|
||||
Bugs can be reported to bug-glibc@prep.ai.mit.edu.
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Library General Public License for more details.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
||||
USA. */
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#ifndef _GETOPT_H
|
||||
#define _GETOPT_H 1
|
||||
|
||||
#ifndef __need_getopt
|
||||
# define _GETOPT_H 1
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
@@ -59,6 +58,7 @@ extern int opterr;
|
||||
|
||||
extern int optopt;
|
||||
|
||||
#ifndef __need_getopt
|
||||
/* Describe the long-named options requested by the application.
|
||||
The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector
|
||||
of `struct option' terminated by an element containing a name which is
|
||||
@@ -82,11 +82,11 @@ extern int optopt;
|
||||
|
||||
struct option
|
||||
{
|
||||
#if defined (__STDC__) && __STDC__
|
||||
# if defined __STDC__ && __STDC__
|
||||
const char *name;
|
||||
#else
|
||||
# else
|
||||
char *name;
|
||||
#endif
|
||||
# endif
|
||||
/* has_arg can't be an enum because some compilers complain about
|
||||
type mismatches in all the code that assumes it is an int. */
|
||||
int has_arg;
|
||||
@@ -96,40 +96,74 @@ struct option
|
||||
|
||||
/* Names for the values of the `has_arg' field of `struct option'. */
|
||||
|
||||
#define no_argument 0
|
||||
#define required_argument 1
|
||||
#define optional_argument 2
|
||||
# define no_argument 0
|
||||
# define required_argument 1
|
||||
# define optional_argument 2
|
||||
#endif /* need getopt */
|
||||
|
||||
#if defined (__STDC__) && __STDC__
|
||||
#ifdef __GNU_LIBRARY__
|
||||
|
||||
/* Get definitions and prototypes for functions to process the
|
||||
arguments in ARGV (ARGC of them, minus the program name) for
|
||||
options given in OPTS.
|
||||
|
||||
Return the option character from OPTS just read. Return -1 when
|
||||
there are no more options. For unrecognized options, or options
|
||||
missing arguments, `optopt' is set to the option letter, and '?' is
|
||||
returned.
|
||||
|
||||
The OPTS string is a list of characters which are recognized option
|
||||
letters, optionally followed by colons, specifying that that letter
|
||||
takes an argument, to be placed in `optarg'.
|
||||
|
||||
If a letter in OPTS is followed by two colons, its argument is
|
||||
optional. This behavior is specific to the GNU `getopt'.
|
||||
|
||||
The argument `--' causes premature termination of argument
|
||||
scanning, explicitly telling `getopt' that there are no more
|
||||
options.
|
||||
|
||||
If OPTS begins with `--', then non-option arguments are treated as
|
||||
arguments to the option '\0'. This behavior is specific to the GNU
|
||||
`getopt'. */
|
||||
|
||||
#if defined __STDC__ && __STDC__
|
||||
# ifdef __GNU_LIBRARY__
|
||||
/* Many other libraries have conflicting prototypes for getopt, with
|
||||
differences in the consts, in stdlib.h. To avoid compilation
|
||||
errors, only prototype getopt for the GNU C library. */
|
||||
extern int getopt (int argc, char *const *argv, const char *shortopts);
|
||||
#else /* not __GNU_LIBRARY__ */
|
||||
extern int getopt (int __argc, char *const *__argv, const char *__shortopts);
|
||||
# else /* not __GNU_LIBRARY__ */
|
||||
extern int getopt ();
|
||||
#endif /* __GNU_LIBRARY__ */
|
||||
extern int getopt_long (int argc, char *const *argv, const char *shortopts,
|
||||
const struct option *longopts, int *longind);
|
||||
extern int getopt_long_only (int argc, char *const *argv,
|
||||
const char *shortopts,
|
||||
const struct option *longopts, int *longind);
|
||||
# endif /* __GNU_LIBRARY__ */
|
||||
|
||||
# ifndef __need_getopt
|
||||
extern int getopt_long (int __argc, char *const *__argv, const char *__shortopts,
|
||||
const struct option *__longopts, int *__longind);
|
||||
extern int getopt_long_only (int __argc, char *const *__argv,
|
||||
const char *__shortopts,
|
||||
const struct option *__longopts, int *__longind);
|
||||
|
||||
/* Internal only. Users should not call this directly. */
|
||||
extern int _getopt_internal (int argc, char *const *argv,
|
||||
const char *shortopts,
|
||||
const struct option *longopts, int *longind,
|
||||
int long_only);
|
||||
extern int _getopt_internal (int __argc, char *const *__argv,
|
||||
const char *__shortopts,
|
||||
const struct option *__longopts, int *__longind,
|
||||
int __long_only);
|
||||
# endif
|
||||
#else /* not __STDC__ */
|
||||
extern int getopt ();
|
||||
# ifndef __need_getopt
|
||||
extern int getopt_long ();
|
||||
extern int getopt_long_only ();
|
||||
|
||||
extern int _getopt_internal ();
|
||||
# endif
|
||||
#endif /* __STDC__ */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _GETOPT_H */
|
||||
/* Make sure we later can get all the definitions and declarations. */
|
||||
#undef __need_getopt
|
||||
|
||||
#endif /* getopt.h */
|
||||
|
||||
@@ -1,25 +1,22 @@
|
||||
/* getopt_long and getopt_long_only entry points for GNU getopt.
|
||||
Copyright (C) 1987,88,89,90,91,92,93,94,96,97 Free Software Foundation, Inc.
|
||||
Copyright (C) 1987,88,89,90,91,92,93,94,96,97,98
|
||||
Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
the C library, however. The master source lives in /gd/gnu/lib.
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
NOTE: The canonical source of this file is maintained with the GNU C Library.
|
||||
Bugs can be reported to bug-glibc@prep.ai.mit.edu.
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Library General Public License for more details.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
||||
USA. */
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
@@ -27,7 +24,7 @@ USA. */
|
||||
|
||||
#include "getopt.h"
|
||||
|
||||
#if !defined (__STDC__) || !__STDC__
|
||||
#if !defined __STDC__ || !__STDC__
|
||||
/* This is a separate conditional since some stdc systems
|
||||
reject `defined (const)'. */
|
||||
#ifndef const
|
||||
@@ -46,7 +43,7 @@ USA. */
|
||||
it is simpler to just do this in the source for each such file. */
|
||||
|
||||
#define GETOPT_INTERFACE_VERSION 2
|
||||
#if !defined (_LIBC) && defined (__GLIBC__) && __GLIBC__ >= 2
|
||||
#if !defined _LIBC && defined __GLIBC__ && __GLIBC__ >= 2
|
||||
#include <gnu-versions.h>
|
||||
#if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION
|
||||
#define ELIDE_CODE
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* human.c -- print human readable file size
|
||||
Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
|
||||
Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -258,7 +258,7 @@ humblock (char const *spec, int *block_size)
|
||||
|
||||
if (! spec && ! (spec = getenv ("BLOCK_SIZE")))
|
||||
*block_size = getenv ("POSIXLY_CORRECT") ? 512 : DEFAULT_BLOCK_SIZE;
|
||||
else if (0 <= (i = argmatch (spec, block_size_args)))
|
||||
else if (0 <= (i = ARGMATCH (spec, block_size_args, block_size_types)))
|
||||
*block_size = block_size_types[i];
|
||||
else
|
||||
{
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* Provide a stub lchown function for systems that lack it.
|
||||
Copyright (C) 1998 Free Software Foundation, Inc.
|
||||
Copyright (C) 1998, 1999 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -27,6 +27,10 @@ extern int errno;
|
||||
#endif
|
||||
#include "lchown.h"
|
||||
|
||||
/* Declare chown to avoid a warning. Don't include unistd.h,
|
||||
because it may have a conflicting prototype for lchown. */
|
||||
int chown ();
|
||||
|
||||
/* Work just like chown, except when FILE is a symbolic link.
|
||||
In that case, set errno to ENOSYS and return -1. */
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* Utility to accept --help and --version options as unobtrusively as possible.
|
||||
Copyright (C) 1993, 1994, 1998 Free Software Foundation, Inc.
|
||||
Copyright (C) 1993, 1994, 1998, 1999 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -37,13 +37,9 @@ static struct option const long_options[] =
|
||||
Be careful not to gobble up `--'. */
|
||||
|
||||
void
|
||||
parse_long_options (argc, argv, command_name, package, version, usage)
|
||||
int argc;
|
||||
char **argv;
|
||||
const char *command_name;
|
||||
const char *package;
|
||||
const char *version;
|
||||
void (*usage)();
|
||||
parse_long_options (int argc, char **argv, const char *command_name,
|
||||
const char *package, const char *version,
|
||||
void (*usage_func)())
|
||||
{
|
||||
int c;
|
||||
int saved_opterr;
|
||||
@@ -59,7 +55,7 @@ parse_long_options (argc, argv, command_name, package, version, usage)
|
||||
switch (c)
|
||||
{
|
||||
case 'h':
|
||||
(*usage) (0);
|
||||
(*usage_func) (0);
|
||||
|
||||
case 'v':
|
||||
printf ("%s (%s) %s\n", command_name, package, version);
|
||||
|
||||
114
lib/makepath.c
114
lib/makepath.c
@@ -1,5 +1,5 @@
|
||||
/* makepath.c -- Ensure that a directory path exists.
|
||||
Copyright (C) 1990, 1997, 1998 Free Software Foundation, Inc.
|
||||
Copyright (C) 1990, 1997, 1998, 1999 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -81,6 +81,17 @@ extern int errno;
|
||||
|
||||
#define WX_USR (S_IWUSR | S_IXUSR)
|
||||
|
||||
#if HAVE_LOCALE_H
|
||||
# include <locale.h>
|
||||
#endif
|
||||
|
||||
#if ENABLE_NLS
|
||||
# include <libintl.h>
|
||||
# define _(Text) gettext (Text)
|
||||
#else
|
||||
# define _(Text) Text
|
||||
#endif
|
||||
|
||||
#ifdef __MSDOS__
|
||||
typedef int uid_t;
|
||||
typedef int gid_t;
|
||||
@@ -99,9 +110,9 @@ void strip_trailing_slashes ();
|
||||
Restore working directory. */ \
|
||||
if (do_chdir) \
|
||||
{ \
|
||||
int fail = restore_cwd (&cwd, NULL, NULL); \
|
||||
int _fail = restore_cwd (&cwd, NULL, NULL); \
|
||||
free_cwd (&cwd); \
|
||||
if (fail) \
|
||||
if (_fail) \
|
||||
return 1; \
|
||||
} \
|
||||
} \
|
||||
@@ -115,6 +126,56 @@ void strip_trailing_slashes ();
|
||||
} \
|
||||
while (0)
|
||||
|
||||
/* Attempt to create directory DIR (aka DIRPATH) with the specified MODE.
|
||||
If CREATED_DIR_P is non-NULL, set *CREATED_DIR_P to non-zero if this
|
||||
function creates DIR and to zero otherwise. Give a diagnostic and
|
||||
return non-zero if DIR cannot be created or cannot be determined to
|
||||
exist already. Use DIRPATH in any diagnostic, not DIR.
|
||||
Note that if DIR already exists, this function will return zero
|
||||
(indicating success) and will set *CREATED_DIR_P to zero. */
|
||||
|
||||
static int
|
||||
make_dir (const char *dir, const char *dirpath, mode_t mode, int *created_dir_p)
|
||||
{
|
||||
int fail = 0;
|
||||
int created_dir;
|
||||
|
||||
created_dir = (mkdir (dir, mode) == 0);
|
||||
|
||||
if (!created_dir)
|
||||
{
|
||||
struct stat stats;
|
||||
|
||||
/* The mkdir and stat calls below may appear to be reversed.
|
||||
They are not. It is important to call mkdir first and then to
|
||||
call stat (to distinguish the three cases) only if mkdir fails.
|
||||
The alternative to this approach is to `stat' each directory,
|
||||
then to call mkdir if it doesn't exist. But if some other process
|
||||
were to create the directory between the stat & mkdir, the mkdir
|
||||
would fail with EEXIST. */
|
||||
|
||||
if (stat (dir, &stats))
|
||||
{
|
||||
error (0, errno, _("cannot create directory `%s'"), dirpath);
|
||||
fail = 1;
|
||||
}
|
||||
else if (!S_ISDIR (stats.st_mode))
|
||||
{
|
||||
error (0, 0, _("`%s' exists but is not a directory"), dirpath);
|
||||
fail = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* DIR (aka DIRPATH) already exists and is a directory. */
|
||||
}
|
||||
}
|
||||
|
||||
if (created_dir_p)
|
||||
*created_dir_p = created_dir;
|
||||
|
||||
return fail;
|
||||
}
|
||||
|
||||
/* Ensure that the directory ARGPATH exists.
|
||||
Remove any trailing slashes from ARGPATH before calling this function.
|
||||
|
||||
@@ -203,7 +264,8 @@ make_path (const char *argpath,
|
||||
|
||||
while (1)
|
||||
{
|
||||
int newly_created_dir = 1;
|
||||
int newly_created_dir;
|
||||
int fail;
|
||||
|
||||
/* slash points to the leftmost unprocessed component of dirpath. */
|
||||
basename_dir = slash;
|
||||
@@ -217,34 +279,12 @@ make_path (const char *argpath,
|
||||
if (!do_chdir)
|
||||
basename_dir = dirpath;
|
||||
|
||||
/* The mkdir and stat calls below appear to be reversed.
|
||||
They are not. It is important to call mkdir first and then to
|
||||
call stat (to distinguish the three cases) only if mkdir fails.
|
||||
The alternative to this approach is to `stat' each directory,
|
||||
then to call mkdir if it doesn't exist. But if some other process
|
||||
were to create the directory between the stat & mkdir, the mkdir
|
||||
would fail with EEXIST. */
|
||||
|
||||
*slash = '\0';
|
||||
if (mkdir (basename_dir, tmp_mode))
|
||||
fail = make_dir (basename_dir, dirpath, tmp_mode, &newly_created_dir);
|
||||
if (fail)
|
||||
{
|
||||
if (stat (basename_dir, &stats))
|
||||
{
|
||||
error (0, errno, "cannot create directory `%s'", dirpath);
|
||||
CLEANUP;
|
||||
return 1;
|
||||
}
|
||||
else if (!S_ISDIR (stats.st_mode))
|
||||
{
|
||||
error (0, 0, "`%s' exists but is not a directory", dirpath);
|
||||
CLEANUP;
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* DIRPATH already exists and is a directory. */
|
||||
newly_created_dir = 0;
|
||||
}
|
||||
CLEANUP;
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (newly_created_dir)
|
||||
@@ -280,7 +320,7 @@ make_path (const char *argpath,
|
||||
stat and mkdir process O(n^2) file name components. */
|
||||
if (do_chdir && chdir (basename_dir) < 0)
|
||||
{
|
||||
error (0, errno, "cannot chdir to directory, %s", dirpath);
|
||||
error (0, errno, _("cannot chdir to directory, %s"), dirpath);
|
||||
CLEANUP;
|
||||
return 1;
|
||||
}
|
||||
@@ -299,12 +339,8 @@ make_path (const char *argpath,
|
||||
/* We're done making leading directories.
|
||||
Create the final component of the path. */
|
||||
|
||||
/* The path could end in "/." or contain "/..", so test
|
||||
if we really have to create the directory. */
|
||||
|
||||
if (stat (basename_dir, &stats) && mkdir (basename_dir, mode))
|
||||
if (make_dir (basename_dir, dirpath, mode, NULL))
|
||||
{
|
||||
error (0, errno, "cannot create directory `%s'", dirpath);
|
||||
CLEANUP;
|
||||
return 1;
|
||||
}
|
||||
@@ -323,13 +359,13 @@ make_path (const char *argpath,
|
||||
#endif
|
||||
)
|
||||
{
|
||||
error (0, errno, "cannot chown %s", dirpath);
|
||||
error (0, errno, _("cannot chown %s"), dirpath);
|
||||
retval = 1;
|
||||
}
|
||||
/* chown may have turned off some permission bits we wanted. */
|
||||
if ((mode & 07000) != 0 && chmod (basename_dir, mode))
|
||||
{
|
||||
error (0, errno, "cannot chmod %s", dirpath);
|
||||
error (0, errno, _("cannot chmod %s"), dirpath);
|
||||
retval = 1;
|
||||
}
|
||||
}
|
||||
@@ -357,7 +393,7 @@ make_path (const char *argpath,
|
||||
|
||||
if (!S_ISDIR (stats.st_mode))
|
||||
{
|
||||
error (0, 0, "`%s' exists but is not a directory", dirpath);
|
||||
error (0, 0, _("`%s' exists but is not a directory"), dirpath);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
46
lib/mktime.c
46
lib/mktime.c
@@ -1,5 +1,5 @@
|
||||
/* mktime: convert a `struct tm' to a time_t value
|
||||
Copyright (C) 1993-1997, 1998 Free Software Foundation, Inc.
|
||||
Copyright (C) 1993-1998, 1999 Free Software Foundation, Inc.
|
||||
Contributed by Paul Eggert (eggert@twinsun.com).
|
||||
|
||||
NOTE: The canonical source of this file is maintained with the GNU C Library.
|
||||
@@ -57,7 +57,7 @@
|
||||
#endif /* DEBUG */
|
||||
|
||||
#ifndef __P
|
||||
# if defined (__GNUC__) || (defined (__STDC__) && __STDC__)
|
||||
# if defined __GNUC__ || (defined __STDC__ && __STDC__)
|
||||
# define __P(args) args
|
||||
# else
|
||||
# define __P(args) ()
|
||||
@@ -318,28 +318,32 @@ __mktime_internal (struct tm *tp,
|
||||
|
||||
/* If we have a match, check whether tm.tm_isdst has the requested
|
||||
value, if any. */
|
||||
if (dt == 0 && 0 <= isdst && 0 <= tm.tm_isdst)
|
||||
if (dt == 0 && isdst != tm.tm_isdst && 0 <= isdst && 0 <= tm.tm_isdst)
|
||||
{
|
||||
int dst_diff = (isdst != 0) - (tm.tm_isdst != 0);
|
||||
if (dst_diff)
|
||||
/* tm.tm_isdst has the wrong value. Look for a neighboring
|
||||
time with the right value, and use its UTC offset.
|
||||
Heuristic: probe the previous three calendar quarters (approximately),
|
||||
looking for the desired isdst. This isn't perfect,
|
||||
but it's good enough in practice. */
|
||||
int quarter = 7889238; /* seconds per average 1/4 Gregorian year */
|
||||
int i;
|
||||
|
||||
/* If we're too close to the time_t limit, look in future quarters. */
|
||||
if (t < TIME_T_MIN + 3 * quarter)
|
||||
quarter = -quarter;
|
||||
|
||||
for (i = 1; i <= 3; i++)
|
||||
{
|
||||
/* Move two hours in the direction indicated by the disagreement,
|
||||
probe some more, and switch to a new time if found.
|
||||
The largest known fallback due to daylight savings is two hours:
|
||||
once, in Newfoundland, 1988-10-30 02:00 -> 00:00. */
|
||||
time_t ot = t - 2 * 60 * 60 * dst_diff;
|
||||
while (--remaining_probes != 0)
|
||||
time_t ot = t - i * quarter;
|
||||
struct tm otm;
|
||||
ranged_convert (convert, &ot, &otm);
|
||||
if (otm.tm_isdst == isdst)
|
||||
{
|
||||
struct tm otm;
|
||||
if (! (dt = ydhms_tm_diff (year, yday, hour, min, sec,
|
||||
ranged_convert (convert, &ot, &otm))))
|
||||
{
|
||||
t = ot;
|
||||
tm = otm;
|
||||
break;
|
||||
}
|
||||
if ((ot += dt) == t)
|
||||
break; /* Avoid a redundant probe. */
|
||||
/* We found the desired tm_isdst.
|
||||
Extrapolate back to the desired time. */
|
||||
t = ot + ydhms_tm_diff (year, yday, hour, min, sec, &otm);
|
||||
ranged_convert (convert, &t, &tm);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -117,7 +117,7 @@ posix_time_parse (const char *s, unsigned int syntax_bits)
|
||||
const char *dot = NULL;
|
||||
int pair[6];
|
||||
int *p;
|
||||
int i;
|
||||
unsigned int i;
|
||||
|
||||
size_t s_len = strlen (s);
|
||||
size_t len = (((syntax_bits & PDS_SECONDS) && (dot = strchr (s, '.')))
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* quotearg.c - quote arguments for output
|
||||
Copyright (C) 1998 Free Software Foundation, Inc.
|
||||
Copyright (C) 1998, 1999 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -71,7 +71,22 @@ struct quoting_options
|
||||
/* Names of quoting styles. */
|
||||
char const *const quoting_style_args[] =
|
||||
{
|
||||
"literal", "shell", "shell-always", "c", "escape", 0
|
||||
"literal",
|
||||
"shell",
|
||||
"shell-always",
|
||||
"c",
|
||||
"escape",
|
||||
0
|
||||
};
|
||||
|
||||
/* Correspondances to quoting style names. */
|
||||
enum quoting_style const quoting_style_vals[] =
|
||||
{
|
||||
literal_quoting_style,
|
||||
shell_quoting_style,
|
||||
shell_always_quoting_style,
|
||||
c_quoting_style,
|
||||
escape_quoting_style
|
||||
};
|
||||
|
||||
/* The default quoting options. */
|
||||
@@ -151,7 +166,7 @@ quotearg_buffer (char *buffer, size_t buffersize,
|
||||
switch (quoting_style)
|
||||
{
|
||||
case shell_quoting_style:
|
||||
if (! (argsize == -1 ? arg[0] == '\0' : argsize == 0))
|
||||
if (! (argsize == (size_t) -1 ? arg[0] == '\0' : argsize == 0))
|
||||
{
|
||||
switch (arg[0])
|
||||
{
|
||||
@@ -162,7 +177,7 @@ quotearg_buffer (char *buffer, size_t buffersize,
|
||||
len = 0;
|
||||
for (i = 0; ; i++)
|
||||
{
|
||||
if (argsize == -1 ? arg[i] == '\0' : i == argsize)
|
||||
if (argsize == (size_t) -1 ? arg[i] == '\0' : i == argsize)
|
||||
goto done;
|
||||
|
||||
c = arg[i];
|
||||
@@ -209,7 +224,7 @@ quotearg_buffer (char *buffer, size_t buffersize,
|
||||
if (quote_mark)
|
||||
STORE (quote_mark);
|
||||
|
||||
for (i = 0; ! (argsize == -1 ? arg[i] == '\0' : i == argsize); i++)
|
||||
for (i = 0; ! (argsize == (size_t) -1 ? arg[i] == '\0' : i == argsize); i++)
|
||||
{
|
||||
c = arg[i];
|
||||
|
||||
@@ -243,11 +258,6 @@ quotearg_buffer (char *buffer, size_t buffersize,
|
||||
case '\t': c = 't'; goto store_escape;
|
||||
case '\v': c = 'v'; goto store_escape;
|
||||
|
||||
case ' ':
|
||||
if (quoting_style == escape_quoting_style)
|
||||
goto store_escape;
|
||||
break;
|
||||
|
||||
case '"':
|
||||
if (quoting_style == c_quoting_style)
|
||||
goto store_escape;
|
||||
@@ -289,11 +299,13 @@ quotearg_buffer (char *buffer, size_t buffersize,
|
||||
OPTIONS specifies the quoting options.
|
||||
The returned value points to static storage that can be
|
||||
reused by the next call to this function with the same value of N.
|
||||
N must be nonnegative. */
|
||||
N must be nonnegative. N is deliberately declared with type `int'
|
||||
to allow for future extensions (using negative values). */
|
||||
static char *
|
||||
quotearg_n_options (int n, char const *arg, struct quoting_options *options)
|
||||
quotearg_n_options (int n, char const *arg,
|
||||
struct quoting_options const *options)
|
||||
{
|
||||
static unsigned nslots;
|
||||
static unsigned int nslots;
|
||||
static struct slotvec
|
||||
{
|
||||
size_t size;
|
||||
@@ -328,7 +340,7 @@ quotearg_n_options (int n, char const *arg, struct quoting_options *options)
|
||||
}
|
||||
|
||||
char *
|
||||
quotearg_n (int n, char const *arg)
|
||||
quotearg_n (unsigned int n, char const *arg)
|
||||
{
|
||||
return quotearg_n_options (n, arg, &default_quoting_options);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* quotearg.h - quote arguments for output
|
||||
Copyright (C) 1998 Free Software Foundation, Inc.
|
||||
Copyright (C) 1998, 1999 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -33,8 +33,9 @@ enum quoting_style
|
||||
# define DEFAULT_QUOTING_STYLE literal_quoting_style
|
||||
#endif
|
||||
|
||||
/* Names of quoting styles. */
|
||||
/* Names of quoting styles and their corresponding values. */
|
||||
extern char const *const quoting_style_args[];
|
||||
extern enum quoting_style const quoting_style_vals[];
|
||||
|
||||
struct quoting_options;
|
||||
|
||||
@@ -87,9 +88,9 @@ size_t quotearg_buffer PARAMS ((char *buffer, size_t buffersize,
|
||||
The returned value points to static storage that can be
|
||||
reused by the next call to this function with the same value of N.
|
||||
N must be nonnegative. */
|
||||
char *quotearg_n PARAMS ((int n, char const *arg));
|
||||
char *quotearg_n PARAMS ((unsigned int n, char const *arg));
|
||||
|
||||
/* Equivalent to quotearg_n (ARG, 0). */
|
||||
/* Equivalent to quotearg_n (0, ARG). */
|
||||
char *quotearg PARAMS ((char const *arg));
|
||||
|
||||
/* Like quotearg (ARG), except also quote any instances of CH. */
|
||||
|
||||
79
lib/regex.c
79
lib/regex.c
@@ -4,23 +4,20 @@
|
||||
internationalization features.)
|
||||
Copyright (C) 1993, 94, 95, 96, 97, 98 Free Software Foundation, Inc.
|
||||
|
||||
NOTE: The canonical source of this file is maintained with the GNU C Library.
|
||||
Bugs can be reported to bug-glibc@prep.ai.mit.edu.
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
||||
USA. */
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
/* AIX requires this to be the first thing in the file. */
|
||||
#if defined _AIX && !defined REGEX_MALLOC
|
||||
@@ -49,12 +46,11 @@
|
||||
# include <sys/types.h>
|
||||
#endif
|
||||
|
||||
#define WIDE_CHAR_SUPPORT \
|
||||
defined _LIBC || (HAVE_WCTYPE_H && HAVE_WCHAR_H && HAVE_BTOWC)
|
||||
#define WIDE_CHAR_SUPPORT (HAVE_WCTYPE_H && HAVE_WCHAR_H && HAVE_BTOWC)
|
||||
|
||||
/* For platform which support the ISO C amendement 1 functionality we
|
||||
support user defined character classes. */
|
||||
#if WIDE_CHAR_SUPPORT
|
||||
#if defined _LIBC || WIDE_CHAR_SUPPORT
|
||||
/* Solaris 2.5 has a bug: <wchar.h> must be included before <wctype.h>. */
|
||||
# include <wchar.h>
|
||||
# include <wctype.h>
|
||||
@@ -211,7 +207,7 @@ init_syntax_once ()
|
||||
#endif /* not emacs */
|
||||
|
||||
/* Get the interface, including the syntax bits. */
|
||||
#include "regex.h"
|
||||
#include <regex.h>
|
||||
|
||||
/* isalpha etc. are used for the character classes. */
|
||||
#include <ctype.h>
|
||||
@@ -1722,7 +1718,7 @@ typedef struct
|
||||
} \
|
||||
}
|
||||
|
||||
#if WIDE_CHAR_SUPPORT
|
||||
#if defined _LIBC || WIDE_CHAR_SUPPORT
|
||||
/* The GNU C library provides support for user-defined character classes
|
||||
and the functions from ISO C amendement 1. */
|
||||
# ifdef CHARCLASS_NAME_MAX
|
||||
@@ -2214,10 +2210,13 @@ regex_compile (pattern, size, syntax, bufp)
|
||||
for (;;)
|
||||
{
|
||||
PATFETCH (c);
|
||||
if ((c == ':' && *p == ']') || p == pend
|
||||
|| c1 == CHAR_CLASS_MAX_LENGTH)
|
||||
if ((c == ':' && *p == ']') || p == pend)
|
||||
break;
|
||||
str[c1++] = c;
|
||||
if (c1 < CHAR_CLASS_MAX_LENGTH)
|
||||
str[c1++] = c;
|
||||
else
|
||||
/* This is in any case an invalid class name. */
|
||||
str[0] = '\0';
|
||||
}
|
||||
str[c1] = '\0';
|
||||
|
||||
@@ -2226,7 +2225,7 @@ regex_compile (pattern, size, syntax, bufp)
|
||||
the leading `:' and `[' (but set bits for them). */
|
||||
if (c == ':' && *p == ']')
|
||||
{
|
||||
#if WIDE_CHAR_SUPPORT
|
||||
#if defined _LIBC || WIDE_CHAR_SUPPORT
|
||||
boolean is_lower = STREQ (str, "lower");
|
||||
boolean is_upper = STREQ (str, "upper");
|
||||
wctype_t wt;
|
||||
@@ -2247,10 +2246,10 @@ regex_compile (pattern, size, syntax, bufp)
|
||||
# ifdef _LIBC
|
||||
if (__iswctype (__btowc (ch), wt))
|
||||
SET_LIST_BIT (ch);
|
||||
#else
|
||||
# else
|
||||
if (iswctype (btowc (ch), wt))
|
||||
SET_LIST_BIT (ch);
|
||||
#endif
|
||||
# endif
|
||||
|
||||
if (translate && (is_upper || is_lower)
|
||||
&& (ISUPPER (ch) || ISLOWER (ch)))
|
||||
@@ -5574,7 +5573,8 @@ re_exec (s)
|
||||
REG_EXTENDED bit in CFLAGS is set; otherwise, to
|
||||
RE_SYNTAX_POSIX_BASIC;
|
||||
`newline_anchor' to REG_NEWLINE being set in CFLAGS;
|
||||
`fastmap' and `fastmap_accurate' to zero;
|
||||
`fastmap' to an allocated space for the fastmap;
|
||||
`fastmap_accurate' to zero;
|
||||
`re_nsub' to the number of subexpressions in PATTERN.
|
||||
|
||||
PATTERN is the address of the pattern string.
|
||||
@@ -5613,11 +5613,8 @@ regcomp (preg, pattern, cflags)
|
||||
preg->allocated = 0;
|
||||
preg->used = 0;
|
||||
|
||||
/* Don't bother to use a fastmap when searching. This simplifies the
|
||||
REG_NEWLINE case: if we used a fastmap, we'd have to put all the
|
||||
characters after newlines into the fastmap. This way, we just try
|
||||
every character. */
|
||||
preg->fastmap = 0;
|
||||
/* Try to allocate space for the fastmap. */
|
||||
preg->fastmap = (char *) malloc (1 << BYTEWIDTH);
|
||||
|
||||
if (cflags & REG_ICASE)
|
||||
{
|
||||
@@ -5657,6 +5654,19 @@ regcomp (preg, pattern, cflags)
|
||||
unmatched close-group: both are REG_EPAREN. */
|
||||
if (ret == REG_ERPAREN) ret = REG_EPAREN;
|
||||
|
||||
if (ret == REG_NOERROR && preg->fastmap)
|
||||
{
|
||||
/* Compute the fastmap now, since regexec cannot modify the pattern
|
||||
buffer. */
|
||||
if (re_compile_fastmap (preg) == -2)
|
||||
{
|
||||
/* Some error occured while computing the fastmap, just forget
|
||||
about it. */
|
||||
free (preg->fastmap);
|
||||
preg->fastmap = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
return (int) ret;
|
||||
}
|
||||
#ifdef _LIBC
|
||||
@@ -5705,10 +5715,10 @@ regexec (preg, string, nmatch, pmatch, eflags)
|
||||
if (want_reg_info)
|
||||
{
|
||||
regs.num_regs = nmatch;
|
||||
regs.start = TALLOC (nmatch, regoff_t);
|
||||
regs.end = TALLOC (nmatch, regoff_t);
|
||||
if (regs.start == NULL || regs.end == NULL)
|
||||
regs.start = TALLOC (nmatch * 2, regoff_t);
|
||||
if (regs.start == NULL)
|
||||
return (int) REG_NOMATCH;
|
||||
regs.end = regs.start + nmatch;
|
||||
}
|
||||
|
||||
/* Perform the searching operation. */
|
||||
@@ -5732,7 +5742,6 @@ regexec (preg, string, nmatch, pmatch, eflags)
|
||||
|
||||
/* If we needed the temporary register info, free the space now. */
|
||||
free (regs.start);
|
||||
free (regs.end);
|
||||
}
|
||||
|
||||
/* We want zero return to mean success, unlike `re_search'. */
|
||||
|
||||
65
lib/regex.h
65
lib/regex.h
@@ -1,25 +1,24 @@
|
||||
/* Definitions for data structures and routines for the regular
|
||||
expression library, version 0.12.
|
||||
Copyright (C) 1985,89,90,91,92,93,95,96,97 Free Software Foundation, Inc.
|
||||
Copyright (C) 1985,89,90,91,92,93,95,96,97,98 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of the GNU C Library. Its master source is NOT part of
|
||||
the C library, however. The master source lives in /gd/gnu/lib.
|
||||
|
||||
NOTE: The canonical source of this file is maintained with the GNU C Library.
|
||||
Bugs can be reported to bug-glibc@prep.ai.mit.edu.
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
||||
USA. */
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#ifndef _REGEX_H
|
||||
#define _REGEX_H 1
|
||||
@@ -283,8 +282,8 @@ extern reg_syntax_t re_syntax_options;
|
||||
`re_error_msg' table in regex.c. */
|
||||
typedef enum
|
||||
{
|
||||
#if (_XOPEN_SOURCE - 0) == 500
|
||||
REG_NOSYS = -1, /* This will never happen for this implementation. */
|
||||
#ifdef _XOPEN_SOURCE
|
||||
REG_ENOSYS = -1, /* This will never happen for this implementation. */
|
||||
#endif
|
||||
|
||||
REG_NOERROR = 0, /* Success. */
|
||||
@@ -442,15 +441,11 @@ typedef struct
|
||||
|
||||
/* Sets the current default syntax to SYNTAX, and return the old syntax.
|
||||
You can also simply assign to the `re_syntax_options' variable. */
|
||||
extern reg_syntax_t __re_set_syntax _RE_ARGS ((reg_syntax_t syntax));
|
||||
extern reg_syntax_t re_set_syntax _RE_ARGS ((reg_syntax_t syntax));
|
||||
|
||||
/* Compile the regular expression PATTERN, with length LENGTH
|
||||
and syntax given by the global `re_syntax_options', into the buffer
|
||||
BUFFER. Return NULL if successful, and an error string if not. */
|
||||
extern const char *__re_compile_pattern
|
||||
_RE_ARGS ((const char *pattern, size_t length,
|
||||
struct re_pattern_buffer *buffer));
|
||||
extern const char *re_compile_pattern
|
||||
_RE_ARGS ((const char *pattern, size_t length,
|
||||
struct re_pattern_buffer *buffer));
|
||||
@@ -459,7 +454,6 @@ extern const char *re_compile_pattern
|
||||
/* Compile a fastmap for the compiled pattern in BUFFER; used to
|
||||
accelerate searches. Return 0 if successful and -2 if was an
|
||||
internal error. */
|
||||
extern int __re_compile_fastmap _RE_ARGS ((struct re_pattern_buffer *buffer));
|
||||
extern int re_compile_fastmap _RE_ARGS ((struct re_pattern_buffer *buffer));
|
||||
|
||||
|
||||
@@ -468,9 +462,6 @@ extern int re_compile_fastmap _RE_ARGS ((struct re_pattern_buffer *buffer));
|
||||
characters. Return the starting position of the match, -1 for no
|
||||
match, or -2 for an internal error. Also return register
|
||||
information in REGS (if REGS and BUFFER->no_sub are nonzero). */
|
||||
extern int __re_search
|
||||
_RE_ARGS ((struct re_pattern_buffer *buffer, const char *string,
|
||||
int length, int start, int range, struct re_registers *regs));
|
||||
extern int re_search
|
||||
_RE_ARGS ((struct re_pattern_buffer *buffer, const char *string,
|
||||
int length, int start, int range, struct re_registers *regs));
|
||||
@@ -478,10 +469,6 @@ extern int re_search
|
||||
|
||||
/* Like `re_search', but search in the concatenation of STRING1 and
|
||||
STRING2. Also, stop searching at index START + STOP. */
|
||||
extern int __re_search_2
|
||||
_RE_ARGS ((struct re_pattern_buffer *buffer, const char *string1,
|
||||
int length1, const char *string2, int length2,
|
||||
int start, int range, struct re_registers *regs, int stop));
|
||||
extern int re_search_2
|
||||
_RE_ARGS ((struct re_pattern_buffer *buffer, const char *string1,
|
||||
int length1, const char *string2, int length2,
|
||||
@@ -490,19 +477,12 @@ extern int re_search_2
|
||||
|
||||
/* Like `re_search', but return how many characters in STRING the regexp
|
||||
in BUFFER matched, starting at position START. */
|
||||
extern int __re_match
|
||||
_RE_ARGS ((struct re_pattern_buffer *buffer, const char *string,
|
||||
int length, int start, struct re_registers *regs));
|
||||
extern int re_match
|
||||
_RE_ARGS ((struct re_pattern_buffer *buffer, const char *string,
|
||||
int length, int start, struct re_registers *regs));
|
||||
|
||||
|
||||
/* Relates to `re_match' as `re_search_2' relates to `re_search'. */
|
||||
extern int __re_match_2
|
||||
_RE_ARGS ((struct re_pattern_buffer *buffer, const char *string1,
|
||||
int length1, const char *string2, int length2,
|
||||
int start, struct re_registers *regs, int stop));
|
||||
extern int re_match_2
|
||||
_RE_ARGS ((struct re_pattern_buffer *buffer, const char *string1,
|
||||
int length1, const char *string2, int length2,
|
||||
@@ -521,14 +501,11 @@ extern int re_match_2
|
||||
Unless this function is called, the first search or match using
|
||||
PATTERN_BUFFER will allocate its own register data, without
|
||||
freeing the old data. */
|
||||
extern void __re_set_registers
|
||||
_RE_ARGS ((struct re_pattern_buffer *buffer, struct re_registers *regs,
|
||||
unsigned num_regs, regoff_t *starts, regoff_t *ends));
|
||||
extern void re_set_registers
|
||||
_RE_ARGS ((struct re_pattern_buffer *buffer, struct re_registers *regs,
|
||||
unsigned num_regs, regoff_t *starts, regoff_t *ends));
|
||||
|
||||
#ifdef _REGEX_RE_COMP
|
||||
#if defined _REGEX_RE_COMP || defined _LIBC
|
||||
# ifndef _CRAY
|
||||
/* 4.2 bsd compatibility. */
|
||||
extern char *re_comp _RE_ARGS ((const char *));
|
||||
@@ -537,24 +514,16 @@ extern int re_exec _RE_ARGS ((const char *));
|
||||
#endif
|
||||
|
||||
/* POSIX compatibility. */
|
||||
extern int __regcomp _RE_ARGS ((regex_t *__preg, const char *__pattern,
|
||||
int __cflags));
|
||||
extern int regcomp _RE_ARGS ((regex_t *__preg, const char *__pattern,
|
||||
int __cflags));
|
||||
|
||||
extern int __regexec _RE_ARGS ((const regex_t *__preg,
|
||||
const char *__string, size_t __nmatch,
|
||||
regmatch_t __pmatch[], int __eflags));
|
||||
extern int regexec _RE_ARGS ((const regex_t *__preg,
|
||||
const char *__string, size_t __nmatch,
|
||||
regmatch_t __pmatch[], int __eflags));
|
||||
|
||||
extern size_t __regerror _RE_ARGS ((int __errcode, const regex_t *__preg,
|
||||
char *__errbuf, size_t __errbuf_size));
|
||||
extern size_t regerror _RE_ARGS ((int __errcode, const regex_t *__preg,
|
||||
char *__errbuf, size_t __errbuf_size));
|
||||
|
||||
extern void __regfree _RE_ARGS ((regex_t *__preg));
|
||||
extern void regfree _RE_ARGS ((regex_t *__preg));
|
||||
|
||||
|
||||
|
||||
66
lib/strcasecmp.c
Normal file
66
lib/strcasecmp.c
Normal file
@@ -0,0 +1,66 @@
|
||||
/* strcasecmp.c -- case insensitive string comparator
|
||||
Copyright (C) 1998, 1999 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software Foundation,
|
||||
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
|
||||
#if HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#ifdef LENGTH_LIMIT
|
||||
# define STRXCASECMP_FUNCTION strncasecmp
|
||||
# define STRXCASECMP_DECLARE_N , size_t n
|
||||
# define LENGTH_LIMIT_EXPR(Expr) Expr
|
||||
#else
|
||||
# define STRXCASECMP_FUNCTION strcasecmp
|
||||
# define STRXCASECMP_DECLARE_N /* empty */
|
||||
# define LENGTH_LIMIT_EXPR(Expr) 0
|
||||
#endif
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <ctype.h>
|
||||
|
||||
#define TOLOWER(Ch) (isupper (Ch) ? tolower (Ch) : (Ch))
|
||||
|
||||
/* Compare {{no more than N characters of }}strings S1 and S2,
|
||||
ignoring case, returning less than, equal to or
|
||||
greater than zero if S1 is lexicographically less
|
||||
than, equal to or greater than S2. */
|
||||
|
||||
int
|
||||
STRXCASECMP_FUNCTION (const char *s1, const char *s2 STRXCASECMP_DECLARE_N)
|
||||
{
|
||||
register const unsigned char *p1 = (const unsigned char *) s1;
|
||||
register const unsigned char *p2 = (const unsigned char *) s2;
|
||||
unsigned char c1, c2;
|
||||
|
||||
if (p1 == p2 || LENGTH_LIMIT_EXPR (n == 0))
|
||||
return 0;
|
||||
|
||||
do
|
||||
{
|
||||
c1 = TOLOWER (*p1);
|
||||
c2 = TOLOWER (*p2);
|
||||
|
||||
if (LENGTH_LIMIT_EXPR (--n == 0) || c1 == '\0')
|
||||
break;
|
||||
|
||||
++p1;
|
||||
++p2;
|
||||
}
|
||||
while (c1 == c2);
|
||||
|
||||
return c1 - c2;
|
||||
}
|
||||
2
lib/strncasecmp.c
Normal file
2
lib/strncasecmp.c
Normal file
@@ -0,0 +1,2 @@
|
||||
#define LENGTH_LIMIT
|
||||
#include "strcasecmp.c"
|
||||
@@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 1991, 1992, 1997 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1991, 1992, 1997, 1999 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -57,9 +57,7 @@ extern int errno;
|
||||
/* Convert NPTR to a double. If ENDPTR is not NULL, a pointer to the
|
||||
character after the last one used in the number is put in *ENDPTR. */
|
||||
double
|
||||
strtod (nptr, endptr)
|
||||
const char *nptr;
|
||||
char **endptr;
|
||||
strtod (const char *nptr, char **endptr)
|
||||
{
|
||||
register const char *s;
|
||||
short int sign;
|
||||
|
||||
53
lib/xalloc.h
53
lib/xalloc.h
@@ -1,21 +1,52 @@
|
||||
#ifndef PARAMS
|
||||
# if defined PROTOTYPES || (defined __STDC__ && __STDC__)
|
||||
# define PARAMS(Args) Args
|
||||
# else
|
||||
# define PARAMS(Args) ()
|
||||
/* xalloc.h -- malloc with out-of-memory checking
|
||||
Copyright (C) 1990-1998, 1999 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software Foundation,
|
||||
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
|
||||
#ifndef XALLOC_H_
|
||||
# define XALLOC_H_
|
||||
|
||||
# ifndef PARAMS
|
||||
# if defined PROTOTYPES || (defined __STDC__ && __STDC__)
|
||||
# define PARAMS(Args) Args
|
||||
# else
|
||||
# define PARAMS(Args) ()
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* Exit value when the requested amount of memory is not available.
|
||||
The caller may set it to some other value. */
|
||||
It is initialized to EXIT_FAILURE, but the caller may set it to
|
||||
some other value. */
|
||||
extern int xalloc_exit_failure;
|
||||
|
||||
/* FIXME: describe */
|
||||
extern char *const xalloc_msg_memory_exhausted;
|
||||
|
||||
/* FIXME: describe */
|
||||
/* If this pointer is non-zero, run the specified function upon each
|
||||
allocation failure. It is initialized to zero. */
|
||||
extern void (*xalloc_fail_func) ();
|
||||
|
||||
/* If XALLOC_FAIL_FUNC is undefined or a function that returns, this
|
||||
message must be non-NULL. It is translated via gettext.
|
||||
The default value is "Memory exhausted". */
|
||||
extern char *const xalloc_msg_memory_exhausted;
|
||||
|
||||
void *xmalloc PARAMS ((size_t n));
|
||||
void *xcalloc PARAMS ((size_t n, size_t s));
|
||||
void *xrealloc PARAMS ((void *p, size_t n));
|
||||
|
||||
# define XMALLOC(Type, N_bytes) ((Type *) xmalloc (sizeof (Type) * (N_bytes)))
|
||||
# define XCALLOC(Type, N_bytes) ((Type *) xcalloc (sizeof (Type), (N_bytes)))
|
||||
# define XREALLOC(Ptr, Type, N_bytes) \
|
||||
((Type *) xrealloc ((void *) (Ptr), sizeof (Type) * (N_bytes)))
|
||||
|
||||
#endif /* !XALLOC_H_ */
|
||||
|
||||
@@ -46,13 +46,6 @@ void free ();
|
||||
# define EXIT_FAILURE 1
|
||||
#endif
|
||||
|
||||
/* Prototypes for functions defined here. */
|
||||
#if defined (__STDC__) && __STDC__
|
||||
void *xmalloc (size_t n);
|
||||
void *xcalloc (size_t n, size_t s);
|
||||
void *xrealloc (void *p, size_t n);
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_DONE_WORKING_MALLOC_CHECK
|
||||
you must run the autoconf test for a properly working malloc -- see malloc.m4
|
||||
#endif
|
||||
@@ -65,17 +58,12 @@ you must run the autoconf test for a properly working realloc -- see realloc.m4
|
||||
The caller may set it to some other value. */
|
||||
int xalloc_exit_failure = EXIT_FAILURE;
|
||||
|
||||
/* FIXME: describe */
|
||||
char *const xalloc_msg_memory_exhausted = N_("Memory exhausted");
|
||||
|
||||
/* FIXME: describe */
|
||||
/* If non NULL, call this function when memory is exhausted. */
|
||||
void (*xalloc_fail_func) () = 0;
|
||||
|
||||
#if __STDC__ && (HAVE_VPRINTF || HAVE_DOPRNT)
|
||||
void error (int, int, const char *, ...);
|
||||
#else
|
||||
void error ();
|
||||
#endif
|
||||
/* If XALLOC_FAIL_FUNC is NULL, or does return, display this message
|
||||
before exiting when memory is exhausted. Goes through gettext. */
|
||||
char *const xalloc_msg_memory_exhausted = N_("Memory exhausted");
|
||||
|
||||
static void
|
||||
xalloc_fail (void)
|
||||
@@ -111,8 +99,6 @@ xrealloc (void *p, size_t n)
|
||||
return p;
|
||||
}
|
||||
|
||||
#ifdef NOT_USED
|
||||
|
||||
/* Allocate memory for N elements of S bytes, with error checking. */
|
||||
|
||||
void *
|
||||
@@ -125,5 +111,3 @@ xcalloc (size_t n, size_t s)
|
||||
xalloc_fail ();
|
||||
return p;
|
||||
}
|
||||
|
||||
#endif /* NOT_USED */
|
||||
|
||||
101
lib/ylwrap
101
lib/ylwrap
@@ -1,101 +0,0 @@
|
||||
#! /bin/sh
|
||||
# ylwrap - wrapper for lex/yacc invocations.
|
||||
# Copyright (C) 1996, 1997 Free Software Foundation, Inc.
|
||||
# Written by Tom Tromey <tromey@cygnus.com>.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
# Usage:
|
||||
# ylwrap PROGRAM INPUT [OUTPUT DESIRED]... -- [ARGS]...
|
||||
# * PROGRAM is program to run.
|
||||
# * INPUT is the input file
|
||||
# * OUTPUT is file PROG generates
|
||||
# * DESIRED is file we actually want
|
||||
# * ARGS are passed to PROG
|
||||
# Any number of OUTPUT,DESIRED pairs may be used.
|
||||
|
||||
# The program to run.
|
||||
prog="$1"
|
||||
shift
|
||||
|
||||
# The input.
|
||||
input="$1"
|
||||
shift
|
||||
case "$input" in
|
||||
/*)
|
||||
# Absolute path; do nothing.
|
||||
;;
|
||||
*)
|
||||
# Relative path. Make it absolute. Why? Because otherwise any
|
||||
# debugging info in the generated file will point to the wrong
|
||||
# place. This is really gross.
|
||||
input="`pwd`/$input"
|
||||
;;
|
||||
esac
|
||||
|
||||
pairlist=
|
||||
while test "$#" -ne 0; do
|
||||
if test "$1" = "--"; then
|
||||
break
|
||||
fi
|
||||
pairlist="$pairlist $1"
|
||||
shift
|
||||
done
|
||||
|
||||
# FIXME: add hostname here for parallel makes that run commands on
|
||||
# other machines. But that might take us over the 14-char limit.
|
||||
dirname=ylwrap$$
|
||||
trap "cd `pwd`; rm -rf $dirname > /dev/null 2>&1" 1 2 3 15
|
||||
mkdir $dirname || exit 1
|
||||
|
||||
cd $dirname
|
||||
$prog ${1+"$@"} "$input"
|
||||
status=$?
|
||||
|
||||
if test $status -eq 0; then
|
||||
set X $pairlist
|
||||
shift
|
||||
first=yes
|
||||
while test "$#" -ne 0; do
|
||||
if test -f "$1"; then
|
||||
# If $2 is an absolute path name, then just use that,
|
||||
# otherwise prepend `../'.
|
||||
case "$2" in
|
||||
/*) target="$2";;
|
||||
*) target="../$2";;
|
||||
esac
|
||||
mv "$1" "$target" || status=$?
|
||||
else
|
||||
# A missing file is only an error for the first file. This
|
||||
# is a blatant hack to let us support using "yacc -d". If -d
|
||||
# is not specified, we don't want an error when the header
|
||||
# file is "missing".
|
||||
if test $first = yes; then
|
||||
status=1
|
||||
fi
|
||||
fi
|
||||
shift
|
||||
shift
|
||||
first=no
|
||||
done
|
||||
else
|
||||
status=$?
|
||||
fi
|
||||
|
||||
# Remove the directory.
|
||||
cd ..
|
||||
rm -rf $dirname
|
||||
|
||||
exit $status
|
||||
117
m4/ChangeLog
117
m4/ChangeLog
@@ -1,3 +1,120 @@
|
||||
1999-02-07 Jim Meyering <meyering@ascend.com>
|
||||
|
||||
* group-member.m4: New file -- extracted from sh-utils' configure.in.
|
||||
|
||||
1999-02-05 Eli Zaretskii <eliz@is.elta.co.il>
|
||||
* m4/gettext.m4: Support DOS-style d:/foo/bar absolute file names.
|
||||
|
||||
1999-02-06 Jim Meyering <meyering@ascend.com>
|
||||
|
||||
* chown.m4: Use `AC_SUBST(LIBOBJS)' since we set LIBOBJS.
|
||||
* fnmatch.m4: Likewise.
|
||||
* getgroups.m4: Likewise.
|
||||
* lstat.m4: Likewise.
|
||||
* malloc.m4: Likewise.
|
||||
* putenv.m4: Likewise.
|
||||
* realloc.m4: Likewise.
|
||||
* regex.m4: Likewise.
|
||||
* stat.m4: Likewise.
|
||||
* strftime.m4: Likewise.
|
||||
Suggestion from Alain Magloire.
|
||||
|
||||
* chown.m4: Use `.$ac_objext', not `.o'.
|
||||
* fnmatch.m4: Likewise.
|
||||
* getgroups.m4: Likewise.
|
||||
* getline.m4: Likewise.
|
||||
* lstat.m4: Likewise.
|
||||
* malloc.m4: Likewise.
|
||||
* memcmp.m4: Likewise.
|
||||
* putenv.m4: Likewise.
|
||||
* realloc.m4: Likewise.
|
||||
* regex.m4: Likewise.
|
||||
* stat.m4: Likewise.
|
||||
* strftime.m4: Likewise.
|
||||
Suggestion from Alain Magloire.
|
||||
|
||||
* jm-macros.m4: Actually invoke jm_WITH_REGEX now that it requires
|
||||
an argument.
|
||||
|
||||
* regex.m4: Add a run-time Test for proper operation of
|
||||
re_compile_pattern.
|
||||
|
||||
1999-01-31 Jim Meyering <meyering@ascend.com>
|
||||
|
||||
* getloadavg.m4: Check for locale.h and the function, setlocale.
|
||||
|
||||
1999-01-30 Jim Meyering <meyering@ascend.com>
|
||||
|
||||
* check-type.m4: Use 3-arg form of AC_DEFINE.
|
||||
|
||||
* jm-mktime.m4: Make this a wrapper around the official AM_FUNC_MKTIME
|
||||
rather than my private copy, now that the official one is up to date.
|
||||
* mktime.m4: Remove file.
|
||||
|
||||
* getloadavg.m4: Use 3-arg form of AC_DEFINE.
|
||||
* uptime.m4: Likewise.
|
||||
* uintmax_t.m4: Likewise.
|
||||
|
||||
1999-01-28 Jim Meyering <meyering@ascend.com>
|
||||
|
||||
* jm-macros.m4: Use jm_AFS.
|
||||
* afs.m4: New file (from fileutils' configure.in).
|
||||
|
||||
* assert.m4: Use the 3-argument forms of AC_DEFINE* macros.
|
||||
* chown.m4: Likewise.
|
||||
* d-ino.m4: Likewise.
|
||||
* d-type.m4: Likewise.
|
||||
* fnmatch.m4: Likewise.
|
||||
* getgroups.m4: Likewise.
|
||||
* gettext.m4: Likewise.
|
||||
* jm-mktime.m4: Likewise.
|
||||
* jm-winsz2.m4: Likewise.
|
||||
* lcmessage.m4: Likewise.
|
||||
* ls-mntd-fs.m4: Likewise.
|
||||
* malloc.m4: Likewise.
|
||||
* memcmp.m4: Likewise.
|
||||
* putenv.m4: Likewise.
|
||||
* realloc.m4: Likewise.
|
||||
* st_mtim.m4: Likewise.
|
||||
* strftime.m4: Likewise.
|
||||
|
||||
1999-01-16 Jim Meyering <meyering@ascend.com>
|
||||
|
||||
* jm-macros.m4 (ARGMATCH_DIE): Define.
|
||||
(ARGMATCH_DIE_DECL): Define.
|
||||
|
||||
1999-01-12 Jim Meyering <meyering@ascend.com>
|
||||
|
||||
* Makefile.am.in: Rewrite to avoid using fmt.
|
||||
Reported by Lars Hecking.
|
||||
|
||||
1999-01-10 Jim Meyering <meyering@ascend.com>
|
||||
|
||||
* fstypename.m4: Use the new 3-arg form of AC_DEFINE instead of my
|
||||
gross kludge.
|
||||
* inttypes_h.m4: Likewise.
|
||||
* lstat.m4: Likewise.
|
||||
* malloc.m4: Likewise.
|
||||
* readdir.m4: Likewise.
|
||||
* realloc.m4: Likewise.
|
||||
* st_dm_mode.m4: Likewise.
|
||||
* stat.m4: Likewise.
|
||||
* utimbuf.m4: Likewise.
|
||||
* utimes.m4: Likewise.
|
||||
|
||||
* check-decl.m4: Use the new 3-arg form of AC_DEFINE instead of the
|
||||
AC_CHECK_FUNCS hack. Now, it's still a hack, but at least the
|
||||
comments in config.h.in are meaningful.
|
||||
|
||||
* jm-macros.m4: Require autoconf-2.13 here.
|
||||
|
||||
* regex.m4: By default, don't use the included regex.c on systems
|
||||
with glibc 2. Suggestion from Uli Drepper.
|
||||
|
||||
1999-01-02 Jim Meyering <meyering@ascend.com>
|
||||
|
||||
* jm-macros.m4: Replace strcasecmp and strncasecmp.
|
||||
|
||||
1998-12-18 Jim Meyering <meyering@ascend.com>
|
||||
|
||||
* Makefile.am.in (Makefile.am): Simplify rule.
|
||||
|
||||
@@ -1,22 +1,62 @@
|
||||
## Process this file with automake to produce Makefile.in -*-Makefile-*-
|
||||
|
||||
##m4-files-begin
|
||||
EXTRA_DIST = README Makefile.am.in assert.m4 check-decl.m4 check-type.m4 \
|
||||
chown.m4 const.m4 d-ino.m4 d-type.m4 decl.m4 error.m4 fnmatch.m4 \
|
||||
fstypename.m4 getgroups.m4 getline.m4 getloadavg.m4 gettext.m4 glibc.m4 \
|
||||
inttypes_h.m4 isc-posix.m4 jm-glibc-io.m4 jm-macros.m4 jm-mktime.m4 \
|
||||
jm-winsz1.m4 jm-winsz2.m4 lchown.m4 lcmessage.m4 lfs.m4 ls-mntd-fs.m4 \
|
||||
lstat.m4 malloc.m4 memcmp.m4 mktime.m4 perl.m4 prereq.m4 progtest.m4 \
|
||||
putenv.m4 readdir.m4 realloc.m4 regex.m4 st_dm_mode.m4 st_mtim.m4 stat.m4 \
|
||||
strftime.m4 uintmax_t.m4 uptime.m4 utimbuf.m4 utime.m4 utimes.m4
|
||||
|
||||
EXTRA_DIST = README Makefile.am.in \
|
||||
afs.m4 \
|
||||
assert.m4 \
|
||||
check-decl.m4 \
|
||||
check-type.m4 \
|
||||
chown.m4 \
|
||||
const.m4 \
|
||||
d-ino.m4 \
|
||||
d-type.m4 \
|
||||
decl.m4 \
|
||||
error.m4 \
|
||||
fnmatch.m4 \
|
||||
fstypename.m4 \
|
||||
getgroups.m4 \
|
||||
getline.m4 \
|
||||
getloadavg.m4 \
|
||||
gettext.m4 \
|
||||
glibc.m4 \
|
||||
group-member.m4 \
|
||||
inttypes_h.m4 \
|
||||
isc-posix.m4 \
|
||||
jm-glibc-io.m4 \
|
||||
jm-macros.m4 \
|
||||
jm-mktime.m4 \
|
||||
jm-winsz1.m4 \
|
||||
jm-winsz2.m4 \
|
||||
lchown.m4 \
|
||||
lcmessage.m4 \
|
||||
lfs.m4 \
|
||||
ls-mntd-fs.m4 \
|
||||
lstat.m4 \
|
||||
malloc.m4 \
|
||||
memcmp.m4 \
|
||||
perl.m4 \
|
||||
prereq.m4 \
|
||||
progtest.m4 \
|
||||
putenv.m4 \
|
||||
readdir.m4 \
|
||||
realloc.m4 \
|
||||
regex.m4 \
|
||||
st_dm_mode.m4 \
|
||||
st_mtim.m4 \
|
||||
stat.m4 \
|
||||
strftime.m4 \
|
||||
uintmax_t.m4 \
|
||||
uptime.m4 \
|
||||
utimbuf.m4 \
|
||||
utime.m4 \
|
||||
utimes.m4
|
||||
##m4-files-end
|
||||
|
||||
Makefile.am: Makefile.am.in
|
||||
rm -f $@ $@t
|
||||
sed -n '1,/^##m4-files-begin/p' $< > $@t
|
||||
echo EXTRA_DIST = README Makefile.am.in *.m4 \
|
||||
|fmt | (tr '\012' @; echo) \
|
||||
( (echo EXTRA_DIST = README Makefile.am.in | tr '\012' @); \
|
||||
(echo *.m4|tr ' ' @) ) \
|
||||
|sed 's/@$$/%/;s/@/ \\@/g' |tr @% '\012\012' \
|
||||
>> $@t
|
||||
sed -n '/^##m4-files-end/,$$p' $< >> $@t
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
Makefile.am: Makefile.am.in
|
||||
rm -f $@ $@t
|
||||
sed -n '1,/^##m4-files-begin/p' $< > $@t
|
||||
echo EXTRA_DIST = README Makefile.am.in *.m4 \
|
||||
|fmt | (tr '\012' @; echo) \
|
||||
( (echo EXTRA_DIST = README Makefile.am.in | tr '\012' @); \
|
||||
(echo *.m4|tr ' ' @) ) \
|
||||
|sed 's/@$$/%/;s/@/ \\@/g' |tr @% '\012\012' \
|
||||
>> $@t
|
||||
sed -n '/^##m4-files-end/,$$p' $< >> $@t
|
||||
|
||||
114
m4/Makefile.in
114
m4/Makefile.in
@@ -1,6 +1,6 @@
|
||||
# Makefile.in generated automatically by automake 1.3b from Makefile.am
|
||||
# Makefile.in generated automatically by automake 1.4a from Makefile.am
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
@@ -11,7 +11,7 @@
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
|
||||
SHELL = /bin/sh
|
||||
SHELL = @SHELL@
|
||||
|
||||
srcdir = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
@@ -46,7 +46,7 @@ AUTOMAKE = @AUTOMAKE@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
transform = @program_transform_name@
|
||||
@@ -62,8 +62,8 @@ CATOBJEXT = @CATOBJEXT@
|
||||
CC = @CC@
|
||||
CPP = @CPP@
|
||||
DATADIRNAME = @DATADIRNAME@
|
||||
DF_PROG = @DF_PROG@
|
||||
GENCAT = @GENCAT@
|
||||
GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
|
||||
GMOFILES = @GMOFILES@
|
||||
GMSGFMT = @GMSGFMT@
|
||||
GT_NO = @GT_NO@
|
||||
@@ -73,16 +73,24 @@ INSTOBJEXT = @INSTOBJEXT@
|
||||
INTLDEPS = @INTLDEPS@
|
||||
INTLLIBS = @INTLLIBS@
|
||||
INTLOBJS = @INTLOBJS@
|
||||
KMEM_GROUP = @KMEM_GROUP@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIB_CRYPT = @LIB_CRYPT@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MAN = @MAN@
|
||||
MKINSTALLDIRS = @MKINSTALLDIRS@
|
||||
MSGFMT = @MSGFMT@
|
||||
MVDIR_PROG = @MVDIR_PROG@
|
||||
NEED_SETGID = @NEED_SETGID@
|
||||
OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
|
||||
OPTIONAL_BIN_ZCRIPTS = @OPTIONAL_BIN_ZCRIPTS@
|
||||
PACKAGE = @PACKAGE@
|
||||
PERL = @PERL@
|
||||
POFILES = @POFILES@
|
||||
POSUB = @POSUB@
|
||||
POW_LIBM = @POW_LIBM@
|
||||
RANLIB = @RANLIB@
|
||||
SEQ_LIBM = @SEQ_LIBM@
|
||||
SQRT_LIBM = @SQRT_LIBM@
|
||||
U = @U@
|
||||
USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@
|
||||
USE_NLS = @USE_NLS@
|
||||
@@ -90,14 +98,8 @@ VERSION = @VERSION@
|
||||
YACC = @YACC@
|
||||
l = @l@
|
||||
|
||||
EXTRA_DIST = README Makefile.am.in assert.m4 check-decl.m4 check-type.m4 \
|
||||
chown.m4 const.m4 d-ino.m4 d-type.m4 decl.m4 error.m4 fnmatch.m4 \
|
||||
fstypename.m4 getgroups.m4 getline.m4 getloadavg.m4 gettext.m4 glibc.m4 \
|
||||
inttypes_h.m4 isc-posix.m4 jm-glibc-io.m4 jm-macros.m4 jm-mktime.m4 \
|
||||
jm-winsz1.m4 jm-winsz2.m4 lchown.m4 lcmessage.m4 lfs.m4 ls-mntd-fs.m4 \
|
||||
lstat.m4 malloc.m4 memcmp.m4 mktime.m4 perl.m4 prereq.m4 progtest.m4 \
|
||||
putenv.m4 readdir.m4 realloc.m4 regex.m4 st_dm_mode.m4 st_mtim.m4 stat.m4 \
|
||||
strftime.m4 uintmax_t.m4 uptime.m4 utimbuf.m4 utime.m4 utimes.m4
|
||||
EXTRA_DIST = README Makefile.am.in afs.m4 assert.m4 check-decl.m4 check-type.m4 chown.m4 const.m4 d-ino.m4 d-type.m4 decl.m4 error.m4 fnmatch.m4 fstypename.m4 getgroups.m4 getline.m4 getloadavg.m4 gettext.m4 glibc.m4 group-member.m4 inttypes_h.m4 isc-posix.m4 jm-glibc-io.m4 jm-macros.m4 jm-mktime.m4 jm-winsz1.m4 jm-winsz2.m4 lchown.m4 lcmessage.m4 lfs.m4 ls-mntd-fs.m4 lstat.m4 malloc.m4 memcmp.m4 perl.m4 prereq.m4 progtest.m4 putenv.m4 readdir.m4 realloc.m4 regex.m4 st_dm_mode.m4 st_mtim.m4 stat.m4 strftime.m4 uintmax_t.m4 uptime.m4 utimbuf.m4 utime.m4 utimes.m4
|
||||
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
||||
CONFIG_HEADER = ../config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
@@ -106,12 +108,11 @@ DIST_COMMON = README ChangeLog Makefile.am Makefile.in
|
||||
|
||||
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
|
||||
|
||||
TAR = tar
|
||||
GZIP = --best
|
||||
all: Makefile
|
||||
|
||||
TAR = gtar
|
||||
GZIP_ENV = --best
|
||||
all: all-redirect
|
||||
.SUFFIXES:
|
||||
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
|
||||
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
|
||||
cd $(top_srcdir) && $(AUTOMAKE) --gnits m4/Makefile
|
||||
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
|
||||
@@ -134,27 +135,37 @@ distdir: $(DISTFILES)
|
||||
&& $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnits m4/Makefile
|
||||
@for file in $(DISTFILES); do \
|
||||
d=$(srcdir); \
|
||||
test -f $(distdir)/$$file \
|
||||
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file; \
|
||||
if test -d $$d/$$file; then \
|
||||
cp -pr $$/$$file $(distdir)/$$file; \
|
||||
else \
|
||||
test -f $(distdir)/$$file \
|
||||
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file || :; \
|
||||
fi; \
|
||||
done
|
||||
info:
|
||||
dvi:
|
||||
check: all
|
||||
installcheck:
|
||||
install-exec:
|
||||
@$(NORMAL_INSTALL)
|
||||
info-am:
|
||||
info: info-am
|
||||
dvi-am:
|
||||
dvi: dvi-am
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
installcheck-am:
|
||||
installcheck: installcheck-am
|
||||
install-exec-am:
|
||||
install-exec: install-exec-am
|
||||
|
||||
install-data:
|
||||
@$(NORMAL_INSTALL)
|
||||
|
||||
install: install-exec install-data all
|
||||
@:
|
||||
|
||||
uninstall:
|
||||
install-data-am:
|
||||
install-data: install-data-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
install: install-am
|
||||
uninstall-am:
|
||||
uninstall: uninstall-am
|
||||
all-am: Makefile
|
||||
all-redirect: all-am
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install
|
||||
$(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
|
||||
installdirs:
|
||||
|
||||
|
||||
@@ -167,28 +178,37 @@ distclean-generic:
|
||||
-rm -f config.cache config.log stamp-h stamp-h[0-9]*
|
||||
|
||||
maintainer-clean-generic:
|
||||
mostlyclean: mostlyclean-generic
|
||||
mostlyclean-am: mostlyclean-generic
|
||||
|
||||
clean: clean-generic mostlyclean
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
distclean: distclean-generic clean
|
||||
-rm -f config.status
|
||||
clean-am: clean-generic mostlyclean-am
|
||||
|
||||
maintainer-clean: maintainer-clean-generic distclean
|
||||
clean: clean-am
|
||||
|
||||
distclean-am: distclean-generic clean-am
|
||||
|
||||
distclean: distclean-am
|
||||
|
||||
maintainer-clean-am: maintainer-clean-generic distclean-am
|
||||
@echo "This command is intended for maintainers to use;"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
|
||||
.PHONY: tags distdir info dvi installcheck install-exec install-data \
|
||||
install uninstall all installdirs mostlyclean-generic distclean-generic \
|
||||
clean-generic maintainer-clean-generic clean mostlyclean distclean \
|
||||
maintainer-clean
|
||||
maintainer-clean: maintainer-clean-am
|
||||
|
||||
.PHONY: tags distdir info-am info dvi-am dvi check check-am \
|
||||
installcheck-am installcheck install-exec-am install-exec \
|
||||
install-data-am install-data install-am install uninstall-am uninstall \
|
||||
all-redirect all-am all installdirs mostlyclean-generic \
|
||||
distclean-generic clean-generic maintainer-clean-generic clean \
|
||||
mostlyclean distclean maintainer-clean
|
||||
|
||||
|
||||
Makefile.am: Makefile.am.in
|
||||
rm -f $@ $@t
|
||||
sed -n '1,/^##m4-files-begin/p' $< > $@t
|
||||
echo EXTRA_DIST = README Makefile.am.in *.m4 \
|
||||
|fmt | (tr '\012' @; echo) \
|
||||
( (echo EXTRA_DIST = README Makefile.am.in | tr '\012' @); \
|
||||
(echo *.m4|tr ' ' @) ) \
|
||||
|sed 's/@$$/%/;s/@/ \\@/g' |tr @% '\012\012' \
|
||||
>> $@t
|
||||
sed -n '/^##m4-files-end/,$$p' $< >> $@t
|
||||
|
||||
7
m4/afs.m4
Normal file
7
m4/afs.m4
Normal file
@@ -0,0 +1,7 @@
|
||||
#serial 1
|
||||
|
||||
AC_DEFUN(jm_AFS,
|
||||
AC_CHECKING(for AFS)
|
||||
test -d /afs \
|
||||
&& AC_DEFINE(AFS, 1, [Define if you have the Andrew File System.])
|
||||
)
|
||||
10
m4/assert.m4
10
m4/assert.m4
@@ -1,13 +1,13 @@
|
||||
#serial 1
|
||||
#serial 2
|
||||
dnl based on code from Eleftherios Gkioulekas
|
||||
|
||||
AC_DEFUN(jm_ASSERT,
|
||||
[
|
||||
AC_MSG_CHECKING(whether to enable assertions)
|
||||
AC_ARG_ENABLE(assert,
|
||||
[ --disable-assert turn off assertions],
|
||||
[ AC_MSG_RESULT(no)
|
||||
AC_DEFINE(NDEBUG) ],
|
||||
[ AC_MSG_RESULT(yes) ]
|
||||
[ --disable-assert turn off assertions],
|
||||
[ AC_MSG_RESULT(no)
|
||||
AC_DEFINE(NDEBUG,1,[Define to 1 if assertions should be disabled.]) ],
|
||||
[ AC_MSG_RESULT(yes) ]
|
||||
)
|
||||
])
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#serial 4
|
||||
#serial 5
|
||||
|
||||
dnl This is just a wrapper function to encapsulate this kludge.
|
||||
dnl Putting it in a separate file like this helps share it between
|
||||
@@ -24,15 +24,22 @@ AC_DEFUN(jm_CHECK_DECLS,
|
||||
# include <unistd.h>
|
||||
#endif
|
||||
'
|
||||
|
||||
if test x = y; then
|
||||
dnl This code is deliberately never run via ./configure.
|
||||
dnl FIXME: this is a gross hack to make autoheader put entries
|
||||
dnl for each of these symbols in the config.h.in.
|
||||
dnl Otherwise, I'd have to update acconfig.h every time I change
|
||||
dnl this list of functions.
|
||||
AC_CHECK_FUNCS(DECL_FREE DECL_LSEEK DECL_MALLOC DECL_MEMCHR DECL_REALLOC \
|
||||
DECL_STPCPY DECL_STRSTR)
|
||||
AC_DEFINE(HAVE_DECL_FREE, 1, [Define if this function is declared.])
|
||||
AC_DEFINE(HAVE_DECL_LSEEK, 1, [Define if this function is declared.])
|
||||
AC_DEFINE(HAVE_DECL_MALLOC, 1, [Define if this function is declared.])
|
||||
AC_DEFINE(HAVE_DECL_MEMCHR, 1, [Define if this function is declared.])
|
||||
AC_DEFINE(HAVE_DECL_REALLOC, 1, [Define if this function is declared.])
|
||||
AC_DEFINE(HAVE_DECL_STPCPY, 1, [Define if this function is declared.])
|
||||
AC_DEFINE(HAVE_DECL_STRSTR, 1, [Define if this function is declared.])
|
||||
fi
|
||||
|
||||
jm_CHECK_DECLARATIONS($headers, free lseek malloc \
|
||||
memchr realloc stpcpy strstr)
|
||||
])
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
#serial 1
|
||||
#serial 2
|
||||
|
||||
dnl Just like AC_CHECK_TYPE from autoconf-2.12, but also checks in unistd.h
|
||||
dnl on systems that have it. Fujitsu UXP/V needs this for ssize_t.
|
||||
dnl Now, also uses the three-argument form of AC_DEFINE.
|
||||
|
||||
undefine([AC_CHECK_TYPE])
|
||||
dnl AC_CHECK_TYPE(TYPE, DEFAULT)
|
||||
@@ -23,6 +24,7 @@ changequote([,]), [#include <sys/types.h>
|
||||
#endif], ac_cv_type_$1=yes, ac_cv_type_$1=no)])dnl
|
||||
AC_MSG_RESULT($ac_cv_type_$1)
|
||||
if test $ac_cv_type_$1 = no; then
|
||||
AC_DEFINE($1, $2)
|
||||
AC_DEFINE($1, $2,
|
||||
[ Define to \`$2' if certain system header files doesn't define it.])
|
||||
fi
|
||||
])
|
||||
|
||||
13
m4/chown.m4
13
m4/chown.m4
@@ -1,14 +1,9 @@
|
||||
#serial 3
|
||||
#serial 4
|
||||
|
||||
dnl From Jim Meyering.
|
||||
dnl Determine whether chown accepts arguments of -1 for uid and gid.
|
||||
dnl If it doesn't, arrange to use the replacement function.
|
||||
dnl
|
||||
dnl If you use this macro in a package, you should
|
||||
dnl add the following two lines to acconfig.h:
|
||||
dnl /* Define to rpl_chown if the replacement function should be used. */
|
||||
dnl #undef chown
|
||||
dnl
|
||||
|
||||
AC_DEFUN(jm_FUNC_CHOWN,
|
||||
[AC_REQUIRE([AC_TYPE_UID_T])dnl
|
||||
@@ -47,7 +42,9 @@ AC_DEFUN(jm_FUNC_CHOWN,
|
||||
jm_cv_func_working_chown=no)
|
||||
])
|
||||
if test $jm_cv_func_working_chown = no; then
|
||||
LIBOBJS="$LIBOBJS chown.o"
|
||||
AC_DEFINE_UNQUOTED(chown, rpl_chown)
|
||||
AC_SUBST(LIBOBJS)
|
||||
LIBOBJS="$LIBOBJS chown.$ac_objext"
|
||||
AC_DEFINE_UNQUOTED(chown, rpl_chown,
|
||||
[Define to rpl_chown if the replacement function should be used.])
|
||||
fi
|
||||
])
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#serial 1
|
||||
#serial 2
|
||||
|
||||
dnl From Jim Meyering.
|
||||
dnl
|
||||
@@ -34,7 +34,9 @@ AC_DEFUN(jm_STRUCT_DIRENT_D_INO,
|
||||
]
|
||||
)
|
||||
if test $jm_cv_struct_dirent_d_ino = yes; then
|
||||
AC_DEFINE(D_INO_IN_DIRENT)
|
||||
AC_DEFINE(D_INO_IN_DIRENT, 1,
|
||||
[Define if there is a member named d_ino in the struct describing
|
||||
directory headers.])
|
||||
fi
|
||||
]
|
||||
)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#serial 1
|
||||
#serial 2
|
||||
|
||||
dnl From Jim Meyering.
|
||||
dnl
|
||||
@@ -34,7 +34,9 @@ AC_DEFUN(jm_STRUCT_DIRENT_D_TYPE,
|
||||
]
|
||||
)
|
||||
if test $jm_cv_struct_dirent_d_type = yes; then
|
||||
AC_DEFINE(D_TYPE_IN_DIRENT)
|
||||
AC_DEFINE(D_TYPE_IN_DIRENT, 1,
|
||||
[Define if there is a member named d_type in the struct describing
|
||||
directory headers.])
|
||||
fi
|
||||
]
|
||||
)
|
||||
|
||||
@@ -1,13 +1,8 @@
|
||||
#serial 1
|
||||
#serial 2
|
||||
|
||||
dnl Determine whether to add fnmatch.o to LIBOBJS and to
|
||||
dnl define fnmatch to rpl_fnmatch.
|
||||
dnl
|
||||
dnl If you use this macro in a package, you should
|
||||
dnl add the following two lines to acconfig.h:
|
||||
dnl /* Define to rpl_fnmatch if the replacement function should be used. */
|
||||
dnl #undef fnmatch
|
||||
dnl
|
||||
|
||||
AC_DEFUN(jm_FUNC_FNMATCH,
|
||||
[
|
||||
@@ -15,7 +10,9 @@ AC_DEFUN(jm_FUNC_FNMATCH,
|
||||
AC_FUNC_FNMATCH
|
||||
if test $ac_cv_func_fnmatch_works = no \
|
||||
&& test $ac_cv_gnu_library = no; then
|
||||
LIBOBJS="$LIBOBJS fnmatch.o"
|
||||
AC_DEFINE_UNQUOTED(fnmatch, rpl_fnmatch)
|
||||
AC_SUBST(LIBOBJS)
|
||||
LIBOBJS="$LIBOBJS fnmatch.$ac_objext"
|
||||
AC_DEFINE_UNQUOTED(fnmatch, rpl_fnmatch,
|
||||
[Define to rpl_fnmatch if the replacement function should be used.])
|
||||
fi
|
||||
])
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#serial 1
|
||||
#serial 2
|
||||
|
||||
dnl From Jim Meyering.
|
||||
dnl
|
||||
@@ -25,18 +25,8 @@ AC_DEFUN(jm_FSTYPENAME,
|
||||
)
|
||||
|
||||
if test $fu_cv_sys_f_fstypename_in_statfs = yes; then
|
||||
if test x = y; then
|
||||
# This code is deliberately never run via ./configure.
|
||||
# FIXME: this is a hack to make autoheader put the corresponding
|
||||
# HAVE_* undef for this symbol in config.h.in. This saves me the
|
||||
# trouble of having to maintain the #undef in acconfig.h manually.
|
||||
AC_CHECK_FUNCS(F_FSTYPENAME_IN_STATFS)
|
||||
fi
|
||||
# Defining it this way (rather than via AC_DEFINE) short-circuits the
|
||||
# autoheader check -- autoheader doesn't know it's already been taken
|
||||
# care of by the hack above.
|
||||
ac_kludge=HAVE_F_FSTYPENAME_IN_STATFS
|
||||
AC_DEFINE_UNQUOTED($ac_kludge)
|
||||
AC_DEFINE_UNQUOTED(HAVE_F_FSTYPENAME_IN_STATFS, 1,
|
||||
[Define if struct statfs has the f_fstypename member.])
|
||||
fi
|
||||
]
|
||||
)
|
||||
|
||||
@@ -1,10 +1,6 @@
|
||||
#serial 2
|
||||
#serial 3
|
||||
|
||||
dnl From Jim Meyering.
|
||||
dnl If you use this macro in a package, you should
|
||||
dnl add the following two lines to acconfig.h:
|
||||
dnl /* Define to rpl_getgroups if the replacement function should be used. */
|
||||
dnl #undef getgroups
|
||||
dnl
|
||||
dnl Invoking code should check $GETGROUPS_LIB something like this:
|
||||
dnl jm_FUNC_GETGROUPS
|
||||
@@ -42,8 +38,10 @@ AC_DEFUN(jm_FUNC_GETGROUPS,
|
||||
jm_cv_func_working_getgroups=no)
|
||||
])
|
||||
if test $jm_cv_func_working_getgroups = no; then
|
||||
LIBOBJS="$LIBOBJS getgroups.o"
|
||||
AC_DEFINE_UNQUOTED(getgroups, rpl_getgroups)
|
||||
AC_SUBST(LIBOBJS)
|
||||
LIBOBJS="$LIBOBJS getgroups.$ac_objext"
|
||||
AC_DEFINE_UNQUOTED(getgroups, rpl_getgroups,
|
||||
[Define as rpl_getgroups if getgroups doesn't work right.])
|
||||
fi
|
||||
fi
|
||||
])
|
||||
|
||||
@@ -39,7 +39,7 @@ AC_DEFUN(AM_FUNC_GETLINE,
|
||||
fi
|
||||
|
||||
if test $am_cv_func_working_getline = no; then
|
||||
LIBOBJS="$LIBOBJS getline.o"
|
||||
LIBOBJS="$LIBOBJS getline.$ac_objext"
|
||||
AC_SUBST(LIBOBJS)dnl
|
||||
fi
|
||||
])
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#serial 3
|
||||
#serial 4
|
||||
|
||||
AC_DEFUN(AM_FUNC_GETLOADAVG,
|
||||
[ac_have_func=no # yes means we've found a way to get the load average.
|
||||
@@ -40,13 +40,16 @@ if test $ac_cv_func_getloadavg = yes; then
|
||||
AC_DEFINE(HAVE_GETLOADAVG)
|
||||
ac_have_func=yes
|
||||
else
|
||||
AC_DEFINE(C_GETLOADAVG)
|
||||
AC_DEFINE(C_GETLOADAVG, 1, [Define if using getloadavg.c.])
|
||||
# Figure out what our getloadavg.c needs.
|
||||
ac_have_func=no
|
||||
AC_CHECK_HEADER(sys/dg_sys_info.h,
|
||||
[ac_have_func=yes; AC_DEFINE(DGUX)
|
||||
AC_CHECK_LIB(dgc, dg_sys_info)])
|
||||
|
||||
AC_CHECK_HEADER(locale.h)
|
||||
AC_CHECK_FUNCS(setlocale)
|
||||
|
||||
# We cannot check for <dwarf.h>, because Solaris 2 does not use dwarf (it
|
||||
# uses stabs), but it is still SVR4. We cannot check for <elf.h> because
|
||||
# Irix 4.0.5F has the header but not the library.
|
||||
|
||||
@@ -6,7 +6,9 @@
|
||||
# but which still want to provide support for the GNU gettext functionality.
|
||||
# Please note that the actual code is *not* freely available.
|
||||
|
||||
# serial 105
|
||||
# serial 106
|
||||
|
||||
AC_PREREQ(2.13) dnl Minimum Autoconf version required.
|
||||
|
||||
AC_DEFUN(AM_WITH_NLS,
|
||||
[AC_MSG_CHECKING([whether NLS is requested])
|
||||
@@ -21,7 +23,7 @@ AC_DEFUN(AM_WITH_NLS,
|
||||
|
||||
dnl If we use NLS figure out what method
|
||||
if test "$USE_NLS" = "yes"; then
|
||||
AC_DEFINE(ENABLE_NLS)
|
||||
AC_DEFINE(ENABLE_NLS, 1, [Define to 1 if NLS is requested.])
|
||||
AC_MSG_CHECKING([whether included gettext is requested])
|
||||
AC_ARG_WITH(included-gettext,
|
||||
[ --with-included-gettext use the GNU gettext library included here],
|
||||
@@ -61,7 +63,8 @@ AC_DEFUN(AM_WITH_NLS,
|
||||
|
||||
if test "$gt_cv_func_gettext_libc" = "yes" \
|
||||
|| test "$gt_cv_func_gettext_libintl" = "yes"; then
|
||||
AC_DEFINE(HAVE_GETTEXT)
|
||||
AC_DEFINE(HAVE_GETTEXT, 1,
|
||||
[Define to 1 if you have gettext and don't want to use GNU gettext.])
|
||||
AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
|
||||
[test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)dnl
|
||||
if test "$MSGFMT" != "no"; then
|
||||
@@ -91,7 +94,8 @@ AC_DEFUN(AM_WITH_NLS,
|
||||
dnl No gettext in C library. Try catgets next.
|
||||
AC_CHECK_LIB(i, main)
|
||||
AC_CHECK_FUNC(catgets,
|
||||
[AC_DEFINE(HAVE_CATGETS)
|
||||
[AC_DEFINE(HAVE_CATGETS, 1,
|
||||
[Define as 1 if you have catgets and don't want to use GNU gettext.])
|
||||
INTLOBJS="\$(CATOBJS)"
|
||||
AC_PATH_PROG(GENCAT, gencat, no)dnl
|
||||
if test "$GENCAT" != "no"; then
|
||||
@@ -224,7 +228,7 @@ strdup __argz_count __argz_stringify __argz_next])
|
||||
AC_CHECK_FUNCS(stpcpy)
|
||||
fi
|
||||
if test "${ac_cv_func_stpcpy}" = "yes"; then
|
||||
AC_DEFINE(HAVE_STPCPY)
|
||||
AC_DEFINE(HAVE_STPCPY, 1, [Define to 1 if you have the stpcpy function.])
|
||||
fi
|
||||
|
||||
AM_LC_MESSAGES
|
||||
@@ -310,7 +314,7 @@ strdup __argz_count __argz_stringify __argz_next])
|
||||
dnl be included in po/Makefile.
|
||||
test -d po || mkdir po
|
||||
if test "x$srcdir" != "x."; then
|
||||
if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then
|
||||
if test "x`echo $srcdir | sed -e 's@^[A-z]:@@' -e 's@/.*@@'`" = "x"; then
|
||||
posrcprefix="$srcdir/"
|
||||
else
|
||||
posrcprefix="../$srcdir/"
|
||||
|
||||
12
m4/group-member.m4
Normal file
12
m4/group-member.m4
Normal file
@@ -0,0 +1,12 @@
|
||||
#serial 1
|
||||
|
||||
dnl Written by Jim Meyering
|
||||
|
||||
AC_DEFUN(jm_FUNC_GROUP_MEMBER,
|
||||
[
|
||||
dnl Do this replacement check manually because I want the hyphen
|
||||
dnl (not the underscore) in the filename.
|
||||
AC_CHECK_FUNC(group_member, , [LIBOBJS="$LIBOBJS group-member.$ac_objext"])
|
||||
AC_SUBST(LIBOBJS)
|
||||
]
|
||||
)
|
||||
@@ -1,4 +1,4 @@
|
||||
#serial 2
|
||||
#serial 3
|
||||
|
||||
dnl From Paul Eggert.
|
||||
|
||||
@@ -7,12 +7,6 @@ dnl From Paul Eggert.
|
||||
|
||||
AC_DEFUN(jm_AC_HEADER_INTTYPES_H,
|
||||
[
|
||||
if test x = y; then
|
||||
dnl This code is deliberately never run via ./configure.
|
||||
dnl FIXME: this is a gross hack to make autoheader put an entry
|
||||
dnl for `HAVE_INTTYPES_H' in config.h.in.
|
||||
AC_CHECK_FUNCS(INTTYPES_H)
|
||||
fi
|
||||
AC_CACHE_CHECK([for inttypes.h], jm_ac_cv_header_inttypes_h,
|
||||
[AC_TRY_COMPILE(
|
||||
[#include <sys/types.h>
|
||||
@@ -21,7 +15,8 @@ AC_DEFUN(jm_AC_HEADER_INTTYPES_H,
|
||||
jm_ac_cv_header_inttypes_h=yes,
|
||||
jm_ac_cv_header_inttypes_h=no)])
|
||||
if test $jm_ac_cv_header_inttypes_h = yes; then
|
||||
ac_kludge=HAVE_INTTYPES_H
|
||||
AC_DEFINE_UNQUOTED($ac_kludge)
|
||||
AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H, 1,
|
||||
[Define if <inttypes.h> exists, doesn't clash with <sys/types.h>,
|
||||
and declares uintmax_t. ])
|
||||
fi
|
||||
])
|
||||
|
||||
@@ -1,13 +1,16 @@
|
||||
#serial 2
|
||||
#serial 6
|
||||
|
||||
dnl Misc type-related macros for fileutils, sh-utils, textutils.
|
||||
|
||||
AC_DEFUN(jm_MACROS,
|
||||
[
|
||||
AC_PREREQ(2.13) dnl Minimum Autoconf version required.
|
||||
|
||||
dnl This macro actually runs replacement code. See isc-posix.m4.
|
||||
AC_REQUIRE([AC_ISC_POSIX])dnl
|
||||
|
||||
AC_REQUIRE([jm_WITH_REGEX])
|
||||
jm_WITH_REGEX([lib/regex.c])
|
||||
|
||||
AC_REQUIRE([jm_ASSERT])
|
||||
AC_REQUIRE([jm_AC_HEADER_INTTYPES_H])
|
||||
AC_REQUIRE([jm_AC_TYPE_UINTMAX_T])
|
||||
@@ -30,4 +33,12 @@ AC_DEFUN(jm_MACROS,
|
||||
AC_REQUIRE([jm_FUNC_MEMCMP])
|
||||
AC_REQUIRE([jm_FUNC_GLIBC_UNLOCKED_IO])
|
||||
AC_REQUIRE([jm_FUNC_FNMATCH])
|
||||
AC_REQUIRE([jm_AFS])
|
||||
AC_REPLACE_FUNCS(strcasecmp strncasecmp)
|
||||
|
||||
# By default, argmatch should fail calling usage (1).
|
||||
AC_DEFINE(ARGMATCH_DIE, [usage (1)],
|
||||
[Define to the function xargmatch calls on failures.])
|
||||
AC_DEFINE(ARGMATCH_DIE_DECL, [extern void usage ()],
|
||||
[Define to the declaration of the xargmatch failure function.])
|
||||
])
|
||||
|
||||
@@ -1,18 +1,16 @@
|
||||
#serial 3
|
||||
#serial 5
|
||||
|
||||
dnl From Jim Meyering.
|
||||
dnl If you use this macro in a package, you should
|
||||
dnl add the following two lines to acconfig.h:
|
||||
dnl /* Define to rpl_mktime if the replacement function should be used. */
|
||||
dnl #undef mktime
|
||||
dnl
|
||||
dnl A wrapper around AM_FUNC_MKTIME.
|
||||
|
||||
AC_DEFUN(jm_FUNC_MKTIME,
|
||||
[AC_REQUIRE([jm_AM_FUNC_MKTIME])dnl
|
||||
[AC_REQUIRE([AM_FUNC_MKTIME])dnl
|
||||
|
||||
dnl mktime.c uses localtime_r if it exists. Check for it.
|
||||
AC_CHECK_FUNCS(localtime_r)
|
||||
|
||||
if test $jm_am_cv_func_working_mktime = no; then
|
||||
AC_DEFINE_UNQUOTED(mktime, rpl_mktime)
|
||||
if test $am_cv_func_working_mktime = no; then
|
||||
AC_DEFINE_UNQUOTED(mktime, rpl_mktime,
|
||||
[Define to gnu_mktime if the replacement function should be used.])
|
||||
fi
|
||||
])
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#serial 2
|
||||
#serial 3
|
||||
|
||||
AC_DEFUN(jm_HEADER_TIOCGWINSZ_NEEDS_SYS_IOCTL,
|
||||
[AC_REQUIRE([jm_HEADER_TIOCGWINSZ_IN_TERMIOS_H])
|
||||
@@ -17,6 +17,7 @@ AC_DEFUN(jm_HEADER_TIOCGWINSZ_NEEDS_SYS_IOCTL,
|
||||
fi
|
||||
])
|
||||
if test $jm_cv_sys_tiocgwinsz_needs_sys_ioctl_h = yes; then
|
||||
AC_DEFINE(GWINSZ_IN_SYS_IOCTL)
|
||||
AC_DEFINE(GWINSZ_IN_SYS_IOCTL, 1,
|
||||
[Define if your system defines TIOCGWINSZ in sys/ioctl.h.])
|
||||
fi
|
||||
])
|
||||
|
||||
@@ -6,7 +6,9 @@
|
||||
# but which still want to provide support for the GNU gettext functionality.
|
||||
# Please note that the actual code is *not* freely available.
|
||||
|
||||
# serial 1
|
||||
# serial 2
|
||||
|
||||
AC_PREREQ(2.13) dnl Minimum Autoconf version required.
|
||||
|
||||
AC_DEFUN(AM_LC_MESSAGES,
|
||||
[if test $ac_cv_header_locale_h = yes; then
|
||||
@@ -14,6 +16,7 @@ AC_DEFUN(AM_LC_MESSAGES,
|
||||
[AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
|
||||
am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)])
|
||||
if test $am_cv_val_LC_MESSAGES = yes; then
|
||||
AC_DEFINE(HAVE_LC_MESSAGES)
|
||||
AC_DEFINE(HAVE_LC_MESSAGES, 1,
|
||||
[Define if your locale.h file contains LC_MESSAGES.])
|
||||
fi
|
||||
fi])
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#serial 1
|
||||
#serial 2
|
||||
|
||||
dnl From Jim Meyering.
|
||||
dnl
|
||||
@@ -46,7 +46,9 @@ yes
|
||||
AC_MSG_RESULT($fu_cv_sys_mounted_cray_listmntent)
|
||||
if test $fu_cv_sys_mounted_cray_listmntent = yes; then
|
||||
list_mounted_fs=found
|
||||
AC_DEFINE(MOUNTED_LISTMNTENT)
|
||||
AC_DEFINE(MOUNTED_LISTMNTENT, 1,
|
||||
[Define if there is a function named listmntent that can be used to
|
||||
list all mounted filesystems. (UNICOS)])
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -65,7 +67,10 @@ if test $ac_cv_func_getmntent = yes; then
|
||||
AC_MSG_RESULT($fu_cv_sys_mounted_getmntent1)
|
||||
if test $fu_cv_sys_mounted_getmntent1 = yes; then
|
||||
list_mounted_fs=found
|
||||
AC_DEFINE(MOUNTED_GETMNTENT1)
|
||||
AC_DEFINE(MOUNTED_GETMNTENT1, 1,
|
||||
[Define if there is a function named getmntent for reading the list
|
||||
of mounted filesystems, and that function takes a single argument.
|
||||
(4.3BSD, SunOS, HP-UX, Dynix, Irix)])
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -79,7 +84,9 @@ if test $ac_cv_func_getmntent = yes; then
|
||||
AC_MSG_RESULT($fu_cv_sys_mounted_getmntent2)
|
||||
if test $fu_cv_sys_mounted_getmntent2 = yes; then
|
||||
list_mounted_fs=found
|
||||
AC_DEFINE(MOUNTED_GETMNTENT2)
|
||||
AC_DEFINE(MOUNTED_GETMNTENT2, 1,
|
||||
[Define if there is a function named getmntent for reading the list of
|
||||
mounted filesystems, and that function takes two arguments. (SVR4)])
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -104,7 +111,9 @@ if test -z "$list_mounted_fs"; then
|
||||
AC_MSG_RESULT($fu_cv_sys_mounted_getsstat)
|
||||
if test $fu_cv_sys_mounted_getsstat = yes; then
|
||||
list_mounted_fs=found
|
||||
AC_DEFINE(MOUNTED_GETFSSTAT)
|
||||
AC_DEFINE(MOUNTED_GETFSSTAT, 1,
|
||||
[Define if there is a function named getfsstat for reading the
|
||||
list of mounted filesystems. (DEC Alpha running OSF/1)])
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -118,7 +127,10 @@ if test -z "$list_mounted_fs"; then
|
||||
AC_MSG_RESULT($fu_cv_sys_mounted_vmount)
|
||||
if test $fu_cv_sys_mounted_vmount = yes; then
|
||||
list_mounted_fs=found
|
||||
AC_DEFINE(MOUNTED_VMOUNT)
|
||||
AC_DEFINE(MOUNTED_VMOUNT, 1,
|
||||
[Define if there is a function named mntctl that can be used to read
|
||||
the list of mounted filesystems, and there is a system header file
|
||||
that declares \`struct vmount.' (AIX)])
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -135,7 +147,10 @@ if test -z "$list_mounted_fs"; then
|
||||
AC_MSG_RESULT($fu_cv_sys_mounted_fread_fstyp)
|
||||
if test $fu_cv_sys_mounted_fread_fstyp = yes; then
|
||||
list_mounted_fs=found
|
||||
AC_DEFINE(MOUNTED_FREAD_FSTYP)
|
||||
AC_DEFINE(MOUNTED_FREAD_FSTYP, 1,
|
||||
[Define if (like SVR2) there is no specific function for reading the
|
||||
list of mounted filesystems, and your system has these header files:
|
||||
<sys/fstyp.h> and <sys/statfs.h>. (SVR3)])
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -156,7 +171,9 @@ if test -z "$list_mounted_fs"; then
|
||||
AC_MSG_RESULT($fu_cv_sys_mounted_getmntinfo)
|
||||
if test $fu_cv_sys_mounted_getmntinfo = yes; then
|
||||
list_mounted_fs=found
|
||||
AC_DEFINE(MOUNTED_GETMNTINFO)
|
||||
AC_DEFINE(MOUNTED_GETMNTINFO, 1,
|
||||
[Define if there is a function named getmntinfo for reading the
|
||||
list of mounted filesystems. (4.4BSD)])
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -174,7 +191,9 @@ if test -z "$list_mounted_fs"; then
|
||||
AC_MSG_RESULT($fu_cv_sys_mounted_getmnt)
|
||||
if test $fu_cv_sys_mounted_getmnt = yes; then
|
||||
list_mounted_fs=found
|
||||
AC_DEFINE(MOUNTED_GETMNT)
|
||||
AC_DEFINE(MOUNTED_GETMNT, 1,
|
||||
[Define if there is a function named getmnt for reading the list of
|
||||
mounted filesystems. (Ultrix)])
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -188,7 +207,9 @@ if test -z "$list_mounted_fs"; then
|
||||
AC_MSG_RESULT($fu_cv_sys_mounted_fread)
|
||||
if test $fu_cv_sys_mounted_fread = yes; then
|
||||
list_mounted_fs=found
|
||||
AC_DEFINE(MOUNTED_FREAD)
|
||||
AC_DEFINE(MOUNTED_FREAD, 1,
|
||||
[Define if there is no specific function for reading the list of
|
||||
mounted filesystems. fread will be used to read /etc/mnttab. (SVR2) ])
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
25
m4/lstat.m4
25
m4/lstat.m4
@@ -1,4 +1,4 @@
|
||||
#serial 2
|
||||
#serial 3
|
||||
|
||||
dnl From Jim Meyering.
|
||||
dnl Determine whether lstat has the bug that it succeeds when given the
|
||||
@@ -30,22 +30,11 @@ AC_DEFUN(jm_FUNC_LSTAT,
|
||||
jm_cv_func_lstat_empty_string_bug=yes)
|
||||
])
|
||||
if test $jm_cv_func_lstat_empty_string_bug = yes; then
|
||||
|
||||
LIBOBJS="$LIBOBJS lstat.o"
|
||||
|
||||
if test $jm_cv_func_lstat_empty_string_bug = yes; then
|
||||
if test x = y; then
|
||||
# This code is deliberately never run via ./configure.
|
||||
# FIXME: this is a hack to make autoheader put the corresponding
|
||||
# HAVE_* undef for this symbol in config.h.in. This saves me the
|
||||
# trouble of having to maintain the #undef in acconfig.h manually.
|
||||
AC_CHECK_FUNCS(LSTAT_EMPTY_STRING_BUG)
|
||||
fi
|
||||
# Defining it this way (rather than via AC_DEFINE) short-circuits the
|
||||
# autoheader check -- autoheader doesn't know it's already been taken
|
||||
# care of by the hack above.
|
||||
ac_kludge=HAVE_LSTAT_EMPTY_STRING_BUG
|
||||
AC_DEFINE_UNQUOTED($ac_kludge)
|
||||
fi
|
||||
AC_SUBST(LIBOBJS)
|
||||
LIBOBJS="$LIBOBJS lstat.$ac_objext"
|
||||
AC_DEFINE_UNQUOTED(HAVE_LSTAT_EMPTY_STRING_BUG, 1,
|
||||
[Define if lstat has the bug that it succeeds when given the zero-length
|
||||
file name argument. The lstat from SunOS4.1.4 and the Hurd as of 1998-11-01)
|
||||
do this. ])
|
||||
fi
|
||||
])
|
||||
|
||||
23
m4/malloc.m4
23
m4/malloc.m4
@@ -1,27 +1,16 @@
|
||||
#serial 1
|
||||
#serial 3
|
||||
|
||||
dnl From Jim Meyering.
|
||||
dnl Determine whether malloc accepts 0 as its argument.
|
||||
dnl If it doesn't, arrange to use the replacement function.
|
||||
dnl
|
||||
dnl If you use this macro in a package, you should
|
||||
dnl add the following two lines to acconfig.h:
|
||||
dnl /* Define to rpl_malloc if the replacement function should be used. */
|
||||
dnl #undef malloc
|
||||
dnl
|
||||
|
||||
AC_DEFUN(jm_FUNC_MALLOC,
|
||||
[
|
||||
if test x = y; then
|
||||
dnl This code is deliberately never run via ./configure.
|
||||
dnl FIXME: this is a gross hack to make autoheader put an entry
|
||||
dnl for this symbol in config.h.in.
|
||||
AC_CHECK_FUNCS(DONE_WORKING_MALLOC_CHECK)
|
||||
fi
|
||||
dnl xmalloc.c requires that this symbol be defined so it doesn't
|
||||
dnl mistakenly use a broken malloc -- as it might if this test were omitted.
|
||||
ac_kludge=HAVE_DONE_WORKING_MALLOC_CHECK
|
||||
AC_DEFINE_UNQUOTED($ac_kludge)
|
||||
AC_DEFINE_UNQUOTED(HAVE_DONE_WORKING_MALLOC_CHECK, 1,
|
||||
[Define if the malloc check has been performed. ])
|
||||
|
||||
AC_CACHE_CHECK([for working malloc], jm_cv_func_working_malloc,
|
||||
[AC_TRY_RUN([
|
||||
@@ -38,7 +27,9 @@ AC_DEFUN(jm_FUNC_MALLOC,
|
||||
jm_cv_func_working_malloc=no)
|
||||
])
|
||||
if test $jm_cv_func_working_malloc = no; then
|
||||
LIBOBJS="$LIBOBJS malloc.o"
|
||||
AC_DEFINE_UNQUOTED(malloc, rpl_malloc)
|
||||
AC_SUBST(LIBOBJS)
|
||||
LIBOBJS="$LIBOBJS malloc.$ac_objext"
|
||||
AC_DEFINE_UNQUOTED(malloc, rpl_malloc,
|
||||
[Define to rpl_malloc if the replacement function should be used.])
|
||||
fi
|
||||
])
|
||||
|
||||
13
m4/memcmp.m4
13
m4/memcmp.m4
@@ -1,4 +1,4 @@
|
||||
#serial 2
|
||||
#serial 3
|
||||
|
||||
dnl A replacement for autoconf's AC_FUNC_MEMCMP that detects
|
||||
dnl the losing memcmp on some x86 Next systems.
|
||||
@@ -38,18 +38,15 @@ changequote([, ])dnl
|
||||
jm_cv_func_memcmp_working=yes,
|
||||
jm_cv_func_memcmp_working=no,
|
||||
jm_cv_func_memcmp_working=no)])
|
||||
test $jm_cv_func_memcmp_working = no && LIBOBJS="$LIBOBJS memcmp.o"
|
||||
test $jm_cv_func_memcmp_working = no \
|
||||
&& LIBOBJS="$LIBOBJS memcmp.$ac_objext"
|
||||
AC_SUBST(LIBOBJS)dnl
|
||||
])
|
||||
|
||||
dnl If you use this macro in a package, you should
|
||||
dnl add the following two lines to acconfig.h:
|
||||
dnl /* Define to rpl_memcmp if the replacement function should be used. */
|
||||
dnl #undef memcmp
|
||||
dnl
|
||||
AC_DEFUN(jm_FUNC_MEMCMP,
|
||||
[AC_REQUIRE([jm_AC_FUNC_MEMCMP])dnl
|
||||
if test $jm_cv_func_memcmp_working = no; then
|
||||
AC_DEFINE_UNQUOTED(memcmp, rpl_memcmp)
|
||||
AC_DEFINE_UNQUOTED(memcmp, rpl_memcmp,
|
||||
[Define to rpl_memcmp if the replacement function should be used.])
|
||||
fi
|
||||
])
|
||||
|
||||
166
m4/mktime.m4
166
m4/mktime.m4
@@ -1,166 +0,0 @@
|
||||
#serial 1001
|
||||
|
||||
dnl Just like mktime.m4 from automake-1.3b, but with an additional test.
|
||||
dnl Renamed to have jm_ prefix and to use jm_ prefix on cache variable names.
|
||||
|
||||
AC_DEFUN(jm_AM_FUNC_MKTIME,
|
||||
[AC_REQUIRE([AC_HEADER_TIME])dnl
|
||||
AC_CHECK_HEADERS(sys/time.h unistd.h)
|
||||
AC_CHECK_FUNCS(alarm)
|
||||
AC_CACHE_CHECK([for working mktime], jm_am_cv_func_working_mktime,
|
||||
[AC_TRY_RUN(
|
||||
changequote(<<, >>)dnl
|
||||
<</* Test program from Paul Eggert (eggert@twinsun.com)
|
||||
and Tony Leneis (tony@plaza.ds.adp.com). */
|
||||
#if TIME_WITH_SYS_TIME
|
||||
# include <sys/time.h>
|
||||
# include <time.h>
|
||||
#else
|
||||
# if HAVE_SYS_TIME_H
|
||||
# include <sys/time.h>
|
||||
# else
|
||||
# include <time.h>
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if HAVE_UNISTD_H
|
||||
# include <unistd.h>
|
||||
#endif
|
||||
|
||||
#if !HAVE_ALARM
|
||||
# define alarm(X) /* empty */
|
||||
#endif
|
||||
|
||||
/* Work around redefinition to rpl_putenv by other config tests. */
|
||||
#undef putenv
|
||||
|
||||
static time_t time_t_max;
|
||||
|
||||
/* Values we'll use to set the TZ environment variable. */
|
||||
static const char *const tz_strings[] = {
|
||||
(const char *) 0, "TZ=GMT0", "TZ=JST-9",
|
||||
"TZ=EST+3EDT+2,M10.1.0/00:00:00,M2.3.0/00:00:00"
|
||||
};
|
||||
#define N_STRINGS (sizeof (tz_strings) / sizeof (tz_strings[0]))
|
||||
|
||||
/* Fail if mktime fails to convert a date in the spring-forward gap.
|
||||
Based on a problem report from Andreas Jaeger. */
|
||||
static void
|
||||
spring_forward_gap ()
|
||||
{
|
||||
/* glibc (up to about 1998-10-07) failed this test) */
|
||||
struct tm tm;
|
||||
|
||||
/* Use the portable POSIX.1 specification "TZ=PST8PDT,M4.1.0,M10.5.0"
|
||||
instead of "TZ=America/Vancouver" in order to detect the bug even
|
||||
on systems that don't support the Olson extension, or don't have the
|
||||
full zoneinfo tables installed. */
|
||||
putenv ("TZ=PST8PDT,M4.1.0,M10.5.0");
|
||||
tm.tm_year = 98;
|
||||
tm.tm_mon = 3;
|
||||
tm.tm_mday = 5;
|
||||
tm.tm_hour = 2;
|
||||
tm.tm_min = 0;
|
||||
tm.tm_sec = 0;
|
||||
tm.tm_isdst = -1;
|
||||
if (mktime (&tm) == (time_t)-1)
|
||||
exit (1);
|
||||
}
|
||||
|
||||
static void
|
||||
mktime_test (now)
|
||||
time_t now;
|
||||
{
|
||||
struct tm *lt;
|
||||
if ((lt = localtime (&now)) && mktime (lt) != now)
|
||||
exit (1);
|
||||
now = time_t_max - now;
|
||||
if ((lt = localtime (&now)) && mktime (lt) != now)
|
||||
exit (1);
|
||||
}
|
||||
|
||||
static void
|
||||
irix_6_4_bug ()
|
||||
{
|
||||
/* Based on code from Ariel Faigon. */
|
||||
struct tm tm;
|
||||
tm.tm_year = 96;
|
||||
tm.tm_mon = 3;
|
||||
tm.tm_mday = 0;
|
||||
tm.tm_hour = 0;
|
||||
tm.tm_min = 0;
|
||||
tm.tm_sec = 0;
|
||||
tm.tm_isdst = -1;
|
||||
mktime (&tm);
|
||||
if (tm.tm_mon != 2 || tm.tm_mday != 31)
|
||||
exit (1);
|
||||
}
|
||||
|
||||
static void
|
||||
bigtime_test (j)
|
||||
int j;
|
||||
{
|
||||
struct tm tm;
|
||||
time_t now;
|
||||
tm.tm_year = tm.tm_mon = tm.tm_mday = tm.tm_hour = tm.tm_min = tm.tm_sec = j;
|
||||
/* This test makes some buggy mktime implementations loop.
|
||||
Give up after 10 seconds. */
|
||||
alarm (10);
|
||||
now = mktime (&tm);
|
||||
alarm (0);
|
||||
if (now != (time_t) -1)
|
||||
{
|
||||
struct tm *lt = localtime (&now);
|
||||
if (! (lt
|
||||
&& lt->tm_year == tm.tm_year
|
||||
&& lt->tm_mon == tm.tm_mon
|
||||
&& lt->tm_mday == tm.tm_mday
|
||||
&& lt->tm_hour == tm.tm_hour
|
||||
&& lt->tm_min == tm.tm_min
|
||||
&& lt->tm_sec == tm.tm_sec
|
||||
&& lt->tm_yday == tm.tm_yday
|
||||
&& lt->tm_wday == tm.tm_wday
|
||||
&& ((lt->tm_isdst < 0 ? -1 : 0 < lt->tm_isdst)
|
||||
== (tm.tm_isdst < 0 ? -1 : 0 < tm.tm_isdst))))
|
||||
exit (1);
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
time_t t, delta;
|
||||
int i, j;
|
||||
|
||||
spring_forward_gap ();
|
||||
for (time_t_max = 1; 0 < time_t_max; time_t_max *= 2)
|
||||
continue;
|
||||
time_t_max--;
|
||||
delta = time_t_max / 997; /* a suitable prime number */
|
||||
for (i = 0; i < N_STRINGS; i++)
|
||||
{
|
||||
if (tz_strings[i])
|
||||
putenv (tz_strings[i]);
|
||||
|
||||
for (t = 0; t <= time_t_max - delta; t += delta)
|
||||
mktime_test (t);
|
||||
mktime_test ((time_t) 60 * 60);
|
||||
mktime_test ((time_t) 60 * 60 * 24);
|
||||
|
||||
for (j = 1; 0 < j; j *= 2)
|
||||
bigtime_test (j);
|
||||
bigtime_test (j - 1);
|
||||
}
|
||||
irix_6_4_bug ();
|
||||
exit (0);
|
||||
}
|
||||
>>,
|
||||
changequote([, ])dnl
|
||||
jm_am_cv_func_working_mktime=yes, jm_am_cv_func_working_mktime=no,
|
||||
dnl When crosscompiling, assume mktime is missing or broken.
|
||||
jm_am_cv_func_working_mktime=no)
|
||||
])
|
||||
if test $jm_am_cv_func_working_mktime = no; then
|
||||
LIBOBJS="$LIBOBJS mktime.o"
|
||||
fi
|
||||
])
|
||||
13
m4/putenv.m4
13
m4/putenv.m4
@@ -1,15 +1,10 @@
|
||||
#serial 1
|
||||
#serial 2
|
||||
|
||||
dnl From Jim Meyering.
|
||||
dnl
|
||||
dnl Check whether putenv ("FOO") removes FOO from the environment.
|
||||
dnl The putenv in libc on at least SunOS 4.1.4 does *not* do that.
|
||||
dnl
|
||||
dnl If you use this macro in a package, you should
|
||||
dnl add the following two lines to acconfig.h:
|
||||
dnl /* Define to rpl_putenv if the replacement function should be used. */
|
||||
dnl #undef putenv
|
||||
dnl
|
||||
|
||||
AC_DEFUN(jm_FUNC_PUTENV,
|
||||
[AC_CACHE_CHECK([for SVID conformant putenv], jm_cv_func_svid_putenv,
|
||||
@@ -38,7 +33,9 @@ AC_DEFUN(jm_FUNC_PUTENV,
|
||||
jm_cv_func_svid_putenv=no)
|
||||
])
|
||||
if test $jm_cv_func_svid_putenv = no; then
|
||||
LIBOBJS="$LIBOBJS putenv.o"
|
||||
AC_DEFINE_UNQUOTED(putenv, rpl_putenv)
|
||||
AC_SUBST(LIBOBJS)
|
||||
LIBOBJS="$LIBOBJS putenv.$ac_objext"
|
||||
AC_DEFINE_UNQUOTED(putenv, rpl_putenv,
|
||||
[Define to rpl_memcmp if the replacement function should be used.])
|
||||
fi
|
||||
])
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#serial 1
|
||||
#serial 2
|
||||
|
||||
dnl SunOS's readdir is broken in such a way that rm.c has to add extra code
|
||||
dnl to test whether a NULL return value really means there are no more files
|
||||
@@ -126,16 +126,8 @@ AC_CACHE_CHECK([for working readdir], jm_cv_func_working_readdir,
|
||||
jm_cv_func_working_readdir=no,
|
||||
jm_cv_func_working_readdir=no)])
|
||||
|
||||
if test x = y; then
|
||||
dnl This code is deliberately never run via ./configure.
|
||||
dnl FIXME: this is a gross hack to make autoheader put an entry
|
||||
dnl for this HAVE_-prefixed symbol in config.h.in.
|
||||
AC_CHECK_FUNCS(WORKING_READDIR)
|
||||
fi
|
||||
|
||||
|
||||
if test $jm_cv_func_working_readdir = yes; then
|
||||
ac_kludge=HAVE_WORKING_READDIR
|
||||
AC_DEFINE_UNQUOTED($ac_kludge)
|
||||
AC_DEFINE_UNQUOTED(HAVE_WORKING_READDIR, 1,
|
||||
[Define if readdir is found to work properly in some unusual cases. ])
|
||||
fi
|
||||
])
|
||||
|
||||
@@ -1,27 +1,16 @@
|
||||
#serial 1
|
||||
#serial 3
|
||||
|
||||
dnl From Jim Meyering.
|
||||
dnl Determine whether realloc works when both arguments are 0.
|
||||
dnl If it doesn't, arrange to use the replacement function.
|
||||
dnl
|
||||
dnl If you use this macro in a package, you should
|
||||
dnl add the following two lines to acconfig.h:
|
||||
dnl /* Define to rpl_realloc if the replacement function should be used. */
|
||||
dnl #undef realloc
|
||||
dnl
|
||||
|
||||
AC_DEFUN(jm_FUNC_REALLOC,
|
||||
[
|
||||
if test x = y; then
|
||||
dnl This code is deliberately never run via ./configure.
|
||||
dnl FIXME: this is a gross hack to make autoheader put an entry
|
||||
dnl for this symbol in config.h.in.
|
||||
AC_CHECK_FUNCS(DONE_WORKING_REALLOC_CHECK)
|
||||
fi
|
||||
dnl xmalloc.c requires that this symbol be defined so it doesn't
|
||||
dnl mistakenly use a broken realloc -- as it might if this test were omitted.
|
||||
ac_kludge=HAVE_DONE_WORKING_REALLOC_CHECK
|
||||
AC_DEFINE_UNQUOTED($ac_kludge)
|
||||
AC_DEFINE_UNQUOTED(HAVE_DONE_WORKING_REALLOC_CHECK, 1,
|
||||
[Define if the realloc check has been performed. ])
|
||||
|
||||
AC_CACHE_CHECK([for working realloc], jm_cv_func_working_realloc,
|
||||
[AC_TRY_RUN([
|
||||
@@ -38,7 +27,9 @@ AC_DEFUN(jm_FUNC_REALLOC,
|
||||
jm_cv_func_working_realloc=no)
|
||||
])
|
||||
if test $jm_cv_func_working_realloc = no; then
|
||||
LIBOBJS="$LIBOBJS realloc.o"
|
||||
AC_DEFINE_UNQUOTED(realloc, rpl_realloc)
|
||||
AC_SUBST(LIBOBJS)
|
||||
LIBOBJS="$LIBOBJS realloc.$ac_objext"
|
||||
AC_DEFINE_UNQUOTED(realloc, rpl_realloc,
|
||||
[Define to rpl_realloc if the replacement function should be used.])
|
||||
fi
|
||||
])
|
||||
|
||||
61
m4/regex.m4
61
m4/regex.m4
@@ -1,21 +1,70 @@
|
||||
#serial 2
|
||||
#serial 4
|
||||
|
||||
dnl Derived from code in GNU grep.
|
||||
dnl Initially derived from code in GNU grep.
|
||||
dnl Mostly written by Jim Meyering.
|
||||
|
||||
AC_DEFUN(jm_WITH_REGEX,
|
||||
[
|
||||
AC_REQUIRE([AM_GLIBC])
|
||||
|
||||
dnl Even packages that don't use regex.c can use this macro.
|
||||
dnl Of course, for them it doesn't do anything.
|
||||
|
||||
syscmd([test -f lib/regex.c])
|
||||
# By default, don't use the included regex.c on systems with a version
|
||||
# of glibc 2 that's new enough to pass the following run test.
|
||||
# If cross compiling, assume the test would fail and use the included
|
||||
# regex.c. The failing regular expression is from `Spencer ere test
|
||||
# #75' in grep-2.2f.
|
||||
ac_use_included_regex=yes
|
||||
|
||||
if test "$ac_cv_glibc" = yes; then
|
||||
# Without this run-test, on older glibc2 systems we'd end up
|
||||
# using the buggy system regex.
|
||||
AC_CACHE_CHECK([for working re_compile_pattern],
|
||||
jm_cv_func_working_re_compile_pattern,
|
||||
AC_TRY_RUN(
|
||||
changequote(<<, >>)dnl
|
||||
<<
|
||||
#include <stdio.h>
|
||||
#include <regex.h>
|
||||
int
|
||||
main ()
|
||||
{
|
||||
static struct re_pattern_buffer regex;
|
||||
const char *s;
|
||||
re_set_syntax (RE_SYNTAX_POSIX_EGREP);
|
||||
/* Add this third left square bracket, [, to balance the
|
||||
three right ones below. Otherwise autoconf-2.14 chokes. */
|
||||
s = re_compile_pattern ("a[[:]:]]b\n", 9, ®ex);
|
||||
/* This should fail with _Invalid character class name_ error. */
|
||||
exit (s ? 0 : 1);
|
||||
}
|
||||
>>,
|
||||
changequote([, ])dnl
|
||||
|
||||
jm_cv_func_working_re_compile_pattern=yes,
|
||||
jm_cv_func_working_re_compile_pattern=no,
|
||||
dnl When crosscompiling, assume it's broken.
|
||||
jm_cv_func_working_re_compile_pattern=no))
|
||||
if test $jm_cv_func_working_re_compile_pattern = yes; then
|
||||
ac_use_included_regex=no
|
||||
fi
|
||||
fi
|
||||
|
||||
test -n "$1" || AC_MSG_ERROR([missing argument])
|
||||
syscmd([test -f $1])
|
||||
ifelse(sysval, 0,
|
||||
[
|
||||
|
||||
AC_ARG_WITH(included-regex,
|
||||
[ --without-included-regex don't compile regex (use with caution)],
|
||||
[ --without-included-regex don't compile regex; this is the default on
|
||||
systems with version 2 of the GNU C library
|
||||
(use with caution on other system)],
|
||||
jm_with_regex=$withval,
|
||||
jm_with_regex=yes)
|
||||
jm_with_regex=$ac_use_included_regex)
|
||||
if test "$jm_with_regex" = yes; then
|
||||
LIBOBJS="$LIBOBJS regex.o"
|
||||
AC_SUBST(LIBOBJS)
|
||||
LIBOBJS="$LIBOBJS regex.$ac_objext"
|
||||
fi
|
||||
],
|
||||
)
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
#serial 2
|
||||
|
||||
# Define HAVE_ST_DM_MODE if struct stat has an st_dm_mode member.
|
||||
|
||||
AC_DEFUN(AC_STRUCT_ST_DM_MODE,
|
||||
@@ -8,18 +10,8 @@ AC_DEFUN(AC_STRUCT_ST_DM_MODE,
|
||||
ac_cv_struct_st_dm_mode=no)])
|
||||
|
||||
if test $ac_cv_struct_st_dm_mode = yes; then
|
||||
if test x = y; then
|
||||
# This code is deliberately never run via ./configure.
|
||||
# FIXME: this is a hack to make autoheader put the corresponding
|
||||
# HAVE_* undef for this symbol in config.h.in. This saves me the
|
||||
# trouble of having to add the #undef in acconfig.h manually.
|
||||
AC_CHECK_FUNCS(ST_DM_MODE)
|
||||
fi
|
||||
# Defining it this way (rather than via AC_DEFINE) short-circuits the
|
||||
# autoheader check -- autoheader doesn't know it's already been taken
|
||||
# care of by the hack above.
|
||||
ac_kludge=HAVE_ST_DM_MODE
|
||||
AC_DEFINE_UNQUOTED($ac_kludge)
|
||||
AC_DEFINE_UNQUOTED(HAVE_ST_DM_MODE, 1,
|
||||
[Define if struct stat has an st_dm_mode member. ])
|
||||
fi
|
||||
]
|
||||
)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#serial 3
|
||||
#serial 4
|
||||
|
||||
dnl From Paul Eggert.
|
||||
|
||||
@@ -24,7 +24,9 @@ AC_DEFUN(AC_STRUCT_ST_MTIM_NSEC,
|
||||
CPPFLAGS="$ac_save_CPPFLAGS"])
|
||||
|
||||
if test $ac_cv_struct_st_mtim_nsec != no; then
|
||||
AC_DEFINE_UNQUOTED(ST_MTIM_NSEC, $ac_cv_struct_st_mtim_nsec)
|
||||
AC_DEFINE_UNQUOTED(ST_MTIM_NSEC, $ac_cv_struct_st_mtim_nsec,
|
||||
[Define to be the nanoseconds member of struct stat's st_mtim,
|
||||
if it exists.])
|
||||
fi
|
||||
]
|
||||
)
|
||||
|
||||
25
m4/stat.m4
25
m4/stat.m4
@@ -1,4 +1,4 @@
|
||||
#serial 2
|
||||
#serial 3
|
||||
|
||||
dnl From Jim Meyering.
|
||||
dnl Determine whether stat has the bug that it succeeds when given the
|
||||
@@ -30,22 +30,11 @@ AC_DEFUN(jm_FUNC_STAT,
|
||||
jm_cv_func_stat_empty_string_bug=yes)
|
||||
])
|
||||
if test $jm_cv_func_stat_empty_string_bug = yes; then
|
||||
|
||||
LIBOBJS="$LIBOBJS stat.o"
|
||||
|
||||
if test $jm_cv_func_stat_empty_string_bug = yes; then
|
||||
if test x = y; then
|
||||
# This code is deliberately never run via ./configure.
|
||||
# FIXME: this is a hack to make autoheader put the corresponding
|
||||
# HAVE_* undef for this symbol in config.h.in. This saves me the
|
||||
# trouble of having to maintain the #undef in acconfig.h manually.
|
||||
AC_CHECK_FUNCS(STAT_EMPTY_STRING_BUG)
|
||||
fi
|
||||
# Defining it this way (rather than via AC_DEFINE) short-circuits the
|
||||
# autoheader check -- autoheader doesn't know it's already been taken
|
||||
# care of by the hack above.
|
||||
ac_kludge=HAVE_STAT_EMPTY_STRING_BUG
|
||||
AC_DEFINE_UNQUOTED($ac_kludge)
|
||||
fi
|
||||
AC_SUBST(LIBOBJS)
|
||||
LIBOBJS="$LIBOBJS stat.$ac_objext"
|
||||
AC_DEFINE_UNQUOTED(HAVE_STAT_EMPTY_STRING_BUG, 1,
|
||||
[Define if stat has the bug that it succeeds when given the zero-length
|
||||
file name argument. The stat from SunOS4.1.4 and the Hurd as of 1998-11-01)
|
||||
do this. ])
|
||||
fi
|
||||
])
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#serial 5
|
||||
#serial 6
|
||||
|
||||
dnl This macro is intended to be used solely in this file.
|
||||
dnl These are the prerequisite macros for GNU's strftime.c replacement.
|
||||
@@ -13,11 +13,6 @@ AC_DEFUN(_jm_STRFTIME_PREREQS,
|
||||
|
||||
dnl Determine if the strftime function has all the features of the GNU one.
|
||||
dnl
|
||||
dnl If you use this macro in a package, you should
|
||||
dnl add the following two lines to acconfig.h:
|
||||
dnl /* Define to gnu_strftime if the replacement function should be used. */
|
||||
dnl #undef strftime
|
||||
dnl
|
||||
dnl From Jim Meyering.
|
||||
dnl
|
||||
AC_DEFUN(jm_FUNC_GNU_STRFTIME,
|
||||
@@ -138,8 +133,10 @@ changequote([, ])dnl
|
||||
jm_cv_func_working_gnu_strftime=no)
|
||||
])
|
||||
if test $jm_cv_func_working_gnu_strftime = no; then
|
||||
LIBOBJS="$LIBOBJS strftime.o"
|
||||
AC_DEFINE_UNQUOTED(strftime, gnu_strftime)
|
||||
AC_SUBST(LIBOBJS)
|
||||
LIBOBJS="$LIBOBJS strftime.$ac_objext"
|
||||
AC_DEFINE_UNQUOTED(strftime, gnu_strftime,
|
||||
[Define to gnu_strftime if the replacement function should be used.])
|
||||
fi
|
||||
])
|
||||
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
#serial 1
|
||||
#serial 2
|
||||
|
||||
dnl From Paul Eggert.
|
||||
|
||||
AC_PREREQ(2.13)
|
||||
|
||||
# Define uintmax_t to `unsigned long' or `unsigned long long'
|
||||
# if <inttypes.h> does not exist.
|
||||
|
||||
@@ -14,10 +16,11 @@ AC_DEFUN(jm_AC_TYPE_UINTMAX_T,
|
||||
[unsigned long long i = (unsigned long long) -1;],
|
||||
ac_cv_type_unsigned_long_long=yes,
|
||||
ac_cv_type_unsigned_long_long=no)])
|
||||
if test $ac_cv_type_unsigned_long_long = yes; then
|
||||
AC_DEFINE(uintmax_t, unsigned long long)
|
||||
else
|
||||
AC_DEFINE(uintmax_t, unsigned long)
|
||||
fi
|
||||
test $ac_cv_type_unsigned_long_long = yes \
|
||||
&& ac_type='unsigned long long' \
|
||||
|| ac_type='unsigned long'
|
||||
AC_DEFINE_UNQUOTED(uintmax_t, $ac_type,
|
||||
[ Define to \`unsigned long' or \`unsigned long long'
|
||||
if <inttypes.h> doesn't define.])
|
||||
fi
|
||||
])
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
#serial 1
|
||||
#serial 2
|
||||
|
||||
AC_PREREQ(2.13)
|
||||
|
||||
AC_DEFUN(jm_SYS_PROC_UPTIME,
|
||||
[ dnl Require AC_PROG_CC to see if we're cross compiling.
|
||||
@@ -10,6 +12,7 @@ AC_DEFUN(jm_SYS_PROC_UPTIME,
|
||||
&& cat < /proc/uptime >/dev/null 2>/dev/null \
|
||||
&& jm_cv_have_proc_uptime=yes])
|
||||
if test $jm_cv_have_proc_uptime = yes; then
|
||||
AC_DEFINE(HAVE_PROC_UPTIME)
|
||||
AC_DEFINE(HAVE_PROC_UPTIME, 1,
|
||||
[ Define if your system has the /proc/uptime special file.])
|
||||
fi
|
||||
])
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#serial 1
|
||||
#serial 2
|
||||
|
||||
dnl From Jim Meyering
|
||||
|
||||
@@ -33,17 +33,8 @@ AC_DEFUN(jm_STRUCT_UTIMBUF,
|
||||
])
|
||||
|
||||
if test $fu_cv_sys_struct_utimbuf = yes; then
|
||||
if test x = y; then
|
||||
# This code is deliberately never run via ./configure.
|
||||
# FIXME: this is a hack to make autoheader put the corresponding
|
||||
# HAVE_* undef for this symbol in config.h.in. This saves me the
|
||||
# trouble of having to maintain the #undef in acconfig.h manually.
|
||||
AC_CHECK_FUNCS(STRUCT_UTIMBUF)
|
||||
fi
|
||||
# Defining it this way (rather than via AC_DEFINE) short-circuits the
|
||||
# autoheader check -- autoheader doesn't know it's already been taken
|
||||
# care of by the hack above.
|
||||
ac_kludge=HAVE_STRUCT_UTIMBUF
|
||||
AC_DEFINE_UNQUOTED($ac_kludge)
|
||||
AC_DEFINE_UNQUOTED(HAVE_STRUCT_UTIMBUF, 1,
|
||||
[Define if struct utimbuf is declared -- usually in <utime.h>.
|
||||
Some systems have utime.h but don't declare the struct anywhere. ])
|
||||
fi
|
||||
])
|
||||
|
||||
19
m4/utimes.m4
19
m4/utimes.m4
@@ -1,6 +1,7 @@
|
||||
#serial 2
|
||||
#serial 3
|
||||
|
||||
dnl Shamelessly cloned from acspecific.m4's AC_FUNC_UTIME_NULL.
|
||||
dnl Shamelessly cloned from acspecific.m4's AC_FUNC_UTIME_NULL,
|
||||
dnl then do case-insensitive s/utime/utimes/.
|
||||
|
||||
AC_DEFUN(jm_FUNC_UTIMES_NULL,
|
||||
[AC_CACHE_CHECK(whether utimes accepts a null argument, ac_cv_func_utimes_null,
|
||||
@@ -22,18 +23,8 @@ exit(!(stat ("conftestdata", &s) == 0 && utimes("conftestdata", (long *)0) == 0
|
||||
rm -f core core.* *.core])
|
||||
|
||||
if test $ac_cv_func_utimes_null = yes; then
|
||||
if test x = y; then
|
||||
# This code is deliberately never run via ./configure.
|
||||
# FIXME: this is a hack to make autoheader put the corresponding
|
||||
# HAVE_* undef for this symbol in config.h.in. This saves me the
|
||||
# trouble of having to maintain the #undef in acconfig.h manually.
|
||||
AC_CHECK_FUNCS(UTIMES_NULL)
|
||||
fi
|
||||
# Defining it this way (rather than via AC_DEFINE) short-circuits the
|
||||
# autoheader check -- autoheader doesn't know it's already been taken
|
||||
# care of by the hack above.
|
||||
ac_kludge=HAVE_UTIMES_NULL
|
||||
AC_DEFINE_UNQUOTED($ac_kludge)
|
||||
AC_DEFINE_UNQUOTED(HAVE_UTIMES_NULL, 1,
|
||||
[Define if utimes accepts a null argument])
|
||||
fi
|
||||
]
|
||||
)
|
||||
|
||||
16
man/help2man
16
man/help2man
@@ -25,7 +25,7 @@ use Getopt::Long;
|
||||
use POSIX qw(strftime setlocale LC_TIME);
|
||||
|
||||
my $this_program = 'help2man';
|
||||
my $this_version = '1.006';
|
||||
my $this_version = '1.007';
|
||||
my $version_info = <<EOT;
|
||||
$this_program $this_version
|
||||
|
||||
@@ -151,22 +151,22 @@ if ($opt_output)
|
||||
#
|
||||
# <version>
|
||||
# <program> <version>
|
||||
# GNU <program> <version>
|
||||
# <program> (GNU <package>) <version>
|
||||
# <program> - GNU <package> <version>
|
||||
# {GNU,Free} <program> <version>
|
||||
# <program> ({GNU,Free} <package>) <version>
|
||||
# <program> - {GNU,Free} <package> <version>
|
||||
#
|
||||
# and seperated from any copyright/author details by a blank line.
|
||||
|
||||
$_ = shift @version;
|
||||
|
||||
if (/^(\S+)\s+\((GNU\s+[^)]+)\)\s+(.*)/ or
|
||||
/^(\S+)\s+-\s*(GNU\s+\S+)\s+(.*)/)
|
||||
if (/^(\S+)\s+\(((?:GNU|Free)\s+[^)]+)\)\s+(.*)/ or
|
||||
/^(\S+)\s+-\s*((?:GNU|Free)\s+\S+)\s+(.*)/)
|
||||
{
|
||||
$program = $1;
|
||||
$package = $2;
|
||||
$version = $3;
|
||||
}
|
||||
elsif (/^(GNU\s+)?(\S+)\s+(.*)/)
|
||||
elsif (/^((?:GNU|Free)\s+)?(\S+)\s+(.*)/)
|
||||
{
|
||||
$program = $2;
|
||||
$package = $1 ? "$1$2" : $2;
|
||||
@@ -193,7 +193,7 @@ my $PROGRAM = uc $program;
|
||||
|
||||
# Header.
|
||||
print <<EOT;
|
||||
.\" DO NOT MODIFY THIS FILE! It was generated by $this_program $this_version.
|
||||
.\\" DO NOT MODIFY THIS FILE! It was generated by $this_program $this_version.
|
||||
.TH $PROGRAM 1 "$date" "$package $version" "FSF"
|
||||
.SH NAME
|
||||
$include{NAME}
|
||||
|
||||
2
man/ptx.x
Normal file
2
man/ptx.x
Normal file
@@ -0,0 +1,2 @@
|
||||
[DESCRIPTION]
|
||||
.\" Add any additional description here
|
||||
2
man/shred.x
Normal file
2
man/shred.x
Normal file
@@ -0,0 +1,2 @@
|
||||
[DESCRIPTION]
|
||||
." Add any additional description here
|
||||
2
man/tsort.x
Normal file
2
man/tsort.x
Normal file
@@ -0,0 +1,2 @@
|
||||
[DESCRIPTION]
|
||||
.\" Add any additional description here
|
||||
@@ -1,3 +1,374 @@
|
||||
1999-02-07 Jim Meyering <meyering@ascend.com>
|
||||
|
||||
* Version 4.0d (aka 4.1-b4).
|
||||
|
||||
* Makefile.maint (my-distcheck): Don't depend on dist, now that this
|
||||
is hooked up to the distcheck rule.
|
||||
* Makefile.am (distcheck-hook): New target and rule -- link to shared
|
||||
rule, my-distcheck, in Makefile.maint.
|
||||
|
||||
* doc/fileutils.texi (shred invocation): New section. From Colin Plumb.
|
||||
|
||||
* configure.in (jm_FUNC_GETGROUPS): Move the test into a new file,
|
||||
group-member.m4, and just use this new macro.
|
||||
Use `.$ac_objext', not the literal `.o'.
|
||||
|
||||
1999-02-02 Jim Meyering <meyering@ascend.com>
|
||||
|
||||
* src/ls.c (S_ISLNK, S_ISFIFO, S_ISSOCK, S_ISCHR, S_ISBLK, S_ISDOOR):
|
||||
Define to zero if not already defined.
|
||||
(HAVE_SYMLINKS): Define.
|
||||
(gobble_file): Remove #ifdef.
|
||||
(get_link_name, make_link_path): Guard these with #if HAVE_SYMLINKS
|
||||
rather than #ifdef S_ISLNK.
|
||||
(print_type_indicator): Remove #ifdefs and reorganize.
|
||||
(print_color_indicator): Remove #ifdefs.
|
||||
(length_of_file_name_and_frills): Likewise.
|
||||
|
||||
1999-02-01 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
|
||||
|
||||
* src/dircolors.hin: Handle DOOR.
|
||||
|
||||
* src/ls.c (print_type_indicator): Print doors as '>'.
|
||||
(length_of_file_name_and_frills): Account for this.
|
||||
(indicator_no): Define C_DOOR.
|
||||
(indicator_name): Add corresponding name.
|
||||
|
||||
* lib/filemode.c (ftypelet): Handle doors.
|
||||
|
||||
* lib/filemode.c, src/system.h (S_ISDOOR): Define if missing.
|
||||
|
||||
1999-02-01 Jim Meyering <meyering@ascend.com>
|
||||
|
||||
* lib/strcasecmp.c (STRXCASECMP_FUNCTION): Don't increment within macro
|
||||
argument list. From Akim Demaille.
|
||||
|
||||
1999-01-31 Jim Meyering <meyering@ascend.com>
|
||||
|
||||
* doc/fileutils.texi: Wrap the @top node in @ifnottex instead of
|
||||
@ifinfo so `makeinfo --html ...' works. From Karl Berry.
|
||||
|
||||
* tests/ln/misc: Add test for this.
|
||||
* src/ln.c (do_link): Allow creation of a hard link to a dangling
|
||||
symlink. Reported by Alexey Solovyov.
|
||||
|
||||
* src/copy.c (copy_internal): Describe any backup-related renaming
|
||||
operations when in verbose mode.
|
||||
(copy_internal): Likewise.
|
||||
Based on changes from Marty Leisner.
|
||||
|
||||
* lib/lchown.c: Declare chown.
|
||||
|
||||
1999-01-30 Jim Meyering <meyering@ascend.com>
|
||||
|
||||
* acconfig.h: Remove uintmax and STAT* #undefs.
|
||||
* configure.in: Require autoconf 2.13.
|
||||
Remove test for AFS.
|
||||
Use 3-argument form of AC_DEFINE*.
|
||||
|
||||
1999-01-28 Jim Meyering <meyering@ascend.com>
|
||||
|
||||
* po/POTFILES.in: Add src/shred.c.
|
||||
|
||||
* src/system.h: Use TIME_WITH_SYS_TIME-based #if test rather than
|
||||
TM_IN_SYS_TIME based one (for shred).
|
||||
|
||||
* acconfig.h: Remove lots of `#undef's, now that we use the
|
||||
3-argument forms of AC_DEFINE* macros.
|
||||
|
||||
1999-01-25 Jim Meyering <meyering@ascend.com>
|
||||
|
||||
* configure.in (fdatasync): Use AC_CHECK_FUNCS instead of
|
||||
AC_REPLACE_FUNCS.
|
||||
(AC_CHECK_FUNCS): Add clock_gettime.
|
||||
|
||||
* src/shred.c (isaac_seed): Guard clock_gettime with test of
|
||||
HAVE_CLOCK_GETTIME, not CLOCK_REALTIME.
|
||||
(wipename): Rename local dirfd to dir_fd to avoid shadowing the
|
||||
function declared in Linux's dirent.h.
|
||||
|
||||
1999-01-25 Akim Demaille <demaille@inf.enst.fr>
|
||||
|
||||
* lib/argmatch.h (ARRAY_CARDINALITY): Define.
|
||||
(ARGMATCH_ASSERT): New macro.
|
||||
|
||||
* lib/argmatch.c (program_name): Remove dcl.
|
||||
Include error.h.
|
||||
(argmatch_invalid): Use error rather than fprintf.
|
||||
|
||||
1999-01-24 Jim Meyering <meyering@ascend.com>
|
||||
|
||||
* src/ansi2knr.c: Exit nonzero upon failed write to stdout.
|
||||
New version from L. Peter Deutsch.
|
||||
|
||||
* lib/quotearg.c (quotearg_n_options): Revert type of parameter `n'
|
||||
(and hence that of the local `n1', too) to `int' at Paul's request.
|
||||
|
||||
* lib/closeout.c: Add comments.
|
||||
|
||||
* src/shred.c (fdatasync): Remove function. instead, ...
|
||||
(fdatasync) [! HAVE_FDATASYNC]: Define to fsync.
|
||||
From Colin Plumb.
|
||||
|
||||
1999-01-23 Jim Meyering <meyering@ascend.com>
|
||||
|
||||
* src/Makefile.am (bin_PROGRAMS): Add shred.
|
||||
* src/shred.c: New file.
|
||||
Portability tweaks.
|
||||
Internationalize.
|
||||
(wipename): Print the `FILE: deleted' and `FILE: deleting' messages
|
||||
only when in verbose mode.
|
||||
(fdatasync) [! HAVE_FDATASYNC]: New function.
|
||||
|
||||
* man/Makefile.am (man_MANS): Add shred.1.
|
||||
* man/Makefile.summ (shred-summary): Define.
|
||||
* man/shred.x: New file.
|
||||
|
||||
* src/shred.c: New file. From Colin Plumb.
|
||||
Include config.h, getopt.h, system.h and error.h.
|
||||
Use #else/#if, not #elif.
|
||||
|
||||
1998-11-05 Paul Eggert <eggert@twinsun.com>
|
||||
|
||||
* lib/mktime.c (__mktime_internal): Adopt the traditional (and
|
||||
problematic) notion of what to do when tm_isdst doesn't match.
|
||||
|
||||
1999-01-17 Jim Meyering <meyering@ascend.com>
|
||||
|
||||
* tests/cp/Makefile.am (TESTS_ENVIRONMENT): Set PATH here, rather
|
||||
than setting RM and CP.
|
||||
* tests/cp/*: Now that PATH is set properly, use rm and cp rather
|
||||
than $RM and $CP.
|
||||
|
||||
* tests/ln/Makefile.am (TESTS): Add backup-1.
|
||||
(TESTS_ENVIRONMENT): Set PATH here, rather than setting LN.
|
||||
* tests/ln/*: Now that PATH is set properly, use ln rather than $LN.
|
||||
* tests/ln/backup-1: New test for this.
|
||||
* src/ln.c (do_link): Try to remove DEST even after renaming it.
|
||||
This fixes a bug reported by Jamie Lokier.
|
||||
|
||||
* src/ln.c (same_name): Use SAME_INODE rather than open coding it.
|
||||
|
||||
1999-01-16 Jim Meyering <meyering@ascend.com>
|
||||
|
||||
* lib/argmatch.c (ARGMATCH_DIE_DECL): Use it.
|
||||
|
||||
* acconfig.h: Remove @BOTTOM@ section.
|
||||
Instead, add the define and decl via m4/jm-macros.m4.
|
||||
|
||||
* src/ls.c: Don't declare base_name.
|
||||
Use function-style XARGMATCH once again.
|
||||
* src/touch.c: Likewise.
|
||||
* acconfig.h: Add a @BOTTOM@ section.
|
||||
(ARGMATCH_DIE) [@BOTTOM@]: Define to usage(1).
|
||||
Declare usage.
|
||||
From Akim Demaille.
|
||||
|
||||
* src/cp.c: Remove declarations of base_name and get_version.
|
||||
(main): Don't call getenv ("VERSION_CONTROL"); xget_version does it.
|
||||
Use xget_version and function-style XARGMATCH.
|
||||
* src/mv.c (main): Likewise.
|
||||
* src/ln.c (main): Likewise.
|
||||
* src/install.c (main): Likewise.
|
||||
* lib/quotearg.c (quotearg_n_options): Declare n1 to be of type
|
||||
unsigned int, not just int.
|
||||
* lib/backupfile.h (get_version): Adjust prototype.
|
||||
(xget_version): Add prototype.
|
||||
(base_name): Remove prototype.
|
||||
* lib/backupfile.c [!HAVE_DECL_GETENV]: Declare getenv.
|
||||
(backup_args): Reorder enum members.
|
||||
(backup_types): Likewise.
|
||||
(get_version): Take an additional parameter, `context'.
|
||||
(xget_version): Like get_version, but if the `version' argument is NULL,
|
||||
use the value of the envvar VERSION_CONTROL.
|
||||
(base_name): Declare.
|
||||
Mostly from Akim Demaille.
|
||||
|
||||
* lib/addext.c: (base_name): Declare.
|
||||
* src/sys2.h: Add prototype for base_name.
|
||||
|
||||
* lib/argmatch.c: s/argmatch_exit_failure/argmatch_die/
|
||||
* lib/argmatch.h: Likewise.
|
||||
|
||||
* lib/argmatch.h (XARGMATCH): Define to return a value once again.
|
||||
(XARGCASEMATCH): Likewise.
|
||||
|
||||
* lib/argmatch.c (EXIT_FAILURE): Define.
|
||||
(ARGMATCH_DIE): Provide default.
|
||||
(__xargmatch_internal): New function.
|
||||
s/rogram_name/program_name.
|
||||
From Akim Demaille.
|
||||
|
||||
1999-01-14 Akim Demaille <demaille@inf.enst.fr>
|
||||
|
||||
* src/touch.c (usage): Don't make it static so that it can be
|
||||
called from libfu.a by xargmatch.
|
||||
* src/chgrp.c (usage): Likewise
|
||||
* src/chmod.c (usage): Likewise
|
||||
* src/chown.c (usage): Likewise
|
||||
* src/cp.c (usage): Likewise
|
||||
* src/dd.c (usage): Likewise
|
||||
* src/df.c (usage): Likewise
|
||||
* src/dircolors.c (usage): Likewise
|
||||
* src/du.c (usage): Likewise
|
||||
* src/install.c (usage): Likewise
|
||||
* src/ln.c (usage): Likewise
|
||||
* src/ls.c (usage): Likewise
|
||||
* src/mkdir.c (usage): Likewise
|
||||
* src/mkfifo.c (usage): Likewise
|
||||
* src/mknod.c (usage): Likewise
|
||||
* src/mv.c (usage): Likewise
|
||||
* src/mvdir.c (usage): Likewise
|
||||
* src/rm.c (usage): Likewise
|
||||
* src/rmdir.c (usage): Likewise
|
||||
* src/sync.c (usage): Likewise
|
||||
|
||||
1999-01-12 Akim Demaille <demaille@inf.enst.fr>
|
||||
|
||||
* lib/backupfile.c (get_version): added the parameters KIND.
|
||||
(xget_version): like get_version, but if argument is NULL, honor
|
||||
the envvar VERSION_CONTROL.
|
||||
* src/cp.c: Remove declarations of base_name and get_version.
|
||||
(main): Use xget_version.
|
||||
* src/mv.c (main): Likewise.
|
||||
* src/ln.c (main): Likewise.
|
||||
* src/install.c (main): Likewise.
|
||||
|
||||
1999-01-12 Jim Meyering <meyering@ascend.com>
|
||||
|
||||
* configure.in (ALL_LINGUAS): Add Greek (el).
|
||||
* po/el.po: New file.
|
||||
|
||||
* install-sh: New version from autoconf.
|
||||
* missing: New version from automake.
|
||||
* src/ansi2knr.c: Likewise.
|
||||
* lib/getopt.c: New version from glibc.
|
||||
* lib/getopt.h: Likewise.
|
||||
* lib/getopt1.c: Likewise.
|
||||
* lib/regex.c: Likewise.
|
||||
* lib/regex.h: Likewise.
|
||||
* lib/ylwrap: Remove unused file.
|
||||
|
||||
1999-01-10 Jim Meyering <meyering@ascend.com>
|
||||
|
||||
* Version 4.0c (aka 4.1-b3).
|
||||
|
||||
* Upgrade to autoconf-2.13 and automake-1.3b.
|
||||
|
||||
* src/copy.c (copy_internal): Handle two more values of errno from
|
||||
failed rename of a directory into a subdirectory of itself.
|
||||
Thanks to Volker Borchert for testing many types and combinations
|
||||
of systems.
|
||||
|
||||
* lib/argmatch.c (ARGMATCH_QUOTING_STYLE): Change from c_quoting_style
|
||||
to escape_quoting_style.
|
||||
(argmatch_invalid): Now that the quoted quantity is no longer double
|
||||
quoted, remove the code that removed leading and trailing double quotes.
|
||||
|
||||
* src/ls.c (decode_switches): Now that escape_quoting_style no longer
|
||||
escapes the SPACE character, arrange for SPACEs to be quoted here.
|
||||
* lib/quotearg.c (quotearg_buffer): Change escape_quoting_style so that
|
||||
it no longer escapes ` '.
|
||||
Suggestion from Paul Eggert.
|
||||
|
||||
1999-01-05 Jim Meyering <meyering@ascend.com>
|
||||
|
||||
* configure.in (space): Add `for' in message of statvfs check.
|
||||
From Ulrich Drepper.
|
||||
|
||||
1999-01-04 Jim Meyering <meyering@ascend.com>
|
||||
|
||||
* Version 4.1-b2.
|
||||
|
||||
1999-01-02 Jim Meyering <meyering@ascend.com>
|
||||
|
||||
* lib/argmatch.c (argmatch_invalid): Remove double quotes from the
|
||||
offending quoted argument before using it in explanatory diagnostic.
|
||||
Use a single fprintf stmt.
|
||||
|
||||
* lib/argmatch.h (XARGMATCH): Don't return a value; instead,
|
||||
modify a parameter. Add a `Die_stmt' parameter.
|
||||
Add parentheses.
|
||||
* lib/argmatch.c (__xargmatch_internal): Remove now-unused function.
|
||||
(argmatch_to_argument): Add `const' attribute to first parameter.
|
||||
|
||||
* configure.in (AC_REPLACE_FUNCS): Remove strcasecmp (now it's
|
||||
done in m4/jm-macros.m4).
|
||||
|
||||
* lib/backupfile.c (get_version): Adapt to use new interface to
|
||||
XARGMATCH.
|
||||
* src/cp.c: Likewise.
|
||||
* src/ls.c: Likewise.
|
||||
* src/touch.c: Likewise.
|
||||
|
||||
1999-01-01 Jim Meyering <meyering@ascend.com>
|
||||
|
||||
* lib/makepath.c (make_dir): New function, factored out of make_path.
|
||||
(make_path): Use make_dir rather than open-coding it twice.
|
||||
This effectively reverses the order of the latter pair of stat/mkdir
|
||||
calls and fixes a race condition bug whereby one of two concurrent
|
||||
`mkdir -p' processes could fail with EEXIST.
|
||||
Include locale.h and libintl.h, and define `_()'.
|
||||
Mark translatable strings.
|
||||
|
||||
* lib/xmalloc.c: Add comments.
|
||||
(xcalloc, xmalloc, xrealloc): Remove prototypes.
|
||||
(xcalloc): Remove `#ifdef NOT_USED' that used to hide this function.
|
||||
* lib/xalloc.h: Add comments.
|
||||
(PARAMS, XMALLOC, XCALLOC, XREALLOC): Define.
|
||||
(xcalloc, xmalloc, xrealloc): Add prototypes here.
|
||||
Based on changes from Akim Demaille.
|
||||
|
||||
* lib/quotearg.c (quotearg_buffer): Cast -1 to size_t before comparing.
|
||||
(quotearg_n): Change type of 1st parameter from int to unsigned int.
|
||||
(quotearg_n_options): Likewise.
|
||||
* lib/quotearg.h (quoting_style_vals): New public array.
|
||||
From Akim Demaille.
|
||||
(quotearg_n_options): Declare `options' parameter to be `const'.
|
||||
|
||||
* lib/human.c (humblock): Use ARGMATCH in place of argmatch.
|
||||
|
||||
* lib/backupfile.c (get_version): Use XARGMATCH in place of
|
||||
argmatch & co.
|
||||
|
||||
1998-12-31 Jim Meyering <meyering@ascend.com>
|
||||
|
||||
* src/ls.c (indicator_style_types): New variable.
|
||||
(format_types): Rename from `formats'.
|
||||
(color_args): Remove unnecessary `no' string.
|
||||
(color_types): Remove corresponding `color_never' entry.
|
||||
(main): Use ARGMATCH_TO_ARGUMENT.
|
||||
(decode_switches): Use ARGMATCH instead of argmatch code
|
||||
in each of several cases.
|
||||
From Akim Demaille.
|
||||
|
||||
* src/cp.c (main): Use XARGMATCH in place of argmatch & co.
|
||||
* src/touch.c (main): Likewise.
|
||||
* lib/backupfile.c (get_version): Likewise.
|
||||
From Akim Demaille.
|
||||
|
||||
* lib/strncasecmp.c: New file.
|
||||
* lib/strcasecmp.c: Add #ifdefs so it can be used for strncasecmp, too.
|
||||
* lib/argmatch.c (strncasecmp): Move to a separate file.
|
||||
Add curly braces around some one-stmt-but-multiline blocks.
|
||||
|
||||
* lib/argmatch.c: Improvements from Akim Demaille.
|
||||
* lib/argmatch.h: Likewise.
|
||||
|
||||
* lib/addext.c (addext): Protoize.
|
||||
Indent cpp directives to match nesting.
|
||||
|
||||
Fix warnings from gcc -W -Wall
|
||||
* lib/posixtm.c (posix_time_parse): Change type of index `i' from
|
||||
int to unsigned int.
|
||||
* lib/getdate.y (__attribute__): Define.
|
||||
(ATTRIBUTE_UNUSED): Define.
|
||||
(yyerror): Mark parameter as unused with ATTRIBUTE_UNUSED.
|
||||
(MonthDayTable): Add initializers for last entry.
|
||||
(UnitsTable): Likewise.
|
||||
(OtherTable): Likewise.
|
||||
(MilitaryTable): Likewise.
|
||||
|
||||
1998-12-22 Jim Meyering <meyering@ascend.com>
|
||||
|
||||
* Version 4.1-b1.
|
||||
@@ -132,7 +503,8 @@
|
||||
|
||||
1998-11-10 Jim Meyering <meyering@ascend.com>
|
||||
|
||||
* configure.in (ALL_LINGUAS): Add greek (el).
|
||||
* configure.in (ALL_LINGUAS): Add Greek (el).
|
||||
* po/el.po: New file.
|
||||
|
||||
1998-11-07 Jim Meyering <meyering@ascend.com>
|
||||
|
||||
@@ -220,12 +592,12 @@
|
||||
|
||||
1998-10-08 Paul Eggert <eggert@twinsun.com>
|
||||
|
||||
* mktime.c (__mktime_internal): When the requested time falls
|
||||
in a spring-forward gap of size DT, return a time that is DT
|
||||
away from the requested time, preferring a time whose tm_isdst
|
||||
differs from the requested value. Bump the max number of
|
||||
probes from 4 to 6 to account for the extra probes needed to
|
||||
discover a spring-forward gap in the worst case.
|
||||
* mktime.c (__mktime_internal): When the requested time falls
|
||||
in a spring-forward gap of size DT, return a time that is DT
|
||||
away from the requested time, preferring a time whose tm_isdst
|
||||
differs from the requested value. Bump the max number of
|
||||
probes from 4 to 6 to account for the extra probes needed to
|
||||
discover a spring-forward gap in the worst case.
|
||||
|
||||
1998-10-08 Paul Eggert <eggert@twinsun.com>
|
||||
|
||||
@@ -784,11 +1156,11 @@
|
||||
|
||||
1998-06-29 Paul Eggert <eggert@twinsun.com>
|
||||
|
||||
* lib/mountlist.c: (read_filesystem_list): If SVR4, lock
|
||||
/etc/.mnttab.lock if available, to avoid race conditions
|
||||
(e.g. with the automounter on Solaris 2.6).
|
||||
* lib/mountlist.c: (read_filesystem_list): If SVR4, lock
|
||||
/etc/.mnttab.lock if available, to avoid race conditions
|
||||
(e.g. with the automounter on Solaris 2.6).
|
||||
|
||||
Include <errno.h>, <fcntl.h>, <unistd.h>.
|
||||
Include <errno.h>, <fcntl.h>, <unistd.h>.
|
||||
|
||||
1998-06-29 Jim Meyering <meyering@ascend.com>
|
||||
|
||||
@@ -1120,7 +1492,7 @@
|
||||
|
||||
* src/system.h (TYPE_MAXIMUM): Cast result to `(t)' so this macro
|
||||
works with `unsigned char'.
|
||||
From Greg Wooledge.
|
||||
From Greg Wooledge.
|
||||
(SCHAR_MIN, SCHAR_MAX, SHRT_MIN, SHRT_MAX, LONG_MAX, ULONG_MAX): Define.
|
||||
|
||||
* lib/xstrtol.c: Merge with the version from textutils.
|
||||
@@ -1477,7 +1849,7 @@
|
||||
1998-01-13 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
|
||||
|
||||
* src/df.c (print_header): Fix inode format header to line it up
|
||||
with the rest of the output.
|
||||
with the rest of the output.
|
||||
|
||||
1998-01-13 Jim Meyering <meyering@na-net.ornl.gov>
|
||||
|
||||
@@ -1529,7 +1901,7 @@
|
||||
1998-01-05 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
|
||||
|
||||
* lib/makepath.c (make_path): Put only newly created directories
|
||||
on the LEADING_DIRS list.
|
||||
on the LEADING_DIRS list.
|
||||
|
||||
1998-01-05 Paul Eggert <eggert@twinsun.com>
|
||||
|
||||
|
||||
@@ -1,4 +1,27 @@
|
||||
Changes in release 4.1:
|
||||
[4.0d (aka 4.1-b3)]
|
||||
* ls recognizes solaris 2 `doors'
|
||||
* new program: shred
|
||||
* ln: Allow creation of a hard link to a dangling symlink
|
||||
* cp, mv, install: --verbose now prints a message for each backup-related
|
||||
renaming
|
||||
* portability fixes for copy.c's code to detect move-directory-into-self
|
||||
* upgrade to automake-1.3b
|
||||
* upgrade to autoconf-2.13, and...
|
||||
* remove some of the kludges in m4/*.m4 that permitted
|
||||
[4.1-b2]
|
||||
* concurrent `mkdir -p' processes no longer fail when creating the
|
||||
same hierarchy
|
||||
* argmatch.c has been fixed so that the unambiguous usage `ls --color=n'
|
||||
no longer evokes an error.
|
||||
* now, specifying an improper argument for an option that accepts enumerated
|
||||
values evokes diagnostics like this:
|
||||
$ src/touch --time=x file
|
||||
src/touch: invalid argument `x' for `--time'
|
||||
Valid arguments are:
|
||||
- `atime', `access', `use'
|
||||
- `mtime', `modify'
|
||||
Try `src/touch --help' for more information.
|
||||
[4.1-b1]
|
||||
* ls --quoting-style=c prints correct octal escapes for certain nonprinting
|
||||
characters in file names.
|
||||
|
||||
@@ -1,3 +1,99 @@
|
||||
1999-02-07 Jim Meyering <meyering@ascend.com>
|
||||
|
||||
* Version 1.16f.
|
||||
|
||||
* Makefile.maint (my-distcheck): Don't depend on dist, now that this
|
||||
is hooked up to the distcheck rule.
|
||||
* Makefile.am (distcheck-hook): New target and rule -- link to shared
|
||||
rule, my-distcheck, in Makefile.maint.
|
||||
|
||||
* configure.in (jm_FUNC_GETGROUPS): Move the test into a new file,
|
||||
group-member.m4, and just use this new macro.
|
||||
|
||||
1999-01-31 Jim Meyering <meyering@ascend.com>
|
||||
|
||||
* doc/sh-utils.texi: Wrap the @top node in @ifnottex instead of
|
||||
@ifinfo so `makeinfo --html ...' works. From Karl Berry.
|
||||
|
||||
* src/chroot.c (main): Call chdir ("/") after chroot.
|
||||
Suggestion from James Youngman.
|
||||
|
||||
* src/uptime.c (print_uptime): Use the C numeric locale for sscanf
|
||||
of /proc/uptime data, then restore.
|
||||
* lib/getloadavg.c: Include locale.h.
|
||||
[!HAVE_SETLOCALE]: Define-away setlocale.
|
||||
(getloadavg): Ensure the sscanf of /proc/getloadavg data uses the
|
||||
`C' numeric locale. Restore afterwards.
|
||||
Based on a suggestion from Thomas Quinot.
|
||||
|
||||
* lib/strtod.c: Protoize.
|
||||
|
||||
1999-01-30 Jim Meyering <meyering@ascend.com>
|
||||
|
||||
* acconfig.h: Remove lots of now-unnecessary #undefs.
|
||||
|
||||
* configure.in: Require autoconf 2.13.
|
||||
|
||||
* doc/Makefile.am (DISTCLEANFILES): Arrange to remove sh-utils.fl.
|
||||
|
||||
* configure.in (ALL_LINGUAS): Add Greek (el).
|
||||
* po/el.po: New file.
|
||||
|
||||
1999-01-25 Jim Meyering <meyering@ascend.com>
|
||||
|
||||
* src/date.c (usage): Remove static attribute.
|
||||
Move function be the first in the file.
|
||||
* src/env.c: Likewise.
|
||||
* src/id.c: Likewise.
|
||||
* src/nice.c: Likewise.
|
||||
* src/pathchk.c: Likewise.
|
||||
* src/tty.c: Likewise.
|
||||
* src/uname.c: Likewise.
|
||||
|
||||
* src/*.c (usage): Remove static attribute.
|
||||
|
||||
1999-01-14 Jim Meyering <meyering@ascend.com>
|
||||
|
||||
* src/date.c: Include closeout.h.
|
||||
(main): Use close_stdout_status.
|
||||
* src/printenv.c: Likewise.
|
||||
* src/tty.c: Likewise.
|
||||
|
||||
* src/hostid.c: Include closeout.h.
|
||||
(main): Use close_stdout.
|
||||
* src/tee.c: Likewise.
|
||||
|
||||
1999-01-10 Jim Meyering <meyering@ascend.com>
|
||||
|
||||
* src/Makefile.am (pinky_LDADD, pinky_DEPENDENCIES, who_LDADD,
|
||||
who_DEPENDENCIES): Remove definitions.
|
||||
|
||||
* lib/Makefile.am (BUILT_SOURCES): Add lstat.c and stat.c.
|
||||
(lstat.c, stat.c): New rules.
|
||||
|
||||
* lib/canon-host.c (main) [TEST_CANON_HOST]: Add a simple test driver.
|
||||
|
||||
* configure.in: Require autoconf-2.13.
|
||||
Use new AC_SEARCH_LIBS to see if we need nsl or inet libraries
|
||||
to resolve gethostbyname.
|
||||
|
||||
1998-12-22 Jim Meyering <meyering@ascend.com>
|
||||
|
||||
* configure.in (ALL_LINGUAS): Add chinese (zh).
|
||||
|
||||
1998-12-13 Jim Meyering <meyering@ascend.com>
|
||||
|
||||
* lib/putenv.c: Don't include stdlib.h and declare malloc and free.
|
||||
This works around Solaris 2.7's conflicting prototype.
|
||||
Reported by Karl Berry.
|
||||
|
||||
* lib/Makefile.am (lstat.c): Add rule to generate this from xstat.in.
|
||||
(stat.c): Likewise.
|
||||
(EXTRA_DIST): Add xstat.in.
|
||||
* lib/stat.c: Remove file.
|
||||
* lib/lstat.c: Remove file.
|
||||
* lib/xstat.in (xstat@): New file.
|
||||
|
||||
1998-12-10 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
|
||||
|
||||
* src/date.c (main): Arrange to exit unsuccessfully when stime fails.
|
||||
@@ -6,11 +102,6 @@
|
||||
|
||||
* configure.in (ALL_LINGUAS): Add Russian (ru).
|
||||
|
||||
1998-12-06 Jim Meyering <meyering@ascend.com>
|
||||
|
||||
* lib/putenv.c: Redefine putenv before including stdlib.h to work
|
||||
around Solaris 2.7's conflicting prototype. Reported by Karl Berry.
|
||||
|
||||
1998-10-31 Jim Meyering <meyering@ascend.com>
|
||||
|
||||
* tests/Makefile.am (EXTRA_DIST): Add Fetish.pm.
|
||||
@@ -95,8 +186,6 @@
|
||||
|
||||
1998-07-12 Jim Meyering <meyering@ascend.com>
|
||||
|
||||
* Version 1.16f.
|
||||
|
||||
* tests/test: New directory and tests.
|
||||
* tests/Makefile.am (SUBDIRS): Add test.
|
||||
* configure.in (AC_OUTPUT): Add tests/test/Makefile.
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
Changes in release 1.17
|
||||
[1.16f]
|
||||
* chroot now calls chdir ("/") after chroot.
|
||||
* `date -s' now exits with nonzero status upon failure
|
||||
* new autoconf tests detect bugs in vendor mktime from Irix-6.4 and SunOS4.1.4
|
||||
Your executables will be a little larger on such systems because you'll use
|
||||
|
||||
@@ -1,7 +1,274 @@
|
||||
1998-10-22 Jim Meyering <meyering@ascend.com>
|
||||
1999-02-07 Jim Meyering <meyering@ascend.com>
|
||||
|
||||
* Version 1.22h.
|
||||
|
||||
* Makefile.maint (my-distcheck): Don't depend on dist, now that this
|
||||
is hooked up to the distcheck rule.
|
||||
* Makefile.am (distcheck-hook): New target and rule -- link to shared
|
||||
rule, my-distcheck, in Makefile.maint.
|
||||
|
||||
1999-01-31 Jim Meyering <meyering@ascend.com>
|
||||
|
||||
* doc/textutils.texi: Wrap the @top node in @ifnottex instead of
|
||||
@ifinfo so `makeinfo --html ...' works. From Karl Berry.
|
||||
|
||||
1999-01-30 Jim Meyering <meyering@ascend.com>
|
||||
|
||||
* acconfig.h: Remove lots of `#undef's, now that we use the
|
||||
3-argument forms of AC_DEFINE* macros.
|
||||
|
||||
* configure.in: Require autoconf 2.13.
|
||||
Use 3-argument form of AC_DEFINE*.
|
||||
|
||||
1999-01-24 Jim Meyering <meyering@ascend.com>
|
||||
|
||||
* src/tac.c (DONT_UNLINK_WHILE_OPEN) [__MSDOS__ || _WIN32]: Define.
|
||||
|
||||
* lib/quotearg.c (quotearg_n_options): Revert type of parameter `n'
|
||||
(and hence that of the local `n1', too) to `int' at Paul's request.
|
||||
|
||||
1999-01-18 Akim Demaille <demaille@inf.enst.fr>
|
||||
|
||||
* doc/textutils.texi: Harmonization of @samp use for options.
|
||||
|
||||
1999-01-17 Jim Meyering <meyering@ascend.com>
|
||||
|
||||
* Makefile.am (SUBDIRS): Add djgpp.
|
||||
* configure.in (AC_OUTPUT): Add djgpp/Makefile.
|
||||
* djgpp/: New directory.
|
||||
|
||||
* man/Makefile.maint ($(man_MANS)): Don't remove the target (the
|
||||
man page) until after we've created its replacement.
|
||||
|
||||
1999-01-16 Eli Zaretskii <eliz@is.elta.co.il>
|
||||
|
||||
* GNUmakefile: Add SHELL = /bin/sh.
|
||||
* man/GNUmakefile: Likewise.
|
||||
|
||||
1999-01-16 Jim Meyering <meyering@ascend.com>
|
||||
|
||||
* acconfig.h: Remove @BOTTOM@ section.
|
||||
Instead, add the define and decl via m4/jm-macros.m4.
|
||||
|
||||
* lib/argmatch.h (XARGMATCH): Define to return a value once again.
|
||||
(XARGCASEMATCH): Likewise.
|
||||
|
||||
* lib/argmatch.c (EXIT_FAILURE): Define.
|
||||
(ARGMATCH_DIE): Provide default.
|
||||
(__xargmatch_internal): New function.
|
||||
s/rogram_name/program_name.
|
||||
From Akim Demaille.
|
||||
|
||||
1999-01-14 Jim Meyering <meyering@ascend.com>
|
||||
|
||||
* tests/md5sum/basic-1: Use `f', not `x' as temp. file name to avoid
|
||||
warnings from perl5.004.
|
||||
Reported by Volker Borchert.
|
||||
|
||||
* lib/long-options.c (parse_long_options): Rename `usage' parameter
|
||||
to avoid shadowing globally scoped function.
|
||||
|
||||
1999-01-14 Akim Demaille <demaille@inf.enst.fr>
|
||||
|
||||
* acconfig.h: Add a @BOTTOM@ section.
|
||||
(ARGMATCH_DIE) [@BOTTOM@]: Define to usage(1).
|
||||
Declare usage.
|
||||
* src/*.c: Don't prototype usage as static.
|
||||
|
||||
1999-01-10 Jim Meyering <meyering@ascend.com>
|
||||
|
||||
* Version 1.22g.
|
||||
|
||||
All of the following new code is protected by
|
||||
`#if DONT_UNLINK_WHILE_OPEN'
|
||||
* src/tac.c (file_to_remove): New global.
|
||||
(fp_to_close): New global.
|
||||
(unlink_tempfile): New function.
|
||||
(record_tempfile): New function.
|
||||
(save_stdin): Call record_tempfile.
|
||||
Use SET_BINARY.
|
||||
(main): Use SET_BINARY and SET_BINARY2.
|
||||
From Eli Zaretskii.
|
||||
|
||||
1999-01-09 Jim Meyering <meyering@ascend.com>
|
||||
|
||||
* tests/uniq/Test.pm: Add tests from Jochen Hein.
|
||||
* src/uniq.c: New option: --all-repeated (-D).
|
||||
(output_all_repeated) [output_mode]: New enum value.
|
||||
(usage): Describe it.
|
||||
(writeline): Test for new mode.
|
||||
(check_file): Likewise.
|
||||
Based on patches from Jochen Hein and Florin Iucha.
|
||||
(main): Diagnose `too many arguments'.
|
||||
|
||||
* tests/head/Test.pm (null-1): Add test from Jochen Hein.
|
||||
|
||||
* src/tail.c (parse_obsolescent_option): Interpret `number' as decimal.
|
||||
(parse_options): Likewise.
|
||||
Reported by Kamal Paul Nigam.
|
||||
|
||||
* src/tail.c: New option: --max-unchanged-stats=N.
|
||||
New option: --max-n-consecutive-size-changes=N.
|
||||
|
||||
1999-01-03 Jim Meyering <meyering@ascend.com>
|
||||
|
||||
* src/md5sum.c (usage): Remove third program_name argument -- there
|
||||
were only two `%s' in the format string.
|
||||
|
||||
1999-01-02 Jim Meyering <meyering@ascend.com>
|
||||
|
||||
* src/tsort.c (tsort): Use a single call to error instead of two
|
||||
to fprintf.
|
||||
(main): Remove `%s: ' prefix on format string.
|
||||
|
||||
* src/tail.c (parse_options): Use XARGMATCH in place of argmatch.
|
||||
|
||||
* src/ptx.c (format_vals): New array.
|
||||
(main): Use XARGMATCH in place of argmatch.
|
||||
|
||||
* lib/argmatch.h (XARGMATCH): Don't return a value; instead,
|
||||
modify a parameter. Add a `Die_stmt' parameter.
|
||||
Add parentheses.
|
||||
* lib/argmatch.c (__xargmatch_internal): Remove now-unused function.
|
||||
(argmatch_to_argument): Add `const' attribute to first parameter.
|
||||
|
||||
1999-01-01 Jim Meyering <meyering@ascend.com>
|
||||
|
||||
* src/tsort.c: Move inclusion of assert.h to follow that of stdio.h.
|
||||
Some losing systems require this.
|
||||
Use STREQ macro instead of strcmp in a few places.
|
||||
|
||||
* po/POTFILES.in: Add tsort.c.
|
||||
|
||||
* man/Makefile.maint ($(man_MANS)): `exit 1' if any of help2man,
|
||||
chmod, or mv fails. Otherwise, the failure could go unnoticed.
|
||||
|
||||
* man/Makefile.summ: Add entries for ptx and tsort.
|
||||
|
||||
* src/tsort.c: Include readtokens.h.
|
||||
(zeros): Rename global from `rr'.
|
||||
(getstr): Remove function.
|
||||
(tsort) Use readtoken instead of getstr.
|
||||
|
||||
* lib/readtokens.c: New file.
|
||||
* lib/readtokens.h: New file.
|
||||
* lib/Makefile.am (libtu_a_SOURCES): Add readtokens.c.
|
||||
(noinst_HEADERS): Add readtokens.h.
|
||||
|
||||
* man/Makefile.am (man_MANS): Add ptx.1.
|
||||
* man/ptx.x: New file.
|
||||
|
||||
* src/tail.c (parse_options): Use XARGMATCH in place of argmatch.
|
||||
|
||||
* man/Makefile.am (man_MANS): Add tsort.1.
|
||||
* man/tsort.x: New (essentially empty) file.
|
||||
|
||||
* src/tsort.c: Rename globals N and R so they don't shadow locals.
|
||||
(tsort): Rename from `sort'.
|
||||
|
||||
1998-11-07 Mark Kettenis <kettenis@phys.uva.nl>
|
||||
* src/Makefile.am (bin_PROGRAMS): Add tsort.
|
||||
* src/tsort.c: New program.
|
||||
|
||||
* lib/Makefile.am (libtu_a_SOURCES): Add quotearg.c.
|
||||
(noinst_HEADERS): Add quotearg.h.
|
||||
|
||||
============================
|
||||
All of the following are from:
|
||||
1998-04-17 Eli Zaretskii <eliz@is.elta.co.il>
|
||||
|
||||
* src/system.h (SET_BINARY, SET_BINARY2, fileno, setmode): New
|
||||
macros.
|
||||
|
||||
* src/cat.c (usage) [O_BINARY]: Describe -B,--binary option.
|
||||
(main) [O_BINARY]: binary_files, binary_output, file_open_mode:
|
||||
new variables. Add --binary to long_options[]. Switch stdin and
|
||||
stdout to binary mode unless file contents are not important
|
||||
anyway. Open files in binary mode when required.
|
||||
|
||||
* src/cksum.c (cksum) [O_BINARY]: Read redirected stdin in binary
|
||||
mode.
|
||||
|
||||
* src/expand.c (expand): Use binary I/O where appropriate.
|
||||
|
||||
* src/head.c (head_bytes, head_lines) [O_BINARY]: Use binary I/O.
|
||||
|
||||
* src/md5sum.c (OPENOPTS) [O_BINARY]: Use binary I/O when non-zero
|
||||
argument.
|
||||
(md5_file) [O_BINARY]: Switch redirected stdin to binary mode.
|
||||
(main) [O_BINARY]: Use binary reads by default on those systems
|
||||
which care about the difference.
|
||||
|
||||
* src/od.c (skip, read_char, read_block) [O_BINARY]: Switch input
|
||||
stream to binary mode.
|
||||
|
||||
* src/sort.c (PATH_MAX_IN_DIR) [HAVE_UNISTD_H]: New macro, for max
|
||||
file name characters in a given directory.
|
||||
(tempname): Make sure the temp file name is unique even if long
|
||||
file names aren't supported.
|
||||
|
||||
* src/split.c (cwrite) [O_BINARY]: Write output in binary mode.
|
||||
(main) [O_BINARY]: Read input in binary mode.
|
||||
|
||||
* src/sum.c (bsd_sum_file, sysv_sum_file) [O_BINARY]: Read input
|
||||
in binary mode.
|
||||
|
||||
* src/tac.c (record_tempfile, unlink_tempfile)
|
||||
[DONT_UNLINK_WHILE_OPEN]: New functions, for systems where a file
|
||||
cannot be removed before it is closed.
|
||||
(save_stdin) [DONT_UNLINK_WHILE_OPEN]: Record the temporary file,
|
||||
to be removed before exit.
|
||||
(tac_file, save_stdin, main): Use binary I/O when appropriate.
|
||||
|
||||
* src/tail.c (tail_lines, tail_bytes) [O_BINARY]: Use binary I/O
|
||||
when appropriate.
|
||||
|
||||
* src/tr.c (main) [O_BINARY]: Use binary I/O when appropriate.
|
||||
|
||||
* src/unexpand.c (unexpand): Use binary I/O where appropriate.
|
||||
|
||||
* src/wc.c (wc): Use binary mode for input.
|
||||
|
||||
* doc/textutil.texi: Add comments about peculiarities of Textutils
|
||||
operation on MS-DOS/MS-Windows.
|
||||
|
||||
1998-12-22 Jim Meyering <meyering@ascend.com>
|
||||
|
||||
* configure.in (ALL_LINGUAS): Add chinese (zh).
|
||||
|
||||
1998-12-17 Jim Meyering <meyering@ascend.com>
|
||||
|
||||
New options for tail:
|
||||
--follow=name, --follow=descriptor, --allow-missing
|
||||
* src/tail.c (Follow_mode): New enum.
|
||||
(n_live_files): New function.
|
||||
(tail_forever): Avoid starvation with --follow=name and a
|
||||
continually-growing unlinked or renamed file.
|
||||
|
||||
1998-12-13 Jim Meyering <meyering@ascend.com>
|
||||
|
||||
* tests/uniq/Test.pm: New file.
|
||||
* tests/uniq/Makefile.am: New file.
|
||||
* tests/uniq: New directory.
|
||||
* tests/Makefile.am (SUBDIRS): Add uniq.
|
||||
* configure.in (AC_OUTPUT): Add tests/uniq/Makefile.
|
||||
From Jochen Hein.
|
||||
|
||||
* lib/Makefile.am (lstat.c): Add rule to generate this from xstat.in.
|
||||
(stat.c): Likewise.
|
||||
(EXTRA_DIST): Add xstat.in.
|
||||
* lib/stat.c: Remove file.
|
||||
* lib/lstat.c: Remove file.
|
||||
* lib/xstat.in (xstat@): New file.
|
||||
|
||||
* configure.in (ALL_LINGUAS): Add Russian (ru).
|
||||
|
||||
1998-10-31 Jim Meyering <meyering@ascend.com>
|
||||
|
||||
* acconfig.h (stat): New #undef.
|
||||
|
||||
1998-10-22 Jim Meyering <meyering@ascend.com>
|
||||
|
||||
* src/fold.c (usage): Add mention of --version and --help.
|
||||
Reported by Matej Vela <mvela@public.srce.hr>.
|
||||
|
||||
|
||||
@@ -1,5 +1,12 @@
|
||||
Changes in release 1.23
|
||||
[1.22h]
|
||||
* portability tweaks
|
||||
* Window/NT/DOS support
|
||||
[1.22g]
|
||||
* uniq accepts new option: --all-repeated (-D).
|
||||
* Windows/DOS portability fixes
|
||||
* new program: tsort
|
||||
* tail has several new options: FIXME
|
||||
* md5sum can handle file names with embedded backslash characters
|
||||
* pr accepts long option names (see `pr --help')
|
||||
* new program: ptx (moved to this package from being its own distribution)
|
||||
|
||||
143
src/ansi2knr.c
143
src/ansi2knr.c
@@ -1,6 +1,6 @@
|
||||
/* Copyright (C) 1989, 1997 Aladdin Enterprises. All rights reserved. */
|
||||
/* Copyright (C) 1989, 1997, 1998, 1999 Aladdin Enterprises. All rights reserved. */
|
||||
|
||||
/*$Id: ansi2knr.c,v 1.8 1998/05/24 17:43:17 meyering Exp $*/
|
||||
/*$Id: ansi2knr.c,v 1.13 1999/02/03 15:23:21 meyering Exp $*/
|
||||
/* Convert ANSI C function definitions to K&R ("traditional C") syntax */
|
||||
|
||||
/*
|
||||
@@ -40,50 +40,62 @@ program under the GPL.
|
||||
* identifier at the left margin, followed by a left parenthesis,
|
||||
* with a right parenthesis as the last character on the line,
|
||||
* and with a left brace as the first token on the following line
|
||||
* (ignoring possible intervening comments).
|
||||
* It will recognize a multi-line header provided that no intervening
|
||||
* line ends with a left or right brace or a semicolon.
|
||||
* (ignoring possible intervening comments), except that a line
|
||||
* consisting of only
|
||||
* identifier1(identifier2)
|
||||
* will not be considered a function definition unless identifier2 is
|
||||
* the word "void". ansi2knr will recognize a multi-line header provided
|
||||
* that no intervening line ends with a left or right brace or a semicolon.
|
||||
* These algorithms ignore whitespace and comments, except that
|
||||
* the function name must be the first thing on the line.
|
||||
* The following constructs will confuse it:
|
||||
* - Any other construct that starts at the left margin and
|
||||
* follows the above syntax (such as a macro or function call).
|
||||
* - Some macros that tinker with the syntax of the function header.
|
||||
* - Some macros that tinker with the syntax of function headers.
|
||||
*/
|
||||
|
||||
/*
|
||||
* The original and principal author of ansi2knr is L. Peter Deutsch
|
||||
* <ghost@aladdin.com>. Other authors are noted in the change history
|
||||
* that follows (in reverse chronological order):
|
||||
lpd 97-12-08 made input_file optional; only closes input and/or
|
||||
lpd 1999-01-28 fixed two bugs: a '/' in an argument list caused an
|
||||
endless loop; quoted strings within an argument list
|
||||
confused the parser
|
||||
lpd 1999-01-24 added a check for write errors on the output,
|
||||
suggested by Jim Meyering <meyering@ascend.com>
|
||||
lpd 1998-11-09 added further hack to recognize identifier(void)
|
||||
as being a procedure
|
||||
lpd 1998-10-23 added hack to recognize lines consisting of
|
||||
identifier1(identifier2) as *not* being procedures
|
||||
lpd 1997-12-08 made input_file optional; only closes input and/or
|
||||
output file if not stdin or stdout respectively; prints
|
||||
usage message on stderr rather than stdout; adds
|
||||
--filename switch (changes suggested by
|
||||
<ceder@lysator.liu.se>)
|
||||
lpd 96-01-21 added code to cope with not HAVE_CONFIG_H and with
|
||||
lpd 1996-01-21 added code to cope with not HAVE_CONFIG_H and with
|
||||
compilers that don't understand void, as suggested by
|
||||
Tom Lane
|
||||
lpd 96-01-15 changed to require that the first non-comment token
|
||||
lpd 1996-01-15 changed to require that the first non-comment token
|
||||
on the line following a function header be a left brace,
|
||||
to reduce sensitivity to macros, as suggested by Tom Lane
|
||||
<tgl@sss.pgh.pa.us>
|
||||
lpd 95-06-22 removed #ifndefs whose sole purpose was to define
|
||||
lpd 1995-06-22 removed #ifndefs whose sole purpose was to define
|
||||
undefined preprocessor symbols as 0; changed all #ifdefs
|
||||
for configuration symbols to #ifs
|
||||
lpd 95-04-05 changed copyright notice to make it clear that
|
||||
lpd 1995-04-05 changed copyright notice to make it clear that
|
||||
including ansi2knr in a program does not bring the entire
|
||||
program under the GPL
|
||||
lpd 94-12-18 added conditionals for systems where ctype macros
|
||||
lpd 1994-12-18 added conditionals for systems where ctype macros
|
||||
don't handle 8-bit characters properly, suggested by
|
||||
Francois Pinard <pinard@iro.umontreal.ca>;
|
||||
removed --varargs switch (this is now the default)
|
||||
lpd 94-10-10 removed CONFIG_BROKETS conditional
|
||||
lpd 94-07-16 added some conditionals to help GNU `configure',
|
||||
lpd 1994-10-10 removed CONFIG_BROKETS conditional
|
||||
lpd 1994-07-16 added some conditionals to help GNU `configure',
|
||||
suggested by Francois Pinard <pinard@iro.umontreal.ca>;
|
||||
properly erase prototype args in function parameters,
|
||||
contributed by Jim Avera <jima@netcom.com>;
|
||||
correct error in writeblanks (it shouldn't erase EOLs)
|
||||
lpd 89-xx-xx original version
|
||||
lpd 1989-xx-xx original version
|
||||
*/
|
||||
|
||||
/* Most of the conditionals here are to make ansi2knr work with */
|
||||
@@ -151,14 +163,14 @@ program under the GPL.
|
||||
* Compensate for this here.
|
||||
*/
|
||||
#ifdef isascii
|
||||
# undef HAVE_ISASCII /* just in case */
|
||||
# define HAVE_ISASCII 1
|
||||
# undef HAVE_ISASCII /* just in case */
|
||||
# define HAVE_ISASCII 1
|
||||
#else
|
||||
#endif
|
||||
#if STDC_HEADERS || !HAVE_ISASCII
|
||||
# define is_ascii(c) 1
|
||||
# define is_ascii(c) 1
|
||||
#else
|
||||
# define is_ascii(c) isascii(c)
|
||||
# define is_ascii(c) isascii(c)
|
||||
#endif
|
||||
|
||||
#define is_space(c) (is_ascii(c) && isspace(c))
|
||||
@@ -171,6 +183,7 @@ program under the GPL.
|
||||
|
||||
/* Forward references */
|
||||
char *skipspace();
|
||||
char *scanstring();
|
||||
int writeblanks();
|
||||
int test1();
|
||||
int convert1();
|
||||
@@ -183,6 +196,8 @@ main(argc, argv)
|
||||
{ FILE *in = stdin;
|
||||
FILE *out = stdout;
|
||||
char *filename = 0;
|
||||
char *program_name = argv[0];
|
||||
char *output_name = 0;
|
||||
#define bufsize 5000 /* arbitrary size */
|
||||
char *buf;
|
||||
char *line;
|
||||
@@ -198,6 +213,7 @@ main(argc, argv)
|
||||
* check for this switch for backward compatibility.
|
||||
*/
|
||||
int convert_varargs = 1;
|
||||
int output_error;
|
||||
|
||||
while ( argc > 1 && argv[1][0] == '-' ) {
|
||||
if ( !strcmp(argv[1], "--varargs") ) {
|
||||
@@ -212,7 +228,8 @@ main(argc, argv)
|
||||
argv += 2;
|
||||
continue;
|
||||
}
|
||||
fprintf(stderr, "Unrecognized switch: %s\n", argv[1]);
|
||||
fprintf(stderr, "%s: Unrecognized switch: %s\n", program_name,
|
||||
argv[1]);
|
||||
fprintf(stderr, usage);
|
||||
exit(1);
|
||||
}
|
||||
@@ -222,16 +239,19 @@ main(argc, argv)
|
||||
fprintf(stderr, usage);
|
||||
exit(0);
|
||||
case 3:
|
||||
out = fopen(argv[2], "w");
|
||||
output_name = argv[2];
|
||||
out = fopen(output_name, "w");
|
||||
if ( out == NULL ) {
|
||||
fprintf(stderr, "Cannot open output file %s\n", argv[2]);
|
||||
fprintf(stderr, "%s: Cannot open output file %s\n",
|
||||
program_name, output_name);
|
||||
exit(1);
|
||||
}
|
||||
/* falls through */
|
||||
case 2:
|
||||
in = fopen(argv[1], "r");
|
||||
if ( in == NULL ) {
|
||||
fprintf(stderr, "Cannot open input file %s\n", argv[1]);
|
||||
fprintf(stderr, "%s: Cannot open input file %s\n",
|
||||
program_name, argv[1]);
|
||||
exit(1);
|
||||
}
|
||||
if ( filename == 0 )
|
||||
@@ -293,14 +313,24 @@ wl: fputs(buf, out);
|
||||
if ( line != buf )
|
||||
fputs(buf, out);
|
||||
free(buf);
|
||||
if ( out != stdout )
|
||||
fclose(out);
|
||||
if ( output_name ) {
|
||||
output_error = ferror(out);
|
||||
output_error |= fclose(out);
|
||||
} else { /* out == stdout */
|
||||
fflush(out);
|
||||
output_error = ferror(out);
|
||||
}
|
||||
if ( output_error ) {
|
||||
fprintf(stderr, "%s: error writing to %s\n", program_name,
|
||||
(output_name ? output_name : "stdout"));
|
||||
exit(1);
|
||||
}
|
||||
if ( in != stdin )
|
||||
fclose(in);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Skip over space and comments, in either direction. */
|
||||
/* Skip over whitespace and comments, in either direction. */
|
||||
char *
|
||||
skipspace(p, dir)
|
||||
register char *p;
|
||||
@@ -321,6 +351,17 @@ skipspace(p, dir)
|
||||
return p;
|
||||
}
|
||||
|
||||
/* Scan over a quoted string, in either direction. */
|
||||
char *
|
||||
scanstring(p, dir)
|
||||
register char *p;
|
||||
register int dir;
|
||||
{
|
||||
for (p += dir; ; p += dir)
|
||||
if (*p == '"' && p[-dir] != '\\')
|
||||
return p + dir;
|
||||
}
|
||||
|
||||
/*
|
||||
* Write blanks over part of a string.
|
||||
* Don't overwrite end-of-line characters.
|
||||
@@ -397,6 +438,34 @@ test1(buf)
|
||||
key++;
|
||||
}
|
||||
}
|
||||
{
|
||||
char *id = p;
|
||||
int len;
|
||||
/*
|
||||
* Check for identifier1(identifier2) and not
|
||||
* identifier1(void).
|
||||
*/
|
||||
|
||||
while ( isidchar(*p) )
|
||||
p++;
|
||||
len = p - id;
|
||||
p = skipspace(p, 1);
|
||||
if ( *p == ')' && (len != 4 || strncmp(id, "void", 4)) )
|
||||
return 0; /* not a function */
|
||||
}
|
||||
/*
|
||||
* If the last significant character was a ), we need to count
|
||||
* parentheses, because it might be part of a formal parameter
|
||||
* that is a procedure.
|
||||
*/
|
||||
if (contin > 0) {
|
||||
int level = 0;
|
||||
|
||||
for (p = skipspace(buf, 1); *p; p = skipspace(p + 1, 1))
|
||||
level += (*p == '(' ? 1 : *p == ')' ? -1 : 0);
|
||||
if (level > 0)
|
||||
contin = -1;
|
||||
}
|
||||
return contin;
|
||||
}
|
||||
|
||||
@@ -465,8 +534,12 @@ top: p = endfn;
|
||||
else rp = p;
|
||||
break;
|
||||
case '/':
|
||||
p = skipspace(p, 1) - 1;
|
||||
if (p[1] == '*')
|
||||
p = skipspace(p, 1) - 1;
|
||||
break;
|
||||
case '"':
|
||||
p = scanstring(p, 1) - 1;
|
||||
break;
|
||||
default:
|
||||
;
|
||||
}
|
||||
@@ -488,9 +561,19 @@ top: p = endfn;
|
||||
while ( level )
|
||||
switch ( *--p )
|
||||
{
|
||||
case ']': case ')': level++; break;
|
||||
case '[': case '(': level--; break;
|
||||
case '/': p = skipspace(p, -1) + 1; break;
|
||||
case ']': case ')':
|
||||
level++;
|
||||
break;
|
||||
case '[': case '(':
|
||||
level--;
|
||||
break;
|
||||
case '/':
|
||||
if (p > buf && p[-1] == '*')
|
||||
p = skipspace(p, -1) + 1;
|
||||
break;
|
||||
case '"':
|
||||
p = scanstring(p, -1) + 1;
|
||||
break;
|
||||
default: ;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -39,7 +39,7 @@ void strip_trailing_slashes ();
|
||||
/* The name this program was run with. */
|
||||
char *program_name;
|
||||
|
||||
static void
|
||||
void
|
||||
usage (int status)
|
||||
{
|
||||
if (status != 0)
|
||||
|
||||
95
src/cat.c
95
src/cat.c
@@ -1,5 +1,5 @@
|
||||
/* cat -- concatenate files and print on the standard output.
|
||||
Copyright (C) 88, 90, 91, 95, 96, 1997, 1998 Free Software Foundation, Inc.
|
||||
Copyright (C) 88, 90, 91, 1995-1998, 1999 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -72,7 +72,7 @@ static int newlines2 = 0;
|
||||
/* Count of non-fatal error conditions. */
|
||||
static int exit_status = 0;
|
||||
|
||||
static void
|
||||
void
|
||||
usage (int status)
|
||||
{
|
||||
if (status != 0)
|
||||
@@ -102,6 +102,12 @@ Concatenate FILE(s), or standard input, to standard output.\n\
|
||||
\n\
|
||||
With no FILE, or when FILE is -, read standard input.\n\
|
||||
"));
|
||||
#if O_BINARY
|
||||
printf (_("\
|
||||
\n\
|
||||
-B, --binary use binary writes to the console device.\n\n\
|
||||
"));
|
||||
#endif
|
||||
puts (_("\nReport bugs to <bug-textutils@gnu.org>."));
|
||||
}
|
||||
exit (status == 0 ? EXIT_SUCCESS : EXIT_FAILURE);
|
||||
@@ -495,6 +501,11 @@ main (int argc, char **argv)
|
||||
int mark_line_ends = 0;
|
||||
int quote = 0;
|
||||
int output_tabs = 1;
|
||||
#if O_BINARY
|
||||
int binary_files = 0;
|
||||
int binary_output = 0;
|
||||
#endif
|
||||
int file_open_mode = O_RDONLY;
|
||||
|
||||
/* If nonzero, call cat, otherwise call simple_cat to do the actual work. */
|
||||
int options = 0;
|
||||
@@ -514,6 +525,9 @@ main (int argc, char **argv)
|
||||
{"show-ends", no_argument, NULL, 'E'},
|
||||
{"show-tabs", no_argument, NULL, 'T'},
|
||||
{"show-all", no_argument, NULL, 'A'},
|
||||
#if O_BINARY
|
||||
{"binary", no_argument, NULL, 'B'},
|
||||
#endif
|
||||
{"help", no_argument, &show_help, 1},
|
||||
{"version", no_argument, &show_version, 1},
|
||||
{NULL, 0, NULL, 0}
|
||||
@@ -526,7 +540,13 @@ main (int argc, char **argv)
|
||||
|
||||
/* Parse command line options. */
|
||||
|
||||
while ((c = getopt_long (argc, argv, "benstuvAET", long_options, NULL)) != -1)
|
||||
while ((c = getopt_long (argc, argv,
|
||||
#if O_BINARY
|
||||
"benstuvABET"
|
||||
#else
|
||||
"benstuvAET"
|
||||
#endif
|
||||
, long_options, NULL)) != -1)
|
||||
{
|
||||
switch (c)
|
||||
{
|
||||
@@ -577,6 +597,13 @@ main (int argc, char **argv)
|
||||
output_tabs = 0;
|
||||
break;
|
||||
|
||||
#if O_BINARY
|
||||
case 'B':
|
||||
++options;
|
||||
binary_files = 1;
|
||||
break;
|
||||
#endif
|
||||
|
||||
case 'E':
|
||||
++options;
|
||||
mark_line_ends = 1;
|
||||
@@ -629,6 +656,39 @@ main (int argc, char **argv)
|
||||
#endif
|
||||
}
|
||||
|
||||
#if O_BINARY
|
||||
/* We always read and write in BINARY mode, since this is the
|
||||
best way to copy the files verbatim. Exceptions are when
|
||||
they request line numbering, squeezing of empty lines or
|
||||
marking lines' ends: then we use text I/O, because otherwise
|
||||
-b, -s and -E would surprise users on DOS/Windows where a line
|
||||
with only CR-LF is an empty line. (Besides, if they ask for
|
||||
one of these options, they don't care much about the original
|
||||
file contents anyway). */
|
||||
if ((!isatty (output_desc)
|
||||
&& !(numbers || squeeze_empty_lines || mark_line_ends))
|
||||
|| binary_files)
|
||||
{
|
||||
/* Switch stdout to BINARY mode. */
|
||||
binary_output = 1;
|
||||
SET_BINARY (output_desc);
|
||||
}
|
||||
else if (quote)
|
||||
{
|
||||
/* If they want to see the non-printables, let's show them
|
||||
those CR characters as well, so make the input binary.
|
||||
But keep console output in text mode, so that LF causes
|
||||
both CR and LF on output, and the output is readable. */
|
||||
file_open_mode |= O_BINARY;
|
||||
SET_BINARY (0);
|
||||
|
||||
/* Setting stdin to binary switches the console device to
|
||||
raw I/O, which also affects stdout to console. Undo that. */
|
||||
if (isatty (output_desc))
|
||||
setmode (output_desc, O_TEXT);
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Check if any of the input files are the same as the output file. */
|
||||
|
||||
/* Main loop. */
|
||||
@@ -645,10 +705,37 @@ main (int argc, char **argv)
|
||||
{
|
||||
have_read_stdin = 1;
|
||||
input_desc = 0;
|
||||
|
||||
#if O_BINARY
|
||||
/* Switch stdin to BINARY mode if needed. */
|
||||
if (binary_output)
|
||||
{
|
||||
int tty_in = isatty (input_desc);
|
||||
|
||||
/* If stdin is a terminal device, and it is the ONLY
|
||||
input file (i.e. we didn't write anything to the
|
||||
output yet), switch the output back to TEXT mode.
|
||||
This is so "cat > xyzzy" creates a DOS-style text
|
||||
file, like people expect. */
|
||||
if (tty_in && optind <= argc)
|
||||
setmode (output_desc, O_TEXT);
|
||||
else
|
||||
{
|
||||
SET_BINARY (input_desc);
|
||||
# ifdef __DJGPP__
|
||||
/* This is DJGPP-specific. By default, switching console
|
||||
to binary mode disables SIGINT. But we want terminal
|
||||
reads to be interruptible. */
|
||||
if (tty_in)
|
||||
__djgpp_set_ctrl_c (1);
|
||||
# endif
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
input_desc = open (infile, O_RDONLY);
|
||||
input_desc = open (infile, file_open_mode);
|
||||
if (input_desc < 0)
|
||||
{
|
||||
error (0, errno, "%s", infile);
|
||||
|
||||
@@ -291,7 +291,7 @@ change_dir_group (const char *dir, gid_t group, const struct stat *statp)
|
||||
return errors;
|
||||
}
|
||||
|
||||
static void
|
||||
void
|
||||
usage (int status)
|
||||
{
|
||||
if (status != 0)
|
||||
|
||||
@@ -229,7 +229,7 @@ change_dir_mode (const char *dir, const struct mode_change *changes,
|
||||
return errors;
|
||||
}
|
||||
|
||||
static void
|
||||
void
|
||||
usage (int status)
|
||||
{
|
||||
if (status != 0)
|
||||
|
||||
@@ -279,7 +279,7 @@ change_dir_owner (const char *dir, uid_t user, gid_t group, struct stat *statp)
|
||||
return errors;
|
||||
}
|
||||
|
||||
static void
|
||||
void
|
||||
usage (int status)
|
||||
{
|
||||
if (status != 0)
|
||||
|
||||
13
src/chroot.c
13
src/chroot.c
@@ -1,5 +1,5 @@
|
||||
/* chroot -- run command or shell with special root directory
|
||||
Copyright (C) 95, 96, 1997 Free Software Foundation, Inc.
|
||||
Copyright (C) 95, 96, 1997, 1999 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -28,7 +28,7 @@
|
||||
/* The name this program was run with, for error messages. */
|
||||
char *program_name;
|
||||
|
||||
static void
|
||||
void
|
||||
usage (int status)
|
||||
{
|
||||
if (status != 0)
|
||||
@@ -72,6 +72,9 @@ main (int argc, char **argv)
|
||||
if (chroot (argv[1]))
|
||||
error (1, errno, _("cannot change root directory to %s"), argv[1]);
|
||||
|
||||
if (chdir ("/"))
|
||||
error (1, errno, _("cannot chdir to root directory"));
|
||||
|
||||
if (argc == 2)
|
||||
{
|
||||
/* No command. Run an interactive shell. */
|
||||
@@ -82,8 +85,10 @@ main (int argc, char **argv)
|
||||
argv[1] = "-i";
|
||||
}
|
||||
else
|
||||
/* The following arguments give the command. */
|
||||
argv += 2;
|
||||
{
|
||||
/* The following arguments give the command. */
|
||||
argv += 2;
|
||||
}
|
||||
|
||||
/* Execute the given command. */
|
||||
execvp (argv[0], argv);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* cksum -- calculate and print POSIX.2 checksums and sizes of files
|
||||
Copyright (C) 92, 95, 96, 1997, 1998 Free Software Foundation, Inc.
|
||||
Copyright (C) 92, 1995-1998, 1999 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -217,6 +217,9 @@ cksum (char *file, int print_name)
|
||||
}
|
||||
}
|
||||
|
||||
/* Read input in BINARY mode, unless it is a console device. */
|
||||
SET_BINARY (fileno (fp));
|
||||
|
||||
while ((bytes_read = fread (buf, 1, BUFLEN, fp)) > 0)
|
||||
{
|
||||
unsigned char *cp = buf;
|
||||
@@ -257,7 +260,7 @@ cksum (char *file, int print_name)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void
|
||||
void
|
||||
usage (int status)
|
||||
{
|
||||
if (status != 0)
|
||||
|
||||
@@ -57,7 +57,7 @@ static struct option const long_options[] =
|
||||
|
||||
|
||||
|
||||
static void
|
||||
void
|
||||
usage (int status)
|
||||
{
|
||||
if (status != 0)
|
||||
|
||||
31
src/copy.c
31
src/copy.c
@@ -1,5 +1,5 @@
|
||||
/* copy.c -- core functions for copying files and directories
|
||||
Copyright (C) 89, 90, 91, 95, 96, 97, 1998 Free Software Foundation.
|
||||
Copyright (C) 89, 90, 91, 95, 96, 97, 1998, 1999 Free Software Foundation.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -543,6 +543,12 @@ copy_internal (const char *src_path, const char *dst_path,
|
||||
else
|
||||
dst_backup = NULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* rename succeeded */
|
||||
if (x->verbose)
|
||||
printf (_("%s -> %s (backup)\n"), dst_path, dst_backup);
|
||||
}
|
||||
new_dst = 1;
|
||||
}
|
||||
else if (x->force)
|
||||
@@ -625,14 +631,28 @@ copy_internal (const char *src_path, const char *dst_path,
|
||||
|
||||
/* This happens when attempting to rename a directory to a
|
||||
subdirectory of itself. */
|
||||
if (errno == EINVAL)
|
||||
if (errno == EINVAL
|
||||
|
||||
/* When src_path is on an NFS file system, some types of
|
||||
clients, e.g., SunOS4.1.4 and IRIX-5.3, set errno to EIO
|
||||
instead. Testing for this here risks misinterpreting a real
|
||||
I/O error as an attempt to move a directory into itself, so
|
||||
FIXME: consider not doing this. */
|
||||
|| errno == EIO
|
||||
|
||||
/* And with SunOS-4.1.4 client and OpenBSD-2.3 server,
|
||||
we get ENOTEMPTY. */
|
||||
|| errno == ENOTEMPTY)
|
||||
{
|
||||
/* FIXME: this is a little fragile in that it relies on rename(2)
|
||||
returning a specific errno (EINVAL). Expect problems on
|
||||
failing with a specific errno value. Expect problems on
|
||||
non-POSIX systems. */
|
||||
*copy_into_self = 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Ignore other types of failure (e.g. EXDEV), since the following
|
||||
code will try to perform a copy, then remove. */
|
||||
}
|
||||
|
||||
if (S_ISDIR (src_type))
|
||||
@@ -899,6 +919,11 @@ un_backup:
|
||||
{
|
||||
if (rename (dst_backup, dst_path))
|
||||
error (0, errno, _("cannot un-backup `%s'"), dst_path);
|
||||
else
|
||||
{
|
||||
if (x->verbose)
|
||||
printf (_("%s -> %s (unbackup)\n"), dst_backup, dst_path);
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user