mirror of
https://git.savannah.gnu.org/git/coreutils.git
synced 2025-09-10 07:59:52 +02:00
Compare commits
1089 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
65d52b65f6 | ||
|
|
bd10536e76 | ||
|
|
9d30201501 | ||
|
|
f84ed713c5 | ||
|
|
8ab362dd32 | ||
|
|
edba764d8f | ||
|
|
702cda63ad | ||
|
|
ba621e52e1 | ||
|
|
0cb78db3f7 | ||
|
|
e78a54bc5a | ||
|
|
55277831b2 | ||
|
|
ec3a2e9ece | ||
|
|
78fc3d5f94 | ||
|
|
7453dd8cba | ||
|
|
0bb2129733 | ||
|
|
8c14c2f53f | ||
|
|
33561fa3e4 | ||
|
|
722a49ea0c | ||
|
|
33ee26bc23 | ||
|
|
a310f7be42 | ||
|
|
206427cd38 | ||
|
|
c3c1ee6202 | ||
|
|
9ec88c1b14 | ||
|
|
5d5ceb37e8 | ||
|
|
6f795227dc | ||
|
|
4d6314bb53 | ||
|
|
681e6be8f0 | ||
|
|
727168d377 | ||
|
|
f0865ef40c | ||
|
|
1d5528face | ||
|
|
bb726ef20b | ||
|
|
d4bac80f4d | ||
|
|
2ec96a5e83 | ||
|
|
6a1ff8af0c | ||
|
|
99ba62166a | ||
|
|
030c740af1 | ||
|
|
44d5da2f7e | ||
|
|
5e8abb3891 | ||
|
|
2a049a867f | ||
|
|
cf0fa2d930 | ||
|
|
98458bfd36 | ||
|
|
e93c93de4e | ||
|
|
5165cd0f65 | ||
|
|
2210b0a9de | ||
|
|
e41f61881b | ||
|
|
340ff6ec71 | ||
|
|
e8b4056312 | ||
|
|
5e3a2ec4d0 | ||
|
|
9864858156 | ||
|
|
8bd4ff02af | ||
|
|
248735bfc4 | ||
|
|
642939ab6a | ||
|
|
1040e672f1 | ||
|
|
b381b40c4b | ||
|
|
85ea0a3546 | ||
|
|
7c740a55c6 | ||
|
|
b05fe59a8b | ||
|
|
41a6a3caff | ||
|
|
bfaee25d1f | ||
|
|
9ad2c98a28 | ||
|
|
cb392d1022 | ||
|
|
a89b7d3e83 | ||
|
|
7c09897fcb | ||
|
|
fb9a0792d7 | ||
|
|
3988ba0038 | ||
|
|
592a888d76 | ||
|
|
dd12de8477 | ||
|
|
8b4b8696ba | ||
|
|
2cd4a7d3cd | ||
|
|
8044f51ca3 | ||
|
|
585736ca42 | ||
|
|
92b524013b | ||
|
|
27b3065db1 | ||
|
|
1bf7ea8fd1 | ||
|
|
e08b6d5fe7 | ||
|
|
06fc494da3 | ||
|
|
206ea8eee6 | ||
|
|
d777b396b7 | ||
|
|
fe2e2b71ea | ||
|
|
ed9f04cf64 | ||
|
|
944ef7a2c1 | ||
|
|
780ccddf5c | ||
|
|
9f4a054923 | ||
|
|
c46b6369a9 | ||
|
|
216808be38 | ||
|
|
ffde892348 | ||
|
|
b1b0860f20 | ||
|
|
b912c10f7a | ||
|
|
9e4472733b | ||
|
|
0568c4e2d4 | ||
|
|
8fe825b787 | ||
|
|
991e476b56 | ||
|
|
8d65951aea | ||
|
|
bb6e39dc48 | ||
|
|
cf1a86162e | ||
|
|
0c7a413e4e | ||
|
|
ca85f1f994 | ||
|
|
3d8719b298 | ||
|
|
d23db66508 | ||
|
|
cd02bb1ec7 | ||
|
|
51d522533a | ||
|
|
c8e3afa388 | ||
|
|
04ac96ed14 | ||
|
|
4554e2245d | ||
|
|
1564be8f74 | ||
|
|
d90ad399b7 | ||
|
|
2c07dcd1e8 | ||
|
|
903c5ac7c9 | ||
|
|
a54791dc18 | ||
|
|
82fb517834 | ||
|
|
620d2e40cc | ||
|
|
b01894ce34 | ||
|
|
7c76b720e8 | ||
|
|
0cc6e2962d | ||
|
|
37e0f7ac18 | ||
|
|
79feee4de5 | ||
|
|
60e4df7191 | ||
|
|
c8dd553971 | ||
|
|
e5f3393f3a | ||
|
|
0a72ec6c46 | ||
|
|
66937ee56b | ||
|
|
32a06622de | ||
|
|
97f17c1705 | ||
|
|
1fe585c5df | ||
|
|
081b3c96ef | ||
|
|
f36cebb7df | ||
|
|
4e3aebb74a | ||
|
|
b9c866ac1a | ||
|
|
5f4059d425 | ||
|
|
8be6d87354 | ||
|
|
5f3bedb89a | ||
|
|
336a1e2dad | ||
|
|
dc872b1ebe | ||
|
|
3c13c953a8 | ||
|
|
837fc9bfa5 | ||
|
|
e94edefba1 | ||
|
|
ba84092326 | ||
|
|
8f33b715b1 | ||
|
|
b596a7b153 | ||
|
|
01b5986293 | ||
|
|
d06c77002c | ||
|
|
be1c943e9a | ||
|
|
e01be0a128 | ||
|
|
67b77b54e5 | ||
|
|
ad51076699 | ||
|
|
947851c136 | ||
|
|
70c7e4f3e8 | ||
|
|
49475d0eea | ||
|
|
bb0dd792a3 | ||
|
|
f3ad658b98 | ||
|
|
f9cfbe069c | ||
|
|
2de612e2d0 | ||
|
|
5151ce79b2 | ||
|
|
a32544a77f | ||
|
|
3b424797bc | ||
|
|
bc72fc72a1 | ||
|
|
4dae9f5284 | ||
|
|
ba8161db2b | ||
|
|
cb8af7fe26 | ||
|
|
58153c43df | ||
|
|
fbf699624a | ||
|
|
2da403eb07 | ||
|
|
261df8b8d6 | ||
|
|
518c982d88 | ||
|
|
b9fa45f2b0 | ||
|
|
3a87bec119 | ||
|
|
a37bc433f1 | ||
|
|
4968b1607c | ||
|
|
711674a112 | ||
|
|
f406bff3f9 | ||
|
|
82faf15e5a | ||
|
|
daab2ee487 | ||
|
|
a6fe60683e | ||
|
|
52ebb61da8 | ||
|
|
f69ed27d62 | ||
|
|
acf7bd48ce | ||
|
|
3cb04081fb | ||
|
|
766de40ee7 | ||
|
|
dfd085aa0d | ||
|
|
ee3bda46f8 | ||
|
|
a85b65745b | ||
|
|
61d848b5c4 | ||
|
|
b1064596b4 | ||
|
|
5b50817cd5 | ||
|
|
e50a5bac4a | ||
|
|
e81983cdf2 | ||
|
|
e4a76f1076 | ||
|
|
b38d8f4a44 | ||
|
|
4f6b47eb0b | ||
|
|
37fce4800e | ||
|
|
971302bb61 | ||
|
|
5cd9c80dff | ||
|
|
689922fc01 | ||
|
|
419e214799 | ||
|
|
4949f06ed4 | ||
|
|
0a604bf564 | ||
|
|
814ec278fc | ||
|
|
0ac35ac0b7 | ||
|
|
2e836b19be | ||
|
|
30593686a8 | ||
|
|
7bf2a1ab85 | ||
|
|
4f5960c9fb | ||
|
|
2506805702 | ||
|
|
0baa107ac9 | ||
|
|
95ca880e12 | ||
|
|
97002b08a8 | ||
|
|
73408e50af | ||
|
|
28a2492860 | ||
|
|
a988982b19 | ||
|
|
872d765633 | ||
|
|
89c8181527 | ||
|
|
257b85ca8e | ||
|
|
09ad938a09 | ||
|
|
4a3dc4c76c | ||
|
|
3850874bf0 | ||
|
|
a0528d8bf2 | ||
|
|
d7103af2bc | ||
|
|
0f48190f5d | ||
|
|
c7cb614727 | ||
|
|
2cfe7f19eb | ||
|
|
1a91a03bd0 | ||
|
|
f089969ec9 | ||
|
|
b44a6e8565 | ||
|
|
cbc5ba67a5 | ||
|
|
f380405cb6 | ||
|
|
3d23ede4eb | ||
|
|
ff47d1602f | ||
|
|
79cb935030 | ||
|
|
b834bcfc65 | ||
|
|
ac6d593d59 | ||
|
|
25697ff274 | ||
|
|
5a7ffbd8f9 | ||
|
|
cf79b808df | ||
|
|
79d95ae843 | ||
|
|
183fe2386d | ||
|
|
30ccf7222a | ||
|
|
34a6d6e2dd | ||
|
|
4dffef72e6 | ||
|
|
9d3548a908 | ||
|
|
c440afd9f8 | ||
|
|
e02625cb79 | ||
|
|
c86bae2a59 | ||
|
|
6df9b9041d | ||
|
|
777ac50d21 | ||
|
|
b01a17f9b4 | ||
|
|
f31336c193 | ||
|
|
cb1dcb5818 | ||
|
|
3e9e352991 | ||
|
|
79065539dd | ||
|
|
eff5758aaf | ||
|
|
ec655b669f | ||
|
|
9d7d671604 | ||
|
|
5abd02fef6 | ||
|
|
e4c02ba583 | ||
|
|
a3a6a035d1 | ||
|
|
04c9a5c2e4 | ||
|
|
66bada849b | ||
|
|
07f4993bfb | ||
|
|
6c1a78b5d6 | ||
|
|
8f683f9314 | ||
|
|
0da302c05a | ||
|
|
12a14ef034 | ||
|
|
72dc1cec94 | ||
|
|
d53c43f440 | ||
|
|
3ba019fec5 | ||
|
|
5fb608bc08 | ||
|
|
e20876e2ca | ||
|
|
7c8f779ea4 | ||
|
|
a36e686371 | ||
|
|
684f41944e | ||
|
|
6d842c09f0 | ||
|
|
c647d81837 | ||
|
|
a1134e1eb6 | ||
|
|
b24b4b4d59 | ||
|
|
a98f67970e | ||
|
|
aec039a4c1 | ||
|
|
792f321a7a | ||
|
|
2b1a18e682 | ||
|
|
07434548fa | ||
|
|
3450fcb4f5 | ||
|
|
f7fcb90822 | ||
|
|
cb79312b0c | ||
|
|
b29dc802f7 | ||
|
|
300807cd2f | ||
|
|
bce28b3573 | ||
|
|
6d1bd5a97d | ||
|
|
9631f28a53 | ||
|
|
3d3879d118 | ||
|
|
390a0fb48d | ||
|
|
5635524114 | ||
|
|
5fb9e06a4a | ||
|
|
4c2704b8cd | ||
|
|
80ddb4bed4 | ||
|
|
32ae6e8565 | ||
|
|
473d0baa73 | ||
|
|
b4e7a90ce6 | ||
|
|
08e9a37430 | ||
|
|
a63a083879 | ||
|
|
a319b6a626 | ||
|
|
9f0f14d1d6 | ||
|
|
c71e43ce1d | ||
|
|
b70ecc4de1 | ||
|
|
ce8758e12c | ||
|
|
00709b8fa2 | ||
|
|
4e38ca53ee | ||
|
|
f4991fd3ca | ||
|
|
a7135a8d95 | ||
|
|
57bdc54b21 | ||
|
|
8e111ca309 | ||
|
|
0b41ba4064 | ||
|
|
09fb1e2d6e | ||
|
|
5bc14b90c6 | ||
|
|
9bd9db554a | ||
|
|
4e8dbeb934 | ||
|
|
3179bd60e7 | ||
|
|
3369a3e58c | ||
|
|
e50251a361 | ||
|
|
9e4307423e | ||
|
|
f5f28cd4a8 | ||
|
|
ef2d0f022d | ||
|
|
c3410e9d59 | ||
|
|
710f4eabd6 | ||
|
|
cba636cfe0 | ||
|
|
66d86350c4 | ||
|
|
51a43a8c56 | ||
|
|
60660ec79c | ||
|
|
fad0f0f131 | ||
|
|
a82b32cb9a | ||
|
|
b15bf36cee | ||
|
|
82fba3787f | ||
|
|
c2c397d96f | ||
|
|
998e0827e4 | ||
|
|
6d53130e35 | ||
|
|
f921b7474d | ||
|
|
3fcd54f545 | ||
|
|
64baf18b09 | ||
|
|
05c18320d7 | ||
|
|
53ad087cdb | ||
|
|
cd4c7725a8 | ||
|
|
47fa65c648 | ||
|
|
68b5e00c0c | ||
|
|
eb399d45af | ||
|
|
b4f567deb9 | ||
|
|
18c3ace4b9 | ||
|
|
abac4c9182 | ||
|
|
50f317767f | ||
|
|
72c2590f6f | ||
|
|
51c121e352 | ||
|
|
0c0252d8fd | ||
|
|
fa2e6d600c | ||
|
|
b71a7bfd31 | ||
|
|
ac44ebc2f7 | ||
|
|
e628a56597 | ||
|
|
5ef70ce637 | ||
|
|
541c6da4ba | ||
|
|
ca1b088722 | ||
|
|
6c08bfe83f | ||
|
|
7820b193f6 | ||
|
|
88410798e7 | ||
|
|
dc5916a65f | ||
|
|
25481dc08c | ||
|
|
1c4009dc9d | ||
|
|
74d2292171 | ||
|
|
4c1d653416 | ||
|
|
ed1780effe | ||
|
|
d68a9cf4e9 | ||
|
|
59bd90b877 | ||
|
|
d7b57a7571 | ||
|
|
4b7f5815ef | ||
|
|
c4893e2b08 | ||
|
|
6e31d6f5a5 | ||
|
|
618481ca0c | ||
|
|
59ae46343b | ||
|
|
f31ebeed31 | ||
|
|
8617b0d590 | ||
|
|
fa081ec19e | ||
|
|
224794bba6 | ||
|
|
4756c070ad | ||
|
|
e7a2d01f98 | ||
|
|
a6b030577b | ||
|
|
7b5ef3e75d | ||
|
|
2f6403d671 | ||
|
|
872b3a4109 | ||
|
|
1678b8382e | ||
|
|
5e9ae632a4 | ||
|
|
2afb270a28 | ||
|
|
23e0d08815 | ||
|
|
76f851c979 | ||
|
|
af5c78f1c9 | ||
|
|
16403723ad | ||
|
|
f4d210ebe8 | ||
|
|
345481344c | ||
|
|
123cec6105 | ||
|
|
49e5543e9d | ||
|
|
5d1c377779 | ||
|
|
b254cdd31d | ||
|
|
8c0f326660 | ||
|
|
d8fd301dea | ||
|
|
b1e5afbaef | ||
|
|
aa1ae08fc5 | ||
|
|
5f80e10645 | ||
|
|
25a2ac8e3e | ||
|
|
fa6cfd2ef3 | ||
|
|
a1d2e330ec | ||
|
|
1fce29ae93 | ||
|
|
4b08f97c49 | ||
|
|
7323ae775c | ||
|
|
b5c388739e | ||
|
|
ad9e0f6824 | ||
|
|
e660be4d86 | ||
|
|
4433c9a082 | ||
|
|
3a4ac3a6a6 | ||
|
|
fb428bedfc | ||
|
|
9fef9aa3eb | ||
|
|
901f7f3910 | ||
|
|
eb339c4303 | ||
|
|
9c97727fb2 | ||
|
|
5446a82008 | ||
|
|
1fc44fe183 | ||
|
|
92fa74148d | ||
|
|
8e2b85814a | ||
|
|
8b9fe6bd80 | ||
|
|
25dc498dab | ||
|
|
0ac5f83cf9 | ||
|
|
486d1c7024 | ||
|
|
441c736081 | ||
|
|
8708902315 | ||
|
|
66d8a81ef3 | ||
|
|
0eb448466a | ||
|
|
eb85acc63a | ||
|
|
06a0dc99c7 | ||
|
|
b3cac1155b | ||
|
|
4c283a1dc0 | ||
|
|
0818c3e24c | ||
|
|
f30cda6bd2 | ||
|
|
74432ad178 | ||
|
|
6fcb6d17cf | ||
|
|
75a2b87d4d | ||
|
|
bf9a35319d | ||
|
|
f86c2b4f16 | ||
|
|
4c370827c8 | ||
|
|
39a87c5201 | ||
|
|
0731abb38c | ||
|
|
2f066fd511 | ||
|
|
8d292b0f8a | ||
|
|
94755d84aa | ||
|
|
862609b1ec | ||
|
|
36db69ff1c | ||
|
|
5c69cf2fea | ||
|
|
05fac90002 | ||
|
|
7147909aef | ||
|
|
8030ecfee5 | ||
|
|
6c7b470774 | ||
|
|
f0c7211960 | ||
|
|
441007d004 | ||
|
|
7ccb88fc0b | ||
|
|
ad478502ed | ||
|
|
48437b2433 | ||
|
|
19ae573dca | ||
|
|
a49b79b305 | ||
|
|
8607700a75 | ||
|
|
d15cfc1025 | ||
|
|
25af1b321d | ||
|
|
a7b79d2a74 | ||
|
|
27fad7ecec | ||
|
|
fc5797807e | ||
|
|
7215259bb0 | ||
|
|
5e91595f93 | ||
|
|
0d0a14cd56 | ||
|
|
d0301f3c12 | ||
|
|
ab99f99f74 | ||
|
|
0586e6dbfc | ||
|
|
3abab5f388 | ||
|
|
4d34fabc8d | ||
|
|
1771d1a11d | ||
|
|
7f51568be5 | ||
|
|
0801bebeb4 | ||
|
|
49daa21e00 | ||
|
|
6fe8f2a831 | ||
|
|
7dc3ed2f04 | ||
|
|
8a096b3518 | ||
|
|
85cbe110d4 | ||
|
|
f1f8ca7ddc | ||
|
|
5cfcefdcf9 | ||
|
|
12508c923f | ||
|
|
23e52c28fb | ||
|
|
7f2df50cee | ||
|
|
eb63743d48 | ||
|
|
4cf069e8a2 | ||
|
|
46bfcaf2bb | ||
|
|
44e80d26cb | ||
|
|
409e7dd0b6 | ||
|
|
4ebc314f18 | ||
|
|
4efd012fe0 | ||
|
|
a4bbb4de7e | ||
|
|
9c46a8acf3 | ||
|
|
5c629d9ef4 | ||
|
|
c023e74aac | ||
|
|
fca1c1173c | ||
|
|
59e474dc56 | ||
|
|
56644db507 | ||
|
|
7d224e76de | ||
|
|
ac823e21c0 | ||
|
|
5c6facc555 | ||
|
|
47de14a1c5 | ||
|
|
071bd2881a | ||
|
|
4738213e95 | ||
|
|
7c9292d5c9 | ||
|
|
1860324779 | ||
|
|
e2cd6ba3df | ||
|
|
efb6756c2e | ||
|
|
3a29026961 | ||
|
|
44f8f70e7f | ||
|
|
23f6d41f94 | ||
|
|
d0944f6e8b | ||
|
|
07ef2a29cf | ||
|
|
af4ad8d695 | ||
|
|
f0ecd05212 | ||
|
|
4d5aae90bb | ||
|
|
68f68b6bf2 | ||
|
|
1b919c5c1e | ||
|
|
4b26d67f58 | ||
|
|
f60bd3f4c8 | ||
|
|
f3ecf0e5df | ||
|
|
49a3524823 | ||
|
|
23bd5c8be5 | ||
|
|
3ef0832f7a | ||
|
|
3ac28e3dee | ||
|
|
3bb9bacdd7 | ||
|
|
714f398d7f | ||
|
|
7496bc25b0 | ||
|
|
38b90cb669 | ||
|
|
ae993355b7 | ||
|
|
d2c4a4e44d | ||
|
|
b47c09ad60 | ||
|
|
33c62fcef3 | ||
|
|
d3dbf68beb | ||
|
|
072015e870 | ||
|
|
143bca6b80 | ||
|
|
3db0886789 | ||
|
|
f6b9999548 | ||
|
|
22e376e2e1 | ||
|
|
3f4e77fdd6 | ||
|
|
87be2f14b1 | ||
|
|
2bb32c98a5 | ||
|
|
49cda05bd3 | ||
|
|
f8741e7214 | ||
|
|
9cba3efc8a | ||
|
|
b57469df43 | ||
|
|
3eb96248f7 | ||
|
|
c270a888e9 | ||
|
|
382b502ccf | ||
|
|
c276ca6e49 | ||
|
|
e58f9df1b3 | ||
|
|
d71265c2e3 | ||
|
|
5b16ce70fb | ||
|
|
e52bb403b5 | ||
|
|
fa6fd21580 | ||
|
|
434cd73a81 | ||
|
|
958da3fffd | ||
|
|
51037cbd96 | ||
|
|
edcf77bcb1 | ||
|
|
1588508be2 | ||
|
|
2b62137426 | ||
|
|
c1604ca5a7 | ||
|
|
c911821af7 | ||
|
|
16b37b5c9d | ||
|
|
d017693646 | ||
|
|
bdf738b1a1 | ||
|
|
5aeb13149e | ||
|
|
49eda1bead | ||
|
|
1656a5880b | ||
|
|
f95d4f7696 | ||
|
|
e0935a3fc9 | ||
|
|
98b0c66968 | ||
|
|
60279d3bab | ||
|
|
aaaba62077 | ||
|
|
67e430edda | ||
|
|
be6a1bab4f | ||
|
|
4839fcb1c0 | ||
|
|
21910fd8af | ||
|
|
887ad2d358 | ||
|
|
ac3db7d319 | ||
|
|
17cef92ec0 | ||
|
|
97156c6dcf | ||
|
|
136bb0265b | ||
|
|
53b11c2b17 | ||
|
|
f18e3f9fae | ||
|
|
da6e10d0c5 | ||
|
|
348adf65ab | ||
|
|
8e480afae3 | ||
|
|
e046d32e51 | ||
|
|
81b7f5a407 | ||
|
|
c2597b6041 | ||
|
|
bf95c4519c | ||
|
|
22319b98fc | ||
|
|
8f69eadada | ||
|
|
aa2142ded2 | ||
|
|
4e3b901743 | ||
|
|
4e94149b49 | ||
|
|
1faf44aaa8 | ||
|
|
fd4716fb7f | ||
|
|
6c4ad568f5 | ||
|
|
a70e8c6a64 | ||
|
|
6a79d4805e | ||
|
|
8aa60ca867 | ||
|
|
905c870f3a | ||
|
|
cf5d5f5789 | ||
|
|
5c13851e62 | ||
|
|
f3e0faa64c | ||
|
|
a9bf908eb3 | ||
|
|
77f6e91e99 | ||
|
|
47276b7f94 | ||
|
|
d60aa22957 | ||
|
|
981efef893 | ||
|
|
f99cc7ac67 | ||
|
|
14608aae3c | ||
|
|
712c6ceded | ||
|
|
7e82ca8927 | ||
|
|
828c363c22 | ||
|
|
58fac09294 | ||
|
|
0876c5bbd3 | ||
|
|
4f1c8d7e88 | ||
|
|
68f8003de8 | ||
|
|
9bf618e9cb | ||
|
|
bf9322b7ac | ||
|
|
1a210d0f64 | ||
|
|
e5afe1995e | ||
|
|
eacacadc1b | ||
|
|
ac0fd8b58f | ||
|
|
784604222e | ||
|
|
524ed3ce44 | ||
|
|
0468afd28f | ||
|
|
ae0cb229f2 | ||
|
|
adb8e94a33 | ||
|
|
4138c9ef9f | ||
|
|
ac0250af06 | ||
|
|
0e4da9fc4f | ||
|
|
a47615d2ed | ||
|
|
505f652d9e | ||
|
|
73eae2675d | ||
|
|
692e0b022f | ||
|
|
09137743d5 | ||
|
|
6b18df4826 | ||
|
|
33bb552cee | ||
|
|
89bcff9cf4 | ||
|
|
ed83326eb6 | ||
|
|
c21649c777 | ||
|
|
c42eb7b832 | ||
|
|
621f949258 | ||
|
|
11b2bb7b15 | ||
|
|
0b1bd09499 | ||
|
|
bfa5d2583c | ||
|
|
55b9fdf667 | ||
|
|
66fce3b572 | ||
|
|
5a5f1c2340 | ||
|
|
03975e728d | ||
|
|
6e6188765a | ||
|
|
862ae182e1 | ||
|
|
c7a61822f6 | ||
|
|
031d89674a | ||
|
|
7b86ff9268 | ||
|
|
6f9963b8ac | ||
|
|
a5f617b2b4 | ||
|
|
3c1dbea18f | ||
|
|
4d97bfa966 | ||
|
|
e5860d52f8 | ||
|
|
e295f4f388 | ||
|
|
144418cd9d | ||
|
|
dc4a9398cb | ||
|
|
2eb4b97607 | ||
|
|
ca5fe741ff | ||
|
|
2e881206e3 | ||
|
|
c0e51beb61 | ||
|
|
c7366d9a4b | ||
|
|
54f1fd99a4 | ||
|
|
bd9a1a92b4 | ||
|
|
92248c4bc9 | ||
|
|
a3fb0cc75a | ||
|
|
4ac006af69 | ||
|
|
b535cc4171 | ||
|
|
7ffbf3d56a | ||
|
|
89fc480602 | ||
|
|
08b6275885 | ||
|
|
62631d8844 | ||
|
|
183659bb72 | ||
|
|
d9ad189ff7 | ||
|
|
a9a663e42b | ||
|
|
7be64fb687 | ||
|
|
6426d38820 | ||
|
|
45698f01ec | ||
|
|
f25f4c7cf3 | ||
|
|
977ac31797 | ||
|
|
4747fbf9b4 | ||
|
|
1facca4380 | ||
|
|
50d375102f | ||
|
|
670e4e061a | ||
|
|
2d5342fb94 | ||
|
|
a881942cca | ||
|
|
7df6daf8a4 | ||
|
|
1a26ff6e02 | ||
|
|
a7eac7f5fd | ||
|
|
d606b47598 | ||
|
|
07d3a99375 | ||
|
|
8323669455 | ||
|
|
5acb27d993 | ||
|
|
be0c9150a0 | ||
|
|
40bc15c132 | ||
|
|
228544d08c | ||
|
|
ba61c1af86 | ||
|
|
1973da17d0 | ||
|
|
442dbd2429 | ||
|
|
3507d9868f | ||
|
|
4686f1f3fd | ||
|
|
fb9e95e6c3 | ||
|
|
d060450cc8 | ||
|
|
d85b93c0fb | ||
|
|
4bee27ae43 | ||
|
|
aaf8697ee9 | ||
|
|
d92da7460e | ||
|
|
3f026f0448 | ||
|
|
de49951491 | ||
|
|
129c735cda | ||
|
|
9f90080b95 | ||
|
|
1c976d1966 | ||
|
|
c96b23c2ff | ||
|
|
594fe72be0 | ||
|
|
0267e219b7 | ||
|
|
f5ded0090d | ||
|
|
651da6950f | ||
|
|
a3d30ef951 | ||
|
|
1c5a98512f | ||
|
|
88b5eb8ef1 | ||
|
|
09b1a0014b | ||
|
|
77e740fff6 | ||
|
|
fd51c35ed6 | ||
|
|
3ba60a0bc5 | ||
|
|
96332f0a7e | ||
|
|
336827087f | ||
|
|
b9f33a9f76 | ||
|
|
d28d7b1814 | ||
|
|
88a5f079b4 | ||
|
|
2a22320430 | ||
|
|
3ab066a0d6 | ||
|
|
7f93a5421a | ||
|
|
ab43d63c3a | ||
|
|
fe443ea297 | ||
|
|
91b31aa87c | ||
|
|
431d1b6241 | ||
|
|
29faf21e94 | ||
|
|
68c1da4150 | ||
|
|
d8ab1cdcfb | ||
|
|
b998bbef74 | ||
|
|
cae8997185 | ||
|
|
2c4d6da0a4 | ||
|
|
588979c4ae | ||
|
|
dcbd546bf2 | ||
|
|
0644a66901 | ||
|
|
d57cca6de0 | ||
|
|
527715894f | ||
|
|
37ac1f18f1 | ||
|
|
2cceacc8fc | ||
|
|
89beded7d0 | ||
|
|
07dad3b45d | ||
|
|
0eb62f18b3 | ||
|
|
4d80abb25a | ||
|
|
2e4d3d565b | ||
|
|
a8f272fc4e | ||
|
|
537676b8fd | ||
|
|
4f045ded1c | ||
|
|
bf7bd8329e | ||
|
|
1f91d7b6de | ||
|
|
4a4db048f8 | ||
|
|
8414999524 | ||
|
|
5eb68d6330 | ||
|
|
a3d541f8f1 | ||
|
|
81d6349ec5 | ||
|
|
586bfb65d6 | ||
|
|
5245b864d7 | ||
|
|
c7753e456b | ||
|
|
6046409989 | ||
|
|
b88e308839 | ||
|
|
4e26fbcb07 | ||
|
|
3ead987ffc | ||
|
|
f0a528b13a | ||
|
|
5b7ab2372d | ||
|
|
eb7d21ab94 | ||
|
|
d4fb8aaf40 | ||
|
|
9c54e95335 | ||
|
|
047c26a588 | ||
|
|
997c341e37 | ||
|
|
85d03af23a | ||
|
|
c59a8e2d32 | ||
|
|
2b2a4a83de | ||
|
|
0257e76d36 | ||
|
|
d1b342cd01 | ||
|
|
8b32e1089e | ||
|
|
59670ee05b | ||
|
|
8cdd6ee1d6 | ||
|
|
5ece3f7020 | ||
|
|
cd36829ef0 | ||
|
|
89c0589166 | ||
|
|
3631c1d814 | ||
|
|
c9f1ed5f93 | ||
|
|
0044a44ce4 | ||
|
|
f6cabef722 | ||
|
|
24ad07391c | ||
|
|
307a4ecdb5 | ||
|
|
829a063ea6 | ||
|
|
97a68bfd65 | ||
|
|
2023a466b3 | ||
|
|
3429138fc9 | ||
|
|
dcd7703911 | ||
|
|
9cfc4300cd | ||
|
|
dadc92d2a9 | ||
|
|
6eedcbbf3d | ||
|
|
f501ec73d7 | ||
|
|
abe155b043 | ||
|
|
8a9ca6d9d7 | ||
|
|
b266d99497 | ||
|
|
009241b037 | ||
|
|
538f8ebc40 | ||
|
|
a325c0219b | ||
|
|
b7d8a28ca4 | ||
|
|
a9660519e8 | ||
|
|
b138fd4ef8 | ||
|
|
5bbba381fd | ||
|
|
6918da4447 | ||
|
|
8df5caa414 | ||
|
|
3c7f4321a0 | ||
|
|
ae5862eecf | ||
|
|
ff5b51afdd | ||
|
|
787138d638 | ||
|
|
01dfd68984 | ||
|
|
3fa2b8a8eb | ||
|
|
7565faca35 | ||
|
|
73af65ef56 | ||
|
|
1fab123c3c | ||
|
|
17c68905a0 | ||
|
|
8e5aabe259 | ||
|
|
56b3c75e63 | ||
|
|
7c9bd0e59c | ||
|
|
eb5cd04ce2 | ||
|
|
2a5b4f1761 | ||
|
|
825c8d1155 | ||
|
|
cdb4bba0e6 | ||
|
|
be33a434cb | ||
|
|
ba2b351bbf | ||
|
|
f0110096ac | ||
|
|
328b32a49d | ||
|
|
d615969812 | ||
|
|
308e04e326 | ||
|
|
d3e2cd0783 | ||
|
|
060c09c357 | ||
|
|
496cd263e7 | ||
|
|
86c7ef826a | ||
|
|
a578d7d8e9 | ||
|
|
ba53003e9f | ||
|
|
950fed888a | ||
|
|
d7d13fa5c2 | ||
|
|
d24ceb3b32 | ||
|
|
a2c75df256 | ||
|
|
a1850bde1a | ||
|
|
0ba481441f | ||
|
|
23b5ef6146 | ||
|
|
e1f1be8559 | ||
|
|
3786638a49 | ||
|
|
ea4d81f366 | ||
|
|
3e2ec9890b | ||
|
|
ddd1b52c1c | ||
|
|
800f3a1e77 | ||
|
|
b1ebf2a383 | ||
|
|
b6dcca8662 | ||
|
|
c4abcd5882 | ||
|
|
5c68fbd9a3 | ||
|
|
64a58d4cdd | ||
|
|
78c9c2c7fa | ||
|
|
4d76e1e857 | ||
|
|
a57532aeac | ||
|
|
fbc1a9a299 | ||
|
|
c4384e7af5 | ||
|
|
642bc1acfb | ||
|
|
0c28dd9808 | ||
|
|
caf5671edc | ||
|
|
fb056f448a | ||
|
|
6c1ccdaf7f | ||
|
|
a5c0405752 | ||
|
|
0568a21a8d | ||
|
|
cbe7e9daec | ||
|
|
ee45aa56cb | ||
|
|
cbf24b40e3 | ||
|
|
72bca87dba | ||
|
|
0e87cb139e | ||
|
|
ff0e20e30e | ||
|
|
92602ead01 | ||
|
|
7da8f5c488 | ||
|
|
58c625df5d | ||
|
|
12cb8887bc | ||
|
|
495b91c2d1 | ||
|
|
64977d2baa | ||
|
|
ebc3717c9d | ||
|
|
cca0153946 | ||
|
|
8355da5492 | ||
|
|
01f012f2f5 | ||
|
|
c5ee2230b0 | ||
|
|
398ca04327 | ||
|
|
73bb03d0a6 | ||
|
|
4e95cd2dff | ||
|
|
67b5ecf8ab | ||
|
|
376e889123 | ||
|
|
cce1b15448 | ||
|
|
0b6a1829be | ||
|
|
d3b1d606c5 | ||
|
|
b121bd6e31 | ||
|
|
304728fb95 | ||
|
|
9bb12a2a33 | ||
|
|
b0312e15d4 | ||
|
|
131a8fecb3 | ||
|
|
65a9e6a065 | ||
|
|
60ad866925 | ||
|
|
932bf8f214 | ||
|
|
42594a0e4a | ||
|
|
079dc69267 | ||
|
|
664a205be6 | ||
|
|
b734cbf724 | ||
|
|
7287520d21 | ||
|
|
5e74b3cb3b | ||
|
|
35d5499fca | ||
|
|
8a5ad5c78c | ||
|
|
96a72cddd1 | ||
|
|
a49cb29dc1 | ||
|
|
23ad418ba6 | ||
|
|
5d33b7498f | ||
|
|
c7463c38f8 | ||
|
|
eb04d885c2 | ||
|
|
c600ace840 | ||
|
|
8920dfdb57 | ||
|
|
85bcabcba2 | ||
|
|
52855f6e36 | ||
|
|
b6c0821009 | ||
|
|
3bc2ea6982 | ||
|
|
774f38050e | ||
|
|
8ba73f51a0 | ||
|
|
44b0813e1e | ||
|
|
251cad0c9c | ||
|
|
77f6ad8381 | ||
|
|
76ee8c435c | ||
|
|
9805d6c5cc | ||
|
|
784d409601 | ||
|
|
e690564cc9 | ||
|
|
418e181ad8 | ||
|
|
4ac2ebda98 | ||
|
|
3242594f7b | ||
|
|
200a73de4f | ||
|
|
2e62c8ab03 | ||
|
|
8088407c6c | ||
|
|
3617805acb | ||
|
|
6f45173dec | ||
|
|
b1b0565faf | ||
|
|
acd9f2ab3b | ||
|
|
3b3ff7872c | ||
|
|
9681c225cb | ||
|
|
51accd1c5e | ||
|
|
07a2a5a4be | ||
|
|
30e7a37b70 | ||
|
|
f3f599f657 | ||
|
|
6b0465359f | ||
|
|
229031ed3f | ||
|
|
2ae02ab5b9 | ||
|
|
8ee5d881b1 | ||
|
|
322ee6e302 | ||
|
|
ba5be82b7e | ||
|
|
a215ab54d3 | ||
|
|
e66ab953ef | ||
|
|
bc49481933 | ||
|
|
8ca0769584 | ||
|
|
0f19450208 | ||
|
|
0f076ebc12 | ||
|
|
7d1c764098 | ||
|
|
d31fd7a77e | ||
|
|
1ef6e79882 | ||
|
|
d14b4f476c | ||
|
|
06ed252866 | ||
|
|
819147ade4 | ||
|
|
6068858986 | ||
|
|
6580a55aeb | ||
|
|
8586d4652e | ||
|
|
0d07d1b2b7 | ||
|
|
84cdbe6529 | ||
|
|
72d00a1c57 | ||
|
|
6a4d25740c | ||
|
|
fbb3b7b80c | ||
|
|
e76d578bad | ||
|
|
0f0a65766e | ||
|
|
9d89ba4161 | ||
|
|
783186bced | ||
|
|
cc334674f6 | ||
|
|
685ac06eef | ||
|
|
dd02096234 | ||
|
|
a66b8da8d5 | ||
|
|
b9ba08e368 | ||
|
|
a7bed0741a | ||
|
|
d509325269 | ||
|
|
e7ad638593 | ||
|
|
7de3755878 | ||
|
|
79ea5a059c | ||
|
|
2076d0231d | ||
|
|
dc90551359 | ||
|
|
7a1c2309c2 | ||
|
|
a2b9cb05b7 | ||
|
|
a6b5021004 | ||
|
|
6df04c9288 | ||
|
|
83593d5f3a | ||
|
|
8b6b22bcef | ||
|
|
e2b894c771 | ||
|
|
a3e6d3aa63 | ||
|
|
b09da5c9d0 | ||
|
|
2432611646 | ||
|
|
818c25f686 | ||
|
|
7e4c16df3d | ||
|
|
c146a76b5d | ||
|
|
874f367c0a | ||
|
|
432a5017a2 | ||
|
|
5a0e8b1ab1 | ||
|
|
10a0b7c14d | ||
|
|
33ca4e1f5a | ||
|
|
fd5d4e6d54 | ||
|
|
1cf764991f | ||
|
|
a4efa35cd7 | ||
|
|
9434608b2b | ||
|
|
0bce0bb6f4 | ||
|
|
08cf9aee8b | ||
|
|
8256faecd8 | ||
|
|
d45f740edc | ||
|
|
8cce263649 | ||
|
|
d517c8fa79 | ||
|
|
820fd625f3 | ||
|
|
1b6b9abd55 | ||
|
|
8e4c2127af | ||
|
|
fe688e3d91 | ||
|
|
fab52f550d | ||
|
|
5ed7d34ed8 | ||
|
|
e3c1118ce1 | ||
|
|
317fa67e1e | ||
|
|
3156fcf62a | ||
|
|
374d2948bc | ||
|
|
bb42dae7f2 | ||
|
|
f331e1389c | ||
|
|
5fcf19366e | ||
|
|
302165d602 | ||
|
|
7d29906690 | ||
|
|
4c14b0f08e | ||
|
|
63c56a6444 | ||
|
|
dd2b357234 | ||
|
|
e7ff31d2ac | ||
|
|
0a8353f85e | ||
|
|
c7bc5000c9 | ||
|
|
a734df6426 | ||
|
|
97ce59e3bc | ||
|
|
5da39e8d5c | ||
|
|
470a990b59 | ||
|
|
8aaa230726 | ||
|
|
a05f170290 | ||
|
|
85b26cb44d | ||
|
|
a5f14f167e | ||
|
|
b7e390ca09 | ||
|
|
a6561c4753 | ||
|
|
a896d0a426 | ||
|
|
eb4832a29c | ||
|
|
576dca2909 | ||
|
|
60d48b0f32 | ||
|
|
b647a582c0 | ||
|
|
fda1cba3bf | ||
|
|
e5855b15f1 | ||
|
|
3a0bfd5cda | ||
|
|
ec2a27c16b | ||
|
|
80579847f4 | ||
|
|
a50dbaf78c | ||
|
|
e4b01add78 | ||
|
|
c5e036dcd4 | ||
|
|
5b372bd3cc | ||
|
|
facdf8937d | ||
|
|
6073421583 | ||
|
|
d09d7750ea | ||
|
|
8ed95f0a9d | ||
|
|
fcb430c20c | ||
|
|
35ffb9714d | ||
|
|
98986162e7 | ||
|
|
0801186cb1 |
@@ -1 +1 @@
|
||||
4.5.3
|
||||
4.5.12
|
||||
|
||||
492
ABOUT-NLS
492
ABOUT-NLS
@@ -171,232 +171,274 @@ Available Packages
|
||||
==================
|
||||
|
||||
Languages are not equally supported in all packages. The following
|
||||
matrix shows the current state of internationalization, as of August
|
||||
2002. The matrix shows, in regard of each package, for which languages
|
||||
matrix shows the current state of internationalization, as of February
|
||||
2003. The matrix shows, in regard of each package, for which languages
|
||||
PO files have been submitted to translation coordination, with a
|
||||
translation percentage of at least 50%.
|
||||
|
||||
Ready PO files be bg ca cs da de el en eo es et fi fr
|
||||
+----------------------------------------+
|
||||
a2ps | [] [] [] [] |
|
||||
ap-utils | |
|
||||
bash | [] [] [] [] |
|
||||
bfd | [] [] |
|
||||
binutils | [] [] |
|
||||
bison | [] [] [] [] |
|
||||
clisp | |
|
||||
clisp | [] [] [] [] |
|
||||
clisplow | |
|
||||
cpio | [] [] [] [] |
|
||||
darkstat | () |
|
||||
diffutils | [] [] [] [] [] [] |
|
||||
enscript | [] [] |
|
||||
error | [] [] [] |
|
||||
fetchmail | [] () [] [] [] () |
|
||||
fileutils | [] [] [] [] [] |
|
||||
findutils | [] [] [] [] [] [] |
|
||||
flex | [] [] [] [] [] |
|
||||
gas | [] [] |
|
||||
gawk | [] [] [] |
|
||||
gcal | [] [] |
|
||||
gcc | [] [] |
|
||||
gettext | [] [] [] [] [] |
|
||||
gnupg | [] [] [] [] [] [] [] |
|
||||
gprof | [] [] |
|
||||
gpsdrive | () () () () () |
|
||||
grep | [] [] [] [] [] [] [] [] |
|
||||
gretl | [] |
|
||||
gthumb | () () () |
|
||||
hello | [] [] [] [] [] [] [] [] [] |
|
||||
id-utils | [] [] [] |
|
||||
indent | [] [] [] [] [] |
|
||||
jpilot | () [] [] [] |
|
||||
jwhois | [] [] |
|
||||
kbd | [] [] [] |
|
||||
ld | [] [] |
|
||||
libc | [] [] [] [] [] [] [] [] |
|
||||
libiconv | [] [] [] [] |
|
||||
lifelines | () () |
|
||||
lilypond | [] [] |
|
||||
lingoteach | [] [] |
|
||||
lingoteach_lessons| () () |
|
||||
lynx | [] [] [] [] [] |
|
||||
m4 | [] [] [] [] [] |
|
||||
make | [] [] [] [] |
|
||||
man-db | [] () () [] () () |
|
||||
mysecretdiary | [] [] [] |
|
||||
nano | [] () [] [] [] [] |
|
||||
nano_1_0 | [] () [] [] [] [] |
|
||||
opcodes | [] [] [] |
|
||||
parted | [] [] [] [] [] |
|
||||
ptx | [] [] [] [] [] [] [] |
|
||||
python | |
|
||||
recode | [] [] [] [] [] [] |
|
||||
sed | [] [] [] [] [] [] [] [] [] [] |
|
||||
sh-utils | [] [] [] [] |
|
||||
sharutils | [] [] [] [] [] [] [] |
|
||||
sketch | () [] () |
|
||||
soundtracker | [] [] [] |
|
||||
sp | [] |
|
||||
tar | [] [] [] [] [] [] |
|
||||
texinfo | [] [] [] [] [] |
|
||||
textutils | [] [] [] [] [] |
|
||||
util-linux | [] [] [] [] [] [] |
|
||||
vorbis-tools | [] |
|
||||
wastesedge | |
|
||||
wdiff | [] [] [] [] [] [] |
|
||||
wget | [] [] [] [] [] [] [] [] [] [] |
|
||||
+----------------------------------------+
|
||||
be bg ca cs da de el en eo es et fi fr
|
||||
0 2 19 10 30 44 9 1 12 44 17 6 53
|
||||
Ready PO files az be bg ca cs da de el en en_GB eo es et fa fi
|
||||
+-------------------------------------------------+
|
||||
a2ps | [] [] [] [] [] |
|
||||
aegis | () |
|
||||
anubis | |
|
||||
ap-utils | |
|
||||
bash | [] [] [] |
|
||||
batchelor | |
|
||||
bfd | [] [] |
|
||||
binutils | [] [] |
|
||||
bison | [] [] [] [] |
|
||||
clisp | [] [] [] |
|
||||
clisp | |
|
||||
coreutils | [] [] [] [] |
|
||||
cpio | [] [] [] |
|
||||
darkstat | () [] |
|
||||
diffutils | [] [] [] [] [] [] [] |
|
||||
enscript | [] [] [] |
|
||||
error | [] [] [] [] |
|
||||
fetchmail | [] () [] [] [] |
|
||||
fileutils | [] [] [] [] |
|
||||
findutils | [] [] [] [] [] [] [] |
|
||||
flex | [] [] [] [] |
|
||||
gas | [] |
|
||||
gawk | [] [] [] |
|
||||
gcal | [] |
|
||||
gcc | [] [] |
|
||||
gettext | [] [] [] [] [] |
|
||||
gimp-print | |
|
||||
gliv | |
|
||||
gnucash | [] () |
|
||||
gnucash-glossary| [] () [] |
|
||||
gnupg | [] [] [] [] [] [] [] |
|
||||
gpe-todo | |
|
||||
gphoto2 | [] [] |
|
||||
gprof | [] [] |
|
||||
gpsdrive | () () () () |
|
||||
grep | [] [] [] [] [] [] [] |
|
||||
gretl | [] |
|
||||
hello | [] [] [] [] [] [] [] [] [] |
|
||||
id-utils | [] [] |
|
||||
indent | [] [] [] [] [] [] |
|
||||
jpilot | () [] [] [] |
|
||||
jwhois | [] |
|
||||
kbd | [] [] [] |
|
||||
ld | [] [] |
|
||||
libc | [] [] [] [] [] [] [] |
|
||||
libgpewidget | |
|
||||
libiconv | [] [] [] [] [] [] |
|
||||
lifelines | [] () |
|
||||
lilypond | [] |
|
||||
lingoteach | [] |
|
||||
lingoteach_lessons| () () |
|
||||
lynx | [] [] [] [] [] |
|
||||
m4 | [] [] [] [] |
|
||||
mailutils | [] [] |
|
||||
make | [] [] [] |
|
||||
man-db | [] () [] () |
|
||||
mysecretdiary | [] [] [] |
|
||||
nano | [] () [] [] [] |
|
||||
nano_1_0 | [] () [] [] [] |
|
||||
opcodes | [] [] |
|
||||
parted | [] [] [] [] |
|
||||
ptx | [] [] [] [] [] [] [] |
|
||||
python | |
|
||||
radius | |
|
||||
recode | [] [] [] [] [] |
|
||||
sed | [] [] [] [] [] [] |
|
||||
sh-utils | [] [] [] [] |
|
||||
sharutils | [] [] [] [] [] [] [] |
|
||||
sketch | [] () [] |
|
||||
soundtracker | [] [] [] |
|
||||
sp | [] |
|
||||
tar | [] [] [] [] [] [] |
|
||||
texinfo | [] [] [] [] |
|
||||
textutils | [] [] [] [] |
|
||||
tin | () () [] |
|
||||
util-linux | [] [] [] [] [] [] [] |
|
||||
vorbis-tools | [] [] |
|
||||
wastesedge | () |
|
||||
wdiff | [] [] [] [] [] |
|
||||
wget | [] [] [] [] [] [] [] [] [] |
|
||||
xchat | |
|
||||
xpad | |
|
||||
+-------------------------------------------------+
|
||||
az be bg ca cs da de el en en_GB eo es et fa fi
|
||||
0 1 2 26 9 49 46 9 1 1 11 52 19 1 15
|
||||
|
||||
gl he hr hu id it ja ko lv nb nl nn
|
||||
+-------------------------------------+
|
||||
a2ps | () () [] |
|
||||
ap-utils | |
|
||||
bash | [] |
|
||||
bfd | [] |
|
||||
binutils | [] |
|
||||
bison | [] [] [] [] |
|
||||
clisp | |
|
||||
clisp | [] |
|
||||
clisplow | |
|
||||
cpio | [] [] [] [] |
|
||||
darkstat | |
|
||||
diffutils | [] [] [] [] [] |
|
||||
enscript | [] [] |
|
||||
error | [] |
|
||||
fetchmail | [] |
|
||||
fileutils | [] [] [] |
|
||||
findutils | [] [] [] [] [] [] [] [] |
|
||||
flex | [] |
|
||||
gas | |
|
||||
gawk | [] |
|
||||
gcal | |
|
||||
gcc | [] |
|
||||
gettext | [] [] |
|
||||
gnupg | [] [] [] [] |
|
||||
gprof | [] |
|
||||
gpsdrive | [] () () |
|
||||
grep | [] [] [] [] [] [] [] |
|
||||
gretl | |
|
||||
gthumb | () () |
|
||||
hello | [] [] [] [] [] [] [] [] [] [] [] [] |
|
||||
id-utils | [] [] |
|
||||
indent | [] [] [] [] |
|
||||
jpilot | () () |
|
||||
jwhois | [] [] |
|
||||
kbd | |
|
||||
ld | |
|
||||
libc | [] [] [] [] |
|
||||
libiconv | [] [] [] |
|
||||
lifelines | |
|
||||
lilypond | [] |
|
||||
lingoteach | [] |
|
||||
lingoteach_lessons| |
|
||||
lynx | [] [] [] [] |
|
||||
m4 | [] [] [] [] |
|
||||
make | [] [] [] [] [] [] |
|
||||
man-db | () () |
|
||||
mysecretdiary | [] |
|
||||
nano | [] [] [] [] |
|
||||
nano_1_0 | [] [] [] [] [] |
|
||||
opcodes | [] [] |
|
||||
parted | [] [] [] |
|
||||
ptx | [] [] [] [] [] |
|
||||
python | |
|
||||
recode | [] [] [] |
|
||||
sed | [] [] [] [] [] [] [] [] |
|
||||
sh-utils | [] [] [] |
|
||||
sharutils | [] [] [] |
|
||||
sketch | () |
|
||||
soundtracker | [] [] |
|
||||
sp | |
|
||||
tar | [] [] [] [] [] [] |
|
||||
texinfo | [] [] [] |
|
||||
textutils | [] [] [] [] |
|
||||
util-linux | () [] |
|
||||
vorbis-tools | [] |
|
||||
wastesedge | |
|
||||
wdiff | [] [] [] |
|
||||
wget | [] [] [] [] [] [] |
|
||||
+-------------------------------------+
|
||||
gl he hr hu id it ja ko lv nb nl nn
|
||||
23 9 12 19 16 13 26 9 1 7 19 3
|
||||
fr gl he hr hu id it ja ko lg lv ms nb nl
|
||||
+-------------------------------------------+
|
||||
a2ps | [] () () [] [] |
|
||||
aegis | () |
|
||||
anubis | [] [] |
|
||||
ap-utils | [] |
|
||||
bash | [] [] |
|
||||
batchelor | |
|
||||
bfd | [] [] |
|
||||
binutils | [] [] |
|
||||
bison | [] [] [] [] |
|
||||
clisp | [] [] |
|
||||
clisp | |
|
||||
coreutils | [] [] [] |
|
||||
cpio | [] [] [] [] [] |
|
||||
darkstat | () [] [] [] |
|
||||
diffutils | [] [] [] [] [] [] |
|
||||
enscript | [] [] [] |
|
||||
error | [] [] [] |
|
||||
fetchmail | [] |
|
||||
fileutils | [] [] [] [] |
|
||||
findutils | [] [] [] [] [] [] [] [] [] |
|
||||
flex | [] [] |
|
||||
gas | [] |
|
||||
gawk | [] [] |
|
||||
gcal | [] |
|
||||
gcc | [] |
|
||||
gettext | [] [] [] |
|
||||
gimp-print | |
|
||||
gliv | () |
|
||||
gnucash | [] [] [] |
|
||||
gnucash-glossary| [] [] |
|
||||
gnupg | [] [] [] [] [] |
|
||||
gpe-todo | |
|
||||
gphoto2 | [] [] [] |
|
||||
gprof | [] [] |
|
||||
gpsdrive | () [] () () |
|
||||
grep | [] [] [] [] [] [] [] [] |
|
||||
gretl | [] |
|
||||
hello | [] [] [] [] [] [] [] [] [] [] [] [] [] |
|
||||
id-utils | [] [] [] |
|
||||
indent | [] [] [] [] [] [] |
|
||||
jpilot | [] () () |
|
||||
jwhois | [] [] [] [] |
|
||||
kbd | [] |
|
||||
ld | [] |
|
||||
libc | [] [] [] [] [] [] |
|
||||
libgpewidget | |
|
||||
libiconv | [] [] [] [] [] [] |
|
||||
lifelines | () |
|
||||
lilypond | [] [] |
|
||||
lingoteach | [] |
|
||||
lingoteach_lessons| |
|
||||
lynx | [] [] [] [] |
|
||||
m4 | [] [] [] [] [] |
|
||||
mailutils | |
|
||||
make | [] [] [] [] [] [] [] |
|
||||
man-db | [] () () |
|
||||
mysecretdiary | [] [] |
|
||||
nano | [] [] [] [] [] [] |
|
||||
nano_1_0 | [] [] [] [] [] [] |
|
||||
opcodes | [] [] [] |
|
||||
parted | [] [] [] |
|
||||
ptx | [] [] [] [] [] [] |
|
||||
python | |
|
||||
radius | |
|
||||
recode | [] [] [] [] [] |
|
||||
sed | [] [] [] [] [] |
|
||||
sh-utils | [] [] [] [] [] |
|
||||
sharutils | [] [] [] [] [] |
|
||||
sketch | [] |
|
||||
soundtracker | [] [] [] |
|
||||
sp | [] () |
|
||||
tar | [] [] [] [] [] [] [] [] [] |
|
||||
texinfo | [] [] [] [] |
|
||||
textutils | [] [] [] [] [] [] |
|
||||
tin | |
|
||||
util-linux | [] [] () [] [] |
|
||||
vorbis-tools | [] |
|
||||
wastesedge | () |
|
||||
wdiff | [] [] [] [] [] |
|
||||
wget | [] [] [] [] [] [] [] |
|
||||
xchat | |
|
||||
xpad | |
|
||||
+-------------------------------------------+
|
||||
fr gl he hr hu id it ja ko lg lv ms nb nl
|
||||
59 23 8 10 26 20 18 26 8 0 1 8 7 24
|
||||
|
||||
no pl pt pt_BR ru sk sl sv tr uk zh_CN zh_TW
|
||||
+----------------------------------------------+
|
||||
a2ps | () () () [] [] [] [] [] | 10
|
||||
ap-utils | () | 0
|
||||
bash | [] | 6
|
||||
bfd | [] [] | 5
|
||||
binutils | [] [] | 5
|
||||
bison | [] [] [] [] | 12
|
||||
clisp | | 0
|
||||
clisp | | 5
|
||||
clisplow | | 0
|
||||
cpio | [] [] [] [] | 12
|
||||
darkstat | [] [] () () | 2
|
||||
diffutils | [] [] [] [] [] [] | 17
|
||||
enscript | [] [] [] [] | 8
|
||||
error | [] [] [] | 7
|
||||
fetchmail | () () [] | 6
|
||||
fileutils | [] [] [] [] [] [] | 14
|
||||
findutils | [] [] [] [] [] [] [] | 21
|
||||
flex | [] [] [] | 9
|
||||
gas | [] | 3
|
||||
gawk | [] [] | 6
|
||||
gcal | [] [] | 4
|
||||
gcc | [] | 4
|
||||
gettext | [] [] [] [] [] [] | 13
|
||||
gnupg | [] [] [] | 14
|
||||
gprof | [] [] | 5
|
||||
gpsdrive | [] [] | 3
|
||||
grep | [] [] [] [] [] | 20
|
||||
gretl | | 1
|
||||
gthumb | () () [] | 1
|
||||
hello | [] [] [] [] [] [] [] | 28
|
||||
id-utils | [] [] [] [] | 9
|
||||
indent | [] [] [] [] [] | 14
|
||||
jpilot | () () [] [] | 5
|
||||
jwhois | [] () () [] [] | 7
|
||||
kbd | [] [] | 5
|
||||
ld | [] [] | 4
|
||||
libc | [] [] [] [] [] [] | 18
|
||||
libiconv | [] [] [] [] [] | 12
|
||||
lifelines | [] | 1
|
||||
lilypond | [] | 4
|
||||
lingoteach | [] [] | 5
|
||||
lingoteach_lessons| () | 0
|
||||
lynx | [] [] [] [] | 13
|
||||
m4 | [] [] [] [] | 13
|
||||
make | [] [] [] [] [] | 15
|
||||
man-db | | 3
|
||||
mysecretdiary | [] [] [] | 7
|
||||
nano | [] [] [] [] | 13
|
||||
nano_1_0 | [] [] [] [] | 14
|
||||
opcodes | [] [] [] | 8
|
||||
parted | [] [] [] [] | 12
|
||||
ptx | [] [] [] [] [] [] [] | 19
|
||||
python | | 0
|
||||
recode | [] [] [] [] [] [] | 15
|
||||
sed | [] [] [] [] [] [] | 24
|
||||
sh-utils | [] [] | 9
|
||||
sharutils | [] [] [] [] | 14
|
||||
sketch | [] () [] | 4
|
||||
soundtracker | [] | 6
|
||||
sp | | 1
|
||||
tar | [] [] [] [] [] [] [] | 19
|
||||
texinfo | [] [] | 10
|
||||
textutils | [] [] [] [] [] | 14
|
||||
util-linux | [] [] [] | 10
|
||||
vorbis-tools | [] | 3
|
||||
wastesedge | | 0
|
||||
wdiff | [] [] [] [] [] | 14
|
||||
wget | [] [] [] [] [] [] [] [] | 24
|
||||
+----------------------------------------------+
|
||||
37 teams no pl pt pt_BR ru sk sl sv tr uk zh_CN zh_TW
|
||||
68 domains 4 15 2 28 28 12 10 49 43 4 1 9 609
|
||||
nn no pl pt pt_BR ro ru sk sl sv tr uk zh_CN zh_TW
|
||||
+----------------------------------------------------+
|
||||
a2ps | () () () [] [] [] [] [] [] | 14
|
||||
aegis | () | 0
|
||||
anubis | [] [] | 4
|
||||
ap-utils | () () | 1
|
||||
bash | [] [] | 7
|
||||
batchelor | | 0
|
||||
bfd | [] [] | 6
|
||||
binutils | [] [] | 6
|
||||
bison | [] [] [] | 11
|
||||
clisp | | 5
|
||||
clisp | | 0
|
||||
coreutils | [] [] [] [] [] | 12
|
||||
cpio | [] [] [] [] [] | 13
|
||||
darkstat | [] [] () () | 6
|
||||
diffutils | [] [] [] [] [] [] | 19
|
||||
enscript | [] [] [] [] | 10
|
||||
error | [] [] [] [] | 11
|
||||
fetchmail | () () [] | 6
|
||||
fileutils | [] [] [] [] [] [] | 14
|
||||
findutils | [] [] [] [] [] [] [] [] | 24
|
||||
flex | [] [] [] [] | 10
|
||||
gas | [] | 3
|
||||
gawk | [] [] | 7
|
||||
gcal | [] [] | 4
|
||||
gcc | [] | 4
|
||||
gettext | [] [] [] [] [] [] | 14
|
||||
gimp-print | | 0
|
||||
gliv | [] | 1
|
||||
gnucash | [] [] [] [] [] | 9
|
||||
gnucash-glossary| [] [] [] [] | 8
|
||||
gnupg | [] [] [] [] | 16
|
||||
gpe-todo | | 0
|
||||
gphoto2 | [] [] | 7
|
||||
gprof | [] [] [] | 7
|
||||
gpsdrive | [] [] | 3
|
||||
grep | [] [] [] [] [] | 20
|
||||
gretl | | 2
|
||||
hello | [] [] [] [] [] [] [] [] [] | 31
|
||||
id-utils | [] [] [] [] | 9
|
||||
indent | [] [] [] [] [] | 17
|
||||
jpilot | () [] [] [] [] | 8
|
||||
jwhois | [] () () [] [] | 8
|
||||
kbd | [] [] | 6
|
||||
ld | [] [] | 5
|
||||
libc | [] [] [] [] [] [] [] | 20
|
||||
libgpewidget | | 0
|
||||
libiconv | [] [] [] [] [] [] | 18
|
||||
lifelines | [] | 2
|
||||
lilypond | [] | 4
|
||||
lingoteach | [] [] | 4
|
||||
lingoteach_lessons| () | 0
|
||||
lynx | [] [] [] [] | 13
|
||||
m4 | [] [] [] [] | 13
|
||||
mailutils | | 2
|
||||
make | [] [] [] [] [] | 15
|
||||
man-db | [] | 4
|
||||
mysecretdiary | [] [] [] | 8
|
||||
nano | [] [] [] | 13
|
||||
nano_1_0 | [] [] [] [] [] | 15
|
||||
opcodes | [] [] [] | 8
|
||||
parted | [] [] [] [] [] | 12
|
||||
ptx | [] [] [] [] [] [] [] | 20
|
||||
python | | 0
|
||||
radius | | 0
|
||||
recode | [] [] [] [] [] [] | 16
|
||||
sed | [] [] [] [] [] | 16
|
||||
sh-utils | [] [] [] | 12
|
||||
sharutils | [] [] [] [] | 16
|
||||
sketch | [] [] | 5
|
||||
soundtracker | [] | 7
|
||||
sp | [] | 3
|
||||
tar | [] [] [] [] [] [] [] [] [] | 24
|
||||
texinfo | [] [] [] [] | 12
|
||||
textutils | [] [] [] [] [] | 15
|
||||
tin | | 1
|
||||
util-linux | [] [] [] | 14
|
||||
vorbis-tools | [] | 4
|
||||
wastesedge | | 0
|
||||
wdiff | [] [] [] [] [] | 15
|
||||
wget | [] [] [] [] [] [] [] [] | 24
|
||||
xchat | | 0
|
||||
xpad | | 0
|
||||
+----------------------------------------------------+
|
||||
43 teams nn no pl pt pt_BR ro ru sk sl sv tr uk zh_CN zh_TW
|
||||
82 domains 3 4 14 4 34 1 29 14 13 53 46 6 9 13 723
|
||||
|
||||
Some counters in the preceding matrix are higher than the number of
|
||||
visible blocks let us expect. This is because a few extra PO files are
|
||||
@@ -409,9 +451,9 @@ distributed as such by its maintainer. There might be an observable
|
||||
lag between the mere existence a PO file and its wide availability in a
|
||||
distribution.
|
||||
|
||||
If August 2002 seems to be old, you may fetch a more recent copy of
|
||||
this `ABOUT-NLS' file on most GNU archive sites. The most up-to-date
|
||||
matrix with full percentage details can be found at
|
||||
If February 2003 seems to be old, you may fetch a more recent copy
|
||||
of this `ABOUT-NLS' file on most GNU archive sites. The most
|
||||
up-to-date matrix with full percentage details can be found at
|
||||
`http://www.iro.umontreal.ca/contrib/po/HTML/matrix.html'.
|
||||
|
||||
Using `gettext' in new packages
|
||||
@@ -426,7 +468,7 @@ library, whereas only free software can use `libintl' as a static
|
||||
library or use modified versions of `libintl'.
|
||||
|
||||
Once the sources are changed appropriately and the setup can handle
|
||||
to use of `gettext' the only thing missing are the translations. The
|
||||
the use of `gettext' the only thing missing are the translations. The
|
||||
Free Translation Project is also available for packages which are not
|
||||
developed inside the GNU project. Therefore the information given above
|
||||
applies also for every other Free Software Project. Contact
|
||||
|
||||
@@ -14,6 +14,9 @@ have-Makefile := $(shell test -f Makefile && echo yes)
|
||||
# give them a diagnostic.
|
||||
ifeq ($(have-Makefile),yes)
|
||||
|
||||
# Make tar archive easier to reproduce.
|
||||
export TAR_OPTIONS = --owner=0 --group=0 --numeric-owner
|
||||
|
||||
include Makefile
|
||||
include $(srcdir)/Makefile.cfg
|
||||
include $(srcdir)/Makefile.maint
|
||||
|
||||
40
Makefile.cfg
40
Makefile.cfg
@@ -1,15 +1,16 @@
|
||||
# -*- makefile -*-
|
||||
## Customize Makefile.maint.
|
||||
|
||||
# If the version number matches /^\d+.\d+.\d$/ or /[a-z]$/, use alpha.gnu.org.
|
||||
# Otherwise, use ftp.gnu.org.
|
||||
gnu_rel_host := \
|
||||
$(shell perl -e \
|
||||
'print "$(VERSION)" =~ /^(\d\.\d\.\d|.*[a-z])$$/ ? "alpha" : "ftp"')
|
||||
# Use alpha.gnu.org for alpha and beta releases.
|
||||
# Use ftp.gnu.org for major releases.
|
||||
gnu_ftp_host-alpha = alpha
|
||||
gnu_ftp_host-beta = alpha
|
||||
gnu_ftp_host-major = ftp
|
||||
gnu_rel_host = $(gnu_ftp_host-$(RELEASE_TYPE))
|
||||
|
||||
url_dir_list = \
|
||||
ftp://$(gnu_rel_host).gnu.org/gnu/fetish \
|
||||
http://fetish.sf.net \
|
||||
ftp://$(gnu_rel_host).gnu.org/gnu/coreutils \
|
||||
http://fetish.sf.net
|
||||
|
||||
# Files to update automatically.
|
||||
wget_files = \
|
||||
@@ -27,28 +28,3 @@ cvs_files = \
|
||||
# $(srcdir)/src/ansi2knr.c
|
||||
|
||||
local_updates = wget-update cvs-update
|
||||
|
||||
###############################################
|
||||
|
||||
# FIXME: CAUTION this list is a duplicate of one in lib/Makefile.am.
|
||||
io_functions = \
|
||||
clearerr feof ferror fflush fgets fputc fputs \
|
||||
fread fwrite getc getchar putc putchar
|
||||
unlocked_io_functions = $(patsubst %,%_unlocked,$(io_functions))
|
||||
|
||||
comma_separated = $(shell echo $(unlocked_io_functions)|tr -s ' ' ,)
|
||||
|
||||
# This temp file may not be e.g., $@t, since that may be in a read-only
|
||||
# directory. Instead, use a file in the current directory.
|
||||
t_io = $(notdir $@)t
|
||||
|
||||
# This rule requires GNU make.
|
||||
$(srcdir)/m4/jm-glibc-io.m4: $(srcdir)/m4/jm-glibc-io.m4n Makefile.cfg
|
||||
echo dnl This file is automatically generated from $(notdir $<). \
|
||||
> $(t_io)
|
||||
echo >> $(t_io)
|
||||
sed \
|
||||
-e 's/@space_separated@/$(unlocked_io_functions)/g' \
|
||||
-e 's/@comma_separated@/$(comma_separated)/g' \
|
||||
$< >> $(t_io)
|
||||
mv $(t_io) $@
|
||||
|
||||
17
Makefile.in
17
Makefile.in
@@ -1,7 +1,7 @@
|
||||
# Makefile.in generated by automake 1.7.1b from Makefile.am.
|
||||
# Makefile.in generated by automake 1.7.3 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
|
||||
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
|
||||
# Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@@ -79,6 +79,7 @@ LIBS = @LIBS@
|
||||
LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
|
||||
LIB_CRYPT = @LIB_CRYPT@
|
||||
LIB_NANOSLEEP = @LIB_NANOSLEEP@
|
||||
LN_S = @LN_S@
|
||||
LTLIBICONV = @LTLIBICONV@
|
||||
LTLIBINTL = @LTLIBINTL@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
@@ -118,6 +119,7 @@ ac_ct_STRIP = @ac_ct_STRIP@
|
||||
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
|
||||
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
@@ -211,7 +213,7 @@ $(top_builddir)/config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
$(srcdir)/configure: $(srcdir)/configure.ac $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES)
|
||||
cd $(srcdir) && $(AUTOCONF)
|
||||
|
||||
$(ACLOCAL_M4): configure.ac m4/acl.m4 m4/afs.m4 m4/assert.m4 m4/bison.m4 m4/boottime.m4 m4/c-stack.m4 m4/check-decl.m4 m4/chown.m4 m4/codeset.m4 m4/d-ino.m4 m4/d-type.m4 m4/dirfd.m4 m4/dos.m4 m4/error.m4 m4/fpending.m4 m4/fstypename.m4 m4/fsusage.m4 m4/ftruncate.m4 m4/getcwd.m4 m4/getgroups.m4 m4/getline.m4 m4/gettext.m4 m4/gettimeofday.m4 m4/glibc.m4 m4/glibc21.m4 m4/group-member.m4 m4/host-os.m4 m4/iconv.m4 m4/intdiv0.m4 m4/inttypes-pri.m4 m4/inttypes.m4 m4/isc-posix.m4 m4/jm-glibc-io.m4 m4/jm-macros.m4 m4/jm-mktime.m4 m4/jm-winsz1.m4 m4/jm-winsz2.m4 m4/lchown.m4 m4/lcmessage.m4 m4/lib-check.m4 m4/lib-ld.m4 m4/lib-link.m4 m4/lib-prefix.m4 m4/link-follow.m4 m4/longlong.m4 m4/ls-mntd-fs.m4 m4/lstat.m4 m4/mbrtowc.m4 m4/mbswidth.m4 m4/memcmp.m4 m4/mkdir-slash.m4 m4/mkstemp.m4 m4/nanosleep.m4 m4/perl.m4 m4/prereq.m4 m4/progtest.m4 m4/putenv.m4 m4/regex.m4 m4/rename.m4 m4/rmdir-errno.m4 m4/search-libs.m4 m4/st_dm_mode.m4 m4/st_mtim.m4 m4/stat.m4 m4/stdbool.m4 m4/strftime.m4 m4/timespec.m4 m4/unlink-busy.m4 m4/uptime.m4 m4/utimbuf.m4 m4/utime.m4 m4/utimes.m4 m4/xstrtoimax.m4 m4/xstrtoumax.m4
|
||||
$(ACLOCAL_M4): configure.ac m4/acl.m4 m4/afs.m4 m4/assert.m4 m4/bison.m4 m4/boottime.m4 m4/c-stack.m4 m4/canonicalize.m4 m4/check-decl.m4 m4/chown.m4 m4/codeset.m4 m4/d-ino.m4 m4/d-type.m4 m4/dirfd.m4 m4/dos.m4 m4/error.m4 m4/fpending.m4 m4/fstypename.m4 m4/fsusage.m4 m4/ftruncate.m4 m4/ftw.m4 m4/getcwd-path-max.m4 m4/getcwd.m4 m4/getgroups.m4 m4/getline.m4 m4/gettext.m4 m4/gettimeofday.m4 m4/glibc.m4 m4/glibc21.m4 m4/group-member.m4 m4/host-os.m4 m4/iconv.m4 m4/intdiv0.m4 m4/inttypes-pri.m4 m4/inttypes.m4 m4/isc-posix.m4 m4/jm-glibc-io.m4 m4/jm-macros.m4 m4/jm-mktime.m4 m4/jm-winsz1.m4 m4/jm-winsz2.m4 m4/lchown.m4 m4/lcmessage.m4 m4/lib-check.m4 m4/lib-ld.m4 m4/lib-link.m4 m4/lib-prefix.m4 m4/link-follow.m4 m4/longlong.m4 m4/ls-mntd-fs.m4 m4/lstat.m4 m4/mbrtowc.m4 m4/mbswidth.m4 m4/memcmp.m4 m4/mkdir-slash.m4 m4/mkstemp.m4 m4/nanosleep.m4 m4/onceonly.m4 m4/open-max.m4 m4/perl.m4 m4/prereq.m4 m4/progtest.m4 m4/putenv.m4 m4/regex.m4 m4/rename.m4 m4/restrict.m4 m4/rmdir-errno.m4 m4/search-libs.m4 m4/st_dm_mode.m4 m4/st_mtim.m4 m4/stat.m4 m4/stdbool.m4 m4/strftime.m4 m4/timespec.m4 m4/unlink-busy.m4 m4/uptime.m4 m4/utimbuf.m4 m4/utime.m4 m4/utimes.m4 m4/xstrtoimax.m4 m4/xstrtoumax.m4
|
||||
cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
|
||||
|
||||
config.h: stamp-h1
|
||||
@@ -437,15 +439,14 @@ distcheck: dist
|
||||
$(am__remove_distdir)
|
||||
GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(AMTAR) xf -
|
||||
chmod -R a-w $(distdir); chmod a+w $(distdir)
|
||||
mkdir $(distdir)/=build
|
||||
mkdir $(distdir)/=inst
|
||||
mkdir $(distdir)/_build
|
||||
mkdir $(distdir)/_inst
|
||||
chmod a-w $(distdir)
|
||||
dc_install_base=`$(am__cd) $(distdir)/=inst && pwd` \
|
||||
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
|
||||
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) distcheck-hook \
|
||||
&& cd $(distdir)/=build \
|
||||
&& cd $(distdir)/_build \
|
||||
&& ../configure --srcdir=.. --prefix="$$dc_install_base" \
|
||||
--with-included-gettext \
|
||||
$(DISTCHECK_CONFIGURE_FLAGS) \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# This Makefile fragment is shared between fileutils, sh-utils, textutils,
|
||||
# CPPI, Bison, and Autoconf.
|
||||
|
||||
## Copyright (C) 2001-2002 Free Software Foundation, Inc.
|
||||
## Copyright (C) 2001-2003 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
|
||||
@@ -24,17 +24,15 @@ GZIP_ENV = '--no-name --best'
|
||||
|
||||
CVS = cvs
|
||||
|
||||
prev_version_file ?= .prev-version
|
||||
ifeq ($(origin prev_version_file), undefined)
|
||||
prev_version_file = .prev-version
|
||||
endif
|
||||
|
||||
THIS_VERSION_REGEXP = $(subst .,\.,$(VERSION))
|
||||
PREV_VERSION := $(shell cat $(prev_version_file))
|
||||
PREV_VERSION_REGEXP := $(shell echo $(PREV_VERSION)|sed 's/\./\\./g')
|
||||
|
||||
tag-package = $(shell echo "$(PACKAGE)" | tr '[:lower:]' '[:upper:]')
|
||||
tag-this-version = $(subst .,_,$(VERSION))
|
||||
tag-prev-version = $(subst .,_,$(PREV_VERSION))
|
||||
this-cvs-tag = $(tag-package)-$(tag-this-version)
|
||||
prev-cvs-tag = $(tag-package)-$(tag-prev-version)
|
||||
my_distdir = $(PACKAGE)-$(VERSION)
|
||||
|
||||
# Old releases are stored here.
|
||||
@@ -52,7 +50,7 @@ release_archive_dir ?= ../release
|
||||
# new ChangeLog entries.
|
||||
local-check = \
|
||||
po-check copyright-check writable-files m4-check author_mark_check \
|
||||
changelog-check strftime-check header-check
|
||||
changelog-check strftime-check header-check makefile_path_separator_check
|
||||
.PHONY: $(local-check)
|
||||
|
||||
# Make sure C source files in src/ don't include xalloc.h directly,
|
||||
@@ -119,6 +117,17 @@ author_mark_check:
|
||||
{ echo 'Makefile.maint: enclose the above strings in N_ (...)' 1>&2; \
|
||||
exit 1; } || :
|
||||
|
||||
# Sometimes it is useful to change the PATH environment variable
|
||||
# in Makefiles. When doing so, it's better not to use the Unix-centric
|
||||
# path separator of `:', but rather the automake-provided `@PATH_SEPARATOR@'.
|
||||
# It'd be better to use `find -print0 ...|xargs -0 ...', but less portable,
|
||||
# and there probably aren't many projects with so many Makefile.am files
|
||||
# that we'd have to worry about limits on command line length.
|
||||
msg = 'Makefile.maint: Do not use `:'\'' above; use @PATH_SEPARATOR@ instead'
|
||||
makefile_path_separator_check:
|
||||
@grep 'PATH=.*:' `find $(srcdir) -name Makefile.am` \
|
||||
&& { echo $(msg) 1>&2; exit 1; } || :
|
||||
|
||||
# Check that `make alpha' will not fail at the end of the process.
|
||||
writable-files:
|
||||
if test -d $(release_archive_dir); then :; else \
|
||||
@@ -189,10 +198,11 @@ null_AM_MAKEFLAGS = \
|
||||
# by the use of _(). The --disable-nls effectively defines away that macro,
|
||||
# and building with CFLAGS='-Wformat -Werror' causes any format warning to be
|
||||
# treated as a failure.
|
||||
t=./=test
|
||||
TMPDIR ?= /tmp
|
||||
t=$(TMPDIR)/$(PACKAGE)/test
|
||||
my-distcheck: $(local-check)
|
||||
-rm -rf $(t)
|
||||
mkdir $(t)
|
||||
mkdir -p $(t)
|
||||
GZIP=$(GZIP_ENV) $(AMTAR) -C $(t) -zxf $(distdir).tar.gz
|
||||
cd $(t)/$(distdir) \
|
||||
&& ./configure --disable-nls \
|
||||
@@ -201,8 +211,8 @@ my-distcheck: $(local-check)
|
||||
&& $(MAKE) dvi \
|
||||
&& $(MAKE) check \
|
||||
&& $(MAKE) distclean
|
||||
cd $(t) && mv $(distdir) $(distdir).old \
|
||||
&& $(AMTAR) -zxf ../$(distdir).tar.gz
|
||||
(cd $(t) && mv $(distdir) $(distdir).old \
|
||||
&& $(AMTAR) -zxf - ) < $(distdir).tar.gz
|
||||
diff -ur $(t)/$(distdir).old $(t)/$(distdir)
|
||||
-rm -rf $(t)
|
||||
@echo "========================"; \
|
||||
@@ -231,37 +241,20 @@ rel-check:
|
||||
prev-tgz = $(PACKAGE)-$(PREV_VERSION).tar.gz
|
||||
xd-delta = $(PACKAGE)-$(PREV_VERSION)-$(VERSION).xdelta
|
||||
|
||||
news-r1 = /^[^ ].*$(THIS_VERSION_REGEXP)[]:]/
|
||||
news-r2 = /^[^ ].*$(PREV_VERSION_REGEXP)[]:]/
|
||||
|
||||
signatures ?= $(distdir).tar.bz2.sig $(distdir).tar.gz.sig
|
||||
%.sig: %
|
||||
gpg --detach-sign $<
|
||||
|
||||
# This is useful when sending via GNUS in Emacs.
|
||||
mail_gpg_sign_cookie ?= echo '<\#secure method=pgpmime mode=sign>'
|
||||
|
||||
rel-files = $(xd-delta) $(distdir).tar.bz2 $(distdir).tar.gz
|
||||
rel-files = $(xd-delta) $(distdir).tar.bz2 $(distdir).tar.gz $(signatures)
|
||||
announcement: NEWS ChangeLog $(rel-files) $(signatures)
|
||||
@( \
|
||||
./announce-gen \
|
||||
@./announce-gen \
|
||||
--release-type=$(RELEASE_TYPE) \
|
||||
--package=$(PACKAGE) \
|
||||
--prev=$(PREV_VERSION) \
|
||||
--curr=$(VERSION) \
|
||||
--rel=$(release_archive_dir) \
|
||||
$(addprefix --url-dir=, $(url_dir_list)); \
|
||||
echo; \
|
||||
echo NEWS:; \
|
||||
sed -n "$(news-r1),$(news-r2)p" NEWS \
|
||||
| grep -v '^\['; \
|
||||
echo; \
|
||||
echo ChangeLog entries:; \
|
||||
find . -name ChangeLog -maxdepth 2 \
|
||||
| xargs $(CVS) diff -up -r$(prev-cvs-tag) -rHEAD \
|
||||
| sed -n 's/^+//p' \
|
||||
| perl -ne 'm!^\+\+ (\./)?! or print,next;' \
|
||||
-e 'print "\n"."*"x70 ."\n"; s///; print; print "*"x70 ."\n"'; \
|
||||
)
|
||||
--release-archive-directory=$(release_archive_dir) \
|
||||
--news=NEWS \
|
||||
$(addprefix --url-dir=, $(url_dir_list)) \
|
||||
|
||||
|
||||
## ---------------- ##
|
||||
@@ -270,6 +263,7 @@ announcement: NEWS ChangeLog $(rel-files) $(signatures)
|
||||
|
||||
WGET = wget
|
||||
ftp-gnu = ftp://ftp.gnu.org/gnu
|
||||
www-gnu = http://www.gnu.org
|
||||
|
||||
# Use mv, if you don't have/want move-if-change.
|
||||
move_if_change ?= move-if-change
|
||||
@@ -324,8 +318,8 @@ ansi2knr.c-url_prefix = ftp://ftp.cs.wisc.edu/ghost/
|
||||
|
||||
texinfo.tex-url_prefix = $(ftp-gnu)/texinfo/
|
||||
|
||||
standards.texi-url_prefix = $(ftp-gnu)/GNUinfo/
|
||||
make-stds.texi-url_prefix = $(ftp-gnu)/GNUinfo/
|
||||
standards.texi-url_prefix = $(www-gnu)/prep/
|
||||
make-stds.texi-url_prefix = $(standards.texi-url_prefix)
|
||||
|
||||
target = $(patsubst get-%, %, $@)
|
||||
url = $($(notdir $(target))-url_prefix)$(notdir $(target))
|
||||
@@ -335,7 +329,8 @@ $(get-targets):
|
||||
$(WGET) $(url) -O $(target).t \
|
||||
&& $(move_if_change) $(target).t $(target)
|
||||
|
||||
cvs_files ?= $(srcdir)/config/depcomp $(srcdir)/config/missing $(srcdir)/config/mkinstalldirs \
|
||||
cvs_files ?= $(srcdir)/config/depcomp $(srcdir)/config/missing \
|
||||
$(srcdir)/config/mkinstalldirs \
|
||||
$(srcdir)/config/install-sh $(srcdir)/src/ansi2knr.c
|
||||
automake_repo=:pserver:anoncvs:anoncvs@sources.redhat.com:/cvs/automake
|
||||
.PHONY: wget-update
|
||||
@@ -343,13 +338,18 @@ wget-update: $(get-targets)
|
||||
|
||||
.PHONY: cvs-update
|
||||
cvs-update:
|
||||
for f in $(cvs_files); do \
|
||||
test -f $$f || { echo "*** skipping $$f" 1>&2; continue; }; \
|
||||
file=$$(basename $$f); \
|
||||
echo checking out $$file...; \
|
||||
$(CVS) -d $(automake_repo) co -p automake/lib/$$file> $$f.t \
|
||||
&& $(move_if_change) $$f.t $$f; \
|
||||
done
|
||||
fail=; \
|
||||
for f in $(cvs_files); do \
|
||||
test -f $$f || { echo "*** skipping $$f" 1>&2; continue; }; \
|
||||
cvs diff $$f > /dev/null \
|
||||
|| { echo "*** $$f is locally modified; skipping it" 1>&2; \
|
||||
fail=yes; continue; }; \
|
||||
file=$$(basename $$f); \
|
||||
echo checking out $$file...; \
|
||||
$(CVS) -d $(automake_repo) co -p automake/lib/$$file> $$f.t \
|
||||
&& $(move_if_change) $$f.t $$f; \
|
||||
done; \
|
||||
test "$$fail" && exit 1
|
||||
|
||||
define emit-upload-commands
|
||||
echo =====================================
|
||||
@@ -363,12 +363,11 @@ endef
|
||||
$(xd-delta): $(release_archive_dir)/$(prev-tgz) $(distdir).tar.gz
|
||||
xdelta delta -9 $^ $@ || :
|
||||
|
||||
.PHONY: alpha release
|
||||
alpha: release
|
||||
release: $(local-check)
|
||||
.PHONY: alpha beta major
|
||||
alpha beta major: $(local-check)
|
||||
$(MAKE) cvs-dist
|
||||
$(MAKE) $(xd-delta)
|
||||
$(MAKE) -s announcement > /tmp/announce-$(my_distdir)
|
||||
$(MAKE) -s announcement RELEASE_TYPE=$@ > /tmp/announce-$(my_distdir)
|
||||
ln $(rel-files) $(release_archive_dir)
|
||||
chmod a-w $(rel-files)
|
||||
echo $(VERSION) > $(prev_version_file)
|
||||
|
||||
321
NEWS
321
NEWS
@@ -1,3 +1,102 @@
|
||||
[5.0]
|
||||
* false --help now exits nonzero
|
||||
|
||||
[4.5.12]
|
||||
* printf no longer treats \x specially when POSIXLY_CORRECT is set
|
||||
* printf avoids buffer overrun with format ending in a backslash and
|
||||
* printf avoids buffer overrun with incomplete conversion specifier
|
||||
* printf accepts multiple flags in a single conversion specifier
|
||||
|
||||
[4.5.11]
|
||||
* seq no longer requires that a field width be specified
|
||||
* seq no longer fails when given a field width of `0'
|
||||
* seq now accepts ` ' and `'' as valid format flag characters
|
||||
* df now shows a HOSTNAME: prefix for each remote-mounted file system on AIX 5.1
|
||||
* portability tweaks for HP-UX, AIX 5.1, DJGPP
|
||||
|
||||
[4.5.10]
|
||||
* printf no longer segfaults for a negative field width or precision
|
||||
* shred now always enables --exact for non-regular files
|
||||
* du no longer lists hard-linked files more than once
|
||||
* du no longer dumps core on some systems due to `infinite' recursion
|
||||
via nftw's use of the buggy replacement function in getcwd.c
|
||||
* portability patches for a few vendor compilers and 64-bit systems
|
||||
* du -S *really* now works like it did before the change in 4.5.5
|
||||
|
||||
[4.5.9]
|
||||
* du no longer truncates file sizes or sums to fit in 32-bit size_t
|
||||
* work around Linux kernel bug in getcwd (fixed in 2.4.21-pre4), so that pwd
|
||||
now fails if the name of the working directory is so long that getcwd
|
||||
truncates it. Before it would print the truncated name and exit successfully.
|
||||
* `df /some/mount-point' no longer hangs on a GNU libc system when another
|
||||
hard-mounted NFS file system (preceding /some/mount-point in /proc/mounts)
|
||||
is inaccessible.
|
||||
* rm -rf now gives an accurate diagnostic when failing to remove a file
|
||||
under certain unusual conditions
|
||||
* mv and `cp --preserve=links' now preserve multiple hard links even under
|
||||
certain unusual conditions where they used to fail
|
||||
|
||||
[4.5.8]
|
||||
* du -S once again works like it did before the change in 4.5.5
|
||||
* stat accepts a new file format, %B, for the size of each block reported by %b
|
||||
* du accepts new option: --apparent-size
|
||||
* du --bytes (-b) works the same way it did in fileutils-3.16 and before
|
||||
* du reports proper sizes for directories (not zero) (broken in 4.5.6 or 4.5.7)
|
||||
* df now always displays under `Filesystem', the device file name
|
||||
corresponding to the listed mount point. Before, for a block- or character-
|
||||
special file command line argument, df would display that argument. E.g.,
|
||||
`df /dev/hda' would list `/dev/hda' as the `Filesystem', rather than say
|
||||
/dev/hda3 (the device on which `/' is mounted), as it does now.
|
||||
* test now works properly when invoked from a set user ID or set group ID
|
||||
context and when testing access to files subject to alternate protection
|
||||
mechanisms. For example, without this change, a set-UID program that invoked
|
||||
`test -w F' (to see if F is writable) could mistakenly report that it *was*
|
||||
writable, even though F was on a read-only file system, or F had an ACL
|
||||
prohibiting write access, or F was marked as immutable.
|
||||
|
||||
[4.5.7]
|
||||
* du would fail with more than one DIR argument when any but the last did not
|
||||
contain a slash (due to a bug in ftw.c)
|
||||
|
||||
[4.5.6]
|
||||
* du no longer segfaults on Solaris systems (fixed heap-corrupting bug in ftw.c)
|
||||
* du --exclude=FILE works once again (this was broken by the rewrite for 4.5.5)
|
||||
* du no longer gets a failed assertion for certain hierarchy lay-outs
|
||||
involving hard-linked directories
|
||||
* `who -r' no longer segfaults when using non-C-locale messages
|
||||
* df now displays a mount point (usually `/') for non-mounted
|
||||
character-special and block files
|
||||
|
||||
[4.5.5]
|
||||
* ls --dired produces correct byte offset for file names containing
|
||||
nonprintable characters in a multibyte locale
|
||||
* du has been rewritten to use a variant of GNU libc's ftw.c
|
||||
* du now counts the space associated with a directory's directory entry,
|
||||
even if it cannot list or chdir into that subdirectory.
|
||||
* du -S now includes the st_size of each entry corresponding to a subdirectory
|
||||
* rm on FreeBSD can once again remove directories from NFS-mounted file systems
|
||||
* ls has a new option --dereference-command-line-symlink-to-dir, which
|
||||
corresponds to the new default behavior when none of -d, -l -F, -H, -L
|
||||
has been specified.
|
||||
* ls dangling-symlink now prints `dangling-symlink'.
|
||||
Before, it would fail with `no such file or directory'.
|
||||
* ls -s symlink-to-non-dir and ls -i symlink-to-non-dir now print
|
||||
attributes of `symlink', rather than attributes of their referents.
|
||||
* Fix a bug introduced in 4.5.4 that made it so that ls --color would no
|
||||
longer highlight the names of files with the execute bit set when not
|
||||
specified on the command line.
|
||||
* shred's --zero (-z) option no longer gobbles up any following argument.
|
||||
Before, `shred --zero file' would produce `shred: missing file argument',
|
||||
and worse, `shred --zero f1 f2 ...' would appear to work, but would leave
|
||||
the first file untouched.
|
||||
* readlink: new program
|
||||
* cut: new feature: when used to select ranges of byte offsets (as opposed
|
||||
to ranges of fields) and when --output-delimiter=STRING is specified,
|
||||
output STRING between ranges of selected bytes.
|
||||
* rm -r can no longer be tricked into mistakenly reporting a cycle.
|
||||
* when rm detects a directory cycle, it no longer aborts the entire command,
|
||||
but rather merely stops processing the affected command line argument.
|
||||
|
||||
[4.5.4]
|
||||
* cp no longer fails to parse options like this: --preserve=mode,ownership
|
||||
* `ls --color -F symlink-to-dir' works properly
|
||||
@@ -42,5 +141,225 @@
|
||||
* du and ls now report sizes of symbolic links (before they'd always report 0)
|
||||
* uniq now obeys the LC_COLLATE locale, as per POSIX 1003.1-2001 TC1.
|
||||
|
||||
This package is the union of the following:
|
||||
========================================================================
|
||||
Here are the NEWS entries made from fileutils-4.1 until the
|
||||
point at which the packages merged to form the coreutils:
|
||||
|
||||
[4.1.11]
|
||||
* `rm symlink-to-unwritable' doesn't prompt [introduced in 4.1.10]
|
||||
[4.1.10]
|
||||
* rm once again gives a reasonable diagnostic when failing to remove a file
|
||||
owned by someone else in a sticky directory [introduced in 4.1.9]
|
||||
* df now rounds all quantities up, as per POSIX.
|
||||
* New ls time style: long-iso, which generates YYYY-MM-DD HH:MM.
|
||||
* Any time style can be preceded by "posix-"; this causes "ls" to
|
||||
use traditional timestamp format when in the POSIX locale.
|
||||
* The default time style is now posix-long-iso instead of posix-iso.
|
||||
Set TIME_STYLE="posix-iso" to revert to the behavior of 4.1.1 thru 4.1.9.
|
||||
* `rm dangling-symlink' doesn't prompt [introduced in 4.1.9]
|
||||
* stat: remove support for --secure/-s option and related %S and %C format specs
|
||||
* stat: rename --link/-l to --dereference/-L.
|
||||
The old options will continue to work for a while.
|
||||
[4.1.9]
|
||||
* rm can now remove very deep hierarchies, in spite of any limit on stack size
|
||||
* new programs: link, unlink, and stat
|
||||
* New ls option: --author (for the Hurd).
|
||||
* `touch -c no-such-file' no longer fails, per POSIX
|
||||
[4.1.8]
|
||||
* mv no longer mistakenly creates links to preexisting destination files
|
||||
that aren't moved
|
||||
[4.1.7]
|
||||
* rm: close a hole that would allow a running rm process to be subverted
|
||||
[4.1.6]
|
||||
* New cp option: --copy-contents.
|
||||
* cp -r is now equivalent to cp -R. Use cp -R -L --copy-contents to get the
|
||||
traditional (and rarely desirable) cp -r behavior.
|
||||
* ls now accepts --time-style=+FORMAT, where +FORMAT works like date's format
|
||||
* The obsolete usage `touch [-acm] MMDDhhmm[YY] FILE...' is no longer
|
||||
supported on systems conforming to POSIX 1003.1-2001. Use touch -t instead.
|
||||
* cp and inter-partition mv no longer give a misleading diagnostic in some
|
||||
unusual cases
|
||||
[4.1.5]
|
||||
* cp -r no longer preserves symlinks
|
||||
* The block size notation is now compatible with SI and with IEC 60027-2.
|
||||
For example, --block-size=1MB now means --block-size=1000000,
|
||||
whereas --block-size=1MiB now means --block-size=1048576.
|
||||
A missing `B' (e.g. `1M') has the same meaning as before.
|
||||
A trailing `B' now means decimal, not binary; this is a silent change.
|
||||
The nonstandard `D' suffix (e.g. `1MD') is now obsolescent.
|
||||
* -H or --si now outputs the trailing 'B', for consistency with the above.
|
||||
* Programs now output trailing 'K' (not 'k') to mean 1024, as per IEC 60027-2.
|
||||
* New df, du short option -B is short for --block-size.
|
||||
* You can omit an integer `1' before a block size suffix,
|
||||
e.g. `df -BG' is equivalent to `df -B 1G' and to `df --block-size=1G'.
|
||||
* The following options are now obsolescent, as their names are
|
||||
incompatible with IEC 60027-2:
|
||||
df, du: -m or --megabytes (use -BM or --block-size=1M)
|
||||
df, du, ls: --kilobytes (use --block-size=1K)
|
||||
[4.1.4]
|
||||
* df --local no longer lists smbfs file systems whose name starts with //
|
||||
* dd now detects the Linux/tape/lseek bug at run time and warns about it.
|
||||
[4.1.3]
|
||||
* ls -R once again outputs a blank line between per-directory groups of files.
|
||||
This was broken by the cycle-detection change in 4.1.1.
|
||||
* dd once again uses `lseek' on character devices like /dev/mem and /dev/kmem.
|
||||
On systems with the linux kernel (at least up to 2.4.16), dd must still
|
||||
resort to emulating `skip=N' behavior using reads on tape devices, because
|
||||
lseek has no effect, yet appears to succeed. This may be a kernel bug.
|
||||
[4.1.2]
|
||||
* cp no longer fails when two or more source files are the same;
|
||||
now it just gives a warning and doesn't copy the file the second time.
|
||||
E.g., cp a a d/ produces this:
|
||||
cp: warning: source file `a' specified more than once
|
||||
* chmod would set the wrong bit when given symbolic mode strings like
|
||||
these: g=o, o=g, o=u. E.g., `chmod a=,o=w,ug=o f' would give a mode
|
||||
of --w-r---w- rather than --w--w--w-.
|
||||
[4.1.1]
|
||||
* mv (likewise for cp), now fails rather than silently clobbering one of
|
||||
the source files in the following example:
|
||||
rm -rf a b c; mkdir a b c; touch a/f b/f; mv a/f b/f c
|
||||
* ls -R detects directory cycles, per POSIX. It warns and doesn't infloop.
|
||||
* cp's -P option now means the same as --no-dereference, per POSIX.
|
||||
Use --parents to get the old meaning.
|
||||
* When copying with the -H and -L options, cp can preserve logical
|
||||
links between source files with --preserve=links
|
||||
* cp accepts new options:
|
||||
--preserve[={mode,ownership,timestamps,links,all}]
|
||||
--no-preserve={mode,ownership,timestamps,links,all}
|
||||
* cp's -p and --preserve options remain unchanged and are equivalent
|
||||
to `--preserve=mode,ownership,timestamps'
|
||||
* mv and cp accept a new option: --reply={yes,no,query}; provides a consistent
|
||||
mechanism to control whether one is prompted about certain existing
|
||||
destination files. Note that cp's and mv's -f options don't have the
|
||||
same meaning: cp's -f option no longer merely turns off `-i'.
|
||||
* remove portability limitations (e.g., PATH_MAX on the Hurd, fixes for
|
||||
64-bit systems)
|
||||
* mv now prompts before overwriting an existing, unwritable destination file
|
||||
when stdin is a tty, unless --force (-f) is specified, as per POSIX.
|
||||
* mv: fix the bug whereby `mv -uf source dest' would delete source,
|
||||
even though it's older than dest.
|
||||
* chown's --from=CURRENT_OWNER:CURRENT_GROUP option now works
|
||||
* cp now ensures that the set-user-ID and set-group-ID bits are cleared for
|
||||
the destination file when when copying and not preserving permissions.
|
||||
* `ln -f --backup k k' gives a clearer diagnostic
|
||||
* ls no longer truncates user names or group names that are longer
|
||||
than 8 characters.
|
||||
* ls's new --dereference-command-line option causes it to dereference
|
||||
symbolic links on the command-line only. It is the default unless
|
||||
one of the -d, -F, or -l options are given.
|
||||
* ls -H now means the same as ls --dereference-command-line, as per POSIX.
|
||||
* ls -g now acts like ls -l, except it does not display owner, as per POSIX.
|
||||
* ls -n now implies -l, as per POSIX.
|
||||
* ls can now display dates and times in one of four time styles:
|
||||
|
||||
- The `full-iso' time style gives full ISO-style time stamps like
|
||||
`2001-05-14 23:45:56.477817180 -0700'.
|
||||
- The 'iso' time style gives ISO-style time stamps like '2001-05-14 '
|
||||
and '05-14 23:45'.
|
||||
- The 'locale' time style gives locale-dependent time stamps like
|
||||
'touko 14 2001' and 'touko 14 23:45' (in a Finnish locale).
|
||||
- The 'posix-iso' time style gives traditional POSIX-locale
|
||||
time stamps like 'May 14 2001' and 'May 14 23:45' unless the user
|
||||
specifies a non-POSIX locale, in which case it uses ISO-style dates.
|
||||
This is the default.
|
||||
|
||||
You can specify a time style with an option like --time-style='iso'
|
||||
or with an environment variable like TIME_STYLE='iso'. GNU Emacs 21
|
||||
and later can parse ISO dates, but older Emacs versions cannot, so
|
||||
if you are using an older version of Emacs outside the default POSIX
|
||||
locale, you may need to set TIME_STYLE="locale".
|
||||
|
||||
* --full-time is now an alias for "-l --time-style=full-iso".
|
||||
|
||||
|
||||
========================================================================
|
||||
Here are the NEWS entries made from sh-utils-2.0 until the
|
||||
point at which the packages merged to form the coreutils:
|
||||
|
||||
[2.0.15]
|
||||
* date no longer accepts e.g., September 31 in the MMDDhhmm syntax
|
||||
* fix a bug in this package's .m4 files and in configure.ac
|
||||
[2.0.14]
|
||||
* nohup's behavior is changed as follows, to conform to POSIX 1003.1-2001:
|
||||
- nohup no longer adjusts scheduling priority; use "nice" for that.
|
||||
- nohup now redirects stderr to stdout, if stderr is not a terminal.
|
||||
- nohup exit status is now 126 if command was found but not invoked,
|
||||
127 if nohup failed or if command was not found.
|
||||
[2.0.13]
|
||||
* uname and uptime work better on *BSD systems
|
||||
* pathchk now exits nonzero for a path with a directory component
|
||||
that specifies a non-directory
|
||||
[2.0.12]
|
||||
* kill: new program
|
||||
* who accepts new options: --all (-a), --boot (-b), --dead (-d), --login,
|
||||
--process (-p), --runlevel (-r), --short (-s), --time (-t), --users (-u).
|
||||
The -u option now produces POSIX-specified results and is the same as
|
||||
the long option `--users'. --idle is no longer the same as -u.
|
||||
* The following changes apply on systems conforming to POSIX 1003.1-2001,
|
||||
and are required by the new POSIX standard:
|
||||
- `date -I' is no longer supported. Instead, use `date --iso-8601'.
|
||||
- `nice -NUM' is no longer supported. Instead, use `nice -n NUM'.
|
||||
* New 'uname' options -i or --hardware-platform, and -o or --operating-system.
|
||||
'uname -a' now outputs -i and -o information at the end.
|
||||
New uname option --kernel-version is an alias for -v.
|
||||
Uname option --release has been renamed to --kernel-release,
|
||||
and --sysname has been renamed to --kernel-name;
|
||||
the old options will work for a while, but are no longer documented.
|
||||
* 'expr' now uses the LC_COLLATE locale for string comparison, as per POSIX.
|
||||
* 'expr' now requires '+' rather than 'quote' to quote tokens;
|
||||
this removes an incompatibility with POSIX.
|
||||
* date -d 'last friday' would print a date/time that was one hour off
|
||||
(e.g., 23:00 on *thursday* rather than 00:00 of the preceding friday)
|
||||
when run such that the current time and the target date/time fall on
|
||||
opposite sides of a daylight savings time transition.
|
||||
This problem arose only with relative date strings like `last monday'.
|
||||
It was not a problem with strings that include absolute dates.
|
||||
* factor is twice as fast, for large numbers
|
||||
[2.0.11]
|
||||
* setting the date now works properly, even when using -u
|
||||
* `date -f - < /dev/null' no longer dumps core
|
||||
* some DOS/Windows portability changes
|
||||
[2.0j]
|
||||
* `date -d DATE' now parses certain relative DATEs correctly
|
||||
[2.0i]
|
||||
* fixed a bug introduced in 2.0h that made many programs fail with a
|
||||
`write error' when invoked with the --version option
|
||||
[2.0h]
|
||||
* all programs fail when printing --help or --version output to a full device
|
||||
* printf exits nonzero upon write failure
|
||||
* yes now detects and terminates upon write failure
|
||||
* date --rfc-822 now always emits day and month names from the `C' locale
|
||||
* portability tweaks for Solaris8, Ultrix, and DOS
|
||||
[2.0g]
|
||||
* date now handles two-digit years with leading zeros correctly.
|
||||
* printf interprets unicode, \uNNNN \UNNNNNNNN, on systems with the
|
||||
required support; from Bruno Haible.
|
||||
* stty's rprnt attribute now works on HPUX 10.20
|
||||
* seq's --equal-width option works more portably
|
||||
[2.0f]
|
||||
* fix build problems with ut_name vs. ut_user
|
||||
[2.0e]
|
||||
* stty: fix long-standing bug that caused test failures on at least HPUX
|
||||
systems when COLUMNS was set to zero
|
||||
* still more portability fixes
|
||||
* unified lib/: now that directory and most of the configuration framework
|
||||
is common between fileutils, textutils, and sh-utils
|
||||
[2.0d]
|
||||
* fix portability problem with sleep vs lib/strtod.c's requirement for -lm
|
||||
[2.0c]
|
||||
* fix portability problems with nanosleep.c and with the new code in sleep.c
|
||||
[2.0b]
|
||||
* Regenerate lib/Makefile.in so that nanosleep.c is distributed.
|
||||
[2.0a]
|
||||
* sleep accepts floating point arguments on command line
|
||||
* sleep's clock continues counting down when sleep is suspended
|
||||
* when a suspended sleep process is resumed, it continues sleeping if
|
||||
there is any time remaining
|
||||
* who once again prints whatever host information it has, even without --lookup
|
||||
|
||||
========================================================================
|
||||
For older NEWS entries for the fileutils, textutils, and sh-utils
|
||||
packages, see ./old/*/NEWS.
|
||||
|
||||
This package began as the union of the following:
|
||||
textutils-2.1, fileutils-4.1.11, sh-utils-2.0.15.
|
||||
|
||||
42
README
42
README
@@ -11,9 +11,9 @@ The programs that can be built with this package are:
|
||||
df dir dircolors dirname du echo env expand expr factor false fmt fold
|
||||
ginstall groups head hostid hostname id join kill link ln logname ls
|
||||
md5sum mkdir mkfifo mknod mv nice nl nohup od paste pathchk pinky pr
|
||||
printenv printf ptx pwd rm rmdir seq sha1sum shred sleep sort split
|
||||
stat stty su sum sync tac tail tee test touch tr true tsort tty uname
|
||||
unexpand uniq unlink uptime users vdir wc who whoami yes
|
||||
printenv printf ptx pwd readlink rm rmdir seq sha1sum shred sleep sort
|
||||
split stat stty su sum sync tac tail tee test touch tr true tsort tty
|
||||
uname unexpand uniq unlink uptime users vdir wc who whoami yes
|
||||
|
||||
See the file NEWS for a list of major changes in the current release.
|
||||
|
||||
@@ -53,6 +53,36 @@ If you run the tests on a SunOS4.1.4 system, expect the ctime-part of
|
||||
the ls `time-1' test to fail. I believe that is due to a bug in the
|
||||
way Sun implemented link(2) and chmod(2).
|
||||
|
||||
***************************************
|
||||
Last-minute notes, before coreutils-5.0
|
||||
---------------------------------------
|
||||
|
||||
A known problem exists when compiling on HPUX on both hppa and ia64
|
||||
in 64-bit mode (i.e. +DD64) on all known HPUX 11.x versions. This
|
||||
is not due to a bug in the package but instead due to a bug in the
|
||||
system header file which breaks things in 64-bit mode. The default
|
||||
compilation mode is 32-bit and the software compiles fine using the
|
||||
default mode. To build this software in 64-bit mode you will need
|
||||
to fix the system /usr/include/inttypes.h header file. After
|
||||
correcting that file the software also compiles fine in 64-bit mode.
|
||||
Here is one possible patch to correct the problem.
|
||||
|
||||
--- /usr/include/inttypes.h.orig Thu May 30 01:00:00 1996
|
||||
+++ /usr/include/inttypes.h Sun Mar 23 00:20:36 2003
|
||||
@@ -489 +489 @@
|
||||
-#ifndef __STDC_32_MODE__
|
||||
+#ifndef __LP64__
|
||||
|
||||
I've heard that stat.c doesn't compile on Ultrix 4.3.
|
||||
Does anyone with access to such a system want to investigate?
|
||||
|
||||
On some systems, some of the tests fail when run as root. All failures
|
||||
I've seen appear to be due to problems in the testing framework, not
|
||||
in the tools themselves. I'll address that for the next release by
|
||||
using a program like setuidgid (see the comment in TODO).
|
||||
|
||||
***************************************
|
||||
|
||||
There are pretty many tests, but nowhere near as many as we need.
|
||||
Additions and corrections are very welcome.
|
||||
|
||||
@@ -68,9 +98,9 @@ reproduce whatever problem prompted it.
|
||||
|
||||
If your patch adds a new feature, please try to get some sort of consensus
|
||||
that it is a worthwhile change. One way to do that is to send mail to
|
||||
bug-gnu-utils@gnu.org (aka the gnu.utils.bug news group) including as
|
||||
much description and justification as you can. Based on the feedback
|
||||
that generates, you may be able to convince us that it's worth adding.
|
||||
bug-coreutils@gnu.org including as much description and justification
|
||||
as you can. Based on the feedback that generates, you may be able to
|
||||
convince us that it's worth adding.
|
||||
|
||||
|
||||
WARNING: If you modify files like configure.in, m4/*.m4, aclocal.m4,
|
||||
|
||||
13
README-package-renamed-to-coreutils
Normal file
13
README-package-renamed-to-coreutils
Normal file
@@ -0,0 +1,13 @@
|
||||
As of 2002-09-01, the GNU fileutils, textutils, and sh-utils
|
||||
packages have been merged into one, called the GNU coreutils.
|
||||
See http://www.gnu.org/software/coreutils/ for a description.
|
||||
|
||||
For information on the mailing lists associated with the
|
||||
coreutils package, see these:
|
||||
|
||||
http://mail.gnu.org/mailman/listinfo/coreutils-announce
|
||||
http://mail.gnu.org/mailman/listinfo/bug-coreutils
|
||||
|
||||
mailing list archives are here:
|
||||
|
||||
http://mail.gnu.org/pipermail/bug-coreutils/
|
||||
@@ -1,5 +1,8 @@
|
||||
#! /bin/bash
|
||||
|
||||
# Fix valgrind script to exec "$@", not some var.
|
||||
# Fix valgrind sources to know about syscall 252, for exit_group
|
||||
|
||||
# Convert Makefile.am files:
|
||||
# find tests -name Makefile.am \
|
||||
# | xargs grep -wl PATH|xargs perl -pi -e 's,src:\$\$PATH,src/vg:\$\$PATH,'
|
||||
@@ -13,7 +16,7 @@ up=`dirname $pwd`
|
||||
path='export PATH='$up':${PATH#*:}'
|
||||
pre='#!/bin/sh\n'"$path"'\n'
|
||||
n=9
|
||||
vg='exec /usr/bin/valgrind --quiet --num-callers='$n
|
||||
vg='exec /p/bin/valgrind --quiet --num-callers='$n
|
||||
cat <<EOF > src/vg/gen
|
||||
for i in $coreutils; do
|
||||
printf "$pre$vg \$i"' "\$@"\n' > \$i
|
||||
|
||||
23
THANKS
23
THANKS
@@ -27,6 +27,7 @@ Andreas Jaeger jaeger@gnu.org
|
||||
Andreas Luik luik@isa.de
|
||||
Andreas Schwab schwab@suse.de
|
||||
Andreas Stolcke stolcke@ICSI.Berkeley.EDU
|
||||
Andrei Gaponenko andr@triumf.ca
|
||||
Andres Soolo andres@soolo.matti.ee
|
||||
Andrew Burgess aab@cichlid.com
|
||||
Andrew Dalke dalke@bioreason.com
|
||||
@@ -38,15 +39,18 @@ Antonio Rendas ajrendas@yahoo.com
|
||||
Ariel Faigon ariel@cthulhu.engr.sgi.com
|
||||
Arne H. Juul arnej@solan.unit.no
|
||||
Arne Henrik Juul arnej@imf.unit.no
|
||||
Arnold Robbins arnold@skeeve.com
|
||||
Arthur Pool pool@commerce.uq.edu.au
|
||||
Arun Sharma arun.sharma@intel.com
|
||||
Augey Mikus mikus@dqc.org
|
||||
Austin Donnelly Austin.Donnelly@cl.cam.ac.uk
|
||||
Axel Kittenberger Anshil@gmx.net
|
||||
Bauke Jan Douma bjdouma@xs4all.nl
|
||||
Ben Elliston bje@air.net.au
|
||||
Bengt Martensson bengt@mathematik.uni-Bremen.de
|
||||
Bernd Leibing bernd.leibing@rz.uni-ulm.de
|
||||
Bernhard Baehr bernhard.baehr@gmx.de
|
||||
Bernhard Gabler bernhard@uni-koblenz.de
|
||||
Bernhard Rosenkraenzer bero@redhat.de
|
||||
Bill Peters peters@gaffel.as.arizona.edu
|
||||
Bjorn Helgaas helgaas@rsn.hp.com
|
||||
@@ -77,6 +81,7 @@ Clark Morgan cmorgan@aracnet.com
|
||||
Colin Plumb colin@nyx.net
|
||||
Colin Watson cjw44@riva.ucam.org
|
||||
Collin Rogowski collin@rogowski.de
|
||||
Cray-Cyber Project http://www.cray-cyber.org
|
||||
Dale Scheetz dwarf@polaris.net
|
||||
Dan Hagerty hag@gnu.ai.it.edu
|
||||
Dan Jacobson http://www.geocities.com/jidani
|
||||
@@ -85,8 +90,10 @@ Daniel Bergstrom noa@melody.se
|
||||
Darren Salt ds@youmustbejoking.demon.co.uk
|
||||
Dave Beckett dajobe@dajobe.org
|
||||
David Dyck dcd@tc.fluke.COM
|
||||
David Eisner cradle@umd.edu
|
||||
David Godfrey dave@delta.demon.co.uk
|
||||
David Luyer david_luyer@pacific.net.au
|
||||
Deepak Goel deego@gnufans.org
|
||||
Dennis Henriksen opus@flamingo.osrl.dk
|
||||
Derek Clegg dclegg@next.com
|
||||
Dick Streefland dick_streefland@tasking.com
|
||||
@@ -112,6 +119,7 @@ Eric S. Raymond esr@snark.thyrsus.com
|
||||
Erik Bennett bennett@cvo.oneworld.com
|
||||
Erik Corry erik@kroete2.freinet.de
|
||||
Felix Lee flee@teleport.com
|
||||
Ferdinand fw@scenic.mine.nu
|
||||
Fletcher Mattox fletcher@cs.utexas.edu
|
||||
Florin Iucha fiucha@hsys.mic.ro
|
||||
François Pinard pinard@iro.umontreal.ca
|
||||
@@ -152,6 +160,8 @@ Ian Jackson ijackson@chiark.greenend.org.uk
|
||||
Ian Lance Taylor ian@cygnus.com
|
||||
Ian Turner vectro@pipeline.com
|
||||
Iida Yosiaki iida@gnu.org
|
||||
Ingo Saitz ingo@debian.org
|
||||
Ivo Timmermans ivo@debian.org
|
||||
James james@albion.glarp.com
|
||||
James Antill jmanti%essex.ac.uk@seralph21.essex.ac.uk
|
||||
James Sneeringer jvs@ocslink.com
|
||||
@@ -162,6 +172,7 @@ Jan Fedak J.Fedak@sh.cvut.cz
|
||||
Jan Nieuwenhuizen janneke@gnu.org
|
||||
Janos Farkas chexum@shadow.banki.hu
|
||||
Jarkko Hietaniemi jhi@epsilon.hut.fi
|
||||
Jean Charles Delepine delepine@u-picardie.fr
|
||||
Jeff Moore jbm@mordor.com
|
||||
Jeff Sheinberg jeffsh@localnet.com
|
||||
Jens Schmidt jms@jsds.hamburg.com
|
||||
@@ -203,6 +214,7 @@ Kaveh R. Ghazi ghazi@caip.rutgers.edu
|
||||
Keith Owens kaos@audio.apana.org.au
|
||||
Keith Thompson kst@sdsc.edu
|
||||
Ken Pizzini kenp@halcyon.com
|
||||
Kristin E Thomas kristint@us.ibm.com
|
||||
Kjetil Torgrim Homme kjetilho@ifi.uio.no
|
||||
Kristoffer Rose kris@diku.dk
|
||||
Larry McVoy lm@sgi.com
|
||||
@@ -252,6 +264,7 @@ Matthias Urlichs smurf@noris.de
|
||||
Mattias Wadenstein maswan@acc.umu.se
|
||||
Meelis Roos mroos@tartu.cyber.ee
|
||||
Michael ??? michael@roka.net
|
||||
Michael Bacarella mbac@netgraft.com>
|
||||
Michael Deutschmann michael@talamasca.ocis.net
|
||||
Michael Gaughen mgaughen@polyserve.com
|
||||
Michael Hasselberg mikelh@zonta.ping.de
|
||||
@@ -261,6 +274,7 @@ Michael Piefel piefel@informatik.hu-berlin.de
|
||||
Michael Steffens michael.steffens@s.netic.de
|
||||
Michael Stone mstone@debian.org
|
||||
Michael Stutz stutz@dsl.org
|
||||
Michael van Elst mlelstv@dev.de.cw.net
|
||||
Michael Veksler mveksler@techunix.technion.ac.il
|
||||
Michail Litvak mci@owl.openwall.com
|
||||
Michal Svec msvec@suse.cz
|
||||
@@ -268,6 +282,7 @@ Michel Robitaille robitail@IRO.UMontreal.CA
|
||||
Michiel Bacchiani bacchian@raven.bu.edu
|
||||
Mike Castle dalgoda@ix.netcom.com
|
||||
Mike Coleman mkc@mathdogs.com
|
||||
Mike Jetzer mjetzer@mke.catalystwms.com
|
||||
Mikko Tuumanen m@sorvankyla.yok.utu.fi
|
||||
Miles Bader miles@gnu.ai.mit.edu
|
||||
Minh Tran-Le tranle@intellicorp.com
|
||||
@@ -281,9 +296,11 @@ Noah Friedman friedman@splode.com
|
||||
Noel Cragg noel@red-bean.com
|
||||
Olav Morkrid olav@funcom.com
|
||||
Ole Laursen olau@hardworking.dk
|
||||
Oliver Kiddle okiddle@yahoo.co.uk
|
||||
Ørn E. Hansen oehansen@daimi.aau.dk
|
||||
Oskar Liljeblad osk@hem.passagen.se
|
||||
Paul Eggert eggert@twinsun.com
|
||||
Paul Jarc prj@po.cwru.edu
|
||||
Paul Nevai nevai@ops.mps.ohio-state.edu
|
||||
Paul Sauer paul@alexa.com
|
||||
Paul Slootman paul@debian.org
|
||||
@@ -308,6 +325,7 @@ Ralf W. Stephan stephan@tmt.de
|
||||
Ralph Loader loader@maths.ox.ac.uk
|
||||
Raul Miller moth@magenta.com
|
||||
Raúl Núñez de Arenas Coronado raul@pleyades.net
|
||||
Richard A Downing richard.downing@bcs.org.uk
|
||||
Richard Braakman dark@xs4all.nl
|
||||
Richard Dawe richdawe@bigfoot.com
|
||||
Richard J. Rauenzahn rrauenza@hairball.cup.hp.com
|
||||
@@ -319,6 +337,7 @@ Risto Kankkunen kankkune@lingsoft.fi
|
||||
Robert H. de Vries robert@and.nl
|
||||
Rogier Wolff R.E.Wolff@BitWizard.nl
|
||||
Roland Huebner ro-huebner@gmx.de
|
||||
Roland Turner raz@raz.cx
|
||||
Ronald F. Guilmette rfg@netcom.com
|
||||
Ross Alexander r.alexander@auckland.ac.nz
|
||||
Ross Paterson rap@doc.ic.ac.uk
|
||||
@@ -334,10 +353,12 @@ Soeren Sonnenburg sonnenburg@informatik.hu-berlin.de
|
||||
Solar Designer solar@owl.openwall.com
|
||||
Stanislav Ievlev inger@altlinux.ru
|
||||
Stéphane Chazelas Stephane_CHAZELAS@yahoo.fr
|
||||
Stephen Depooter sbdep@myrealbox.com
|
||||
Stephen Eglen eglen@pcg.wustl.edu
|
||||
Stephen Gildea gildea@stop.mail-abuse.org
|
||||
Stephen Smoogen smooge@mindspring.com
|
||||
Steve McConnel steve@acadcomp.sil.org
|
||||
Steven G. Johnson stevenj@alum.mit.edu
|
||||
Steven P Watson steven@magelico.net
|
||||
Stuart Kemp skemp@peter.bmc.com
|
||||
Tadayoshi Funaba tadf@kt.rim.or.jp
|
||||
@@ -373,7 +394,9 @@ Will Edgington wedgingt@acm.org
|
||||
William Bader william@nscs.fast.net
|
||||
William Dowling will@franklin.com
|
||||
William Lewis wiml@omnigroup.com
|
||||
wiregauze wiregauze@yahoo.com
|
||||
Wojciech Purczynski cliph@isec.pl
|
||||
Wolfram Kleff kleff@cs.uni-bonn.de
|
||||
Won-kyu Park wkpark@chem.skku.ac.kr
|
||||
Yann Dirson dirson@debian.org
|
||||
Zvi Har'El rl@math.technion.ac.il
|
||||
|
||||
76
TODO
76
TODO
@@ -1,17 +1,79 @@
|
||||
restore djgpp, eventually
|
||||
merge TODO lists
|
||||
add unit tests for lib/*.c
|
||||
rewrite du.c not to use explicit recursion
|
||||
rewrite lib/ftw.c not to use explicit recursion, and then use nftw in
|
||||
chown, chgrp, chmod, du
|
||||
|
||||
strip: add an option to specify the program used to strip binaries.
|
||||
suggestion from Karl Berry
|
||||
|
||||
Makefile.maint: extract announcement-generation into a perl script
|
||||
|
||||
Add a test of cat that takes input from a tty and ensures
|
||||
that one ^D is sufficient to make it terminate. Probably
|
||||
requires some flavor of expect.
|
||||
|
||||
doc/coreutils.texi:
|
||||
Address this comment: FIXME: mv's behavior in this case is system-dependent
|
||||
Better still: fix the code so it's *not* system-dependent.
|
||||
|
||||
implement --target-directory=DIR for install (per texinfo documentation)
|
||||
|
||||
ls: add --format=FORMAT option that controls how each line is printed.
|
||||
|
||||
cp --no-preserve=X should not attempt to preserve attribute X
|
||||
reported by Andreas Schwab
|
||||
|
||||
copy.c: Address the FIXME-maybe comment in copy_internal.
|
||||
And once that's done, add an exclusion so that `cp --link'
|
||||
no longer incurs the overhead of saving src. dev/ino and dest. filename
|
||||
in the hash table.
|
||||
|
||||
Apply suggestion from Paul Jarc to use something along the
|
||||
lines of http://cr.yp.to/daemontools/setuidgid.html to avoid
|
||||
kludges (as in tests/rm/fail-2eperm) when running tests as root.
|
||||
|
||||
See if we can be consistent about where --verbose sends its output:
|
||||
These all send --verbose output to stdout:
|
||||
head, tail, rm, cp, mv, ln, chmod, chown, chgrp, install, ln
|
||||
These send it to stderr:
|
||||
shred mkdir split
|
||||
readlink is different
|
||||
|
||||
Write an autoconf test to work around build failure in HPUX's 64-bit mode.
|
||||
See notes in README -- and remove them once there's a work-around.
|
||||
|
||||
after 5.0, change doc strings (like df, ls, etc) not to use `,'
|
||||
as thousands separator in e.g. 1,000,000. Instead, do this:
|
||||
|
||||
SIZE may be (or may be an integer optionally followed by) one of following:
|
||||
kB 1000, K 1024, MB 1000*1000, M 1024*1024 and so on for G, T, P, E, Z, Y.
|
||||
|
||||
Integrate use of sendfile, suggested here:
|
||||
http://mail.gnu.org/archive/html/bug-fileutils/2003-03/msg00030.html
|
||||
|
||||
Should printf '\0123' print "\n3"?
|
||||
per report from TAKAI Kousuke on Mar 27
|
||||
http://mail.gnu.org/archive/html/bug-coreutils/2003-03/index.html
|
||||
|
||||
printf: consider adapting builtins/printf.def from bash
|
||||
|
||||
df: add `--total' option, suggested here http://bugs.debian.org/186007
|
||||
|
||||
Martin Michlmayr's patch to provide ls with `--sort directory' option
|
||||
|
||||
seq: give better diagnostics for invalid formats:
|
||||
e.g. no or too many % directives
|
||||
seq: consider allowing format string to contain no %-directives
|
||||
|
||||
dd: consider adding an option to suppress `bytes/block read/written'
|
||||
output to stderr. Suggested here:
|
||||
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=165045
|
||||
|
||||
nl: fix this bug:
|
||||
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=177256
|
||||
# printf 'a\n\n'|nl|cat -A
|
||||
1^Ia$
|
||||
$
|
||||
$
|
||||
|
||||
m4: rename all macros that start with AC_ to start with another prefix
|
||||
|
||||
Consider using an autoconf test and rename wrapper to make mv work
|
||||
properly (by unlinking a) in cases like this:
|
||||
: > a; ln a b; mv a b
|
||||
Reported by Ed Avis: http://article.gmane.org/gmane.comp.gnu.fileutils.bugs/686
|
||||
|
||||
852
aclocal.m4
vendored
852
aclocal.m4
vendored
File diff suppressed because it is too large
Load Diff
206
announce-gen
206
announce-gen
@@ -6,9 +6,11 @@ use Getopt::Long;
|
||||
use Digest::MD5;
|
||||
use Digest::SHA1;
|
||||
|
||||
(my $VERSION = '$Revision: 1.2 $ ') =~ tr/[0-9].//cd;
|
||||
(my $VERSION = '$Revision: 1.13 $ ') =~ tr/[0-9].//cd;
|
||||
(my $ME = $0) =~ s|.*/||;
|
||||
|
||||
my %valid_release_types = map {$_ => 1} qw (alpha beta major);
|
||||
|
||||
END
|
||||
{
|
||||
# Nobody ever checks the status of print()s. That's okay, because
|
||||
@@ -44,6 +46,7 @@ sub usage ($)
|
||||
}
|
||||
else
|
||||
{
|
||||
my @types = sort keys %valid_release_types;
|
||||
print $STREAM <<EOF;
|
||||
Usage: $ME [OPTIONS]
|
||||
|
||||
@@ -53,11 +56,13 @@ OPTIONS:
|
||||
|
||||
FIXME: describe the following
|
||||
|
||||
--release-type=TYPE TYPE must be one of @types
|
||||
--package-name=PACKAGE_NAME
|
||||
--previous-version=VER
|
||||
--current-version=VER
|
||||
--release-archive-directory=DIR
|
||||
--url-directory=URL_DIR
|
||||
--news=NEWS_FILE optional
|
||||
|
||||
--help display this help and exit
|
||||
--version output version information and exit
|
||||
@@ -67,20 +72,110 @@ EOF
|
||||
exit $exit_code;
|
||||
}
|
||||
|
||||
sub print_changelog_deltas ($$)
|
||||
{
|
||||
my ($package_name, $prev_version) = @_;
|
||||
|
||||
# Print new ChangeLog entries.
|
||||
|
||||
# First find all CVS-controlled ChangeLog files.
|
||||
use File::Find;
|
||||
my @changelog;
|
||||
find ({wanted => sub {$_ eq 'ChangeLog' && -d 'CVS'
|
||||
and push @changelog, $File::Find::name}},
|
||||
'.');
|
||||
|
||||
# If there are no ChangeLog files, we're done.
|
||||
@changelog
|
||||
or return;
|
||||
my %changelog = map {$_ => 1} @changelog;
|
||||
|
||||
# Reorder the list of files so that if there are ChangeLog
|
||||
# files in the specified directories, they're listed first,
|
||||
# in this order:
|
||||
my @dir = qw ( . src lib m4 config doc );
|
||||
|
||||
# A typical @changelog array might look like this:
|
||||
# ./ChangeLog
|
||||
# ./po/ChangeLog
|
||||
# ./m4/ChangeLog
|
||||
# ./lib/ChangeLog
|
||||
# ./doc/ChangeLog
|
||||
# ./config/ChangeLog
|
||||
my @reordered;
|
||||
foreach my $d (@dir)
|
||||
{
|
||||
my $dot_slash = $d eq '.' ? $d : "./$d";
|
||||
my $target = "$dot_slash/ChangeLog";
|
||||
delete $changelog{$target}
|
||||
and push @reordered, $target;
|
||||
}
|
||||
|
||||
# Append any remaining ChangeLog files.
|
||||
push @reordered, sort keys %changelog;
|
||||
|
||||
# Remove leading `./'.
|
||||
@reordered = map { s!^\./!!; $_ } @reordered;
|
||||
|
||||
print "\nChangeLog entries:\n\n";
|
||||
# print join ("\n", @reordered), "\n";
|
||||
|
||||
$prev_version =~ s/\./_/g;
|
||||
my $prev_cvs_tag = "\U$package_name\E-$prev_version";
|
||||
|
||||
my $cmd = "cvs -n diff -u -r$prev_cvs_tag -rHEAD @reordered";
|
||||
open DIFF, '-|', $cmd
|
||||
or die "$ME: cannot run `$cmd': $!\n";
|
||||
# Print two types of lines, making minor changes:
|
||||
# Lines starting with `+++ ', e.g.,
|
||||
# +++ ChangeLog 22 Feb 2003 16:52:51 -0000 1.247
|
||||
# and those starting with `+'.
|
||||
# Don't print the others.
|
||||
my $prev_printed_line_empty = 1;
|
||||
while (defined (my $line = <DIFF>))
|
||||
{
|
||||
if ($line =~ /^\+\+\+ /)
|
||||
{
|
||||
my $separator = "*"x70 ."\n";
|
||||
$line =~ s///;
|
||||
$line =~ s/\s.*//;
|
||||
$prev_printed_line_empty
|
||||
or print "\n";
|
||||
print $separator, $line, $separator;
|
||||
}
|
||||
elsif ($line =~ /^\+/)
|
||||
{
|
||||
$line =~ s///;
|
||||
print $line;
|
||||
$prev_printed_line_empty = ($line =~ /^$/);
|
||||
}
|
||||
}
|
||||
close DIFF;
|
||||
|
||||
# The exit code should be 1.
|
||||
# Allow in case there are no modified ChangeLog entries.
|
||||
$? == 256 || $? == 128
|
||||
or warn "$ME: warning: `cmd' had unexpected exit code or signal ($?)\n";
|
||||
}
|
||||
|
||||
{
|
||||
my $release_type;
|
||||
my $package_name;
|
||||
my $prev_version;
|
||||
my $curr_version;
|
||||
my $release_archive_dir;
|
||||
my @url_dir_list;
|
||||
my $news_file;
|
||||
|
||||
GetOptions
|
||||
(
|
||||
'release-type=s' => \$release_type,
|
||||
'package-name=s' => \$package_name,
|
||||
'previous-version=s' => \$prev_version,
|
||||
'current-version=s' => \$curr_version,
|
||||
'release-archive-directory=s' => \$release_archive_dir,
|
||||
'url-directory=s@' => \@url_dir_list,
|
||||
'news=s@' => \$news_file,
|
||||
|
||||
help => sub { usage 0 },
|
||||
version => sub { print "$ME version $VERSION\n"; exit },
|
||||
@@ -88,16 +183,21 @@ EOF
|
||||
|
||||
my $fail = 0;
|
||||
# Ensure that sure each required option is specified.
|
||||
$release_type
|
||||
or (warn "$ME: release type not specified\n"), $fail = 1;
|
||||
$package_name
|
||||
or (warn "$ME: missing package name\n"), $fail = 1;
|
||||
or (warn "$ME: package name not specified\n"), $fail = 1;
|
||||
$prev_version
|
||||
or (warn "$ME: missing previous version string\n"), $fail = 1;
|
||||
or (warn "$ME: previous version string not specified\n"), $fail = 1;
|
||||
$curr_version
|
||||
or (warn "$ME: missing current version string\n"), $fail = 1;
|
||||
or (warn "$ME: current version string not specified\n"), $fail = 1;
|
||||
$release_archive_dir
|
||||
or (warn "$ME: missing release directory name\n"), $fail = 1;
|
||||
or (warn "$ME: release directory name not specified\n"), $fail = 1;
|
||||
@url_dir_list
|
||||
or (warn "$ME: missing URL directory name(s)\n"), $fail = 1;
|
||||
or (warn "$ME: URL directory name(s) not specified\n"), $fail = 1;
|
||||
|
||||
exists $valid_release_types{$release_type}
|
||||
or (warn "$ME: `$release_type': invalid release type\n"), $fail = 1;
|
||||
|
||||
@ARGV
|
||||
and (warn "$ME: too many arguments\n"), $fail = 1;
|
||||
@@ -109,27 +209,34 @@ EOF
|
||||
my $tbz = "$my_distdir.tar.bz2";
|
||||
my $xd = "$package_name-$prev_version-$curr_version.xdelta";
|
||||
|
||||
# FIXME: make this optional?
|
||||
my $mail_gpg_sign_cookie = '<#secure method=pgpmime mode=sign>';
|
||||
my %size;
|
||||
|
||||
foreach my $f (($tgz, $tbz, $xd))
|
||||
{
|
||||
my $t = `du --human $f`;
|
||||
my $cmd = "du --human $f";
|
||||
my $t = `$cmd`;
|
||||
# FIXME-someday: give a better diagnostic, a la $PROCESS_STATUS
|
||||
$@
|
||||
and (warn "$ME: command failed: `$cmd'\n"), $fail = 1;
|
||||
chomp $t;
|
||||
# FIXME: don't ignore failure...
|
||||
$t =~ s/^([\d.]+[MkK]).*/${1}B/;
|
||||
$size{$f} = $t;
|
||||
}
|
||||
|
||||
$fail
|
||||
and exit 1;
|
||||
|
||||
print <<EOF;
|
||||
|
||||
Subject: $my_distdir released
|
||||
|
||||
$mail_gpg_sign_cookie
|
||||
<#secure method=pgpmime mode=sign>
|
||||
|
||||
FIXME: put comments here
|
||||
|
||||
EOF
|
||||
|
||||
print "Here are the compressed sources:\n";
|
||||
foreach my $url (@url_dir_list)
|
||||
{
|
||||
print " $url/$tgz ($size{$tgz})\n";
|
||||
@@ -149,31 +256,76 @@ EOF
|
||||
print " $url/$tbz.sig\n";
|
||||
}
|
||||
|
||||
# FIXME: clean up upon interrupt or die
|
||||
my $tmpdir = $ENV{TMPDIR} || '/tmp';
|
||||
my $tmp = "$tmpdir/$ME-$$";
|
||||
unlink $tmp; # ignore failure
|
||||
|
||||
print "\nHere are the MD5 and SHA1 signatures:\n";
|
||||
print "\n";
|
||||
print "<#part type=text/plain filename=\"$tmp\" disposition=inline>\n"
|
||||
. "<#/part>\n";
|
||||
|
||||
open OUT, '>', $tmp
|
||||
or die "$ME: $tmp: cannot open for writing: $!\n";
|
||||
|
||||
foreach my $meth (qw (md5 sha1))
|
||||
{
|
||||
foreach my $f (($tgz, $tbz, $xd))
|
||||
{
|
||||
open FH, '<', $f
|
||||
open IN, '<', $f
|
||||
or die "$ME: $f: cannot open for reading: $!\n";
|
||||
binmode FH;
|
||||
binmode IN;
|
||||
my $dig =
|
||||
($meth eq 'md5'
|
||||
? Digest::MD5->new->addfile(*FH)->hexdigest
|
||||
: Digest::SHA1->new->addfile(*FH)->hexdigest);
|
||||
close FH;
|
||||
print "$dig $f\n";
|
||||
? Digest::MD5->new->addfile(*IN)->hexdigest
|
||||
: Digest::SHA1->new->addfile(*IN)->hexdigest);
|
||||
close IN;
|
||||
print OUT "$dig $f\n";
|
||||
}
|
||||
}
|
||||
|
||||
# FIXME: depend on whether it's a test release
|
||||
# sed -n "$news-r1),$news-r2)p" NEWS
|
||||
# | grep -v '^\[';
|
||||
# echo;
|
||||
# echo ChangeLog entries:;
|
||||
# find . -name ChangeLog -maxdepth 2
|
||||
# | xargs $(CVS) diff -up -r$(prev-cvs-tag) -rHEAD
|
||||
# | sed -n 's/^+//p'
|
||||
# | perl -ne 'm!^\+\+ (\./)?! or print,next;'
|
||||
# -e 'print "\n"."*"x70 ."\n"; s///; print; print "*"x70 ."\n"';
|
||||
close OUT
|
||||
or die "$ME: $tmp: while writing: $!\n";
|
||||
chmod 0400, $tmp; # ignore failure
|
||||
|
||||
if ($news_file)
|
||||
{
|
||||
print "\nNEWS\n\n";
|
||||
|
||||
# Print all lines from $news_file, starting with the first one
|
||||
# that mentions $curr_version up to but not including
|
||||
# the first occurrence of $prev_version.
|
||||
my $in_items;
|
||||
open NEWS, '<', $news_file
|
||||
or die "$ME: $news_file: cannot open for reading: $!\n";
|
||||
while (defined (my $line = <NEWS>))
|
||||
{
|
||||
if ( ! $in_items)
|
||||
{
|
||||
$line =~ /^[^ *].*\Q$curr_version\E/o
|
||||
or next;
|
||||
$in_items = 1;
|
||||
print $line;
|
||||
}
|
||||
else
|
||||
{
|
||||
# Be careful that this regexp cannot match version numbers
|
||||
# in NEWS items -- they might well say `introduced in 4.5.5',
|
||||
# and we don't want that to match.
|
||||
$line =~ /^[^ *].*\Q$prev_version\E/o
|
||||
and last;
|
||||
print $line;
|
||||
}
|
||||
}
|
||||
close NEWS;
|
||||
|
||||
$in_items
|
||||
or die "$ME: $news_file: no matching lines\n";
|
||||
}
|
||||
|
||||
$release_type eq 'major'
|
||||
or print_changelog_deltas ($package_name, $prev_version);
|
||||
|
||||
exit 0;
|
||||
}
|
||||
|
||||
85
config.hin
85
config.hin
@@ -90,7 +90,8 @@
|
||||
/* Define to 1 if you have `alloca', as a function or macro. */
|
||||
#undef HAVE_ALLOCA
|
||||
|
||||
/* Define to 1 if you have the <alloca.h> header file. */
|
||||
/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
|
||||
*/
|
||||
#undef HAVE_ALLOCA_H
|
||||
|
||||
/* Define to 1 if you have the <arpa/inet.h> header file. */
|
||||
@@ -108,12 +109,6 @@
|
||||
/* Define to 1 if you have the `btowc' function. */
|
||||
#undef HAVE_BTOWC
|
||||
|
||||
/* Define to 1 if you have the `bzero' function. */
|
||||
#undef HAVE_BZERO
|
||||
|
||||
/* Define to 1 if you have the `canonicalize_file_name' function. */
|
||||
#undef HAVE_CANONICALIZE_FILE_NAME
|
||||
|
||||
/* Define to 1 if you have the `chroot' function. */
|
||||
#undef HAVE_CHROOT
|
||||
|
||||
@@ -144,6 +139,10 @@
|
||||
*/
|
||||
#undef HAVE_DECL_DIRFD
|
||||
|
||||
/* Define to 1 if you have the declaration of `euidaccess', and to 0 if you
|
||||
don't. */
|
||||
#undef HAVE_DECL_EUIDACCESS
|
||||
|
||||
/* Define to 1 if you have the declaration of `feof_unlocked', and to 0 if you
|
||||
don't. */
|
||||
#undef HAVE_DECL_FEOF_UNLOCKED
|
||||
@@ -184,9 +183,9 @@
|
||||
you don't. */
|
||||
#undef HAVE_DECL_GETCHAR_UNLOCKED
|
||||
|
||||
/* Define to 1 if you have the declaration of `getcontext', and to 0 if you
|
||||
don't. */
|
||||
#undef HAVE_DECL_GETCONTEXT
|
||||
/* Define to 1 if you have the declaration of `getcwd', and to 0 if you don't.
|
||||
*/
|
||||
#undef HAVE_DECL_GETCWD
|
||||
|
||||
/* Define to 1 if you have the declaration of `getc_unlocked', and to 0 if you
|
||||
don't. */
|
||||
@@ -252,10 +251,6 @@
|
||||
don't. */
|
||||
#undef HAVE_DECL_REALLOC
|
||||
|
||||
/* Define to 1 if you have the declaration of `sigaltstack', and to 0 if you
|
||||
don't. */
|
||||
#undef HAVE_DECL_SIGALTSTACK
|
||||
|
||||
/* Define to 1 if you have the declaration of `stpcpy', and to 0 if you don't.
|
||||
*/
|
||||
#undef HAVE_DECL_STPCPY
|
||||
@@ -389,9 +384,6 @@
|
||||
/* Define if struct statfs has the f_fstypename member. */
|
||||
#undef HAVE_F_FSTYPENAME_IN_STATFS
|
||||
|
||||
/* Define to 1 if you have the `getcontext' function. */
|
||||
#undef HAVE_GETCONTEXT
|
||||
|
||||
/* Define to 1 if you have the `getcwd' function. */
|
||||
#undef HAVE_GETCWD
|
||||
|
||||
@@ -437,6 +429,9 @@
|
||||
/* Define to 1 if you have the `getspnam' function. */
|
||||
#undef HAVE_GETSPNAM
|
||||
|
||||
/* Define to 1 if you have the `getsysinfo' function. */
|
||||
#undef HAVE_GETSYSINFO
|
||||
|
||||
/* Define if the GNU gettext() function is already present or preinstalled. */
|
||||
#undef HAVE_GETTEXT
|
||||
|
||||
@@ -533,6 +528,9 @@
|
||||
1998-11-01) do this. */
|
||||
#undef HAVE_LSTAT_EMPTY_STRING_BUG
|
||||
|
||||
/* Define to 1 if you have the <machine/hal_sysinfo.h> header file. */
|
||||
#undef HAVE_MACHINE_HAL_SYSINFO_H
|
||||
|
||||
/* Define to 1 if you have the <mach/mach.h> header file. */
|
||||
#undef HAVE_MACH_MACH_H
|
||||
|
||||
@@ -664,21 +662,21 @@
|
||||
/* Define to 1 if you have the `setlocale' function. */
|
||||
#undef HAVE_SETLOCALE
|
||||
|
||||
/* Define to 1 if you have the `setregid' function. */
|
||||
#undef HAVE_SETREGID
|
||||
|
||||
/* Define to 1 if you have the `setreuid' function. */
|
||||
#undef HAVE_SETREUID
|
||||
|
||||
/* Define to 1 if you have the <shadow.h> header file. */
|
||||
#undef HAVE_SHADOW_H
|
||||
|
||||
/* Define to 1 if you have the `sig2str' function. */
|
||||
#undef HAVE_SIG2STR
|
||||
|
||||
/* Define to 1 if you have the `sigaltstack' function. */
|
||||
#undef HAVE_SIGALTSTACK
|
||||
|
||||
/* Define to 1 if you have the `sqrt' function. */
|
||||
#undef HAVE_SQRT
|
||||
|
||||
/* Define to 1 if the system has the type `stack_t'. */
|
||||
#undef HAVE_STACK_T
|
||||
|
||||
/* Define to 1 if you have the `statvfs' function. */
|
||||
#undef HAVE_STATVFS
|
||||
|
||||
@@ -906,6 +904,9 @@
|
||||
/* Define to 1 if you have the <syslog.h> header file. */
|
||||
#undef HAVE_SYSLOG_H
|
||||
|
||||
/* Define to 1 if you have the `sysmp' function. */
|
||||
#undef HAVE_SYSMP
|
||||
|
||||
/* Define to 1 if you have the <sys/acl.h> header file. */
|
||||
#undef HAVE_SYS_ACL_H
|
||||
|
||||
@@ -962,12 +963,24 @@
|
||||
/* Define to 1 if you have the <sys/sysctl.h> header file. */
|
||||
#undef HAVE_SYS_SYSCTL_H
|
||||
|
||||
/* Define to 1 if you have the <sys/sysinfo.h> header file. */
|
||||
#undef HAVE_SYS_SYSINFO_H
|
||||
|
||||
/* Define to 1 if you have the <sys/sysmacros.h> header file. */
|
||||
#undef HAVE_SYS_SYSMACROS_H
|
||||
|
||||
/* Define to 1 if you have the <sys/sysmp.h> header file. */
|
||||
#undef HAVE_SYS_SYSMP_H
|
||||
|
||||
/* Define to 1 if you have the <sys/systemcfg.h> header file. */
|
||||
#undef HAVE_SYS_SYSTEMCFG_H
|
||||
|
||||
/* Define to 1 if you have the <sys/systeminfo.h> header file. */
|
||||
#undef HAVE_SYS_SYSTEMINFO_H
|
||||
|
||||
/* Define to 1 if you have the <sys/table.h> header file. */
|
||||
#undef HAVE_SYS_TABLE_H
|
||||
|
||||
/* Define to 1 if you have the <sys/timeb.h> header file. */
|
||||
#undef HAVE_SYS_TIMEB_H
|
||||
|
||||
@@ -986,6 +999,9 @@
|
||||
/* Define to 1 if you have the <sys/wait.h> header file. */
|
||||
#undef HAVE_SYS_WAIT_H
|
||||
|
||||
/* Define to 1 if you have the `table' function. */
|
||||
#undef HAVE_TABLE
|
||||
|
||||
/* Define to 1 if you have the <termios.h> header file. */
|
||||
#undef HAVE_TERMIOS_H
|
||||
|
||||
@@ -1003,9 +1019,6 @@
|
||||
/* Define to 1 if you have the `tzset' function. */
|
||||
#undef HAVE_TZSET
|
||||
|
||||
/* Define to 1 if you have the <ucontext.h> header file. */
|
||||
#undef HAVE_UCONTEXT_H
|
||||
|
||||
/* Define to 1 if you have the `uname' function. */
|
||||
#undef HAVE_UNAME
|
||||
|
||||
@@ -1063,13 +1076,9 @@
|
||||
/* Define to 1 if you have the `wmempcpy' function. */
|
||||
#undef HAVE_WMEMPCPY
|
||||
|
||||
/* Define to 1 if extending the stack slightly past the limit causes a
|
||||
SIGSEGV, and an alternate stack can be established with sigaltstack, and
|
||||
the signal handler is passed a context that specifies the run time stack.
|
||||
This behavior is defined by POSIX 1003.1-2001 with the X/Open System
|
||||
Interface (XSI) option and is a standardized way to implement a SEGV-based
|
||||
stack overflow detection heuristic. */
|
||||
#undef HAVE_XSI_STACK_OVERFLOW_HEURISTIC
|
||||
/* Define to 1 if you have the external variable, _system_configuration with a
|
||||
member named physmem. */
|
||||
#undef HAVE__SYSTEM_CONFIGURATION
|
||||
|
||||
/* Define to 1 if you have the `__fpending' function. */
|
||||
#undef HAVE___FPENDING
|
||||
@@ -1273,6 +1282,9 @@
|
||||
<sys/cpustats.h>. */
|
||||
#undef UMAX4_3
|
||||
|
||||
/* the maximum number of simultaneously open files per process */
|
||||
#undef UTILS_OPEN_MAX
|
||||
|
||||
/* Version number of package */
|
||||
#undef VERSION
|
||||
|
||||
@@ -1326,6 +1338,9 @@
|
||||
/* Define to rpl_fnmatch if the replacement function should be used. */
|
||||
#undef fnmatch
|
||||
|
||||
/* Define to rpl_getcwd if the wrapper function should be used. */
|
||||
#undef getcwd
|
||||
|
||||
/* Define as rpl_getgroups if getgroups doesn't work right. */
|
||||
#undef getgroups
|
||||
|
||||
@@ -1393,6 +1408,10 @@
|
||||
/* Define to rpl_realloc if the replacement function should be used. */
|
||||
#undef realloc
|
||||
|
||||
/* Define to equivalent of C99 restrict keyword, or to nothing if this is not
|
||||
supported. Do not define if restrict is supported directly. */
|
||||
#undef restrict
|
||||
|
||||
/* Define to `unsigned' if <sys/types.h> does not define. */
|
||||
#undef size_t
|
||||
|
||||
|
||||
@@ -1,3 +1,24 @@
|
||||
2003-01-12 Jim Meyering <jim@meyering.net>
|
||||
|
||||
Lots of syntactic clean-up, mostly from Karl Berry.
|
||||
* install-sh: Use consistent indentation, two spaces per level.
|
||||
(scriptversion): New variable.
|
||||
Change initializations like `variable=""' to `variable='.
|
||||
(usage): New variable.
|
||||
Use `test', not `['.
|
||||
Use `test -z "$var"', not `[ x"$var" = x ]'.
|
||||
Use `test -n "$var"', not `[ x"$var" != x ]'.
|
||||
Alphabetize case entries.
|
||||
Accept --help and --version options.
|
||||
Remove unnecessary `else :' clauses.
|
||||
Add a `Local variables' eval block to help emacs users update
|
||||
the time-stamp variable added above.
|
||||
|
||||
2002-12-20 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* install-sh: Set the execute bit on this file.
|
||||
Reported by Vin Shelton.
|
||||
|
||||
2002-11-09 Jim Meyering <jim@meyering.net>
|
||||
|
||||
Make it work even when names contain spaces or shell metachars.
|
||||
|
||||
147
config/config.guess
vendored
147
config/config.guess
vendored
@@ -1,9 +1,9 @@
|
||||
#! /bin/sh
|
||||
# Attempt to guess a canonical system name.
|
||||
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
|
||||
# 2000, 2001, 2002 Free Software Foundation, Inc.
|
||||
# 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
|
||||
|
||||
timestamp='2002-12-11'
|
||||
timestamp='2003-02-22'
|
||||
|
||||
# This file is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License as published by
|
||||
@@ -98,14 +98,17 @@ trap 'exit 1' 1 2 15
|
||||
# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
|
||||
# use `HOST_CC' if defined, but it is deprecated.
|
||||
|
||||
# This shell variable is my proudest work .. or something. --bje
|
||||
# Portable tmp directory creation inspired by the Autoconf team.
|
||||
|
||||
set_cc_for_build='tmpdir=${TMPDIR-/tmp}/config-guess-$$ ;
|
||||
(old=`umask` && umask 077 && mkdir $tmpdir && umask $old && unset old)
|
||||
|| (echo "$me: cannot create $tmpdir" >&2 && exit 1) ;
|
||||
dummy=$tmpdir/dummy ;
|
||||
files="$dummy.c $dummy.o $dummy.rel $dummy" ;
|
||||
trap '"'"'rm -f $files; rmdir $tmpdir; exit 1'"'"' 1 2 15 ;
|
||||
set_cc_for_build='
|
||||
trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
|
||||
trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
|
||||
: ${TMPDIR=/tmp} ;
|
||||
{ tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
|
||||
{ test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
|
||||
{ echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
|
||||
dummy=$tmp/dummy ;
|
||||
tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
|
||||
case $CC_FOR_BUILD,$HOST_CC,$CC in
|
||||
,,) echo "int x;" > $dummy.c ;
|
||||
for c in cc gcc c89 c99 ; do
|
||||
@@ -113,15 +116,13 @@ case $CC_FOR_BUILD,$HOST_CC,$CC in
|
||||
CC_FOR_BUILD="$c"; break ;
|
||||
fi ;
|
||||
done ;
|
||||
rm -f $files ;
|
||||
if test x"$CC_FOR_BUILD" = x ; then
|
||||
CC_FOR_BUILD=no_compiler_found ;
|
||||
fi
|
||||
;;
|
||||
,,*) CC_FOR_BUILD=$CC ;;
|
||||
,*,*) CC_FOR_BUILD=$HOST_CC ;;
|
||||
esac ;
|
||||
unset files'
|
||||
esac ;'
|
||||
|
||||
# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
|
||||
# (ghazi@noc.rutgers.edu 1994-08-24)
|
||||
@@ -238,66 +239,47 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
|
||||
if test $UNAME_RELEASE = "V4.0"; then
|
||||
UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
|
||||
fi
|
||||
# According to Compaq, /usr/sbin/psrinfo has been available on
|
||||
# OSF/1 and Tru64 systems produced since 1995. I hope that
|
||||
# covers most systems running today. This code pipes the CPU
|
||||
# types through head -n 1, so we only detect the type of CPU 0.
|
||||
ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1`
|
||||
case "$ALPHA_CPU_TYPE" in
|
||||
"EV4 (21064)")
|
||||
UNAME_MACHINE="alpha" ;;
|
||||
"EV4.5 (21064)")
|
||||
UNAME_MACHINE="alpha" ;;
|
||||
"LCA4 (21066/21068)")
|
||||
UNAME_MACHINE="alpha" ;;
|
||||
"EV5 (21164)")
|
||||
UNAME_MACHINE="alphaev5" ;;
|
||||
"EV5.6 (21164A)")
|
||||
UNAME_MACHINE="alphaev56" ;;
|
||||
"EV5.6 (21164PC)")
|
||||
UNAME_MACHINE="alphapca56" ;;
|
||||
"EV5.7 (21164PC)")
|
||||
UNAME_MACHINE="alphapca57" ;;
|
||||
"EV6 (21264)")
|
||||
UNAME_MACHINE="alphaev6" ;;
|
||||
"EV6.7 (21264A)")
|
||||
UNAME_MACHINE="alphaev67" ;;
|
||||
"EV6.8CB (21264C)")
|
||||
UNAME_MACHINE="alphaev68" ;;
|
||||
"EV6.8AL (21264B)")
|
||||
UNAME_MACHINE="alphaev68" ;;
|
||||
"EV6.8CX (21264D)")
|
||||
UNAME_MACHINE="alphaev68" ;;
|
||||
"EV6.9A (21264/EV69A)")
|
||||
UNAME_MACHINE="alphaev69" ;;
|
||||
"EV7 (21364)")
|
||||
UNAME_MACHINE="alphaev7" ;;
|
||||
"EV7.9 (21364A)")
|
||||
UNAME_MACHINE="alphaev79" ;;
|
||||
esac
|
||||
# A Vn.n version is a released version.
|
||||
# A Tn.n version is a released field test version.
|
||||
# A Xn.n version is an unreleased experimental baselevel.
|
||||
# 1.2 uses "1.2" for uname -r.
|
||||
eval $set_cc_for_build
|
||||
cat <<EOF >$dummy.s
|
||||
.data
|
||||
\$Lformat:
|
||||
.byte 37,100,45,37,120,10,0 # "%d-%x\n"
|
||||
|
||||
.text
|
||||
.globl main
|
||||
.align 4
|
||||
.ent main
|
||||
main:
|
||||
.frame \$30,16,\$26,0
|
||||
ldgp \$29,0(\$27)
|
||||
.prologue 1
|
||||
.long 0x47e03d80 # implver \$0
|
||||
lda \$2,-1
|
||||
.long 0x47e20c21 # amask \$2,\$1
|
||||
lda \$16,\$Lformat
|
||||
mov \$0,\$17
|
||||
not \$1,\$18
|
||||
jsr \$26,printf
|
||||
ldgp \$29,0(\$26)
|
||||
mov 0,\$16
|
||||
jsr \$26,exit
|
||||
.end main
|
||||
EOF
|
||||
$CC_FOR_BUILD -o $dummy $dummy.s 2>/dev/null
|
||||
if test "$?" = 0 ; then
|
||||
case `$dummy` in
|
||||
0-0)
|
||||
UNAME_MACHINE="alpha"
|
||||
;;
|
||||
1-0)
|
||||
UNAME_MACHINE="alphaev5"
|
||||
;;
|
||||
1-1)
|
||||
UNAME_MACHINE="alphaev56"
|
||||
;;
|
||||
1-101)
|
||||
UNAME_MACHINE="alphapca56"
|
||||
;;
|
||||
2-303)
|
||||
UNAME_MACHINE="alphaev6"
|
||||
;;
|
||||
2-307)
|
||||
UNAME_MACHINE="alphaev67"
|
||||
;;
|
||||
2-1307)
|
||||
UNAME_MACHINE="alphaev68"
|
||||
;;
|
||||
3-1307)
|
||||
UNAME_MACHINE="alphaev7"
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
rm -f $dummy.s $dummy && rmdir $tmpdir
|
||||
echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
|
||||
exit 0 ;;
|
||||
Alpha\ *:Windows_NT*:*)
|
||||
@@ -450,8 +432,7 @@ EOF
|
||||
EOF
|
||||
$CC_FOR_BUILD -o $dummy $dummy.c \
|
||||
&& $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
|
||||
&& rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0
|
||||
rm -f $dummy.c $dummy && rmdir $tmpdir
|
||||
&& exit 0
|
||||
echo mips-mips-riscos${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
Motorola:PowerMAX_OS:*:*)
|
||||
@@ -535,8 +516,7 @@ EOF
|
||||
exit(0);
|
||||
}
|
||||
EOF
|
||||
$CC_FOR_BUILD -o $dummy $dummy.c && $dummy && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0
|
||||
rm -f $dummy.c $dummy && rmdir $tmpdir
|
||||
$CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
|
||||
echo rs6000-ibm-aix3.2.5
|
||||
elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
|
||||
echo rs6000-ibm-aix3.2.4
|
||||
@@ -636,7 +616,6 @@ EOF
|
||||
EOF
|
||||
(CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
|
||||
test -z "$HP_ARCH" && HP_ARCH=hppa
|
||||
rm -f $dummy.c $dummy && rmdir $tmpdir
|
||||
fi ;;
|
||||
esac
|
||||
if [ ${HP_ARCH} = "hppa2.0w" ]
|
||||
@@ -683,8 +662,7 @@ EOF
|
||||
exit (0);
|
||||
}
|
||||
EOF
|
||||
$CC_FOR_BUILD -o $dummy $dummy.c && $dummy && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0
|
||||
rm -f $dummy.c $dummy && rmdir $tmpdir
|
||||
$CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
|
||||
echo unknown-hitachi-hiuxwe2
|
||||
exit 0 ;;
|
||||
9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
|
||||
@@ -742,15 +720,15 @@ EOF
|
||||
CRAY*TS:*:*:*)
|
||||
echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
|
||||
exit 0 ;;
|
||||
CRAY*T3D:*:*:*)
|
||||
echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
|
||||
exit 0 ;;
|
||||
CRAY*T3E:*:*:*)
|
||||
echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
|
||||
exit 0 ;;
|
||||
CRAY*SV1:*:*:*)
|
||||
echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
|
||||
exit 0 ;;
|
||||
*:UNICOS/mp:*:*)
|
||||
echo nv1-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
|
||||
exit 0 ;;
|
||||
F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
|
||||
FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
|
||||
FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
|
||||
@@ -778,7 +756,6 @@ EOF
|
||||
#endif
|
||||
EOF
|
||||
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
|
||||
rm -f $dummy.c && rmdir $tmpdir
|
||||
echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC}
|
||||
exit 0 ;;
|
||||
i*:CYGWIN*:*)
|
||||
@@ -843,7 +820,6 @@ EOF
|
||||
#endif
|
||||
EOF
|
||||
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
|
||||
rm -f $dummy.c && rmdir $tmpdir
|
||||
test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0
|
||||
;;
|
||||
mips64:Linux:*:*)
|
||||
@@ -863,7 +839,6 @@ EOF
|
||||
#endif
|
||||
EOF
|
||||
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
|
||||
rm -f $dummy.c && rmdir $tmpdir
|
||||
test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0
|
||||
;;
|
||||
ppc:Linux:*:*)
|
||||
@@ -959,7 +934,6 @@ EOF
|
||||
#endif
|
||||
EOF
|
||||
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
|
||||
rm -f $dummy.c && rmdir $tmpdir
|
||||
test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0
|
||||
test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0
|
||||
;;
|
||||
@@ -1157,7 +1131,11 @@ EOF
|
||||
echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
*:Darwin:*:*)
|
||||
echo `uname -p`-apple-darwin${UNAME_RELEASE}
|
||||
case `uname -p` in
|
||||
*86) UNAME_PROCESSOR=i686 ;;
|
||||
powerpc) UNAME_PROCESSOR=powerpc ;;
|
||||
esac
|
||||
echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
*:procnto*:*:* | *:QNX:[0123456789]*:*)
|
||||
UNAME_PROCESSOR=`uname -p`
|
||||
@@ -1331,8 +1309,7 @@ main ()
|
||||
}
|
||||
EOF
|
||||
|
||||
$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0
|
||||
rm -f $dummy.c $dummy && rmdir $tmpdir
|
||||
$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0
|
||||
|
||||
# Apollos put the system type in the environment.
|
||||
|
||||
|
||||
46
config/config.sub
vendored
46
config/config.sub
vendored
@@ -1,9 +1,9 @@
|
||||
#! /bin/sh
|
||||
# Configuration validation subroutine script.
|
||||
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
|
||||
# 2000, 2001, 2002 Free Software Foundation, Inc.
|
||||
# 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
|
||||
|
||||
timestamp='2002-11-30'
|
||||
timestamp='2003-02-22'
|
||||
|
||||
# This file is (in principle) common to ALL GNU software.
|
||||
# The presence of a machine in this file suggests that SOME GNU software
|
||||
@@ -245,17 +245,19 @@ case $basic_machine in
|
||||
| mips64vr4300 | mips64vr4300el \
|
||||
| mips64vr5000 | mips64vr5000el \
|
||||
| mipsisa32 | mipsisa32el \
|
||||
| mipsisa32r2 | mipsisa32r2el \
|
||||
| mipsisa64 | mipsisa64el \
|
||||
| mipsisa64sb1 | mipsisa64sb1el \
|
||||
| mipsisa64sr71k | mipsisa64sr71kel \
|
||||
| mipstx39 | mipstx39el \
|
||||
| mn10200 | mn10300 \
|
||||
| msp430 \
|
||||
| ns16k | ns32k \
|
||||
| openrisc | or32 \
|
||||
| pdp10 | pdp11 | pj | pjl \
|
||||
| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
|
||||
| pyramid \
|
||||
| sh | sh[1234] | sh3e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
|
||||
| sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
|
||||
| sh64 | sh64le \
|
||||
| sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \
|
||||
| strongarm \
|
||||
@@ -294,7 +296,7 @@ case $basic_machine in
|
||||
| arm-* | armbe-* | armle-* | armeb-* | armv*-* \
|
||||
| avr-* \
|
||||
| bs2000-* \
|
||||
| c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* \
|
||||
| c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
|
||||
| clipper-* | cydra-* \
|
||||
| d10v-* | d30v-* | dlx-* \
|
||||
| elxsi-* \
|
||||
@@ -315,21 +317,25 @@ case $basic_machine in
|
||||
| mips64vr4300-* | mips64vr4300el-* \
|
||||
| mips64vr5000-* | mips64vr5000el-* \
|
||||
| mipsisa32-* | mipsisa32el-* \
|
||||
| mipsisa32r2-* | mipsisa32r2el-* \
|
||||
| mipsisa64-* | mipsisa64el-* \
|
||||
| mipsisa64sb1-* | mipsisa64sb1el-* \
|
||||
| mipsisa64sr71k-* | mipsisa64sr71kel-* \
|
||||
| mipstx39 | mipstx39el \
|
||||
| none-* | np1-* | ns16k-* | ns32k-* \
|
||||
| mipstx39-* | mipstx39el-* \
|
||||
| msp430-* \
|
||||
| none-* | np1-* | nv1-* | ns16k-* | ns32k-* \
|
||||
| orion-* \
|
||||
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
|
||||
| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
|
||||
| pyramid-* \
|
||||
| romp-* | rs6000-* \
|
||||
| sh-* | sh[1234]-* | sh3e-* | sh[34]eb-* | shbe-* \
|
||||
| sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \
|
||||
| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
|
||||
| sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \
|
||||
| sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
|
||||
| tahoe-* | thumb-* | tic30-* | tic4x-* | tic54x-* | tic80-* | tron-* \
|
||||
| tahoe-* | thumb-* \
|
||||
| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
|
||||
| tron-* \
|
||||
| v850-* | v850e-* | vax-* \
|
||||
| we32k-* \
|
||||
| x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \
|
||||
@@ -716,6 +722,10 @@ case $basic_machine in
|
||||
np1)
|
||||
basic_machine=np1-gould
|
||||
;;
|
||||
nv1)
|
||||
basic_machine=nv1-cray
|
||||
os=-unicosmp
|
||||
;;
|
||||
nsr-tandem)
|
||||
basic_machine=nsr-tandem
|
||||
;;
|
||||
@@ -901,10 +911,6 @@ case $basic_machine in
|
||||
basic_machine=i386-sequent
|
||||
os=-dynix
|
||||
;;
|
||||
t3d)
|
||||
basic_machine=alpha-cray
|
||||
os=-unicos
|
||||
;;
|
||||
t3e)
|
||||
basic_machine=alphaev5-cray
|
||||
os=-unicos
|
||||
@@ -921,6 +927,14 @@ case $basic_machine in
|
||||
basic_machine=tic54x-unknown
|
||||
os=-coff
|
||||
;;
|
||||
tic55x | c55x*)
|
||||
basic_machine=tic55x-unknown
|
||||
os=-coff
|
||||
;;
|
||||
tic6x | c6x*)
|
||||
basic_machine=tic6x-unknown
|
||||
os=-coff
|
||||
;;
|
||||
tx39)
|
||||
basic_machine=mipstx39-unknown
|
||||
;;
|
||||
@@ -1023,7 +1037,7 @@ case $basic_machine in
|
||||
we32k)
|
||||
basic_machine=we32k-att
|
||||
;;
|
||||
sh3 | sh4 | sh3eb | sh4eb | sh[1234]le | sh3ele)
|
||||
sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele)
|
||||
basic_machine=sh-unknown
|
||||
;;
|
||||
sh64)
|
||||
@@ -1223,6 +1237,12 @@ case $os in
|
||||
-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
|
||||
os=-mint
|
||||
;;
|
||||
-aros*)
|
||||
os=-aros
|
||||
;;
|
||||
-kaos*)
|
||||
os=-kaos
|
||||
;;
|
||||
-none)
|
||||
;;
|
||||
*)
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# install - install a program, script, or datafile
|
||||
# This comes from X11R5 (mit/util/scripts/install.sh).
|
||||
#
|
||||
# This originally came from X11R5 (mit/util/scripts/install.sh).
|
||||
|
||||
scriptversion=2003-01-17.15
|
||||
|
||||
# Copyright 1991 by the Massachusetts Institute of Technology
|
||||
# (FSF changes in the public domain.)
|
||||
#
|
||||
# Permission to use, copy, modify, distribute, and sell this software and its
|
||||
# documentation for any purpose is hereby granted without fee, provided that
|
||||
@@ -23,13 +25,11 @@
|
||||
# from scratch. It can only install one file at a time, a restriction
|
||||
# shared with many OS's install programs.
|
||||
|
||||
|
||||
# set DOITPROG to echo to test this script
|
||||
|
||||
# Don't use :- since 4.3BSD and earlier shells don't like it.
|
||||
doit="${DOITPROG-}"
|
||||
|
||||
|
||||
# put in absolute paths if you don't have them in your path; or use env. vars.
|
||||
|
||||
mvprog="${MVPROG-mv}"
|
||||
@@ -41,236 +41,229 @@ stripprog="${STRIPPROG-strip}"
|
||||
rmprog="${RMPROG-rm}"
|
||||
mkdirprog="${MKDIRPROG-mkdir}"
|
||||
|
||||
transformbasename=""
|
||||
transform_arg=""
|
||||
transformbasename=
|
||||
transform_arg=
|
||||
instcmd="$mvprog"
|
||||
chmodcmd="$chmodprog 0755"
|
||||
chowncmd=""
|
||||
chgrpcmd=""
|
||||
stripcmd=""
|
||||
chowncmd=
|
||||
chgrpcmd=
|
||||
stripcmd=
|
||||
rmcmd="$rmprog -f"
|
||||
mvcmd="$mvprog"
|
||||
src=""
|
||||
dst=""
|
||||
dir_arg=""
|
||||
src=
|
||||
dst=
|
||||
dir_arg=
|
||||
|
||||
while [ x"$1" != x ]; do
|
||||
case $1 in
|
||||
-c) instcmd=$cpprog
|
||||
shift
|
||||
continue;;
|
||||
usage="Usage: $0 [OPTION]... SRCFILE DSTFILE
|
||||
or: $0 -d DIR1 DIR2...
|
||||
|
||||
-d) dir_arg=true
|
||||
shift
|
||||
continue;;
|
||||
In the first form, install SRCFILE to DSTFILE, removing SRCFILE by default.
|
||||
In the second, create the directory path DIR.
|
||||
|
||||
-m) chmodcmd="$chmodprog $2"
|
||||
shift
|
||||
shift
|
||||
continue;;
|
||||
Options:
|
||||
-b=TRANSFORMBASENAME
|
||||
-c copy source (using $cpprog) instead of moving (using $mvprog).
|
||||
-d create directories instead of installing files.
|
||||
-g GROUP $chgrp installed files to GROUP.
|
||||
-m MODE $chmod installed files to MODE.
|
||||
-o USER $chown installed files to USER.
|
||||
-s strip installed files (using $stripprog).
|
||||
-t=TRANSFORM
|
||||
--help display this help and exit.
|
||||
--version display version info and exit.
|
||||
|
||||
-o) chowncmd="$chownprog $2"
|
||||
shift
|
||||
shift
|
||||
continue;;
|
||||
Environment variables override the default commands:
|
||||
CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG
|
||||
"
|
||||
|
||||
-g) chgrpcmd="$chgrpprog $2"
|
||||
shift
|
||||
shift
|
||||
continue;;
|
||||
while test -n "$1"; do
|
||||
case $1 in
|
||||
-b=*) transformbasename=`echo $1 | sed 's/-b=//'`
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-s) stripcmd=$stripprog
|
||||
shift
|
||||
continue;;
|
||||
-c) instcmd=$cpprog
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-t=*) transformarg=`echo $1 | sed 's/-t=//'`
|
||||
shift
|
||||
continue;;
|
||||
-d) dir_arg=true
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-b=*) transformbasename=`echo $1 | sed 's/-b=//'`
|
||||
shift
|
||||
continue;;
|
||||
-g) chgrpcmd="$chgrpprog $2"
|
||||
shift
|
||||
shift
|
||||
continue;;
|
||||
|
||||
*) if [ x"$src" = x ]
|
||||
then
|
||||
src=$1
|
||||
else
|
||||
# this colon is to work around a 386BSD /bin/sh bug
|
||||
:
|
||||
dst=$1
|
||||
fi
|
||||
shift
|
||||
continue;;
|
||||
esac
|
||||
--help) echo "$usage"; exit 0;;
|
||||
|
||||
-m) chmodcmd="$chmodprog $2"
|
||||
shift
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-o) chowncmd="$chownprog $2"
|
||||
shift
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-s) stripcmd=$stripprog
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-t=*) transformarg=`echo $1 | sed 's/-t=//'`
|
||||
shift
|
||||
continue;;
|
||||
|
||||
--version) echo "$0 $scriptversion"; exit 0;;
|
||||
|
||||
*) if test -z "$src"; then
|
||||
src=$1
|
||||
else
|
||||
# this colon is to work around a 386BSD /bin/sh bug
|
||||
:
|
||||
dst=$1
|
||||
fi
|
||||
shift
|
||||
continue;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ x"$src" = x ]
|
||||
then
|
||||
echo "$0: no input file specified" >&2
|
||||
exit 1
|
||||
else
|
||||
:
|
||||
if test -z "$src"; then
|
||||
echo "$0: no input file specified." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ x"$dir_arg" != x ]; then
|
||||
dst=$src
|
||||
src=""
|
||||
if test -n "$dir_arg"; then
|
||||
dst=$src
|
||||
src=
|
||||
|
||||
if [ -d "$dst" ]; then
|
||||
instcmd=:
|
||||
chmodcmd=""
|
||||
else
|
||||
instcmd=$mkdirprog
|
||||
fi
|
||||
if test -d "$dst"; then
|
||||
instcmd=:
|
||||
chmodcmd=
|
||||
else
|
||||
instcmd=$mkdirprog
|
||||
fi
|
||||
else
|
||||
# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
|
||||
# might cause directories to be created, which would be especially bad
|
||||
# if $src (and thus $dsttmp) contains '*'.
|
||||
if test ! -f "$src" && test ! -d "$src"; then
|
||||
echo "$0: $src does not exist." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
|
||||
# might cause directories to be created, which would be especially bad
|
||||
# if $src (and thus $dsttmp) contains '*'.
|
||||
if test -z "$dst"; then
|
||||
echo "$0: no destination specified." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -f "$src" ] || [ -d "$src" ]
|
||||
then
|
||||
:
|
||||
else
|
||||
echo "$0: $src does not exist" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ x"$dst" = x ]
|
||||
then
|
||||
echo "$0: no destination specified" >&2
|
||||
exit 1
|
||||
else
|
||||
:
|
||||
fi
|
||||
|
||||
# If destination is a directory, append the input filename; if your system
|
||||
# does not like double slashes in filenames, you may need to add some logic
|
||||
|
||||
if [ -d "$dst" ]
|
||||
then
|
||||
dst=$dst/`basename "$src"`
|
||||
else
|
||||
:
|
||||
fi
|
||||
# If destination is a directory, append the input filename; won't work
|
||||
# if double slashes aren't ignored.
|
||||
if test -d "$dst"; then
|
||||
dst=$dst/`basename "$src"`
|
||||
fi
|
||||
fi
|
||||
|
||||
## this sed command emulates the dirname command
|
||||
dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
|
||||
|
||||
# Make sure that the destination directory exists.
|
||||
# this part is taken from Noah Friedman's mkinstalldirs script
|
||||
# (this part is taken from Noah Friedman's mkinstalldirs script.)
|
||||
|
||||
# Skip lots of stat calls in the usual case.
|
||||
if [ ! -d "$dstdir" ]; then
|
||||
defaultIFS='
|
||||
if test ! -d "$dstdir"; then
|
||||
defaultIFS='
|
||||
'
|
||||
IFS="${IFS-$defaultIFS}"
|
||||
IFS="${IFS-$defaultIFS}"
|
||||
|
||||
oIFS=$IFS
|
||||
# Some sh's can't handle IFS=/ for some reason.
|
||||
IFS='%'
|
||||
set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
|
||||
IFS=$oIFS
|
||||
oIFS=$IFS
|
||||
# Some sh's can't handle IFS=/ for some reason.
|
||||
IFS='%'
|
||||
set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
|
||||
IFS=$oIFS
|
||||
|
||||
pathcomp=''
|
||||
pathcomp=
|
||||
|
||||
while [ $# -ne 0 ] ; do
|
||||
pathcomp=$pathcomp$1
|
||||
shift
|
||||
|
||||
if [ ! -d "$pathcomp" ] ;
|
||||
then
|
||||
$mkdirprog "$pathcomp"
|
||||
else
|
||||
:
|
||||
fi
|
||||
|
||||
pathcomp=$pathcomp/
|
||||
done
|
||||
while test $# -ne 0 ; do
|
||||
pathcomp=$pathcomp$1
|
||||
shift
|
||||
test -d "$pathcomp" || $mkdirprog "$pathcomp"
|
||||
pathcomp=$pathcomp/
|
||||
done
|
||||
fi
|
||||
|
||||
if [ x"$dir_arg" != x ]
|
||||
then
|
||||
$doit $instcmd "$dst" &&
|
||||
if test -n "$dir_arg"; then
|
||||
$doit $instcmd "$dst" \
|
||||
&& { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \
|
||||
&& { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \
|
||||
&& { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \
|
||||
&& { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; }
|
||||
|
||||
if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dst"; else : ; fi &&
|
||||
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dst"; else : ; fi &&
|
||||
if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dst"; else : ; fi &&
|
||||
if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dst"; else : ; fi
|
||||
else
|
||||
# If we're going to rename the final executable, determine the name now.
|
||||
if test -z "$transformarg"; then
|
||||
dstfile=`basename "$dst"`
|
||||
else
|
||||
dstfile=`basename "$dst" $transformbasename \
|
||||
| sed $transformarg`$transformbasename
|
||||
fi
|
||||
|
||||
# If we're going to rename the final executable, determine the name now.
|
||||
# don't allow the sed command to completely eliminate the filename.
|
||||
test -z "$dstfile" && dstfile=`basename "$dst"`
|
||||
|
||||
if [ x"$transformarg" = x ]
|
||||
then
|
||||
dstfile=`basename "$dst"`
|
||||
else
|
||||
dstfile=`basename "$dst" $transformbasename |
|
||||
sed $transformarg`$transformbasename
|
||||
fi
|
||||
# Make a couple of temp file names in the proper directory.
|
||||
dsttmp=$dstdir/#inst.$$#
|
||||
rmtmp=$dstdir/#rm.$$#
|
||||
|
||||
# don't allow the sed command to completely eliminate the filename
|
||||
# Trap to clean up those temp files at exit.
|
||||
trap 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0
|
||||
trap '(exit $?); exit' 1 2 13 15
|
||||
|
||||
if [ x"$dstfile" = x ]
|
||||
then
|
||||
dstfile=`basename "$dst"`
|
||||
else
|
||||
:
|
||||
fi
|
||||
# Move or copy the file name to the temp name
|
||||
$doit $instcmd "$src" "$dsttmp" &&
|
||||
|
||||
# Make a couple of temp file names in the proper directory.
|
||||
# and set any options; do chmod last to preserve setuid bits.
|
||||
#
|
||||
# If any of these fail, we abort the whole thing. If we want to
|
||||
# ignore errors from any of these, just make sure not to ignore
|
||||
# errors from the above "$doit $instcmd $src $dsttmp" command.
|
||||
#
|
||||
{ test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \
|
||||
&& { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \
|
||||
&& { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \
|
||||
&& { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } &&
|
||||
|
||||
dsttmp=$dstdir/#inst.$$#
|
||||
rmtmp=$dstdir/#rm.$$#
|
||||
|
||||
# Trap to clean up temp files at exit.
|
||||
|
||||
trap 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0
|
||||
trap '(exit $?); exit' 1 2 13 15
|
||||
|
||||
# Move or copy the file name to the temp name
|
||||
|
||||
$doit $instcmd "$src" "$dsttmp" &&
|
||||
|
||||
# and set any options; do chmod last to preserve setuid bits
|
||||
|
||||
# If any of these fail, we abort the whole thing. If we want to
|
||||
# ignore errors from any of these, just make sure not to ignore
|
||||
# errors from the above "$doit $instcmd $src $dsttmp" command.
|
||||
|
||||
if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dsttmp"; else :;fi &&
|
||||
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dsttmp"; else :;fi &&
|
||||
if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dsttmp"; else :;fi &&
|
||||
if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dsttmp"; else :;fi &&
|
||||
|
||||
# Now remove or move aside any old file at destination location. We try this
|
||||
# two ways since rm can't unlink itself on some systems and the destination
|
||||
# file might be busy for other reasons. In this case, the final cleanup
|
||||
# might fail but the new file should still install successfully.
|
||||
|
||||
{
|
||||
if [ -f "$dstdir/$dstfile" ]
|
||||
then
|
||||
$doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null ||
|
||||
$doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null ||
|
||||
{
|
||||
echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
|
||||
(exit 1); exit
|
||||
}
|
||||
else
|
||||
:
|
||||
fi
|
||||
} &&
|
||||
|
||||
# Now rename the file to the real destination.
|
||||
|
||||
$doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
|
||||
# Now remove or move aside any old file at destination location. We
|
||||
# try this two ways since rm can't unlink itself on some systems and
|
||||
# the destination file might be busy for other reasons. In this case,
|
||||
# the final cleanup might fail but the new file should still install
|
||||
# successfully.
|
||||
{
|
||||
if test -f "$dstdir/$dstfile"; then
|
||||
$doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \
|
||||
|| $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \
|
||||
|| {
|
||||
echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
|
||||
(exit 1); exit
|
||||
}
|
||||
else
|
||||
:
|
||||
fi
|
||||
} &&
|
||||
|
||||
# Now rename the file to the real destination.
|
||||
$doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
|
||||
fi &&
|
||||
|
||||
# The final little trick to "correctly" pass the exit status to the exit trap.
|
||||
|
||||
{
|
||||
(exit 0); exit
|
||||
(exit 0); exit
|
||||
}
|
||||
|
||||
# Local variables:
|
||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||
# time-stamp-start: "scriptversion="
|
||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||
# time-stamp-end: "$"
|
||||
# End:
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/bin/sh
|
||||
# Get modification time of a file or directory and pretty-print it.
|
||||
# Copyright 1995, 1996, 1997 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1995, 1996, 1997, 2003 Free Software Foundation, Inc.
|
||||
# written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, June 1995
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
@@ -30,24 +30,38 @@ export LC_ALL
|
||||
LC_TIME=C
|
||||
export LC_TIME
|
||||
|
||||
# Get the extended ls output of the file or directory.
|
||||
# On HPUX /bin/sh, "set" interprets "-rw-r--r--" as options, so the "x" below.
|
||||
if ls -L /dev/null 1>/dev/null 2>&1; then
|
||||
set - x`ls -L -l -d $1`
|
||||
else
|
||||
set - x`ls -l -d $1`
|
||||
fi
|
||||
# The month is at least the fourth argument
|
||||
# (3 shifts here, the next inside the loop).
|
||||
shift
|
||||
shift
|
||||
shift
|
||||
save_arg1="$1"
|
||||
|
||||
# Find the month. Next argument is day, followed by the year or time.
|
||||
# Find out how to get the extended ls output of a file or directory.
|
||||
if ls -L /dev/null 1>/dev/null 2>&1; then
|
||||
ls_command='ls -L -l -d'
|
||||
else
|
||||
ls_command='ls -l -d'
|
||||
fi
|
||||
|
||||
# A `ls -l' line looks as follows on OS/2.
|
||||
# drwxrwx--- 0 Aug 11 2001 foo
|
||||
# This differs from Unix, which adds ownership information.
|
||||
# drwxrwx--- 2 root root 4096 Aug 11 2001 foo
|
||||
#
|
||||
# To find the date, we split the line on spaces and iterate on words
|
||||
# until we find a month. This cannot work with files whose owner is a
|
||||
# user named `Jan', or `Feb', etc. However, it's unlikely that `/'
|
||||
# will be owned by a user whose name is a month. So we first look at
|
||||
# the extended ls output of the root directory to decide how many
|
||||
# words should be skipped to get the date.
|
||||
|
||||
# On HPUX /bin/sh, "set" interprets "-rw-r--r--" as options, so the "x" below.
|
||||
set - x`$ls_command /`
|
||||
|
||||
# Find which argument is the month.
|
||||
month=
|
||||
command=
|
||||
until test $month
|
||||
do
|
||||
shift
|
||||
# Add another shift to the command.
|
||||
command="$command shift;"
|
||||
case $1 in
|
||||
Jan) month=January; nummonth=1;;
|
||||
Feb) month=February; nummonth=2;;
|
||||
@@ -64,6 +78,28 @@ do
|
||||
esac
|
||||
done
|
||||
|
||||
# Get the extended ls output of the file or directory.
|
||||
set - x`eval "$ls_command \"\$save_arg1\""`
|
||||
|
||||
# Remove all preceding arguments
|
||||
eval $command
|
||||
|
||||
# Get the month. Next argument is day, followed by the year or time.
|
||||
case $1 in
|
||||
Jan) month=January; nummonth=1;;
|
||||
Feb) month=February; nummonth=2;;
|
||||
Mar) month=March; nummonth=3;;
|
||||
Apr) month=April; nummonth=4;;
|
||||
May) month=May; nummonth=5;;
|
||||
Jun) month=June; nummonth=6;;
|
||||
Jul) month=July; nummonth=7;;
|
||||
Aug) month=August; nummonth=8;;
|
||||
Sep) month=September; nummonth=9;;
|
||||
Oct) month=October; nummonth=10;;
|
||||
Nov) month=November; nummonth=11;;
|
||||
Dec) month=December; nummonth=12;;
|
||||
esac
|
||||
|
||||
day=$2
|
||||
|
||||
# Here we have to deal with the problem that the ls output gives either
|
||||
|
||||
1579
config/texinfo.tex
1579
config/texinfo.tex
File diff suppressed because it is too large
Load Diff
25
configure.ac
25
configure.ac
@@ -1,5 +1,5 @@
|
||||
dnl Process this file with autoconf to produce a configure script. -*-m4-*-
|
||||
AC_INIT([GNU coreutils],[4.5.4],[bug-coreutils@gnu.org])
|
||||
AC_INIT([GNU coreutils],[5.0],[bug-coreutils@gnu.org])
|
||||
AC_CONFIG_SRCDIR(src/ls.c)
|
||||
|
||||
AC_CONFIG_AUX_DIR(config)
|
||||
@@ -14,15 +14,19 @@ AC_PROG_CC
|
||||
AC_PROG_CPP
|
||||
AC_PROG_GCC_TRADITIONAL
|
||||
AC_PROG_RANLIB
|
||||
AC_PROG_LN_S
|
||||
AC_AIX
|
||||
AC_MINIX
|
||||
|
||||
AC_CHECK_FUNCS(uname,
|
||||
OPTIONAL_BIN_PROGS="$OPTIONAL_BIN_PROGS uname" MAN="$MAN uname.1")
|
||||
OPTIONAL_BIN_PROGS="$OPTIONAL_BIN_PROGS uname\$(EXEEXT)"
|
||||
MAN="$MAN uname.1")
|
||||
AC_CHECK_FUNCS(chroot,
|
||||
OPTIONAL_BIN_PROGS="$OPTIONAL_BIN_PROGS chroot" MAN="$MAN chroot.1")
|
||||
OPTIONAL_BIN_PROGS="$OPTIONAL_BIN_PROGS chroot\$(EXEEXT)"
|
||||
MAN="$MAN chroot.1")
|
||||
AC_CHECK_FUNCS(gethostid,
|
||||
OPTIONAL_BIN_PROGS="$OPTIONAL_BIN_PROGS hostid" MAN="$MAN hostid.1")
|
||||
OPTIONAL_BIN_PROGS="$OPTIONAL_BIN_PROGS hostid\$(EXEEXT)"
|
||||
MAN="$MAN hostid.1")
|
||||
|
||||
jm_MACROS
|
||||
|
||||
@@ -122,7 +126,7 @@ AC_CACHE_VAL(utils_cv_func_setpriority,
|
||||
[utils_cv_func_setpriority=no])])
|
||||
AC_MSG_RESULT($utils_cv_func_setpriority)
|
||||
if test $utils_cv_func_setpriority = yes; then
|
||||
OPTIONAL_BIN_PROGS="$OPTIONAL_BIN_PROGS nice"
|
||||
OPTIONAL_BIN_PROGS="$OPTIONAL_BIN_PROGS nice\$(EXEEXT)"
|
||||
OPTIONAL_BIN_ZCRIPTS="$OPTIONAL_BIN_ZCRIPTS nohup"
|
||||
MAN="$MAN nice.1 nohup.1"
|
||||
else
|
||||
@@ -134,7 +138,7 @@ else
|
||||
AC_MSG_RESULT($utils_cv_func_nice)
|
||||
if test $utils_cv_func_nice = yes; then
|
||||
AC_DEFINE(NICE_PRIORITY, 1, [FIXME])
|
||||
OPTIONAL_BIN_PROGS="$OPTIONAL_BIN_PROGS nice"
|
||||
OPTIONAL_BIN_PROGS="$OPTIONAL_BIN_PROGS nice\$(EXEEXT)"
|
||||
OPTIONAL_BIN_ZCRIPTS="$OPTIONAL_BIN_ZCRIPTS nohup"
|
||||
MAN="$MAN nice.1 nohup.1"
|
||||
fi
|
||||
@@ -144,7 +148,9 @@ AC_DEFUN(jm_DUMMY_1,
|
||||
[
|
||||
AC_REQUIRE([jm_PREREQ_READUTMP])
|
||||
if test $ac_cv_header_utmp_h = yes || test $ac_cv_header_utmpx_h = yes; then
|
||||
OPTIONAL_BIN_PROGS="$OPTIONAL_BIN_PROGS pinky users who"
|
||||
OPTIONAL_BIN_PROGS="$OPTIONAL_BIN_PROGS pinky\$(EXEEXT)"
|
||||
OPTIONAL_BIN_PROGS="$OPTIONAL_BIN_PROGS users\$(EXEEXT)"
|
||||
OPTIONAL_BIN_PROGS="$OPTIONAL_BIN_PROGS who\$(EXEEXT)"
|
||||
MAN="$MAN pinky.1 users.1 who.1"
|
||||
fi
|
||||
])
|
||||
@@ -177,13 +183,14 @@ if test -z "$have_ut_host"; then
|
||||
fi
|
||||
|
||||
GNULIB_BOOT_TIME(
|
||||
[OPTIONAL_BIN_PROGS="$OPTIONAL_BIN_PROGS uptime" MAN="$MAN uptime.1"])
|
||||
[OPTIONAL_BIN_PROGS="$OPTIONAL_BIN_PROGS uptime\$(EXEEXT)"
|
||||
MAN="$MAN uptime.1"])
|
||||
|
||||
AC_SYS_POSIX_TERMIOS()
|
||||
jm_HEADER_TIOCGWINSZ_NEEDS_SYS_IOCTL
|
||||
|
||||
if test $ac_cv_sys_posix_termios = yes; then
|
||||
OPTIONAL_BIN_PROGS="$OPTIONAL_BIN_PROGS stty" MAN="$MAN stty.1"
|
||||
OPTIONAL_BIN_PROGS="$OPTIONAL_BIN_PROGS stty\$(EXEEXT)" MAN="$MAN stty.1"
|
||||
|
||||
AC_MSG_CHECKING(whether termios.h needs _XOPEN_SOURCE)
|
||||
AC_CACHE_VAL(su_cv_sys_termios_needs_xopen_source,
|
||||
|
||||
101
doc/ChangeLog
101
doc/ChangeLog
@@ -1,3 +1,104 @@
|
||||
2003-04-02 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* coreutils.texi (false invocation): Note that false exits
|
||||
unsuccessfully even with --help and --version.
|
||||
|
||||
* Makefile.am (check-texinfo): Don't fail if perl is missing.
|
||||
Reported by Nelson Beebe.
|
||||
|
||||
2003-03-27 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* coreutils.texi (printf invocation): Fix formatting bugs.
|
||||
From Paul Eggert.
|
||||
(sort invocation): Describe sort's --stable (-s) option.
|
||||
|
||||
2003-03-13 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* coreutils.texi (shred invocation): Mention that --exact
|
||||
is now the default for non-regular files.
|
||||
|
||||
2003-03-02 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* coreutils.texi (Exit status): New section.
|
||||
Suggestion from Michael Stone.
|
||||
|
||||
2003-02-21 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* coreutils.texi (du invocation): Document --apparent-size.
|
||||
Adjust documentation of --bytes (-b).
|
||||
(stat invocation): Describe %B.
|
||||
|
||||
2003-02-07 Richard Dawe <rich@phekda.freeserve.co.uk>
|
||||
|
||||
* coreutils.texi: Use @command instead of @code for program names.
|
||||
|
||||
* perm.texi (Mode Structure): Mention filesystem-specific
|
||||
permissions and that mounting a filesystem as read-only may
|
||||
override actual file permissions. Use @command instead
|
||||
of @code for program names.
|
||||
|
||||
2003-02-06 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* coreutils.texi: Adjust alignment and mention `file, text, shell'
|
||||
on the `* Coreutils:...' dirently line. From Karl Berry.
|
||||
|
||||
2003-02-05 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* Makefile.am (check-texinfo): Allow bare `POSIX' to be used on
|
||||
direntry lines.
|
||||
|
||||
* coreutils.texi: Use new form of @direntry.
|
||||
Put unlink in its proper place. Adjust wording in some
|
||||
dir entry descriptions, mainly so they fit in 80 columns.
|
||||
Don't use mark-up like @acronym{POSIX} in direntries.
|
||||
Mostly from Karl Berry.
|
||||
|
||||
2003-01-25 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* coreutils.texi (cut invocation): Describe new functionality of
|
||||
--output-delimiter=STR.
|
||||
|
||||
2003-01-24 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* coreutils.texi (The cut command): Give an example of using cut -c
|
||||
with an output delimiter. From Jan Nieuwenhuizen.
|
||||
|
||||
* coreutils.texi (The cut command): Extend the new example a little.
|
||||
(Formatting file timestamps): Fix typo: s/%M:S/%M:%S/.
|
||||
|
||||
* coreutils.texi: Change each use of `Core-utils' to `Coreutils'.
|
||||
From Karl Berry.
|
||||
|
||||
2003-01-19 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* coreutils.texi (Which files are listed): Document new option:
|
||||
--dereference-command-line-symlink-to-dir.
|
||||
|
||||
2003-01-15 Paul Eggert <eggert@twinsun.com>
|
||||
|
||||
Change ls -H back to the way it was yesterday, since this is
|
||||
compatible with FreeBSD and the POSIX spec is confusing
|
||||
and somewhat contradictory.
|
||||
|
||||
* doc/coreutils.texi (Which files are listed, General output
|
||||
formatting): Undo last change.
|
||||
|
||||
2003-01-15 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* coreutils.texi (General output formatting): Reflect option name change:
|
||||
s/--dereference-command-line/--dereference-command-line-symlink-to-dir/.
|
||||
Say that this option changes how ls treats only symlinks to directories
|
||||
specified on the command line.
|
||||
|
||||
2002-08-27 Dmitry V. Levin <ldv@altlinux.org>
|
||||
|
||||
* coreutils.texi: Document readlink.
|
||||
|
||||
2002-12-14 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* coreutils.texi (mknod invocation): Specify how major and minor mode
|
||||
numbers are interpreted. Report forwarded by Kristin E Thomas.
|
||||
|
||||
2002-11-13 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* coreutils.texi (Examples of expr): Remove bogus `^'s.
|
||||
|
||||
@@ -30,10 +30,12 @@ $(INFO_DEPS): $(EXTRA_DIST)
|
||||
|
||||
# List words/regexps here that should not appear in the texinfo documentation.
|
||||
check-texinfo:
|
||||
grep timezone $(srcdir)/*.texi && exit 1 || :
|
||||
grep '\$$@"' $(srcdir)/*.texi && exit 1 || :
|
||||
$(PERL) -ne \
|
||||
'/\bPOSIX\b/ && !/\@acronym{POSIX}/ || /{posix}/ and print,exit 1' \
|
||||
$(srcdir)/*.texi 2> /dev/null && : || exit 1
|
||||
fail=0; \
|
||||
grep timezone $(srcdir)/*.texi && fail=1; \
|
||||
grep '\$$@"' $(srcdir)/*.texi && fail=1; \
|
||||
$(PERL) -e 1 2> /dev/null && { $(PERL) -ne \
|
||||
'/\bPOSIX\b/ && !/\@acronym{POSIX}/ && !/^\* / || /{posix}/ and print,exit 1' \
|
||||
$(srcdir)/*.texi 2> /dev/null || fail=1; }; \
|
||||
exit $$fail
|
||||
|
||||
check: check-texinfo
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# Makefile.in generated by automake 1.7.1b from Makefile.am.
|
||||
# Makefile.in generated by automake 1.7.3 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
|
||||
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
|
||||
# Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@@ -79,6 +79,7 @@ LIBS = @LIBS@
|
||||
LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
|
||||
LIB_CRYPT = @LIB_CRYPT@
|
||||
LIB_NANOSLEEP = @LIB_NANOSLEEP@
|
||||
LN_S = @LN_S@
|
||||
LTLIBICONV = @LTLIBICONV@
|
||||
LTLIBINTL = @LTLIBINTL@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
@@ -127,6 +128,7 @@ ac_ct_STRIP = @ac_ct_STRIP@
|
||||
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
|
||||
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
@@ -159,6 +161,7 @@ info_TEXINFOS = coreutils.texi
|
||||
|
||||
EXTRA_DIST = perm.texi getdate.texi constants.texi doclicense.texi
|
||||
subdir = doc
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
@@ -182,7 +185,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
|
||||
|
||||
.texi.info:
|
||||
@rm -f $@ $@-[0-9] $@-[0-9][0-9]
|
||||
@rm -f $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]
|
||||
$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
|
||||
-o $@ `test -f '$<' || echo '$(srcdir)/'`$<
|
||||
|
||||
@@ -230,16 +233,19 @@ uninstall-info-am:
|
||||
install-info --version | grep -i -v debian) >/dev/null 2>&1; then \
|
||||
list='$(INFO_DEPS)'; \
|
||||
for file in $$list; do \
|
||||
echo " install-info --info-dir=$(DESTDIR)$(infodir) --remove $(DESTDIR)$(infodir)/$$file"; \
|
||||
install-info --info-dir=$(DESTDIR)$(infodir) --remove $(DESTDIR)$(infodir)/$$file; \
|
||||
relfile=`echo "$$file" | sed 's|^.*/||'`; \
|
||||
echo " install-info --info-dir=$(DESTDIR)$(infodir) --remove $(DESTDIR)$(infodir)/$$relfile"; \
|
||||
install-info --info-dir=$(DESTDIR)$(infodir) --remove $(DESTDIR)$(infodir)/$$relfile; \
|
||||
done; \
|
||||
else :; fi
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(INFO_DEPS)'; \
|
||||
for file in $$list; do \
|
||||
relfile=`echo "$$file" | sed 's|^.*/||'`; \
|
||||
relfile_i=`echo "$$relfile" | sed 's|\.info$$||;s|$$|.i|'`; \
|
||||
(if cd $(DESTDIR)$(infodir); then \
|
||||
echo " rm -f $$file $$file-[0-9] $$file-[0-9][0-9])"; \
|
||||
rm -f $$file $$file-[0-9] $$file-[0-9][0-9]; \
|
||||
echo " rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9])"; \
|
||||
rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]; \
|
||||
else :; fi); \
|
||||
done
|
||||
|
||||
@@ -261,11 +267,10 @@ mostlyclean-aminfo:
|
||||
coreutils.vr coreutils.dvi coreutils.pdf coreutils.ps
|
||||
|
||||
maintainer-clean-aminfo:
|
||||
list='$(INFO_DEPS)'; for i in $$list; do \
|
||||
rm -f $$i; \
|
||||
if test "`echo $$i-[0-9]*`" != "$$i-[0-9]*"; then \
|
||||
rm -f $$i-[0-9]*; \
|
||||
fi; \
|
||||
@list='$(INFO_DEPS)'; for i in $$list; do \
|
||||
i_i=`echo "$$i" | sed 's|\.info$$||;s|$$|.i|'`; \
|
||||
echo " rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]"; \
|
||||
rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]; \
|
||||
done
|
||||
tags: TAGS
|
||||
TAGS:
|
||||
@@ -367,9 +372,11 @@ install-info-am: $(INFO_DEPS)
|
||||
@list='$(INFO_DEPS)'; \
|
||||
for file in $$list; do \
|
||||
if test -f $$file; then d=.; else d=$(srcdir); fi; \
|
||||
for ifile in echo $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9]; do \
|
||||
file_i=`echo "$$file" | sed 's|\.info$$||;s|$$|.i|'`; \
|
||||
for ifile in $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9] \
|
||||
$$d/$$file_i[0-9] $$d/$$file_i[0-9][0-9] ; do \
|
||||
if test -f $$ifile; then \
|
||||
relfile=`expr "$$ifile" : "$$d/\(.*\)"`; \
|
||||
relfile=`echo "$$ifile" | sed 's|^.*/||'`; \
|
||||
echo " $(INSTALL_DATA) $$ifile $(DESTDIR)$(infodir)/$$relfile"; \
|
||||
$(INSTALL_DATA) $$ifile $(DESTDIR)$(infodir)/$$relfile; \
|
||||
else : ; fi; \
|
||||
@@ -380,8 +387,9 @@ install-info-am: $(INFO_DEPS)
|
||||
install-info --version | grep -i -v debian) >/dev/null 2>&1; then \
|
||||
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 || :;\
|
||||
relfile=`echo "$$file" | sed 's|^.*/||'`; \
|
||||
echo " install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$relfile";\
|
||||
install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$relfile || :;\
|
||||
done; \
|
||||
else : ; fi
|
||||
install-man:
|
||||
@@ -435,11 +443,13 @@ $(INFO_DEPS): $(EXTRA_DIST)
|
||||
|
||||
# List words/regexps here that should not appear in the texinfo documentation.
|
||||
check-texinfo:
|
||||
grep timezone $(srcdir)/*.texi && exit 1 || :
|
||||
grep '\$$@"' $(srcdir)/*.texi && exit 1 || :
|
||||
$(PERL) -ne \
|
||||
'/\bPOSIX\b/ && !/\@acronym{POSIX}/ || /{posix}/ and print,exit 1' \
|
||||
$(srcdir)/*.texi 2> /dev/null && : || exit 1
|
||||
fail=0; \
|
||||
grep timezone $(srcdir)/*.texi && fail=1; \
|
||||
grep '\$$@"' $(srcdir)/*.texi && fail=1; \
|
||||
$(PERL) -e 1 2> /dev/null && { $(PERL) -ne \
|
||||
'/\bPOSIX\b/ && !/\@acronym{POSIX}/ && !/^\* / || /{posix}/ and print,exit 1' \
|
||||
$(srcdir)/*.texi 2> /dev/null || fail=1; }; \
|
||||
exit $$fail
|
||||
|
||||
check: check-texinfo
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
\input texinfo
|
||||
@c %**start of header
|
||||
@setfilename coreutils.info
|
||||
@settitle @sc{gnu} Core-utils
|
||||
@settitle @sc{gnu} Coreutils
|
||||
|
||||
@c %**end of header
|
||||
|
||||
@@ -20,21 +20,23 @@
|
||||
@syncodeindex pg cp
|
||||
@syncodeindex vr cp
|
||||
|
||||
@ifinfo
|
||||
@format
|
||||
START-INFO-DIR-ENTRY
|
||||
* GNU Utilities: (coreutils). @sc{gnu} Utilities.
|
||||
* Common options: (coreutils)Common options. Common options.
|
||||
* File permissions: (coreutils)File permissions. Access modes.
|
||||
@dircategory Basics
|
||||
@direntry
|
||||
* Coreutils: (coreutils). Core GNU (file, text, shell) utilities.
|
||||
* Common options: (coreutils)Common options. Common options.
|
||||
* File permissions: (coreutils)File permissions. Access modes.
|
||||
* Date input formats: (coreutils)Date input formats.
|
||||
@end direntry
|
||||
|
||||
@dircategory Individual utilities
|
||||
@direntry
|
||||
* basename: (coreutils)basename invocation. Strip directory and suffix.
|
||||
* cat: (coreutils)cat invocation. Concatenate and write files.
|
||||
* chgrp: (coreutils)chgrp invocation. Change file groups.
|
||||
* chmod: (coreutils)chmod invocation. Change file permissions.
|
||||
* chown: (coreutils)chown invocation. Change file owners/groups.
|
||||
* chroot: (coreutils)chroot invocation. Specify the root directory.
|
||||
* cksum: (coreutils)cksum invocation. Print @acronym{POSIX} CRC checksum.
|
||||
* cksum: (coreutils)cksum invocation. Print POSIX CRC checksum.
|
||||
* comm: (coreutils)comm invocation. Compare sorted files by line.
|
||||
* cp: (coreutils)cp invocation. Copy files.
|
||||
* csplit: (coreutils)csplit invocation. Split by context.
|
||||
@@ -82,6 +84,7 @@ START-INFO-DIR-ENTRY
|
||||
* printf: (coreutils)printf invocation. Format and print data.
|
||||
* ptx: (coreutils)ptx invocation. Produce permuted indexes.
|
||||
* pwd: (coreutils)pwd invocation. Print working directory.
|
||||
* readlink: (coreutils)readlink invocation. Print referent of a symlink.
|
||||
* rm: (coreutils)rm invocation. Remove files.
|
||||
* rmdir: (coreutils)rmdir invocation. Remove empty directories.
|
||||
* seq: (coreutils)seq invocation. Print numeric sequences
|
||||
@@ -89,7 +92,7 @@ START-INFO-DIR-ENTRY
|
||||
* sleep: (coreutils)sleep invocation. Delay for a specified time.
|
||||
* sort: (coreutils)sort invocation. Sort text files.
|
||||
* split: (coreutils)split invocation. Split into fixed-size pieces.
|
||||
* stat: (coreutils)stat invocation. Report file or filesystem status.
|
||||
* stat: (coreutils)stat invocation. Report file(system) status.
|
||||
* stty: (coreutils)stty invocation. Print/change terminal settings.
|
||||
* su: (coreutils)su invocation. Modify user and group id.
|
||||
* sum: (coreutils)sum invocation. Print traditional checksum.
|
||||
@@ -105,23 +108,21 @@ START-INFO-DIR-ENTRY
|
||||
* tty: (coreutils)tty invocation. Print terminal name.
|
||||
* uname: (coreutils)uname invocation. Print system information.
|
||||
* unexpand: (coreutils)unexpand invocation. Convert spaces to tabs.
|
||||
* unlink: (coreutils)unlink invocation. Remove files via unlink syscall.
|
||||
* uniq: (coreutils)uniq invocation. Uniquify files.
|
||||
* unlink: (coreutils)unlink invocation. Removal via unlink(2).
|
||||
* users: (coreutils)users invocation. Print current user names.
|
||||
* vdir: (coreutils)vdir invocation. List directories verbosely.
|
||||
* wc: (coreutils)wc invocation. Byte, word, and line counts.
|
||||
* who: (coreutils)who invocation. Print who is logged in.
|
||||
* whoami: (coreutils)whoami invocation. Print effective user id.
|
||||
* yes: (coreutils)yes invocation. Print a string indefinitely.
|
||||
END-INFO-DIR-ENTRY
|
||||
@end format
|
||||
@end ifinfo
|
||||
@end direntry
|
||||
|
||||
@copying
|
||||
This manual documents version @value{VERSION} of the @sc{gnu} command
|
||||
line utilities.
|
||||
This manual documents version @value{VERSION} of the @sc{gnu} core
|
||||
utilities, including the standard programs for text and file manipulation.
|
||||
|
||||
Copyright @copyright{} 1994, 1995, 1996, 2000, 2001, 2002
|
||||
Copyright @copyright{} 1994, 1995, 1996, 2000, 2001, 2002, 2003
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
@quotation
|
||||
@@ -135,8 +136,8 @@ Free Documentation License''.
|
||||
@end copying
|
||||
|
||||
@titlepage
|
||||
@title @sc{gnu} @code{Core-utils}
|
||||
@subtitle A set of command line utilities
|
||||
@title @sc{gnu} @code{Coreutils}
|
||||
@subtitle Core GNU utilities
|
||||
@subtitle for version @value{VERSION}, @value{UPDATED}
|
||||
@author David MacKenzie et al.
|
||||
|
||||
@@ -146,16 +147,14 @@ Free Documentation License''.
|
||||
@end titlepage
|
||||
|
||||
|
||||
@c If your makeinfo doesn't grok this @ifnottex directive, then either
|
||||
@c get a newer version of makeinfo or do s/ifnottex/ifinfo/ here and on
|
||||
@c the matching @end directive below.
|
||||
@ifnottex
|
||||
@node Top
|
||||
@top GNU Core-utils
|
||||
@top GNU Coreutils
|
||||
|
||||
@insertcopying
|
||||
@end ifnottex
|
||||
|
||||
@cindex core utilities
|
||||
@cindex text utilities
|
||||
@cindex shell utilities
|
||||
@cindex file utilities
|
||||
@@ -197,6 +196,7 @@ Free Documentation License''.
|
||||
|
||||
Common Options
|
||||
|
||||
* Exit status:: Indicating program success or failure.
|
||||
* Backup options:: Backup options
|
||||
* Block size:: Block size
|
||||
* Target directory:: Target directory
|
||||
@@ -297,6 +297,7 @@ Special file types
|
||||
* mkdir invocation:: Make directories
|
||||
* mkfifo invocation:: Make FIFOs (named pipes)
|
||||
* mknod invocation:: Make block or character special files
|
||||
* readlink invocation:: Print the referent of a symbolic link
|
||||
* rmdir invocation:: Remove empty directories
|
||||
* unlink invocation:: Remove files via unlink syscall
|
||||
|
||||
@@ -542,6 +543,7 @@ output and reads from standard input, and is equivalent to plain
|
||||
context that requires a file name.
|
||||
|
||||
@menu
|
||||
* Exit status:: Indicating program success or failure.
|
||||
* Backup options:: -b -S -V, in some programs.
|
||||
* Block size:: BLOCK_SIZE and --block-size, in some programs.
|
||||
* Target directory:: --target-directory, in some programs.
|
||||
@@ -550,13 +552,30 @@ context that requires a file name.
|
||||
@end menu
|
||||
|
||||
|
||||
@node Exit status
|
||||
@section Exit status
|
||||
|
||||
Nearly every command invocation yields an integral @dfn{exit status}
|
||||
that can be used to change how other commands work.
|
||||
For the vast majority of commands, an exit status of zero indicates
|
||||
success, and a value of @samp{1} indicates failure.
|
||||
However, some of the programs documented here do produce
|
||||
other exit status values and a few associate different
|
||||
meanings with the values @samp{0} and @samp{1}.
|
||||
Here are some of the exceptions:
|
||||
@command{expr}, @command{false}, @command{nohup}, @command{printenv},
|
||||
@command{sort}, @command{test}, @command{true}, @command{tty},
|
||||
@command{uniq}.
|
||||
|
||||
|
||||
@node Backup options
|
||||
@section Backup options
|
||||
|
||||
@cindex backup options
|
||||
|
||||
Some @sc{gnu} programs (at least @command{cp}, @code{install}, @code{ln}, and
|
||||
@command{mv}) optionally make backups of files before writing new versions.
|
||||
Some @sc{gnu} programs (at least @command{cp}, @command{install},
|
||||
@command{ln}, and @command{mv}) optionally make backups of files
|
||||
before writing new versions.
|
||||
These options control the details of these backups. The options are also
|
||||
briefly mentioned in the descriptions of the particular programs.
|
||||
|
||||
@@ -635,8 +654,8 @@ It has been replaced with @w{@kbd{--backup}}.
|
||||
|
||||
@cindex block size
|
||||
|
||||
Some @sc{gnu} programs (at least @command{df}, @code{du}, and
|
||||
@code{ls}) display sizes in ``blocks''. You can adjust the block size
|
||||
Some @sc{gnu} programs (at least @command{df}, @command{du}, and
|
||||
@command{ls}) display sizes in ``blocks''. You can adjust the block size
|
||||
and method of display to make sizes easier to read. The block size
|
||||
used for display is independent of any filesystem block size.
|
||||
Fractional block counts are rounded up to the nearest integer.
|
||||
@@ -797,8 +816,9 @@ equivalent to @option{--block-size=si}.
|
||||
|
||||
@cindex target directory
|
||||
|
||||
Some @sc{gnu} programs (at least @command{cp}, @code{install}, @code{ln}, and
|
||||
@command{mv}) allow you to specify the target directory via this option:
|
||||
Some @sc{gnu} programs (at least @command{cp}, @command{install},
|
||||
@command{ln}, and @command{mv}) allow you to specify the target directory
|
||||
via this option:
|
||||
|
||||
@table @samp
|
||||
|
||||
@@ -811,7 +831,7 @@ Specify the destination @var{directory}.
|
||||
The interface for most programs is that after processing options and a
|
||||
finite (possibly zero) number of fixed-position arguments, the remaining
|
||||
argument list is either expected to be empty, or is a list of items
|
||||
(usually files) that will all be handled identically. The @code{xargs}
|
||||
(usually files) that will all be handled identically. The @command{xargs}
|
||||
program is designed to work well with this convention.
|
||||
|
||||
The commands in the @command{mv}-family are unusual in that they take
|
||||
@@ -825,16 +845,16 @@ shell command, but that requires more human labor and brain power than
|
||||
it should.)
|
||||
|
||||
The @w{@kbd{--target-directory}} option allows the @command{cp},
|
||||
@command{install}, @code{ln}, and @code{mv} programs to be used conveniently
|
||||
with @code{xargs}. For example, you can move the files from the
|
||||
current directory to a sibling directory, @code{d} like this:
|
||||
@command{install}, @command{ln}, and @command{mv} programs to be used
|
||||
conveniently with @command{xargs}. For example, you can move the files
|
||||
from the current directory to a sibling directory, @code{d} like this:
|
||||
(However, this doesn't move files whose names begin with @samp{.}.)
|
||||
|
||||
@smallexample
|
||||
ls |xargs mv --target-directory=../d
|
||||
@end smallexample
|
||||
|
||||
If you use the @sc{gnu} @code{find} program, you can move @emph{all}
|
||||
If you use the @sc{gnu} @command{find} program, you can move @emph{all}
|
||||
files with this command:
|
||||
@example
|
||||
find . -mindepth 1 -maxdepth 1 \
|
||||
@@ -844,7 +864,7 @@ find . -mindepth 1 -maxdepth 1 \
|
||||
But that will fail if there are no files in the current directory
|
||||
or if any file has a name containing a newline character.
|
||||
The following example removes those limitations and requires both
|
||||
@sc{gnu} @code{find} and @sc{gnu} @code{xargs}:
|
||||
@sc{gnu} @command{find} and @sc{gnu} @command{xargs}:
|
||||
@example
|
||||
find . -mindepth 1 -maxdepth 1 -print0 \
|
||||
| xargs --null --no-run-if-empty \
|
||||
@@ -858,7 +878,7 @@ find . -mindepth 1 -maxdepth 1 -print0 \
|
||||
|
||||
@cindex trailing slashes
|
||||
|
||||
Some @sc{gnu} programs (at least @command{cp} and @code{mv}) allow you to
|
||||
Some @sc{gnu} programs (at least @command{cp} and @command{mv}) allow you to
|
||||
remove any trailing slashes from each @var{source} argument before
|
||||
operating on it. The @w{@kbd{--strip-trailing-slashes}} option enables
|
||||
this behavior.
|
||||
@@ -2213,7 +2233,7 @@ When following by name or by descriptor, you may specify the process ID,
|
||||
after that process terminates, tail will also terminate. This will
|
||||
work properly only if the writer and the tailing process are running on
|
||||
the same machine. For example, to save the output of a build in a file
|
||||
and to watch the file grow, if you invoke @code{make} and @command{tail}
|
||||
and to watch the file grow, if you invoke @command{make} and @command{tail}
|
||||
like this then the tail process will stop when your build completes.
|
||||
Without this option, you would have had to kill the @code{tail -f}
|
||||
process yourself.
|
||||
@@ -2491,7 +2511,7 @@ contents of files.
|
||||
|
||||
|
||||
@node wc invocation
|
||||
@section @code{wc}: Print byte, word, and line counts
|
||||
@section @command{wc}: Print byte, word, and line counts
|
||||
|
||||
@pindex wc
|
||||
@cindex byte count
|
||||
@@ -2499,7 +2519,7 @@ contents of files.
|
||||
@cindex word count
|
||||
@cindex line count
|
||||
|
||||
@code{wc} counts the number of bytes, characters, whitespace-separated
|
||||
@command{wc} counts the number of bytes, characters, whitespace-separated
|
||||
words, and newlines in each given @var{file}, or standard input if none
|
||||
are given or for a @var{file} of @samp{-}. Synopsis:
|
||||
|
||||
@@ -2509,18 +2529,18 @@ wc [@var{option}]@dots{} [@var{file}]@dots{}
|
||||
|
||||
@cindex total counts
|
||||
@vindex POSIXLY_CORRECT
|
||||
@code{wc} prints one line of counts for each file, and if the file was
|
||||
@command{wc} prints one line of counts for each file, and if the file was
|
||||
given as an argument, it prints the file name following the counts. If
|
||||
more than one @var{file} is given, @code{wc} prints a final line
|
||||
more than one @var{file} is given, @command{wc} prints a final line
|
||||
containing the cumulative counts, with the file name @file{total}. The
|
||||
counts are printed in this order: newlines, words, characters, bytes.
|
||||
By default, each count is output right-justified in a 7-byte field with
|
||||
one space between fields so that the numbers and file names line up nicely
|
||||
in columns. However, @acronym{POSIX} requires that there be exactly one space
|
||||
separating columns. You can make @code{wc} use the @acronym{POSIX}-mandated
|
||||
separating columns. You can make @command{wc} use the @acronym{POSIX}-mandated
|
||||
output format by setting the @env{POSIXLY_CORRECT} environment variable.
|
||||
|
||||
By default, @code{wc} prints three counts: the newline, words, and byte
|
||||
By default, @command{wc} prints three counts: the newline, words, and byte
|
||||
counts. Options can specify that only certain counts be printed.
|
||||
Options do not undo others previously given, so
|
||||
|
||||
@@ -2531,7 +2551,7 @@ wc --bytes --words
|
||||
@noindent
|
||||
prints both the byte counts and the word counts.
|
||||
|
||||
With the @code{--max-line-length} option, @code{wc} prints the length
|
||||
With the @code{--max-line-length} option, @command{wc} prints the length
|
||||
of the longest line per file, and if there is more than one file it
|
||||
prints the maximum (not the sum) of those lengths.
|
||||
|
||||
@@ -2617,7 +2637,7 @@ Compute checksums using an algorithm compatible with System V
|
||||
|
||||
@end table
|
||||
|
||||
@command{sum} is provided for compatibility; the @code{cksum} program (see
|
||||
@command{sum} is provided for compatibility; the @command{cksum} program (see
|
||||
next section) is preferable in new applications.
|
||||
|
||||
|
||||
@@ -2839,9 +2859,9 @@ last-resort comparison so that lines in which all fields compare equal
|
||||
are left in their original relative order. If no fields or global
|
||||
options are specified, @option{--stable} (@option{-s}) has no effect.
|
||||
|
||||
@sc{gnu} @command{sort} (as specified for all @sc{gnu} utilities) has no limits on
|
||||
input line length or restrictions on bytes allowed within lines. In
|
||||
addition, if the final byte of an input file is not a newline, @sc{gnu}
|
||||
@sc{gnu} @command{sort} (as specified for all @sc{gnu} utilities) has no
|
||||
limit on input line length or restrictions on bytes allowed within lines.
|
||||
In addition, if the final byte of an input file is not a newline, @sc{gnu}
|
||||
@command{sort} silently supplies one. A line's trailing newline is not
|
||||
part of the line for comparison purposes.
|
||||
|
||||
@@ -3008,6 +3028,24 @@ On newer systems, @option{-o} cannot appear after an input file if
|
||||
scripts should specify @option{-o @var{output-file}} before any input
|
||||
files.
|
||||
|
||||
@item -s
|
||||
@itemx --stable
|
||||
@opindex -s
|
||||
@opindex --stable
|
||||
@cindex sort stability
|
||||
@cindex disabling sort's last-resort comparison
|
||||
|
||||
Make @command{sort} stable by disabling the last-resort
|
||||
comparison that is performed in some cases.
|
||||
By default, when lines compare equal based on command line options
|
||||
that affect ordering, those lines are ordered using
|
||||
a @dfn{last-resort comparison} that takes the entire
|
||||
line as the key and acts as if no ordering options were specified.
|
||||
But if @option{--reverse} (@option{-r}) was specified along with other
|
||||
ordering options, then the last-resort comparison does use @option{--reverse}.
|
||||
In any case, when no ordering option is specified or when only
|
||||
@option{--reverse} is specified, the last-resort comparison is not performed
|
||||
|
||||
@item -S @var{size}
|
||||
@itemx --buffer-size=@var{size}
|
||||
@opindex -S
|
||||
@@ -3512,8 +3550,8 @@ options}.
|
||||
@section @command{tsort}: Background
|
||||
|
||||
@command{tsort} exists because very early versions of the Unix linker processed
|
||||
an archive file exactly once, and in order. As @code{ld} read each object in
|
||||
the archive, it decided whether it was needed in the program based on
|
||||
an archive file exactly once, and in order. As @command{ld} read each object
|
||||
in the archive, it decided whether it was needed in the program based on
|
||||
whether it defined any symbols which were undefined at that point in
|
||||
the link.
|
||||
|
||||
@@ -3526,16 +3564,16 @@ reference to @code{read}.
|
||||
|
||||
The way to address this problem was to first generate a set of
|
||||
dependencies of one object file on another. This was done by a shell
|
||||
script called @code{lorder}. The GNU tools don't provide a version of
|
||||
script called @command{lorder}. The GNU tools don't provide a version of
|
||||
lorder, as far as I know, but you can still find it in BSD
|
||||
distributions.
|
||||
|
||||
Then you ran @command{tsort} over the @code{lorder} output, and you used the
|
||||
Then you ran @command{tsort} over the @command{lorder} output, and you used the
|
||||
resulting sort to define the order in which you added objects to the archive.
|
||||
|
||||
This whole procedure has been obsolete since about 1980, because
|
||||
Unix archives now contain a symbol table (traditionally built by
|
||||
@code{ranlib}, now generally built by @code{ar} itself), and the Unix
|
||||
@command{ranlib}, now generally built by @command{ar} itself), and the Unix
|
||||
linker uses the symbol table to effectively make multiple passes over
|
||||
an archive file.
|
||||
|
||||
@@ -3874,12 +3912,12 @@ the corresponding characters by @command{ptx} itself.
|
||||
@itemx --macro-name=@var{string}
|
||||
|
||||
Select another @var{string} to be used instead of @samp{xx}, while
|
||||
generating output suitable for @code{nroff}, @code{troff} or @TeX{}.
|
||||
generating output suitable for @command{nroff}, @command{troff} or @TeX{}.
|
||||
|
||||
@item -O
|
||||
@itemx --format=roff
|
||||
|
||||
Choose an output format suitable for @code{nroff} or @code{troff}
|
||||
Choose an output format suitable for @command{nroff} or @command{troff}
|
||||
processing. Each output line will look like:
|
||||
|
||||
@smallexample
|
||||
@@ -3894,7 +3932,7 @@ extensions are disabled. Option @option{-M} can be used to change
|
||||
In this output format, each non-graphical character, like newline and
|
||||
tab, is merely changed to exactly one space, with no special attempt to
|
||||
compress consecutive spaces. Each quote character: @kbd{"} is doubled
|
||||
so it will be correctly processed by @code{nroff} or @code{troff}.
|
||||
so it will be correctly processed by @command{nroff} or @command{troff}.
|
||||
|
||||
@item -T
|
||||
@itemx --format=tex
|
||||
@@ -3955,7 +3993,7 @@ practice which @sc{gnu} avoids as far as possible. So, for using @command{ptx}
|
||||
portably between @sc{gnu} and System V, you should always use it with a
|
||||
single input file, and always expect the result on standard output. You
|
||||
might also want to automatically configure in a @option{-G} option to
|
||||
@command{ptx} calls in products using @code{ptx}, if the configurator finds
|
||||
@command{ptx} calls in products using @command{ptx}, if the configurator finds
|
||||
that the installed @command{ptx} accepts @option{-G}.
|
||||
|
||||
@item
|
||||
@@ -3966,9 +4004,9 @@ this enumeration. Moreover, some options have a slightly different
|
||||
meaning when @sc{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 @option{-O}.
|
||||
By default, concordance output is not formatted for @command{troff} or
|
||||
@command{nroff}. It is rather formatted for a dumb terminal. @command{troff}
|
||||
or @command{nroff} output may still be selected through option @option{-O}.
|
||||
|
||||
@item
|
||||
Unless @option{-R} option is used, the maximum reference width is
|
||||
@@ -4049,6 +4087,9 @@ options}.
|
||||
@opindex --bytes
|
||||
Print only the bytes in positions listed in @var{byte-list}. Tabs and
|
||||
backspaces are treated like any other character; they take up 1 byte.
|
||||
If an output delimiter is specified, (see the description of
|
||||
@option{--output-delimiter}), then output that string between
|
||||
ranges of selected bytes.
|
||||
|
||||
@item -c @var{character-list}
|
||||
@itemx --characters=@var{character-list}
|
||||
@@ -4058,6 +4099,9 @@ Print only characters in positions listed in @var{character-list}.
|
||||
The same as @option{-b} for now, but internationalization will change
|
||||
that. Tabs and backspaces are treated like any other character; they
|
||||
take up 1 character.
|
||||
If an output delimiter is specified, (see the description of
|
||||
@option{--output-delimiter}), then output that string between
|
||||
ranges of selected bytes.
|
||||
|
||||
@item -f @var{field-list}
|
||||
@itemx --fields=@var{field-list}
|
||||
@@ -4088,8 +4132,11 @@ character. Normally, any line without a field separator is printed verbatim.
|
||||
|
||||
@itemx --output-delimiter=@var{output_delim_string}
|
||||
@opindex --output-delimiter
|
||||
For @option{-f}, output fields are separated by @var{output_delim_string}.
|
||||
The default is to use the input delimiter.
|
||||
With @option{-f}, output fields are separated by @var{output_delim_string}.
|
||||
The default with @option{-f} is to use the input delimiter.
|
||||
When using @option{-b} or @option{-c} to select ranges of byte or
|
||||
character offsets (as opposed to ranges of fields),
|
||||
output @var{output_delim_string} between ranges of selected bytes.
|
||||
|
||||
|
||||
@end table
|
||||
@@ -4527,10 +4574,10 @@ BSD @command{tr} pads @var{set2} to the length of @var{set1} by repeating
|
||||
the last character of @var{set2} as many times as necessary. System V
|
||||
@command{tr} truncates @var{set1} to the length of @var{set2}.
|
||||
|
||||
By default, @sc{gnu} @command{tr} handles this case like BSD @code{tr}. When
|
||||
the @option{--truncate-set1} (@option{-t}) option is given, @sc{gnu} @command{tr}
|
||||
handles this case like the System V @command{tr} instead. This option is
|
||||
ignored for operations other than translation.
|
||||
By default, @sc{gnu} @command{tr} handles this case like BSD @command{tr}.
|
||||
When the @option{--truncate-set1} (@option{-t}) option is given,
|
||||
@sc{gnu} @command{tr} handles this case like the System V @command{tr}
|
||||
instead. This option is ignored for operations other than translation.
|
||||
|
||||
Acting like System V @command{tr} in this case breaks the relatively common
|
||||
BSD idiom:
|
||||
@@ -4794,7 +4841,7 @@ ones, to tabs.
|
||||
@node Directory listing
|
||||
@chapter Directory listing
|
||||
|
||||
This chapter describes the @command{ls} command and its variants @code{dir}
|
||||
This chapter describes the @command{ls} command and its variants @command{dir}
|
||||
and @command{vdir}, which list information about files.
|
||||
|
||||
@menu
|
||||
@@ -4889,8 +4936,9 @@ List just the names of directories, as with other types of files, rather
|
||||
than listing their contents.
|
||||
@c The following sentence is the same as the one for -F.
|
||||
Do not follow symbolic links listed on the
|
||||
command line unless the @option{--dereference-command-line} (@option{-H})
|
||||
or @option{--dereference} (@option{-L}) options are specified.
|
||||
command line unless the @option{--dereference-command-line} (@option{-H}),
|
||||
@option{--dereference} (@option{-L}), or
|
||||
@option{--dereference-command-line-symlink-to-dir} options are specified.
|
||||
|
||||
@item -H
|
||||
@itemx --dereference-command-line
|
||||
@@ -4900,6 +4948,20 @@ or @option{--dereference} (@option{-L}) options are specified.
|
||||
If a command line argument specifies a symbolic link, show information
|
||||
for the file the link references rather than for the link itself.
|
||||
|
||||
@itemx --dereference-command-line-symlink-to-dir
|
||||
@opindex --dereference-command-line-symlink-to-dir
|
||||
@cindex symbolic links, dereferencing
|
||||
Do not dereference symbolic links, with one exception:
|
||||
if a command line argument specifies a symbolic link that refers to
|
||||
a directory, show information for that directory rather than for the
|
||||
link itself.
|
||||
This is the default behavior when no other dereferencing-related
|
||||
option has been specified (@option{--classify} (@option{-F}),
|
||||
@option{--directory} (@option{-d}),
|
||||
(@option{-l}),
|
||||
@option{--dereference} (@option{-L}), or
|
||||
@option{--dereference-command-line} (@option{-H})).
|
||||
|
||||
@item -I PATTERN
|
||||
@itemx --ignore=PATTERN
|
||||
@opindex -I
|
||||
@@ -5342,7 +5404,7 @@ output is not a terminal.
|
||||
@opindex vertical @r{sorted files in columns}
|
||||
List files in columns, sorted vertically. This is the default for
|
||||
@command{ls} if standard output is a terminal. It is always the default
|
||||
for the @command{dir} and @code{d} programs.
|
||||
for the @command{dir} and @command{d} programs.
|
||||
@sc{gnu} @command{ls} uses variable width columns to display as many files as
|
||||
possible in the fewest lines.
|
||||
|
||||
@@ -5365,8 +5427,8 @@ may be omitted, or one of:
|
||||
@end itemize
|
||||
Specifying @option{--color} and no @var{when} is equivalent to
|
||||
@option{--color=always}.
|
||||
Piping a colorized listing through a pager like @code{more} or
|
||||
@code{less} usually produces unreadable results. However, using
|
||||
Piping a colorized listing through a pager like @command{more} or
|
||||
@command{less} usually produces unreadable results. However, using
|
||||
@code{more -f} does seem to work.
|
||||
|
||||
@item -F
|
||||
@@ -5383,8 +5445,9 @@ indicators are @samp{/} for directories, @samp{@@} for symbolic links,
|
||||
@samp{|} for FIFOs, @samp{=} for sockets, and nothing for regular files.
|
||||
@c The following sentence is the same as the one for -d.
|
||||
Do not follow symbolic links listed on the
|
||||
command line unless the @option{--dereference-command-line} (@option{-H})
|
||||
or @option{--dereference} (@option{-L}) options are specified.
|
||||
command line unless the @option{--dereference-command-line} (@option{-H}),
|
||||
@option{--dereference} (@option{-L}), or
|
||||
@option{--dereference-command-line-symlink-to-dir} options are specified.
|
||||
|
||||
@item --indicator-style=@var{word}
|
||||
@opindex --indicator-style
|
||||
@@ -5485,7 +5548,7 @@ be one of the following:
|
||||
@vindex LC_TIME
|
||||
List timestamps using @var{format}, where @var{format} is interpreted
|
||||
like the format argument of @command{date} (@pxref{date invocation}).
|
||||
For example, @option{--time-style="+%Y-%m-%d %H:%M:S"} causes
|
||||
For example, @option{--time-style="+%Y-%m-%d %H:%M:%S"} causes
|
||||
@command{ls} to list timestamps like @samp{2002-03-30 23:45:56}. As
|
||||
with @command{date}, @var{format}'s interpretation is affected by the
|
||||
@env{LC_TIME} locale category.
|
||||
@@ -5665,7 +5728,7 @@ This is the default unless the output is a terminal and the program is
|
||||
@pindex dir
|
||||
@cindex directory listing, brief
|
||||
|
||||
@command{dir} (also installed as @code{d}) is equivalent to @code{ls -C
|
||||
@command{dir} (also installed as @command{d}) is equivalent to @code{ls -C
|
||||
-b}; that is, by default files are listed in columns, sorted vertically,
|
||||
and special characters are represented by backslash escape sequences.
|
||||
|
||||
@@ -5678,19 +5741,19 @@ and special characters are represented by backslash escape sequences.
|
||||
@pindex vdir
|
||||
@cindex directory listing, verbose
|
||||
|
||||
@command{vdir} (also installed as @code{v}) is equivalent to @code{ls -l
|
||||
@command{vdir} (also installed as @command{v}) is equivalent to @code{ls -l
|
||||
-b}; that is, by default files are listed in long format and special
|
||||
characters are represented by backslash escape sequences.
|
||||
|
||||
@node dircolors invocation
|
||||
@section @command{dircolors}: Color setup for @code{ls}
|
||||
@section @command{dircolors}: Color setup for @command{ls}
|
||||
|
||||
@pindex dircolors
|
||||
@cindex color setup
|
||||
@cindex setup for color
|
||||
|
||||
@command{dircolors} outputs a sequence of shell commands to set up the
|
||||
terminal for color output from @command{ls} (and @code{dir}, etc.).
|
||||
terminal for color output from @command{ls} (and @command{dir}, etc.).
|
||||
Typical usage:
|
||||
|
||||
@example
|
||||
@@ -5719,7 +5782,7 @@ The program accepts the following options. Also see @ref{Common options}.
|
||||
@opindex --sh
|
||||
@opindex --bourne-shell
|
||||
@cindex Bourne shell syntax for color setup
|
||||
@cindex @code{sh} syntax for color setup
|
||||
@cindex @command{sh} syntax for color setup
|
||||
Output Bourne shell commands. This is the default if the @env{SHELL}
|
||||
environment variable is set and does not end with @samp{csh} or
|
||||
@samp{tcsh}.
|
||||
@@ -5731,9 +5794,9 @@ environment variable is set and does not end with @samp{csh} or
|
||||
@opindex --csh
|
||||
@opindex --c-shell
|
||||
@cindex C shell syntax for color setup
|
||||
@cindex @code{csh} syntax for color setup
|
||||
@cindex @command{csh} syntax for color setup
|
||||
Output C shell commands. This is the default if @code{SHELL} ends with
|
||||
@code{csh} or @code{tcsh}.
|
||||
@command{csh} or @command{tcsh}.
|
||||
|
||||
@item -p
|
||||
@itemx --print-database
|
||||
@@ -6046,7 +6109,7 @@ earlier), but the output file is on another type of filesystem.
|
||||
|
||||
@item never
|
||||
Never make the output file sparse.
|
||||
This is useful in creating a file for use with the @code{mkswap} command,
|
||||
This is useful in creating a file for use with the @command{mkswap} command,
|
||||
since such a file must not have any holes.
|
||||
@end table
|
||||
|
||||
@@ -6281,7 +6344,7 @@ to the destination @var{directory}. In the last, each @var{directory}
|
||||
(and any missing parent directories) is created.
|
||||
|
||||
@cindex Makefiles, installing programs in
|
||||
@command{install} is similar to @code{cp}, but allows you to control the
|
||||
@command{install} is similar to @command{cp}, but allows you to control the
|
||||
attributes of destination files. It is typically used in Makefiles to
|
||||
copy programs into their destination directories. It refuses to copy
|
||||
files onto themselves.
|
||||
@@ -6773,12 +6836,12 @@ Display status updates as sterilization proceeds.
|
||||
@itemx --exact
|
||||
@opindex -x
|
||||
@opindex --exact
|
||||
Normally, shred rounds the file size up to the next multiple of
|
||||
the filesystem block size to fully erase the last block of the file.
|
||||
This option suppresses that behavior.
|
||||
Thus, by default if you shred a 10-byte file on a system with 512-byte
|
||||
By default, @command{shred} rounds the size of a regular file up to the next
|
||||
multiple of the filesystem block size to fully erase the last block of the file.
|
||||
Use @option{--exact} to suppress that behavior.
|
||||
Thus, by default if you shred a 10-byte regular file on a system with 512-byte
|
||||
blocks, the resulting file will be 512 bytes long. With this option,
|
||||
shred does not increase the size of the file.
|
||||
shred does not increase the apparent size of the file.
|
||||
|
||||
@item -z
|
||||
@itemx --zero
|
||||
@@ -6863,6 +6926,7 @@ Besides directories, other special file types include named pipes
|
||||
* mkdir invocation:: Make directories.
|
||||
* mkfifo invocation:: Make FIFOs (named pipes).
|
||||
* mknod invocation:: Make block or character special files.
|
||||
* readlink invocation:: Print the referent of a symbolic link.
|
||||
* rmdir invocation:: Remove empty directories.
|
||||
* unlink invocation:: Remove files via the unlink syscall
|
||||
@end menu
|
||||
@@ -7192,6 +7256,9 @@ for a character special file
|
||||
|
||||
When making a block or character special file, the major and minor
|
||||
device numbers must be given after the file type.
|
||||
If a major or minor device number begins with @samp{0x} or @samp{0X},
|
||||
it is interpreted as hexadecimal; otherwise, if it begins with @samp{0},
|
||||
as octal; otherwise, as decimal.
|
||||
|
||||
The program accepts the following option. Also see @ref{Common options}.
|
||||
|
||||
@@ -7208,6 +7275,74 @@ of departure. @xref{File permissions}.
|
||||
@end table
|
||||
|
||||
|
||||
@node readlink invocation
|
||||
@section @command{readlink}: Print the referent of a symbolic link
|
||||
|
||||
@pindex readlink
|
||||
@cindex displaying value of a symbolic link
|
||||
|
||||
@command{readlink} may work in one of two supported modes:
|
||||
|
||||
@table @samp
|
||||
|
||||
@item Readlink mode
|
||||
|
||||
@command{readlink} outputs the value of the given symbolic link.
|
||||
If @command{readlink} is invoked with an argument other than the pathname
|
||||
of a symbolic link, it exits with a non-zero exit code.
|
||||
|
||||
@item Canonicalize mode
|
||||
|
||||
@command{readlink} outputs the absolute name of the given file which contains
|
||||
no `.', `..' components nor any repeated path separators (`/') or symlinks.
|
||||
In any of the path components is missing or unavailable,
|
||||
it exits with a non-zero exit code.
|
||||
|
||||
@end table
|
||||
|
||||
@example
|
||||
readlink [@var{option}] @var{file}
|
||||
@end example
|
||||
|
||||
By default, @command{readlink} operates in readlink mode.
|
||||
|
||||
The program accepts the following options. Also see @ref{Common options}.
|
||||
|
||||
@table @samp
|
||||
|
||||
@item -f
|
||||
@itemx --canonicalize
|
||||
@opindex -f
|
||||
@opindex --canonicalize
|
||||
Activate canonicalize mode.
|
||||
|
||||
@item -n
|
||||
@itemx --no-newline
|
||||
@opindex -n
|
||||
@opindex --no-newline
|
||||
Do not output the trailing newline.
|
||||
|
||||
@item -s
|
||||
@itemx -q
|
||||
@itemx --silent
|
||||
@itemx --quiet
|
||||
@opindex -s
|
||||
@opindex -q
|
||||
@opindex --silent
|
||||
@opindex --quiet
|
||||
Suppress most error messages.
|
||||
|
||||
@item -v
|
||||
@itemx --verbose
|
||||
@opindex -v
|
||||
@opindex --verbose
|
||||
Report error messages.
|
||||
|
||||
@end table
|
||||
|
||||
The @command{readlink} utility first appeared in OpenBSD 2.1.
|
||||
|
||||
|
||||
@node rmdir invocation
|
||||
@section @command{rmdir}: Remove empty directories
|
||||
|
||||
@@ -7399,7 +7534,7 @@ without an option like this, @code{root} might run
|
||||
find / -owner OLDUSER -print0 | xargs -0 chown NEWUSER
|
||||
@end smallexample
|
||||
|
||||
But that is dangerous because the interval between when the @code{find}
|
||||
But that is dangerous because the interval between when the @command{find}
|
||||
tests the existing file's owner and when the @command{chown} is actually run
|
||||
may be quite large.
|
||||
One way to narrow the gap would be to invoke chown for each file
|
||||
@@ -7735,7 +7870,7 @@ the argument is interpreted as a date in the current year.
|
||||
No disk can hold an infinite amount of data. These commands report on
|
||||
how much disk storage is in use or available. (This has nothing much to
|
||||
do with how much @emph{main memory}, i.e., RAM, a program is using when
|
||||
it runs; for that, you want @code{ps} or @code{pstat} or @code{swap}
|
||||
it runs; for that, you want @command{ps} or @command{pstat} or @command{swap}
|
||||
or some such command.)
|
||||
|
||||
@menu
|
||||
@@ -7980,11 +8115,27 @@ The program accepts the following options. Also see @ref{Common options}.
|
||||
@opindex --all
|
||||
Show counts for all files, not just directories.
|
||||
|
||||
@itemx --apparent-size
|
||||
@opindex --apparent-size
|
||||
Print apparent sizes, rather than disk usage. The apparent size of a
|
||||
file is the number of bytes reported by @code{wc -c} on regular files,
|
||||
or more generally, @code{ls -l --block-size=1} or @code{stat --format=%s}.
|
||||
For example, a file containing the word @samp{zoo} with no newline would,
|
||||
of course, have an apparent size of 3. Such a small file may require
|
||||
anywhere from zero to 16 or more kilobytes of disk space, depending on
|
||||
the type and configuration of the file system on which the file resides.
|
||||
However, a sparse file created with this command
|
||||
@example
|
||||
: | dd bs=1 seek=`echo '2^31'|bc` of=big
|
||||
@end example
|
||||
has an apparent size of 2 gigabytes, yet on most modern
|
||||
systems, it actually uses almost no disk space.
|
||||
|
||||
@item -b
|
||||
@itemx --bytes
|
||||
@opindex -b
|
||||
@opindex --bytes
|
||||
Print sizes in bytes, overriding the default block size (@pxref{Block size}).
|
||||
Equivalent to @code{--apparent-size --block-size=1}.
|
||||
|
||||
@item -B @var{size}
|
||||
@itemx --block-size=@var{size}
|
||||
@@ -8164,25 +8315,26 @@ Allow user to specify the output format.
|
||||
|
||||
Interpreted sequences for file stat are:
|
||||
@itemize @bullet
|
||||
@item %n - File name
|
||||
@item %N - Quoted File name with dereference if symbolic link
|
||||
@item %d - Device number in decimal
|
||||
@item %D - Device number in hex
|
||||
@item %i - Inode number
|
||||
@item %a - Access rights in octal
|
||||
@item %A - Access rights in human readable form
|
||||
@item %b - Number of blocks allocated (see @samp{%B})
|
||||
@item %B - The size in bytes of each block reported by @samp{%b}
|
||||
@item %d - Device number in decimal
|
||||
@item %D - Device number in hex
|
||||
@item %f - raw mode in hex
|
||||
@item %F - File type
|
||||
@item %h - Number of hard links
|
||||
@item %u - User Id of owner
|
||||
@item %U - User name of owner
|
||||
@item %g - Group Id of owner
|
||||
@item %G - Group name of owner
|
||||
@item %h - Number of hard links
|
||||
@item %i - Inode number
|
||||
@item %n - File name
|
||||
@item %N - Quoted File name with dereference if symbolic link
|
||||
@item %o - IO block size
|
||||
@item %s - Total size, in bytes
|
||||
@item %t - Major device type in hex
|
||||
@item %T - Minor device type in hex
|
||||
@item %s - Total size, in bytes
|
||||
@item %b - Number of blocks allocated
|
||||
@item %o - IO block size
|
||||
@item %u - User Id of owner
|
||||
@item %U - User name of owner
|
||||
@item %x - Time of last access
|
||||
@item %X - Time of last access as seconds since Epoch
|
||||
@item %y - Time of last modification
|
||||
@@ -8320,11 +8472,12 @@ all of the given @var{argument}s.
|
||||
argument string with @samp{\} escapes interpreted in the same way as in
|
||||
the @var{format} string.
|
||||
|
||||
@kindex \0ooo
|
||||
@kindex \xhh
|
||||
@command{printf} interprets @samp{\0ooo} in @var{format} as an octal number
|
||||
@kindex \@var{ooo}
|
||||
@kindex \x@var{hh}
|
||||
|
||||
@command{printf} interprets @samp{\@var{ooo}} in @var{format} as an octal number
|
||||
(if @var{ooo} is 0 to 3 octal digits) specifying a character to print,
|
||||
and @samp{\xhh} as a hexadecimal number (if @var{hh} is 1 to 2 hex
|
||||
and @samp{\x@var{hh}} as a hexadecimal number (if @var{hh} is 1 to 2 hex
|
||||
digits) specifying a character to print.
|
||||
|
||||
@kindex \uhhhh
|
||||
@@ -8442,6 +8595,10 @@ This version of @command{false} is implemented as a C program, and is thus
|
||||
more secure and faster than a shell script implementation, and may safely
|
||||
be used as a dummy shell for the purpose of disabling accounts.
|
||||
|
||||
Note that @command{false} (unlike all other programs documented herein)
|
||||
exits unsuccessfully, even when invoked with
|
||||
@option{--help} or @option{--version}.
|
||||
|
||||
|
||||
@node true invocation
|
||||
@section @command{true}: Do nothing, successfully
|
||||
@@ -9064,7 +9221,7 @@ This section describes commands that manipulate file names.
|
||||
|
||||
|
||||
@node basename invocation
|
||||
@section @code{basename}: Strip directory and suffix from a file name
|
||||
@section @command{basename}: Strip directory and suffix from a file name
|
||||
|
||||
@pindex basename
|
||||
@cindex strip directory and suffix from file names
|
||||
@@ -9073,7 +9230,7 @@ This section describes commands that manipulate file names.
|
||||
@cindex file names, stripping directory and suffix
|
||||
@cindex leading directory components, stripping
|
||||
|
||||
@code{basename} removes any leading directory components from
|
||||
@command{basename} removes any leading directory components from
|
||||
@var{name}. Synopsis:
|
||||
|
||||
@example
|
||||
@@ -9081,7 +9238,7 @@ basename @var{name} [@var{suffix}]
|
||||
@end example
|
||||
|
||||
If @var{suffix} is specified and is identical to the end of @var{name},
|
||||
it is removed from @var{name} as well. @code{basename} prints the
|
||||
it is removed from @var{name} as well. @command{basename} prints the
|
||||
result on standard output.
|
||||
|
||||
The only options are @option{--help} and @option{--version}. @xref{Common
|
||||
@@ -10882,7 +11039,7 @@ directory structure, i.e., @file{/}. @command{chroot} changes the root to
|
||||
the directory @var{newroot} (which must exist) and then runs
|
||||
@var{command} with optional @var{args}. If @var{command} is not
|
||||
specified, the default is the value of the @env{SHELL} environment
|
||||
variable or @code{/bin/sh} if not set, invoked with the @option{-i} option.
|
||||
variable or @command{/bin/sh} if not set, invoked with the @option{-i} option.
|
||||
|
||||
The only options are @option{--help} and @option{--version}. @xref{Common
|
||||
options}.
|
||||
@@ -10908,7 +11065,7 @@ total 1023
|
||||
-rwxr-xr-x 1 0 0 1041745 Aug 16 11:17 ls
|
||||
@end example
|
||||
|
||||
If you want to use a dynamically linked executable, say @code{bash},
|
||||
If you want to use a dynamically linked executable, say @command{bash},
|
||||
then first run @samp{ldd bash} to see what shared objects it needs.
|
||||
Then, in addition to copying the actual binary, also copy the listed
|
||||
files to the required positions under your intended new root directory.
|
||||
@@ -11136,7 +11293,7 @@ a @code{-c} option instead of starting an interactive shell.
|
||||
@cindex file name pattern expansion, disabled
|
||||
@cindex globbing, disabled
|
||||
Pass the @code{-f} option to the shell. This probably only makes sense
|
||||
if the shell run is @code{csh} or @code{tcsh}, for which the @code{-f}
|
||||
if the shell run is @command{csh} or @command{tcsh}, for which the @code{-f}
|
||||
option prevents reading the startup file (@file{.cshrc}). With
|
||||
Bourne-like shells, the @code{-f} option disables file name pattern
|
||||
expansion (globbing), which is not likely to be useful.
|
||||
@@ -11380,7 +11537,7 @@ also support at least eight real-time signals called @samp{RTMIN},
|
||||
@cindex delaying commands
|
||||
@cindex commands for delaying
|
||||
|
||||
@c Perhaps @code{wait} or other commands should be described here also?
|
||||
@c Perhaps @command{wait} or other commands should be described here also?
|
||||
|
||||
@menu
|
||||
* sleep invocation:: Delay for a specified time.
|
||||
@@ -11790,9 +11947,65 @@ $ cut -d: -f1,5 /etc/passwd
|
||||
@end example
|
||||
|
||||
With the @option{-c} option, @command{cut} will cut out specific characters
|
||||
(i.e., columns) in the input lines. This command looks like it might be
|
||||
useful for data filtering.
|
||||
(i.e., columns) in the input lines. This is useful for input data
|
||||
that has fixed width fields, and does not have a field separator. For
|
||||
example, list the Monday dates for the current month:
|
||||
|
||||
@c Is using cal ok? Looked at gcal, but I don't like it.
|
||||
@example
|
||||
$ cal | cut -c 3-5
|
||||
@print{}Mo
|
||||
@print{}
|
||||
@print{} 6
|
||||
@print{} 13
|
||||
@print{} 20
|
||||
@print{} 27
|
||||
@end example
|
||||
|
||||
Cut can also add field separators to fixed width data, using the
|
||||
@option{--output-delimiter} option. This can be very useful to fill a
|
||||
database:
|
||||
|
||||
@c [Why] can't that silly total line for directories be switched off?
|
||||
@example
|
||||
$ ls -ld ~/* | cut --output-delimiter=, -c1,2-4,5-7,8-10,57- | tee home.cs
|
||||
@print{} d,rwx,r-x,r-x,CVS
|
||||
@print{} d,rwx,---,---,Mail
|
||||
@print{} d,rwx,r-x,r-x,lilypond
|
||||
@print{} d,rwx,r-x,r-x,savannah
|
||||
$ mysql -e 'create table home \
|
||||
(d char(1),u char(3), g char (3), o char (3), name text)' test
|
||||
$ mysqlimport --fields-terminated-by=, test home.cs
|
||||
@print{} test.home: Records: 4 Deleted: 0 Skipped: 0 Warnings: 0
|
||||
$ mysql -e 'select * from home' test
|
||||
@print{} +------+------+------+------+----------+
|
||||
@print{} | d | u | g | o | name |
|
||||
@print{} +------+------+------+------+----------+
|
||||
@print{} | d | rwx | r-x | r-x | CVS |
|
||||
@print{} | d | rwx | --- | --- | Mail |
|
||||
@print{} | d | rwx | r-x | r-x | lilypond |
|
||||
@print{} | d | rwx | r-x | r-x | savannah |
|
||||
@print{} +------+------+------+------+----------+
|
||||
@end example
|
||||
|
||||
But beware of assumptions.
|
||||
The above invocation of @command{ls} assumes that the owner
|
||||
and group names are no longer than eight bytes each,
|
||||
and that no file has size larger than 99999999 bytes.
|
||||
Otherwise, the byte offset of @samp{57} would need to be larger.
|
||||
To avoid such problems, suppress output of the owner and group
|
||||
names with the @option{-g} and @option{-G} options respectively,
|
||||
and add the @option{-h} option to ensure that the representation
|
||||
of the size of the file does not exceed the allotted space.
|
||||
Finally, note that the width of even the date/time field may change,
|
||||
depending on the current locale. To avoid that, use an option
|
||||
like @option{--time-style='+%Y-%m-%d %H:%M:%S'}.
|
||||
|
||||
And there's still another problem: if a file has more
|
||||
than 999 hard links to it, then that will change the alignment.
|
||||
The morale is that it is hard to use fixed byte offsets into
|
||||
a line of @command{ls} output. Use a different tool, like
|
||||
find, but with @option{-printf} and carefully chosen format strings.
|
||||
|
||||
@node The sort command
|
||||
@unnumberedsec The @command{sort} Command
|
||||
|
||||
@@ -47,8 +47,8 @@ Files are given an owner and group when they are created. Usually the
|
||||
owner is the current user and the group is the group of the directory
|
||||
the file is in, but this varies with the operating system, the
|
||||
filesystem the file is created on, and the way the file is created. You
|
||||
can change the owner and group of a file by using the @code{chown} and
|
||||
@code{chgrp} commands.
|
||||
can change the owner and group of a file by using the @command{chown} and
|
||||
@command{chgrp} commands.
|
||||
|
||||
In addition to the three sets of three permissions listed above, a
|
||||
file's permissions have three special components, which affect only
|
||||
@@ -77,6 +77,38 @@ unless they own the file or the directory; this is called the
|
||||
@dfn{restricted deletion flag} for the directory.
|
||||
@end enumerate
|
||||
|
||||
In addition to the permissions listed above, there may be file attributes
|
||||
specific to the filesystem, e.g: access control lists (ACLs), whether a
|
||||
file is compressed, whether a file can be modified (immutability), whether
|
||||
a file can be dumped. These are usually set using programs
|
||||
specific to the filesystem. For example:
|
||||
@c should probably say a lot more about ACLs... someday
|
||||
|
||||
@table @asis
|
||||
@item ext2
|
||||
On GNU and Linux/GNU the file permissions (``attributes'') specific to
|
||||
the ext2 filesystem are set using @command{chattr}.
|
||||
|
||||
@item FFS
|
||||
On FreeBSD the file permissions (``flags'') specific to the FFS
|
||||
filesystem are set using @command{chrflags}.
|
||||
@end table
|
||||
|
||||
Although a file's permission ``bits'' allow an operation on that file,
|
||||
that operation may still fail, because:
|
||||
|
||||
@itemize
|
||||
@item
|
||||
the filesystem-specific permissions do not permit it;
|
||||
|
||||
@item
|
||||
the filesystem is mounted as read-only.
|
||||
@end itemize
|
||||
|
||||
For example, if the immutable attribute is set on a file,
|
||||
it cannot be modified, regardless of the fact that you
|
||||
may have just run @code{chmod a+w FILE}.
|
||||
|
||||
@node Symbolic Modes
|
||||
@section Symbolic Modes
|
||||
|
||||
|
||||
@@ -8,3 +8,5 @@ md5.h
|
||||
obstack.h
|
||||
regex.c
|
||||
regex.h
|
||||
fts_.h
|
||||
fts.c
|
||||
|
||||
535
lib/ChangeLog
535
lib/ChangeLog
@@ -1,3 +1,538 @@
|
||||
2003-03-22 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* strftime.c (widen): Cast alloca return value to proper type.
|
||||
|
||||
* fnmatch_loop.c
|
||||
(NEW_PATTERN): Cast alloca return value to proper type.
|
||||
Otherwise, it wouldn't compile with at least /bin/cc on
|
||||
ymp-cray-unicos9.0.2.X.
|
||||
Combine two mostly-identical uses of alloca into one.
|
||||
Thanks to the Cray-Cyber project for access to a Cray Y-MP.
|
||||
|
||||
2003-03-19 Jim Meyering <jim@meyering.net>
|
||||
|
||||
DJGPP doesn't have S_ISLNK, so provide a replacement.
|
||||
* ftw.c (S_IFMT): Define, if necessary.
|
||||
[STAT_MACROS_BROKEN]: Undefine S_ISLNK.
|
||||
(S_ISLNK): Define, if necessary.
|
||||
Based on a patch from Rich Dawe.
|
||||
|
||||
* exclude.h (PARAMS): Remove definition and uses.
|
||||
* exclude.c: Remove uses of `PARAMS'.
|
||||
|
||||
* fnmatch_.h: Don't define __const.
|
||||
(fnmatch): Use const, not __const in prototype.
|
||||
From Paul Eggert.
|
||||
|
||||
2003-03-17 Richard Dawe <rich@phekda.freeserve.co.uk>
|
||||
|
||||
* fchdir-stub.c: New file: trivial stub for fchdir.
|
||||
|
||||
2003-03-18 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* mountlist.c (read_filesystem_list) [MOUNTED_VMOUNT]: Detect any
|
||||
error from mntctl.
|
||||
Use mntctl's return value to drive the entry-processing loop, since
|
||||
we can't rely on the value of the vmt_length member in the last
|
||||
entry. On some systems doing so could result in exhausting
|
||||
virtual memory. Based in part on a patch from Mike Jetzer.
|
||||
|
||||
* quote.c (quote_n): Fix typo in comment.
|
||||
|
||||
2003-03-17 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* raise.c (raise): Rename from rpl_raise.
|
||||
Without that change, systems lacking raise (SunOS4) would not be
|
||||
able to link programs using raise. Reported by Volker Borchert.
|
||||
|
||||
* ftw.c (FTW_STAT): Rename from `STAT', to avoid conflict
|
||||
with STAT definition from <sys/dir.h> on AIX 5.1.
|
||||
Suggestion from Mike Jetzer and Petter Reinholdtsen.
|
||||
|
||||
* fchown-stub.c (fchown): Put function type on its own line.
|
||||
* readlink-stub.c (readlink): Likewise.
|
||||
* lstat-stub.c (lstat): Likewise.
|
||||
|
||||
2003-03-14 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* Makefile.am (AUTOMAKE_OPTIONS): Remove definition --
|
||||
before it pointed to ../src/ansi2knr. Some of these files
|
||||
have required an ANSI (c89) compiler for a year or two.
|
||||
(libfetish_a_SOURCES): Remove unused files: c-stack.c, c-stack.h.
|
||||
|
||||
2003-02-04 Dmitry V. Levin <ldv@altlinux.org>
|
||||
|
||||
* stat.c: Include "xalloc.h".
|
||||
|
||||
2003-03-13 Paul Eggert <eggert@twinsun.com>
|
||||
|
||||
Merge changes from Bison.
|
||||
* obstack.h: (__INT_TO_PTR) [__STDC__]: Cast result to
|
||||
(void *) to avoid diagnostic with native c89 on SGI IRIX 6.5
|
||||
when compiling Bison 1.875's `bitset bset = obstack_alloc
|
||||
(bobstack, bytes);'. Problem reported by Nelson H. F. Beebe.
|
||||
|
||||
2003-01-30 Richard Dawe <rich@phekda.freeserve.co.uk>
|
||||
|
||||
* fchown-stub.c: New file: trivial stub for fchown.
|
||||
* lstat-stub.c: New file: trivial stub for lstat.
|
||||
* readlink-stub.c: New file: trivial stub for readlink.
|
||||
|
||||
2003-03-09 Paul Eggert <eggert@twinsun.com>
|
||||
|
||||
* argmatch.c (EXIT_FAILURE): Define if the system doesn't.
|
||||
Reported by Bruce Becker; see:
|
||||
http://mail.gnu.org/archive/html/bug-bison/2003-03/msg00017.html
|
||||
|
||||
2003-03-03 Paul Eggert <eggert@twinsun.com>
|
||||
Bruno Haible <bruno@clisp.org>
|
||||
|
||||
* mbswidth.h: Include <wchar.h>. Needed for UnixWare 7.1.1.
|
||||
Reported by John Hughes, see
|
||||
http://mail.gnu.org/archive/html/bug-bison/2003-02/msg00030.html
|
||||
|
||||
2003-03-09 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* ftw.c: Include "save-cwd.h".
|
||||
(ftw_startup): Avoid use of getcwd, if possible.
|
||||
Instead, use fopen/fchdir via save_cwd/restore_cwd.
|
||||
|
||||
2003-03-08 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* xnanosleep.c: Don't use `defined' in a #define directive.
|
||||
|
||||
2003-03-07 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* Makefile.am (libfetish_a_SOURCES): Remove mmap-stack.h.
|
||||
|
||||
* mmap-stack.c, mmap-stack.h: Remove files.
|
||||
|
||||
* getcwd.c: #undef getcwd only after *all* included header files.
|
||||
Declare getcwd unconditionally. The problem was that same.h
|
||||
included config.h, and that defined getcwd to rpl_getcwd a second
|
||||
time (after the original #undef), and led to the rpl_getcwd
|
||||
function calling itself endlessly. This was the cause of at least
|
||||
the `du' test failures on IRIX 6.5, reported by Nelson Beebe.
|
||||
|
||||
* same.h (same_name): Remove unnecessary inclusion of config.h.
|
||||
It also happened to lead to infinite recursion in getcwd.c.
|
||||
(PARAMS): Remove definition and use.
|
||||
|
||||
2003-03-06 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* ftw.c (ftw_startup): Declare `func' parameter to be of type
|
||||
NFTW_FUNC_T, not void* which may be smaller on 64-bit systems.
|
||||
Remove now-unnecessary cast.
|
||||
(FTW_NAME): Cast func argument to type `NFTW_FUNC_T'.
|
||||
|
||||
2003-03-05 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* physmem.c (ARRAY_SIZE): Define it.
|
||||
|
||||
2003-03-04 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* makepath.c (CLEANUP_CWD): Call error here, now that restore_cwd
|
||||
no longer does it.
|
||||
|
||||
* save-cwd.h (restore_cwd): Update prototype.
|
||||
* save-cwd.c (restore_cwd): Remove two parameters.
|
||||
Simplify. Don't call error upon failure. Let callers do that.
|
||||
(save_cwd): Mention that Irix 5.3 has the same problem as SunOS4
|
||||
when auditing is enabled. But don't bother updating the #if.
|
||||
|
||||
* xgetcwd.c (xgetcwd): Improve comment.
|
||||
|
||||
* getcwd.c: New file.
|
||||
|
||||
2003-02-28 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* ftw.c (ftw_startup): Return -1 if alloca fails.
|
||||
|
||||
2003-02-28 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* fts.c (fts_children): If opening `.' fails, set the fts_child
|
||||
member to NULL before returning. From NetBSD.
|
||||
|
||||
* fts.c (fts_children): If fchdir fails, close file descriptor
|
||||
before returning. From NetBSD.
|
||||
|
||||
2003-02-27 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* physmem.c (physmem_total, physmem_available): Add comments.
|
||||
From Kaveh Ghazi.
|
||||
|
||||
* physmem.c: Merge in portability changes from gcc/libiberty
|
||||
to support AIX, Tru64, and Windows. See the ChangeLog there
|
||||
for credits and details. Thanks to Kaveh Ghazi for helping
|
||||
to keep these files in sync.
|
||||
|
||||
2003-02-24 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* fts_.h [__USE_FILE_OFFSET64]: Remove #error directive.
|
||||
|
||||
(fts_open): Initialize local, tmp, to pacify gcc.
|
||||
|
||||
* fts_.h [struct FTS] (fts_dir_signatures): New, opaque member.
|
||||
* fts.c: Include <search.h>.
|
||||
(struct known_object): Define.
|
||||
(object_compare, add_object, find_object): New functions, like
|
||||
those in ftw.c.
|
||||
(fts_open): Initialize new member.
|
||||
(fts_close): Free memory allocated for new member.
|
||||
(fts_stat): Detect a cycle in O(logN) time per directory processed.
|
||||
|
||||
* fts.c [HAVE_CONFIG_H]: Include <config.h>.
|
||||
Conditionalize inclusion of <sys/param.h>.
|
||||
Conditionalize inclusion of <include/sys/stat.h> vs <sys/stat.h>.
|
||||
Include autoconf-recommended block of dirent/NAMELEN-related
|
||||
definitions and includes. Use NAMLEN throughout, rather than
|
||||
_D_EXACT_NAMLEN.
|
||||
[_LIBC] (close, closedir, fchdir, open, opendir): Define.
|
||||
[_LIBC] (readdir, tdestroy, tfind, tsearch): Define.
|
||||
Remove `__' prefix from all uses of the above. This will help
|
||||
to merge *BSD changes.
|
||||
[!_LIBC] (internal_function): Define.
|
||||
[! _LIBC && ! LSTAT_FOLLOWS_SLASHED_SYMLINK]: Define lstat.
|
||||
(__set_errno): Define if not already defined.
|
||||
|
||||
* fts.c: (fts_open): If fts_alloc returns NULL, don't dereference it.
|
||||
(fts_read): If fts_safe_changedir fails because it is not
|
||||
able to chdir into a subdirectory, then inform the caller.
|
||||
|
||||
* fts.c, fts_.h: New files, directly from glibc.
|
||||
|
||||
2003-02-23 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* fts_.h (struct _ftsent) [fts_level]: Change type from short to int,
|
||||
so it can handle a root-relative file name longer than 32K bytes.
|
||||
[fts_pathlen, fts_namelen]: Rearrange members to decrease size of
|
||||
this struct from 84 to 80 bytes.
|
||||
|
||||
2003-02-21 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* mmap-stack.h: Undefine HAVE_MMAP_STACK, thus disabling
|
||||
this code on all systems.
|
||||
|
||||
Merge in some changes from GNU libc.
|
||||
* md5.h (md5_uintptr): Define.
|
||||
|
||||
* ftw.c: Include <sys/types.h> before <dirent.h>.
|
||||
This is required for Apple Darwin 6.3 (MacOS 10.2.3).
|
||||
Patch by Nelson Beebe.
|
||||
|
||||
2003-02-19 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* md5.c: Merge in some clean-up and optimization changes from glibc.
|
||||
* sha.c: Apply those same changes here, too.
|
||||
|
||||
2003-02-18 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* md5.c (md5_stream) [BLOCKSIZE]: Move definition to top of file.
|
||||
Ensure that it is a multiple of 64.
|
||||
Rearrange loop exit tests so as to avoid performing an
|
||||
additional fread after encountering an error or EOF.
|
||||
* sha.c (sha_stream): Likewise.
|
||||
Reported by Michael Bacarella.
|
||||
|
||||
* Makefile.am (CLEANFILES): Remove ftw.h and search.h.
|
||||
(DISTCLEANFILES): Add them here.
|
||||
Add fnmatch.h, too.
|
||||
|
||||
* sha.c (sha_stream): Rearrange loop exit tests so as to avoid
|
||||
performing an additional fread after encountering an error or EOF.
|
||||
|
||||
2003-02-17 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* mmap-stack.h (RUN_WITH_BIG_STACK_4): Define.
|
||||
|
||||
* physmem.c: Undo most of last change.
|
||||
Use sysmp instead, since it provides a cleaner interface.
|
||||
From Kaveh Ghazi.
|
||||
|
||||
2003-02-16 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* Makefile.am (libfetish_a_SOURCES): Add mmap-stack.h.
|
||||
|
||||
* mmap-stack.c (MAP_ANONYMOUS): Use MAP_ANON, if possible.
|
||||
Initialize `fd' to -1, so Solaris' mmap works with MAP_ANON.
|
||||
|
||||
2003-02-15 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* mmap-stack.c, mmap-stack.h: New files.
|
||||
Let the caller run a function with a larger (mmap'd) stack.
|
||||
|
||||
Add Irix6 support to physmem.c.
|
||||
* physmem.c (irix_sysget): New function.
|
||||
(IRIX_SYSGET_TOTAL, IRIX_SYSGET_AVAILABLE): New macros.
|
||||
(physmem_total, physmem_available): Use them.
|
||||
(main) [DEBUG]: New function.
|
||||
|
||||
2003-02-11 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* Makefile.am (libfetish_a_SOURCES): Add euidaccess.h.
|
||||
* euidaccess.c: Include "euidaccess.h".
|
||||
* euidaccess.h: New file.
|
||||
|
||||
2003-02-08 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* ftw.c (ftw_startup): Don't shadow outer declaration of save_err.
|
||||
Merge inconsequential changes from libc.
|
||||
|
||||
* ftw.c (ftw_startup): When using FTW_CHDIR, always remember
|
||||
the current directory, not just when DIR contains a slash.
|
||||
Reported by Manoj Srivastava via Michael Stone as Debian bug #180228.
|
||||
|
||||
2003-02-07 Jim Meyering <jim@meyering.net>
|
||||
|
||||
Merge inconsequential changes from libc.
|
||||
* ftw.c: Include limits.h earlier.
|
||||
Move PATH_MAX definition `down' a little; add comment.
|
||||
Rename local, saved_errno to save_err.
|
||||
|
||||
2003-02-06 Jim Meyering <jim@meyering.net>
|
||||
|
||||
Support for pruning.
|
||||
* ftw_.h (FTW_DPRE) [enum]: New member and definition.
|
||||
(struct FTW) [skip]: New member.
|
||||
|
||||
* search_.h (__restrict): Define to `restrict' or to nothing.
|
||||
|
||||
* fsusage.c: Remove declaration of statfs.
|
||||
It conflicted with one from OSF/1 5.1 in <sys/mount.h>.
|
||||
Reported by Nelson Beebe.
|
||||
|
||||
2003-02-05 Jim Meyering <jim@meyering.net>
|
||||
|
||||
Fix a heap-corruption bug that affected Solaris systems.
|
||||
* ftw.c: Include <limits.h>.
|
||||
(PATH_MAX): Define to 1024, if not already defined.
|
||||
(process_entry): Allocate enough space to hold the resulting
|
||||
file name. Don't presume that 2*dirbufsize is enough.
|
||||
(ftw_startup): Always use PATH_MAX to compute buffer size, now that
|
||||
it is guaranteed to be defined.
|
||||
Nelson Beebe reported that du would sometimes segfault on Solaris.
|
||||
|
||||
* ftw.c (process_entry): When using FTW_DEPTH, call `func', the
|
||||
user-supplied callback, once for the current directory before calling
|
||||
ftw_dir, in case that part of the hierarchy should be pruned.
|
||||
`func' does that by setting `data->skip'.
|
||||
(ftw_startup): Likewise.
|
||||
|
||||
2003-02-02 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* ftw.c (lstat) [!_LIBC && !LSTAT_FOLLOWS_SLASHED_SYMLINK]:
|
||||
Define to rpl_lstat.
|
||||
|
||||
2003-01-25 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* ftw.c (ISSLASH, FILESYSTEM_PREFIX_LEN) [_LIBC]: Define.
|
||||
(base_name): New function.
|
||||
(ftw_startup): Don't strip trailing slashes.
|
||||
Use base_name to find the offset of the basename.
|
||||
|
||||
2003-01-25 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* ftw.c (object_compare): Compare inode numbers before device numbers.
|
||||
The former is much more likely to differ for any two given file objects.
|
||||
|
||||
2003-01-23 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* tsearch.c [HAVE_CONFIG_H]: Include <config.h>.
|
||||
Add autoconf-recommended block of alloca-related code.
|
||||
Cast each use of alloca to the required type, (node**).
|
||||
|
||||
* ftw.c: Add autoconf-recommended block of alloca-related code.
|
||||
[!_LIBC] (__getcwd): Define to xgetcwd and declare xgetcwd.
|
||||
|
||||
2003-01-22 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* ftw.c (find_object): Don't use c99-style struct initializer.
|
||||
|
||||
* ftw_.h: Change all uses of __const to const.
|
||||
* search_.h: Likewise.
|
||||
|
||||
* Makefile.am (CLEANFILES): Add generated files: ftw.h search.h.
|
||||
|
||||
* ftw.c (process_entry): Handle FTW_DCHP.
|
||||
(ftw_dir): Handle FTW_DCH.
|
||||
|
||||
* ftw_.h [!_LIBC && !__USE_XOPEN_EXTENDED]: Define __USE_XOPEN_EXTENDED
|
||||
and FTW_H_STANDALONE.
|
||||
[anon enum] (FTW_DCH, FTW_DCHP): New members.
|
||||
(FTW_DCH, FTW_DCHP): Define.
|
||||
|
||||
* ftw.c: Include autoconf-recommended block of dirent/NAMELEN
|
||||
related definitions and includes. Use NAMELEN throughout,
|
||||
rather than _D_EXACT_NAMLEN.
|
||||
[_LIBC]: Define NAMELEN to _D_EXACT_NAMLEN.
|
||||
(stpcpy): Declare, if necessary.
|
||||
(mempcpy): Define, if necessary.
|
||||
[!_LIBC] (__stpcpy, __mempcpy): Define.
|
||||
[!_LIBC] (LXSTAT, XSTAT): Define.
|
||||
|
||||
2003-01-21 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* tsearch.c: New file, from GNU libc.
|
||||
[! weak_alias]: Define __-prefixed names to publicized ones.
|
||||
[! defined _LIBC] (weak_alias, internal_function): Define-away.
|
||||
[defined weak_alias]: Guard each use of weak_alias.
|
||||
|
||||
2003-01-20 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* canonicalize.c: Include "path-concat.h".
|
||||
|
||||
* search_.h: New file, from GNU libc.
|
||||
|
||||
* Makefile.am (libfetish_a_SOURCES): Use ftw_.h here, too.
|
||||
(libfetish_a_SOURCES): Add search_.h.
|
||||
* ftw_.h: Rename from ftw.h.
|
||||
|
||||
* obstack.h (obstack_object_size): Declare temporary, __o,
|
||||
to be const, in order to avoid warnings.
|
||||
(obstack_room): Likewise.
|
||||
(obstack_empty_p): Likewise.
|
||||
|
||||
Merge in changes from GNU libc
|
||||
* error.c: Eliminate many `#ifdef USE_IN_LIBIO' conditionals.
|
||||
|
||||
2003-01-19 Ulrich Drepper <drepper@redhat.com>
|
||||
|
||||
From GNU libc.
|
||||
* strftime.c (my_strftime): Handle very large width
|
||||
specifications for numeric values correctly. Improve checks for
|
||||
overflow.
|
||||
|
||||
2003-01-19 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* strftime.c (widen) [COMPILE_WIDE]: Merge nearly-identical definitions.
|
||||
(nl_get_alt_digit) [! defined my_strftime]: Define.
|
||||
(my_strftime) [_NL_CURRENT]: Merge nearly-identical uses of
|
||||
_nl_get_alt_digit and _nl_get_walt_digit.
|
||||
|
||||
* strftime.c (my_strftime): Merge in locale-related changes from libc.
|
||||
These changes have no effect outside of _LIBC.
|
||||
|
||||
2003-01-14 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* same.c (same_name): Declare *_basename locals to be `const'.
|
||||
Consolidate declarations and initializations of *_base* locals.
|
||||
|
||||
2003-01-11 Bruno Haible <bruno@clisp.org>
|
||||
|
||||
* same.c (same_name): Reorder tests so as to avoid calling stat()
|
||||
when a string comparison is sufficient.
|
||||
|
||||
2003-01-11 Bruno Haible <bruno@clisp.org>
|
||||
|
||||
* readtokens.c (readtoken): Cast character to 'unsigned char', not
|
||||
'unsigned int'.
|
||||
|
||||
2003-01-14 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* ftw.c: Merge in Ulrich's and my changes from libc.
|
||||
|
||||
2003-01-12 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* ftw.c (ftw_startup): Rename local-shadowing local to pacify gcc.
|
||||
Also work on systems that have `struct direct', using autoconf's
|
||||
AC_HEADER_DIRENT.
|
||||
Tweak comments.
|
||||
|
||||
* ftw.h, ftw.c: New files, from glibc/io.
|
||||
|
||||
* Makefile.am (libfetish_a_SOURCES): Add ftw.h.
|
||||
|
||||
2003-01-11 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* makepath.c: Don't test HAVE_ERRNO_H. It's not necessary.
|
||||
|
||||
* canonicalize.c: Don't test HAVE_ERRNO_H. It's not necessary.
|
||||
Don't test HAVE_STDDEF_H. It's not necessary.
|
||||
Use definition of PTR_INT_TYPE from obstack.h.
|
||||
|
||||
2002-12-01 Dmitry V. Levin <ldv@altlinux.org>
|
||||
|
||||
* canonicalize.c: New file.
|
||||
The readlink-based implementation imported from GNU C Library.
|
||||
The resolveip-based implementation imported from src/df.c (show_point).
|
||||
* canonicalize.h: New file.
|
||||
* Makefile.am (libfetish_a_SOURCES): Add canonicalize.h.
|
||||
|
||||
2003-01-10 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* save-cwd.h: Remove uses of PARAMS.
|
||||
|
||||
2002-11-30 Dmitry V. Levin <ldv@altlinux.org>
|
||||
|
||||
* xgetcwd.h: New file.
|
||||
* Makefile.am (libfetish_a_SOURCES): Add xgetcwd.h.
|
||||
* save-cwd.c: Include "xgetcwd.h".
|
||||
* xgetcwd.c: Likewise.
|
||||
|
||||
2002-11-30 Dmitry V. Levin <ldv@altlinux.org>
|
||||
|
||||
* getgroups.c: Don't declare functions declared by xalloc.h.
|
||||
Include "xalloc.h" instead.
|
||||
* group-member.c: Likewise.
|
||||
* idcache.c: Likewise.
|
||||
* readutmp.c: Likewise.
|
||||
|
||||
2003-01-08 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* full-write.c: Undefine and define-away `const' after inclusion
|
||||
of errno.h, not before. Suggestion from Bruno Haible.
|
||||
|
||||
2003-01-06 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* full-write.c: Rework so that it may serve to define full_read, too.
|
||||
* full-read.c: Simply #define FULL_READ and include full-write.c.
|
||||
|
||||
* Makefile.am (libfetish_a_SOURCES): Add full-read.c and full-read.h.
|
||||
* full-read.c, full-read.h: New files.
|
||||
|
||||
Update from gnulib.
|
||||
|
||||
2002-12-10 Paul Eggert <eggert@twinsun.com>
|
||||
Port exclude.c and exclude.h to more non-GNU systems, e.g. Solaris 7.
|
||||
* exclude.h (EXCLUDE_ANCHORED, EXCLUDE_INCLUDE, EXCLUDE_WILDCARDS):
|
||||
Choose values that are less likely to collide with system fnmatch
|
||||
options.
|
||||
* exclude.c (FNM_CASEFOLD, FNM_LEADING_DIR): Define to 0 if not
|
||||
defined (e.g., a pure POSIX system).
|
||||
(EXCLUDE_macros_do_not_collide_with_FNM_macros): Use FNM_PATHNAME
|
||||
instead of FNM_FILE_NAME, for compatibility with pure POSIX systems.
|
||||
|
||||
Update from gnulib.
|
||||
|
||||
* utime.c (utime_null): Use SAFE_READ_ERROR.
|
||||
(utime_null): No need to call ftruncate if the file was nonempty.
|
||||
* getdate.y (get_date): Test HAVE_STRUCT_TM_TM_ZONE, not HAVE_TM_ZONE.
|
||||
* canon-host.c (strdup): Remove unused declaration.
|
||||
* fsusage.c: Include full_read.h.
|
||||
(get_fs_usage): Use full_read instead of safe_read.
|
||||
Patches by Bruno Haible.
|
||||
|
||||
2003-01-04 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* version-etc.c: Update copyright date.
|
||||
|
||||
2002-12-31 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* dev-ino.h: New file.
|
||||
* cycle-check.c: New file.
|
||||
* cycle-check.h: New file.
|
||||
* Makefile.am (libfetish_a_SOURCES): Add cycle-check.c, cycle-check.h,
|
||||
and dev-ino.h.
|
||||
|
||||
2002-12-21 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* stime.c: Remove file (for real, this time).
|
||||
|
||||
2002-12-15 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* strftime.h: New file, for declaration of nstrftime.
|
||||
* Makefile.am (libfetish_a_SOURCES): Add strftime.h.
|
||||
|
||||
2002-12-09 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* unlocked-io.h: Sync from gnulib.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
## Makefile for gnulib/lib -*-Makefile-*-
|
||||
|
||||
# Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free
|
||||
# Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free
|
||||
# Software Foundation, Inc.
|
||||
|
||||
## This program is free software; you can redistribute it and/or modify
|
||||
@@ -18,8 +18,6 @@
|
||||
## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
## 02111-1307, USA.
|
||||
|
||||
AUTOMAKE_OPTIONS = ../src/ansi2knr
|
||||
|
||||
noinst_LIBRARIES = libfetish.a
|
||||
|
||||
INCLUDES = -I.. -I$(srcdir)
|
||||
@@ -35,7 +33,7 @@ libfetish_a_SOURCES = \
|
||||
getdate.h getdate.y \
|
||||
posixtm.c posixtm.h \
|
||||
posixver.c posixver.h \
|
||||
strftime.c \
|
||||
strftime.c strftime.h \
|
||||
getopt.c getopt.h getopt1.c \
|
||||
hash.c hash.h \
|
||||
hash-pjw.c hash-pjw.h \
|
||||
@@ -46,12 +44,15 @@ libfetish_a_SOURCES = \
|
||||
basename.c \
|
||||
bumpalloc.h \
|
||||
canon-host.c \
|
||||
c-stack.c c-stack.h \
|
||||
canonicalize.h \
|
||||
closeout.c closeout.h \
|
||||
cycle-check.c cycle-check.h \
|
||||
dev-ino.h \
|
||||
diacrit.c diacrit.h \
|
||||
dirname.c dirname.h \
|
||||
dirfd.h \
|
||||
dup-safer.c \
|
||||
euidaccess.h \
|
||||
exclude.c exclude.h \
|
||||
exitfail.c exitfail.h \
|
||||
filemode.c filemode.h \
|
||||
@@ -59,6 +60,8 @@ libfetish_a_SOURCES = \
|
||||
fnmatch_.h \
|
||||
fopen-safer.c \
|
||||
fsusage.h \
|
||||
ftw_.h \
|
||||
full-read.c full-read.h \
|
||||
full-write.c full-write.h \
|
||||
getline.h \
|
||||
getpagesize.h \
|
||||
@@ -97,6 +100,7 @@ libfetish_a_SOURCES = \
|
||||
same.c same.h \
|
||||
save-cwd.c save-cwd.h \
|
||||
savedir.c savedir.h \
|
||||
search_.h \
|
||||
settime.c \
|
||||
sha.c sha.h \
|
||||
sig2str.h \
|
||||
@@ -111,7 +115,7 @@ libfetish_a_SOURCES = \
|
||||
userspec.c \
|
||||
version-etc.c version-etc.h \
|
||||
xalloc.h \
|
||||
xgetcwd.c \
|
||||
xgetcwd.c xgetcwd.h \
|
||||
xgethostname.c \
|
||||
xmalloc.c \
|
||||
xmemcoll.c xmemcoll.h \
|
||||
@@ -182,3 +186,4 @@ SUFFIXES = .sed .sin
|
||||
mv t-$@ $@
|
||||
|
||||
CLEANFILES = charset.alias ref-add.sed ref-del.sed
|
||||
DISTCLEANFILES = ftw.h search.h fnmatch.h
|
||||
|
||||
735
lib/Makefile.in
735
lib/Makefile.in
@@ -1,7 +1,7 @@
|
||||
# Makefile.in generated by automake 1.7.1b from Makefile.am.
|
||||
# Makefile.in generated by automake 1.7.3 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
|
||||
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
|
||||
# Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@@ -14,7 +14,7 @@
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
# Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free
|
||||
# Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free
|
||||
# Software Foundation, Inc.
|
||||
|
||||
srcdir = @srcdir@
|
||||
@@ -82,6 +82,7 @@ LIBS = @LIBS@
|
||||
LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
|
||||
LIB_CRYPT = @LIB_CRYPT@
|
||||
LIB_NANOSLEEP = @LIB_NANOSLEEP@
|
||||
LN_S = @LN_S@
|
||||
LTLIBICONV = @LTLIBICONV@
|
||||
LTLIBINTL = @LTLIBINTL@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
@@ -121,6 +122,7 @@ ac_ct_STRIP = @ac_ct_STRIP@
|
||||
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
|
||||
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
@@ -150,8 +152,6 @@ sharedstatedir = @sharedstatedir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
|
||||
AUTOMAKE_OPTIONS = ../src/ansi2knr
|
||||
|
||||
noinst_LIBRARIES = libfetish.a
|
||||
|
||||
INCLUDES = -I.. -I$(srcdir)
|
||||
@@ -161,7 +161,7 @@ libfetish_a_SOURCES = \
|
||||
getdate.h getdate.y \
|
||||
posixtm.c posixtm.h \
|
||||
posixver.c posixver.h \
|
||||
strftime.c \
|
||||
strftime.c strftime.h \
|
||||
getopt.c getopt.h getopt1.c \
|
||||
hash.c hash.h \
|
||||
hash-pjw.c hash-pjw.h \
|
||||
@@ -172,12 +172,15 @@ libfetish_a_SOURCES = \
|
||||
basename.c \
|
||||
bumpalloc.h \
|
||||
canon-host.c \
|
||||
c-stack.c c-stack.h \
|
||||
canonicalize.h \
|
||||
closeout.c closeout.h \
|
||||
cycle-check.c cycle-check.h \
|
||||
dev-ino.h \
|
||||
diacrit.c diacrit.h \
|
||||
dirname.c dirname.h \
|
||||
dirfd.h \
|
||||
dup-safer.c \
|
||||
euidaccess.h \
|
||||
exclude.c exclude.h \
|
||||
exitfail.c exitfail.h \
|
||||
filemode.c filemode.h \
|
||||
@@ -185,6 +188,8 @@ libfetish_a_SOURCES = \
|
||||
fnmatch_.h \
|
||||
fopen-safer.c \
|
||||
fsusage.h \
|
||||
ftw_.h \
|
||||
full-read.c full-read.h \
|
||||
full-write.c full-write.h \
|
||||
getline.h \
|
||||
getpagesize.h \
|
||||
@@ -223,6 +228,7 @@ libfetish_a_SOURCES = \
|
||||
same.c same.h \
|
||||
save-cwd.c save-cwd.h \
|
||||
savedir.c savedir.h \
|
||||
search_.h \
|
||||
settime.c \
|
||||
sha.c sha.h \
|
||||
sig2str.h \
|
||||
@@ -237,7 +243,7 @@ libfetish_a_SOURCES = \
|
||||
userspec.c \
|
||||
version-etc.c version-etc.h \
|
||||
xalloc.h \
|
||||
xgetcwd.c \
|
||||
xgetcwd.c xgetcwd.h \
|
||||
xgethostname.c \
|
||||
xmalloc.c \
|
||||
xmemcoll.c xmemcoll.h \
|
||||
@@ -268,58 +274,60 @@ charset_tmp = $(DESTDIR)$(libdir)/charset.tmp
|
||||
SUFFIXES = .sed .sin
|
||||
|
||||
CLEANFILES = charset.alias ref-add.sed ref-del.sed
|
||||
DISTCLEANFILES = ftw.h search.h fnmatch.h
|
||||
subdir = lib
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
LIBRARIES = $(noinst_LIBRARIES)
|
||||
|
||||
libfetish_a_AR = $(AR) cru
|
||||
am_libfetish_a_OBJECTS = acl$U.$(OBJEXT) getdate$U.$(OBJEXT) \
|
||||
posixtm$U.$(OBJEXT) posixver$U.$(OBJEXT) strftime$U.$(OBJEXT) \
|
||||
getopt$U.$(OBJEXT) getopt1$U.$(OBJEXT) hash$U.$(OBJEXT) \
|
||||
hash-pjw$U.$(OBJEXT) addext$U.$(OBJEXT) argmatch$U.$(OBJEXT) \
|
||||
backupfile$U.$(OBJEXT) basename$U.$(OBJEXT) \
|
||||
canon-host$U.$(OBJEXT) c-stack$U.$(OBJEXT) closeout$U.$(OBJEXT) \
|
||||
diacrit$U.$(OBJEXT) dirname$U.$(OBJEXT) dup-safer$U.$(OBJEXT) \
|
||||
exclude$U.$(OBJEXT) exitfail$U.$(OBJEXT) filemode$U.$(OBJEXT) \
|
||||
file-type$U.$(OBJEXT) fopen-safer$U.$(OBJEXT) \
|
||||
full-write$U.$(OBJEXT) getstr$U.$(OBJEXT) gettime$U.$(OBJEXT) \
|
||||
getugroups$U.$(OBJEXT) hard-locale$U.$(OBJEXT) \
|
||||
human$U.$(OBJEXT) idcache$U.$(OBJEXT) isdir$U.$(OBJEXT) \
|
||||
imaxtostr$U.$(OBJEXT) linebuffer$U.$(OBJEXT) \
|
||||
localcharset$U.$(OBJEXT) long-options$U.$(OBJEXT) \
|
||||
makepath$U.$(OBJEXT) mbswidth$U.$(OBJEXT) md5$U.$(OBJEXT) \
|
||||
memcasecmp$U.$(OBJEXT) memcoll$U.$(OBJEXT) \
|
||||
modechange$U.$(OBJEXT) offtostr$U.$(OBJEXT) \
|
||||
path-concat$U.$(OBJEXT) physmem$U.$(OBJEXT) quote$U.$(OBJEXT) \
|
||||
quotearg$U.$(OBJEXT) readtokens$U.$(OBJEXT) \
|
||||
safe-read$U.$(OBJEXT) safe-write$U.$(OBJEXT) same$U.$(OBJEXT) \
|
||||
save-cwd$U.$(OBJEXT) savedir$U.$(OBJEXT) settime$U.$(OBJEXT) \
|
||||
sha$U.$(OBJEXT) stripslash$U.$(OBJEXT) umaxtostr$U.$(OBJEXT) \
|
||||
unicodeio$U.$(OBJEXT) userspec$U.$(OBJEXT) \
|
||||
version-etc$U.$(OBJEXT) xgetcwd$U.$(OBJEXT) \
|
||||
xgethostname$U.$(OBJEXT) xmalloc$U.$(OBJEXT) \
|
||||
xmemcoll$U.$(OBJEXT) xnanosleep$U.$(OBJEXT) \
|
||||
xreadlink$U.$(OBJEXT) xstrdup$U.$(OBJEXT) xstrtod$U.$(OBJEXT) \
|
||||
xstrtol$U.$(OBJEXT) xstrtoul$U.$(OBJEXT) xstrtoimax$U.$(OBJEXT) \
|
||||
xstrtoumax$U.$(OBJEXT) yesno$U.$(OBJEXT)
|
||||
am_libfetish_a_OBJECTS = acl.$(OBJEXT) getdate.$(OBJEXT) \
|
||||
posixtm.$(OBJEXT) posixver.$(OBJEXT) strftime.$(OBJEXT) \
|
||||
getopt.$(OBJEXT) getopt1.$(OBJEXT) hash.$(OBJEXT) \
|
||||
hash-pjw.$(OBJEXT) addext.$(OBJEXT) argmatch.$(OBJEXT) \
|
||||
backupfile.$(OBJEXT) basename.$(OBJEXT) canon-host.$(OBJEXT) \
|
||||
closeout.$(OBJEXT) cycle-check.$(OBJEXT) diacrit.$(OBJEXT) \
|
||||
dirname.$(OBJEXT) dup-safer.$(OBJEXT) exclude.$(OBJEXT) \
|
||||
exitfail.$(OBJEXT) filemode.$(OBJEXT) file-type.$(OBJEXT) \
|
||||
fopen-safer.$(OBJEXT) full-read.$(OBJEXT) full-write.$(OBJEXT) \
|
||||
getstr.$(OBJEXT) gettime.$(OBJEXT) getugroups.$(OBJEXT) \
|
||||
hard-locale.$(OBJEXT) human.$(OBJEXT) idcache.$(OBJEXT) \
|
||||
isdir.$(OBJEXT) imaxtostr.$(OBJEXT) linebuffer.$(OBJEXT) \
|
||||
localcharset.$(OBJEXT) long-options.$(OBJEXT) \
|
||||
makepath.$(OBJEXT) mbswidth.$(OBJEXT) md5.$(OBJEXT) \
|
||||
memcasecmp.$(OBJEXT) memcoll.$(OBJEXT) modechange.$(OBJEXT) \
|
||||
offtostr.$(OBJEXT) path-concat.$(OBJEXT) physmem.$(OBJEXT) \
|
||||
quote.$(OBJEXT) quotearg.$(OBJEXT) readtokens.$(OBJEXT) \
|
||||
safe-read.$(OBJEXT) safe-write.$(OBJEXT) same.$(OBJEXT) \
|
||||
save-cwd.$(OBJEXT) savedir.$(OBJEXT) settime.$(OBJEXT) \
|
||||
sha.$(OBJEXT) stripslash.$(OBJEXT) umaxtostr.$(OBJEXT) \
|
||||
unicodeio.$(OBJEXT) userspec.$(OBJEXT) version-etc.$(OBJEXT) \
|
||||
xgetcwd.$(OBJEXT) xgethostname.$(OBJEXT) xmalloc.$(OBJEXT) \
|
||||
xmemcoll.$(OBJEXT) xnanosleep.$(OBJEXT) xreadlink.$(OBJEXT) \
|
||||
xstrdup.$(OBJEXT) xstrtod.$(OBJEXT) xstrtol.$(OBJEXT) \
|
||||
xstrtoul.$(OBJEXT) xstrtoimax.$(OBJEXT) xstrtoumax.$(OBJEXT) \
|
||||
yesno.$(OBJEXT)
|
||||
libfetish_a_OBJECTS = $(am_libfetish_a_OBJECTS)
|
||||
|
||||
DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
|
||||
depcomp = $(SHELL) $(top_srcdir)/config/depcomp
|
||||
am__depfiles_maybe = depfiles
|
||||
@AMDEP_TRUE@DEP_FILES = $(DEPDIR)/__fpending.Po $(DEPDIR)/alloca.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/atexit.Po $(DEPDIR)/chown.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/dirfd.Po $(DEPDIR)/dup2.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/error.Po $(DEPDIR)/euidaccess.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/fileblocks.Po $(DEPDIR)/fnmatch.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/fsusage.Po $(DEPDIR)/ftruncate.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/getgroups.Po $(DEPDIR)/gethostname.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/getline.Po $(DEPDIR)/getloadavg.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/getpass.Po $(DEPDIR)/gettimeofday.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/getusershell.Po $(DEPDIR)/group-member.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/lchown.Po $(DEPDIR)/lstat.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/atexit.Po $(DEPDIR)/canonicalize.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/chown.Po $(DEPDIR)/dirfd.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/dup2.Po $(DEPDIR)/error.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/euidaccess.Po $(DEPDIR)/fchdir-stub.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/fchown-stub.Po $(DEPDIR)/fileblocks.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/fnmatch.Po $(DEPDIR)/fsusage.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/ftruncate.Po $(DEPDIR)/ftw.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/getcwd.Po $(DEPDIR)/getgroups.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/gethostname.Po $(DEPDIR)/getline.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/getloadavg.Po $(DEPDIR)/getpass.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/gettimeofday.Po $(DEPDIR)/getusershell.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/group-member.Po $(DEPDIR)/lchown.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/lstat-stub.Po $(DEPDIR)/lstat.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/malloc.Po $(DEPDIR)/memchr.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/memcmp.Po $(DEPDIR)/memcpy.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/memmove.Po $(DEPDIR)/memrchr.Po \
|
||||
@@ -327,71 +335,59 @@ am__depfiles_maybe = depfiles
|
||||
@AMDEP_TRUE@ $(DEPDIR)/mkstemp.Po $(DEPDIR)/mktime.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/mountlist.Po $(DEPDIR)/nanosleep.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/obstack.Po $(DEPDIR)/putenv.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/raise.Po $(DEPDIR)/readutmp.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/realloc.Po $(DEPDIR)/regex.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/rename.Po $(DEPDIR)/rmdir.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/rpmatch.Po $(DEPDIR)/sig2str.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/stat.Po $(DEPDIR)/stpcpy.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/strcasecmp.Po $(DEPDIR)/strcspn.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/strdup.Po $(DEPDIR)/strncasecmp.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/strndup.Po $(DEPDIR)/strnlen.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/strpbrk.Po $(DEPDIR)/strstr.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/strtod.Po $(DEPDIR)/strtoimax.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/strtol.Po $(DEPDIR)/strtoll.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/strtoul.Po $(DEPDIR)/strtoull.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/strtoumax.Po $(DEPDIR)/strverscmp.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/tempname.Po $(DEPDIR)/utime.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/acl$U.Po ./$(DEPDIR)/addext$U.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/argmatch$U.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/backupfile$U.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/basename$U.Po ./$(DEPDIR)/c-stack$U.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/canon-host$U.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/closeout$U.Po ./$(DEPDIR)/diacrit$U.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/dirname$U.Po ./$(DEPDIR)/dup-safer$U.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/exclude$U.Po ./$(DEPDIR)/exitfail$U.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/file-type$U.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/filemode$U.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/fopen-safer$U.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/full-write$U.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/getdate$U.Po ./$(DEPDIR)/getopt$U.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/getopt1$U.Po ./$(DEPDIR)/getstr$U.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/gettime$U.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/getugroups$U.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/hard-locale$U.Po ./$(DEPDIR)/hash$U.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/hash-pjw$U.Po ./$(DEPDIR)/human$U.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/idcache$U.Po ./$(DEPDIR)/imaxtostr$U.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/isdir$U.Po ./$(DEPDIR)/linebuffer$U.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/localcharset$U.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/long-options$U.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/makepath$U.Po ./$(DEPDIR)/mbswidth$U.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/md5$U.Po ./$(DEPDIR)/memcasecmp$U.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/memcoll$U.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/modechange$U.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/offtostr$U.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/path-concat$U.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/physmem$U.Po ./$(DEPDIR)/posixtm$U.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/posixver$U.Po ./$(DEPDIR)/quote$U.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/quotearg$U.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/readtokens$U.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/safe-read$U.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/safe-write$U.Po ./$(DEPDIR)/same$U.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/save-cwd$U.Po ./$(DEPDIR)/savedir$U.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/settime$U.Po ./$(DEPDIR)/sha$U.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/strftime$U.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/stripslash$U.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/umaxtostr$U.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/unicodeio$U.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/userspec$U.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/version-etc$U.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/xgetcwd$U.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/xgethostname$U.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/xmalloc$U.Po ./$(DEPDIR)/xmemcoll$U.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/xnanosleep$U.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/xreadlink$U.Po ./$(DEPDIR)/xstrdup$U.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/xstrtod$U.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/xstrtoimax$U.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/xstrtol$U.Po ./$(DEPDIR)/xstrtoul$U.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/xstrtoumax$U.Po ./$(DEPDIR)/yesno$U.Po
|
||||
@AMDEP_TRUE@ $(DEPDIR)/raise.Po $(DEPDIR)/readlink-stub.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/readutmp.Po $(DEPDIR)/realloc.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/regex.Po $(DEPDIR)/rename.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/rmdir.Po $(DEPDIR)/rpmatch.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/sig2str.Po $(DEPDIR)/stat.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/stpcpy.Po $(DEPDIR)/strcasecmp.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/strcspn.Po $(DEPDIR)/strdup.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/strncasecmp.Po $(DEPDIR)/strndup.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/strnlen.Po $(DEPDIR)/strpbrk.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/strstr.Po $(DEPDIR)/strtod.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/strtoimax.Po $(DEPDIR)/strtol.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/strtoll.Po $(DEPDIR)/strtoul.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/strtoull.Po $(DEPDIR)/strtoumax.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/strverscmp.Po $(DEPDIR)/tempname.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/tsearch.Po $(DEPDIR)/utime.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/acl.Po ./$(DEPDIR)/addext.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/argmatch.Po ./$(DEPDIR)/backupfile.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/basename.Po ./$(DEPDIR)/canon-host.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/closeout.Po ./$(DEPDIR)/cycle-check.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/diacrit.Po ./$(DEPDIR)/dirname.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/dup-safer.Po ./$(DEPDIR)/exclude.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/exitfail.Po ./$(DEPDIR)/file-type.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/filemode.Po ./$(DEPDIR)/fopen-safer.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/full-read.Po ./$(DEPDIR)/full-write.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/getdate.Po ./$(DEPDIR)/getopt.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/getopt1.Po ./$(DEPDIR)/getstr.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/gettime.Po ./$(DEPDIR)/getugroups.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/hard-locale.Po ./$(DEPDIR)/hash-pjw.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/hash.Po ./$(DEPDIR)/human.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/idcache.Po ./$(DEPDIR)/imaxtostr.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/isdir.Po ./$(DEPDIR)/linebuffer.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/localcharset.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/long-options.Po ./$(DEPDIR)/makepath.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/mbswidth.Po ./$(DEPDIR)/md5.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/memcasecmp.Po ./$(DEPDIR)/memcoll.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/modechange.Po ./$(DEPDIR)/offtostr.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/path-concat.Po ./$(DEPDIR)/physmem.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/posixtm.Po ./$(DEPDIR)/posixver.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/quote.Po ./$(DEPDIR)/quotearg.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/readtokens.Po ./$(DEPDIR)/safe-read.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/safe-write.Po ./$(DEPDIR)/same.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/save-cwd.Po ./$(DEPDIR)/savedir.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/settime.Po ./$(DEPDIR)/sha.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/strftime.Po ./$(DEPDIR)/stripslash.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/umaxtostr.Po ./$(DEPDIR)/unicodeio.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/userspec.Po ./$(DEPDIR)/version-etc.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/xgetcwd.Po ./$(DEPDIR)/xgethostname.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/xmalloc.Po ./$(DEPDIR)/xmemcoll.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/xnanosleep.Po ./$(DEPDIR)/xreadlink.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/xstrdup.Po ./$(DEPDIR)/xstrtod.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/xstrtoimax.Po ./$(DEPDIR)/xstrtol.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/xstrtoul.Po ./$(DEPDIR)/xstrtoumax.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/yesno.Po
|
||||
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||
CCLD = $(CC)
|
||||
@@ -399,18 +395,19 @@ LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||
YACCCOMPILE = $(YACC) $(YFLAGS) $(AM_YFLAGS)
|
||||
DIST_SOURCES = $(libfetish_a_SOURCES)
|
||||
DIST_COMMON = README ChangeLog Makefile.am Makefile.in TODO \
|
||||
__fpending.c alloca.c atexit.c chown.c dirfd.c dup2.c error.c \
|
||||
error.h euidaccess.c fileblocks.c fnmatch.c fsusage.c \
|
||||
ftruncate.c getdate.c getgroups.c gethostname.c getline.c \
|
||||
getloadavg.c getpass.c gettimeofday.c getusershell.c \
|
||||
group-member.c lchown.c lstat.c malloc.c memchr.c memcmp.c \
|
||||
memcpy.c memmove.c memrchr.c memset.c mkdir.c mkstemp.c \
|
||||
mktime.c mountlist.c nanosleep.c obstack.c obstack.h putenv.c \
|
||||
raise.c readutmp.c realloc.c regex.c rename.c rmdir.c rpmatch.c \
|
||||
sig2str.c stat.c stpcpy.c strcasecmp.c strcspn.c strdup.c \
|
||||
strncasecmp.c strndup.c strnlen.c strpbrk.c strstr.c strtod.c \
|
||||
strtoimax.c strtol.c strtoll.c strtoul.c strtoull.c strtoumax.c \
|
||||
strverscmp.c tempname.c utime.c
|
||||
__fpending.c alloca.c atexit.c canonicalize.c chown.c dirfd.c \
|
||||
dup2.c error.c error.h euidaccess.c fchdir-stub.c fchown-stub.c \
|
||||
fileblocks.c fnmatch.c fsusage.c ftruncate.c ftw.c getcwd.c \
|
||||
getdate.c getgroups.c gethostname.c getline.c getloadavg.c \
|
||||
getpass.c gettimeofday.c getusershell.c group-member.c lchown.c \
|
||||
lstat-stub.c lstat.c malloc.c memchr.c memcmp.c memcpy.c \
|
||||
memmove.c memrchr.c memset.c mkdir.c mkstemp.c mktime.c \
|
||||
mountlist.c nanosleep.c obstack.c obstack.h putenv.c raise.c \
|
||||
readlink-stub.c readutmp.c realloc.c regex.c rename.c rmdir.c \
|
||||
rpmatch.c sig2str.c stat.c stpcpy.c strcasecmp.c strcspn.c \
|
||||
strdup.c strncasecmp.c strndup.c strnlen.c strpbrk.c strstr.c \
|
||||
strtod.c strtoimax.c strtol.c strtoll.c strtoul.c strtoull.c \
|
||||
strtoumax.c strverscmp.c tempname.c tsearch.c utime.c
|
||||
SOURCES = $(libfetish_a_SOURCES)
|
||||
|
||||
all: $(BUILT_SOURCES)
|
||||
@@ -439,25 +436,23 @@ mostlyclean-compile:
|
||||
distclean-compile:
|
||||
-rm -f *.tab.c
|
||||
|
||||
ANSI2KNR = ../src/ansi2knr
|
||||
../src/ansi2knr:
|
||||
cd ../src && $(MAKE) $(AM_MAKEFLAGS) ansi2knr
|
||||
|
||||
mostlyclean-kr:
|
||||
-test "$U" = "" || rm -f *_.c
|
||||
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/__fpending.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/alloca.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/atexit.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/canonicalize.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/chown.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/dirfd.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/dup2.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/error.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/euidaccess.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/fchdir-stub.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/fchown-stub.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/fileblocks.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/fnmatch.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/fsusage.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/ftruncate.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/ftw.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/getcwd.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/getgroups.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/gethostname.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/getline.Po@am__quote@
|
||||
@@ -467,6 +462,7 @@ mostlyclean-kr:
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/getusershell.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/group-member.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/lchown.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/lstat-stub.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/lstat.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/malloc.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/memchr.Po@am__quote@
|
||||
@@ -483,6 +479,7 @@ mostlyclean-kr:
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/obstack.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/putenv.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/raise.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/readlink-stub.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/readutmp.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/realloc.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/regex.Po@am__quote@
|
||||
@@ -509,80 +506,82 @@ mostlyclean-kr:
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/strtoumax.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/strverscmp.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/tempname.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/tsearch.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/utime.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/acl$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/addext$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/argmatch$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backupfile$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/basename$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/c-stack$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/canon-host$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/closeout$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diacrit$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dirname$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dup-safer$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exclude$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exitfail$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file-type$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filemode$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fopen-safer$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/full-write$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getdate$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt1$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getstr$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gettime$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getugroups$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hard-locale$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hash$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hash-pjw$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/human$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/idcache$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/imaxtostr$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isdir$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linebuffer$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/localcharset$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/long-options$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/makepath$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mbswidth$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/md5$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memcasecmp$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memcoll$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/modechange$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/offtostr$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/path-concat$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/physmem$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/posixtm$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/posixver$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/quote$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/quotearg$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/readtokens$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/safe-read$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/safe-write$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/same$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/save-cwd$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/savedir$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/settime$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sha$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strftime$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stripslash$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/umaxtostr$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unicodeio$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/userspec$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/version-etc$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xgetcwd$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xgethostname$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmalloc$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmemcoll$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xnanosleep$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xreadlink$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xstrdup$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xstrtod$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xstrtoimax$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xstrtol$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xstrtoul$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xstrtoumax$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/yesno$U.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/acl.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/addext.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/argmatch.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backupfile.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/basename.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/canon-host.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/closeout.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cycle-check.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diacrit.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dirname.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dup-safer.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exclude.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exitfail.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file-type.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filemode.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fopen-safer.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/full-read.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/full-write.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getdate.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt1.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getstr.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gettime.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getugroups.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hard-locale.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hash-pjw.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hash.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/human.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/idcache.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/imaxtostr.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isdir.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linebuffer.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/localcharset.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/long-options.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/makepath.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mbswidth.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/md5.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memcasecmp.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memcoll.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/modechange.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/offtostr.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/path-concat.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/physmem.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/posixtm.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/posixver.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/quote.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/quotearg.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/readtokens.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/safe-read.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/safe-write.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/same.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/save-cwd.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/savedir.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/settime.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sha.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strftime.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stripslash.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/umaxtostr.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unicodeio.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/userspec.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/version-etc.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xgetcwd.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xgethostname.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmalloc.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmemcoll.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xnanosleep.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xreadlink.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xstrdup.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xstrtod.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xstrtoimax.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xstrtol.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xstrtoul.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xstrtoumax.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/yesno.Po@am__quote@
|
||||
|
||||
distclean-depend:
|
||||
-rm -rf $(DEPDIR) ./$(DEPDIR)
|
||||
@@ -608,325 +607,6 @@ distclean-depend:
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
|
||||
__fpending_.c: __fpending.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/__fpending.c; then echo $(srcdir)/__fpending.c; else echo __fpending.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
acl_.c: acl.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/acl.c; then echo $(srcdir)/acl.c; else echo acl.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
addext_.c: addext.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
alloca_.c: alloca.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
argmatch_.c: argmatch.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
atexit_.c: atexit.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/atexit.c; then echo $(srcdir)/atexit.c; else echo atexit.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
backupfile_.c: backupfile.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
basename_.c: basename.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
c-stack_.c: c-stack.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/c-stack.c; then echo $(srcdir)/c-stack.c; else echo c-stack.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
canon-host_.c: canon-host.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/canon-host.c; then echo $(srcdir)/canon-host.c; else echo canon-host.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
chown_.c: chown.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
closeout_.c: closeout.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
diacrit_.c: diacrit.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/diacrit.c; then echo $(srcdir)/diacrit.c; else echo diacrit.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
dirfd_.c: dirfd.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/dirfd.c; then echo $(srcdir)/dirfd.c; else echo dirfd.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
dirname_.c: dirname.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
dup-safer_.c: dup-safer.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/dup-safer.c; then echo $(srcdir)/dup-safer.c; else echo dup-safer.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
dup2_.c: dup2.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/dup2.c; then echo $(srcdir)/dup2.c; else echo dup2.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
error_.c: error.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
euidaccess_.c: euidaccess.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
exclude_.c: exclude.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
exitfail_.c: exitfail.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/exitfail.c; then echo $(srcdir)/exitfail.c; else echo exitfail.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
file-type_.c: file-type.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/file-type.c; then echo $(srcdir)/file-type.c; else echo file-type.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
fileblocks_.c: fileblocks.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
filemode_.c: filemode.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
fnmatch_.c: fnmatch.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
fopen-safer_.c: fopen-safer.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/fopen-safer.c; then echo $(srcdir)/fopen-safer.c; else echo fopen-safer.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
fsusage_.c: fsusage.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
ftruncate_.c: ftruncate.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
full-write_.c: full-write.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
getdate_.c: getdate.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
getgroups_.c: getgroups.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
gethostname_.c: gethostname.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/gethostname.c; then echo $(srcdir)/gethostname.c; else echo gethostname.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
getline_.c: getline.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
getloadavg_.c: getloadavg.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/getloadavg.c; then echo $(srcdir)/getloadavg.c; else echo getloadavg.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
getopt_.c: getopt.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
getopt1_.c: getopt1.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
getpass_.c: getpass.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/getpass.c; then echo $(srcdir)/getpass.c; else echo getpass.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
getstr_.c: getstr.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/getstr.c; then echo $(srcdir)/getstr.c; else echo getstr.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
gettime_.c: gettime.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/gettime.c; then echo $(srcdir)/gettime.c; else echo gettime.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
gettimeofday_.c: gettimeofday.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/gettimeofday.c; then echo $(srcdir)/gettimeofday.c; else echo gettimeofday.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
getugroups_.c: getugroups.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/getugroups.c; then echo $(srcdir)/getugroups.c; else echo getugroups.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
getusershell_.c: getusershell.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/getusershell.c; then echo $(srcdir)/getusershell.c; else echo getusershell.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
group-member_.c: group-member.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
hard-locale_.c: hard-locale.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/hard-locale.c; then echo $(srcdir)/hard-locale.c; else echo hard-locale.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
hash_.c: hash.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
hash-pjw_.c: hash-pjw.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/hash-pjw.c; then echo $(srcdir)/hash-pjw.c; else echo hash-pjw.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
human_.c: human.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
idcache_.c: idcache.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
imaxtostr_.c: imaxtostr.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/imaxtostr.c; then echo $(srcdir)/imaxtostr.c; else echo imaxtostr.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
isdir_.c: isdir.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
lchown_.c: lchown.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
linebuffer_.c: linebuffer.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/linebuffer.c; then echo $(srcdir)/linebuffer.c; else echo linebuffer.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
localcharset_.c: localcharset.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/localcharset.c; then echo $(srcdir)/localcharset.c; else echo localcharset.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
long-options_.c: long-options.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
lstat_.c: lstat.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
makepath_.c: makepath.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
malloc_.c: malloc.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
mbswidth_.c: mbswidth.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/mbswidth.c; then echo $(srcdir)/mbswidth.c; else echo mbswidth.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
md5_.c: md5.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/md5.c; then echo $(srcdir)/md5.c; else echo md5.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
memcasecmp_.c: memcasecmp.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/memcasecmp.c; then echo $(srcdir)/memcasecmp.c; else echo memcasecmp.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
memchr_.c: memchr.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/memchr.c; then echo $(srcdir)/memchr.c; else echo memchr.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
memcmp_.c: memcmp.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
memcoll_.c: memcoll.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/memcoll.c; then echo $(srcdir)/memcoll.c; else echo memcoll.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
memcpy_.c: memcpy.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
memmove_.c: memmove.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/memmove.c; then echo $(srcdir)/memmove.c; else echo memmove.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
memrchr_.c: memrchr.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/memrchr.c; then echo $(srcdir)/memrchr.c; else echo memrchr.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
memset_.c: memset.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
mkdir_.c: mkdir.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
mkstemp_.c: mkstemp.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/mkstemp.c; then echo $(srcdir)/mkstemp.c; else echo mkstemp.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
mktime_.c: mktime.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
modechange_.c: modechange.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
mountlist_.c: mountlist.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
nanosleep_.c: nanosleep.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/nanosleep.c; then echo $(srcdir)/nanosleep.c; else echo nanosleep.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
obstack_.c: obstack.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
offtostr_.c: offtostr.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/offtostr.c; then echo $(srcdir)/offtostr.c; else echo offtostr.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
path-concat_.c: path-concat.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
physmem_.c: physmem.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/physmem.c; then echo $(srcdir)/physmem.c; else echo physmem.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
posixtm_.c: posixtm.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
posixver_.c: posixver.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/posixver.c; then echo $(srcdir)/posixver.c; else echo posixver.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
putenv_.c: putenv.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/putenv.c; then echo $(srcdir)/putenv.c; else echo putenv.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
quote_.c: quote.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/quote.c; then echo $(srcdir)/quote.c; else echo quote.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
quotearg_.c: quotearg.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
raise_.c: raise.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/raise.c; then echo $(srcdir)/raise.c; else echo raise.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
readtokens_.c: readtokens.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/readtokens.c; then echo $(srcdir)/readtokens.c; else echo readtokens.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
readutmp_.c: readutmp.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/readutmp.c; then echo $(srcdir)/readutmp.c; else echo readutmp.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
realloc_.c: realloc.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
regex_.c: regex.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
rename_.c: rename.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
rmdir_.c: rmdir.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
rpmatch_.c: rpmatch.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
safe-read_.c: safe-read.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
safe-write_.c: safe-write.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/safe-write.c; then echo $(srcdir)/safe-write.c; else echo safe-write.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
same_.c: same.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/same.c; then echo $(srcdir)/same.c; else echo same.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
save-cwd_.c: save-cwd.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
savedir_.c: savedir.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
settime_.c: settime.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/settime.c; then echo $(srcdir)/settime.c; else echo settime.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
sha_.c: sha.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/sha.c; then echo $(srcdir)/sha.c; else echo sha.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
sig2str_.c: sig2str.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/sig2str.c; then echo $(srcdir)/sig2str.c; else echo sig2str.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
stat_.c: stat.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
stpcpy_.c: stpcpy.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
strcasecmp_.c: strcasecmp.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
strcspn_.c: strcspn.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/strcspn.c; then echo $(srcdir)/strcspn.c; else echo strcspn.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
strdup_.c: strdup.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
strftime_.c: strftime.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
stripslash_.c: stripslash.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
strncasecmp_.c: strncasecmp.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
strndup_.c: strndup.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
strnlen_.c: strnlen.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/strnlen.c; then echo $(srcdir)/strnlen.c; else echo strnlen.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
strpbrk_.c: strpbrk.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/strpbrk.c; then echo $(srcdir)/strpbrk.c; else echo strpbrk.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
strstr_.c: strstr.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
strtod_.c: strtod.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/strtod.c; then echo $(srcdir)/strtod.c; else echo strtod.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
strtoimax_.c: strtoimax.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/strtoimax.c; then echo $(srcdir)/strtoimax.c; else echo strtoimax.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
strtol_.c: strtol.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
strtoll_.c: strtoll.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/strtoll.c; then echo $(srcdir)/strtoll.c; else echo strtoll.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
strtoul_.c: strtoul.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
strtoull_.c: strtoull.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/strtoull.c; then echo $(srcdir)/strtoull.c; else echo strtoull.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
strtoumax_.c: strtoumax.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/strtoumax.c; then echo $(srcdir)/strtoumax.c; else echo strtoumax.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
strverscmp_.c: strverscmp.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
tempname_.c: tempname.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/tempname.c; then echo $(srcdir)/tempname.c; else echo tempname.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
umaxtostr_.c: umaxtostr.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/umaxtostr.c; then echo $(srcdir)/umaxtostr.c; else echo umaxtostr.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
unicodeio_.c: unicodeio.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/unicodeio.c; then echo $(srcdir)/unicodeio.c; else echo unicodeio.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
userspec_.c: userspec.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
utime_.c: utime.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
version-etc_.c: version-etc.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/version-etc.c; then echo $(srcdir)/version-etc.c; else echo version-etc.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
xgetcwd_.c: xgetcwd.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
xgethostname_.c: xgethostname.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/xgethostname.c; then echo $(srcdir)/xgethostname.c; else echo xgethostname.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
xmalloc_.c: xmalloc.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
xmemcoll_.c: xmemcoll.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/xmemcoll.c; then echo $(srcdir)/xmemcoll.c; else echo xmemcoll.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
xnanosleep_.c: xnanosleep.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/xnanosleep.c; then echo $(srcdir)/xnanosleep.c; else echo xnanosleep.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
xreadlink_.c: xreadlink.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/xreadlink.c; then echo $(srcdir)/xreadlink.c; else echo xreadlink.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
xstrdup_.c: xstrdup.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
xstrtod_.c: xstrtod.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/xstrtod.c; then echo $(srcdir)/xstrtod.c; else echo xstrtod.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
xstrtoimax_.c: xstrtoimax.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/xstrtoimax.c; then echo $(srcdir)/xstrtoimax.c; else echo xstrtoimax.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
xstrtol_.c: xstrtol.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
xstrtoul_.c: xstrtoul.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
xstrtoumax_.c: xstrtoumax.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/xstrtoumax.c; then echo $(srcdir)/xstrtoumax.c; else echo xstrtoumax.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
|
||||
yesno_.c: yesno.c $(ANSI2KNR)
|
||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(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) > $@ || rm -f $@
|
||||
__fpending_.$(OBJEXT) acl_.$(OBJEXT) addext_.$(OBJEXT) \
|
||||
alloca_.$(OBJEXT) argmatch_.$(OBJEXT) atexit_.$(OBJEXT) \
|
||||
backupfile_.$(OBJEXT) basename_.$(OBJEXT) c-stack_.$(OBJEXT) \
|
||||
canon-host_.$(OBJEXT) chown_.$(OBJEXT) closeout_.$(OBJEXT) \
|
||||
diacrit_.$(OBJEXT) dirfd_.$(OBJEXT) dirname_.$(OBJEXT) \
|
||||
dup-safer_.$(OBJEXT) dup2_.$(OBJEXT) error_.$(OBJEXT) \
|
||||
euidaccess_.$(OBJEXT) exclude_.$(OBJEXT) exitfail_.$(OBJEXT) \
|
||||
file-type_.$(OBJEXT) fileblocks_.$(OBJEXT) filemode_.$(OBJEXT) \
|
||||
fnmatch_.$(OBJEXT) fopen-safer_.$(OBJEXT) fsusage_.$(OBJEXT) \
|
||||
ftruncate_.$(OBJEXT) full-write_.$(OBJEXT) getdate_.$(OBJEXT) \
|
||||
getgroups_.$(OBJEXT) gethostname_.$(OBJEXT) getline_.$(OBJEXT) \
|
||||
getloadavg_.$(OBJEXT) getopt_.$(OBJEXT) getopt1_.$(OBJEXT) \
|
||||
getpass_.$(OBJEXT) getstr_.$(OBJEXT) gettime_.$(OBJEXT) \
|
||||
gettimeofday_.$(OBJEXT) getugroups_.$(OBJEXT) getusershell_.$(OBJEXT) \
|
||||
group-member_.$(OBJEXT) hard-locale_.$(OBJEXT) hash_.$(OBJEXT) \
|
||||
hash-pjw_.$(OBJEXT) human_.$(OBJEXT) idcache_.$(OBJEXT) \
|
||||
imaxtostr_.$(OBJEXT) isdir_.$(OBJEXT) lchown_.$(OBJEXT) \
|
||||
linebuffer_.$(OBJEXT) localcharset_.$(OBJEXT) long-options_.$(OBJEXT) \
|
||||
lstat_.$(OBJEXT) makepath_.$(OBJEXT) malloc_.$(OBJEXT) \
|
||||
mbswidth_.$(OBJEXT) md5_.$(OBJEXT) memcasecmp_.$(OBJEXT) \
|
||||
memchr_.$(OBJEXT) memcmp_.$(OBJEXT) memcoll_.$(OBJEXT) \
|
||||
memcpy_.$(OBJEXT) memmove_.$(OBJEXT) memrchr_.$(OBJEXT) \
|
||||
memset_.$(OBJEXT) mkdir_.$(OBJEXT) mkstemp_.$(OBJEXT) mktime_.$(OBJEXT) \
|
||||
modechange_.$(OBJEXT) mountlist_.$(OBJEXT) nanosleep_.$(OBJEXT) \
|
||||
obstack_.$(OBJEXT) offtostr_.$(OBJEXT) path-concat_.$(OBJEXT) \
|
||||
physmem_.$(OBJEXT) posixtm_.$(OBJEXT) posixver_.$(OBJEXT) \
|
||||
putenv_.$(OBJEXT) quote_.$(OBJEXT) quotearg_.$(OBJEXT) raise_.$(OBJEXT) \
|
||||
readtokens_.$(OBJEXT) readutmp_.$(OBJEXT) realloc_.$(OBJEXT) \
|
||||
regex_.$(OBJEXT) rename_.$(OBJEXT) rmdir_.$(OBJEXT) rpmatch_.$(OBJEXT) \
|
||||
safe-read_.$(OBJEXT) safe-write_.$(OBJEXT) same_.$(OBJEXT) \
|
||||
save-cwd_.$(OBJEXT) savedir_.$(OBJEXT) settime_.$(OBJEXT) \
|
||||
sha_.$(OBJEXT) sig2str_.$(OBJEXT) stat_.$(OBJEXT) stpcpy_.$(OBJEXT) \
|
||||
strcasecmp_.$(OBJEXT) strcspn_.$(OBJEXT) strdup_.$(OBJEXT) \
|
||||
strftime_.$(OBJEXT) stripslash_.$(OBJEXT) strncasecmp_.$(OBJEXT) \
|
||||
strndup_.$(OBJEXT) strnlen_.$(OBJEXT) strpbrk_.$(OBJEXT) \
|
||||
strstr_.$(OBJEXT) strtod_.$(OBJEXT) strtoimax_.$(OBJEXT) \
|
||||
strtol_.$(OBJEXT) strtoll_.$(OBJEXT) strtoul_.$(OBJEXT) \
|
||||
strtoull_.$(OBJEXT) strtoumax_.$(OBJEXT) strverscmp_.$(OBJEXT) \
|
||||
tempname_.$(OBJEXT) umaxtostr_.$(OBJEXT) unicodeio_.$(OBJEXT) \
|
||||
userspec_.$(OBJEXT) utime_.$(OBJEXT) version-etc_.$(OBJEXT) \
|
||||
xgetcwd_.$(OBJEXT) xgethostname_.$(OBJEXT) xmalloc_.$(OBJEXT) \
|
||||
xmemcoll_.$(OBJEXT) xnanosleep_.$(OBJEXT) xreadlink_.$(OBJEXT) \
|
||||
xstrdup_.$(OBJEXT) xstrtod_.$(OBJEXT) xstrtoimax_.$(OBJEXT) \
|
||||
xstrtol_.$(OBJEXT) xstrtoul_.$(OBJEXT) xstrtoumax_.$(OBJEXT) \
|
||||
yesno_.$(OBJEXT) : $(ANSI2KNR)
|
||||
|
||||
.y.c:
|
||||
$(YACCCOMPILE) `test -f '$<' || echo '$(srcdir)/'`$<
|
||||
@@ -1062,6 +742,7 @@ clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-rm -f Makefile $(CONFIG_CLEAN_FILES)
|
||||
-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@@ -1102,7 +783,7 @@ maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-compile mostlyclean-generic mostlyclean-kr
|
||||
mostlyclean-am: mostlyclean-compile mostlyclean-generic
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
@@ -1122,9 +803,9 @@ uninstall-am: uninstall-info-am uninstall-local
|
||||
install-exec-am install-exec-local install-info install-info-am \
|
||||
install-man install-strip installcheck installcheck-am \
|
||||
installdirs maintainer-clean maintainer-clean-generic \
|
||||
mostlyclean mostlyclean-compile mostlyclean-generic \
|
||||
mostlyclean-kr pdf pdf-am ps ps-am tags uninstall uninstall-am \
|
||||
uninstall-info-am uninstall-local
|
||||
mostlyclean mostlyclean-compile mostlyclean-generic pdf pdf-am \
|
||||
ps ps-am tags uninstall uninstall-am uninstall-info-am \
|
||||
uninstall-local
|
||||
|
||||
|
||||
# The following is needed in order to install a simple file in $(libdir)
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
/* argmatch.c -- find a match for a string in an array
|
||||
Copyright (C) 1990, 1998, 1999, 2001, 2002 Free Software Foundation, Inc.
|
||||
|
||||
Copyright (C) 1990, 1998, 1999, 2001, 2002, 2003 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
|
||||
@@ -44,6 +46,10 @@
|
||||
# define ARGMATCH_QUOTING_STYLE locale_quoting_style
|
||||
#endif
|
||||
|
||||
#ifndef 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)
|
||||
|
||||
435
lib/c-stack.c
435
lib/c-stack.c
@@ -1,435 +0,0 @@
|
||||
/* Stack overflow handling.
|
||||
|
||||
Copyright (C) 2002 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. */
|
||||
|
||||
/* Written by Paul Eggert. */
|
||||
|
||||
/* NOTES:
|
||||
|
||||
A program that uses alloca, dynamic arrays, or large local
|
||||
variables may extend the stack by more than a page at a time. If
|
||||
so, when the stack overflows the operating system may not detect
|
||||
the overflow until the program uses the array, and this module may
|
||||
incorrectly report a program error instead of a stack overflow.
|
||||
|
||||
To avoid this problem, allocate only small objects on the stack; a
|
||||
program should be OK if it limits single allocations to a page or
|
||||
less. Allocate larger arrays in static storage, or on the heap
|
||||
(e.g., with malloc). Yes, this is a pain, but we don't know of any
|
||||
better solution that is portable.
|
||||
|
||||
No attempt has been made to deal with multithreaded applications.
|
||||
|
||||
If ! HAVE_XSI_STACK_OVERFLOW_HEURISTIC, the current implementation
|
||||
assumes that, if the RLIMIT_STACK limit changes during execution,
|
||||
then c_stack_action is invoked immediately afterwards. */
|
||||
|
||||
#if HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#ifndef __attribute__
|
||||
# if __GNUC__ < 3 || __STRICT_ANSI__
|
||||
# define __attribute__(x)
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#include "gettext.h"
|
||||
#define _(msgid) gettext (msgid)
|
||||
|
||||
#include <errno.h>
|
||||
#ifndef ENOTSUP
|
||||
# define ENOTSUP EINVAL
|
||||
#endif
|
||||
#ifndef EOVERFLOW
|
||||
# define EOVERFLOW EINVAL
|
||||
#endif
|
||||
|
||||
#include <signal.h>
|
||||
#if ! HAVE_STACK_T && ! defined stack_t
|
||||
typedef struct sigaltstack stack_t;
|
||||
#endif
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#if HAVE_SYS_RESOURCE_H
|
||||
/* Include sys/time.h here, because...
|
||||
SunOS-4.1.x <sys/resource.h> fails to include <sys/time.h>.
|
||||
This gives "incomplete type" errors for ru_utime and tu_stime. */
|
||||
# if HAVE_SYS_TIME_H
|
||||
# include <sys/time.h>
|
||||
# endif
|
||||
# include <sys/resource.h>
|
||||
#endif
|
||||
|
||||
#if HAVE_UCONTEXT_H
|
||||
# include <ucontext.h>
|
||||
#endif
|
||||
|
||||
#if HAVE_UNISTD_H
|
||||
# include <unistd.h>
|
||||
#endif
|
||||
#ifndef STDERR_FILENO
|
||||
# define STDERR_FILENO 2
|
||||
#endif
|
||||
|
||||
#if DEBUG
|
||||
# include <stdio.h>
|
||||
#endif
|
||||
|
||||
#include "c-stack.h"
|
||||
#include "exitfail.h"
|
||||
|
||||
extern char *program_name;
|
||||
|
||||
/* The user-specified action to take when a SEGV-related program error
|
||||
or stack overflow occurs. */
|
||||
static void (* volatile segv_action) (int);
|
||||
|
||||
/* Translated messages for program errors and stack overflow. Do not
|
||||
translate them in the signal handler, since gettext is not
|
||||
async-signal-safe. */
|
||||
static char const * volatile program_error_message;
|
||||
static char const * volatile stack_overflow_message;
|
||||
|
||||
/* Output an error message, then exit with status EXIT_FAILURE if it
|
||||
appears to have been a stack overflow, or with a core dump
|
||||
otherwise. This function is async-signal-safe. */
|
||||
|
||||
static void die (int) __attribute__ ((noreturn));
|
||||
static void
|
||||
die (int signo)
|
||||
{
|
||||
char const *message =
|
||||
signo ? program_error_message : stack_overflow_message;
|
||||
segv_action (signo);
|
||||
write (STDERR_FILENO, program_name, strlen (program_name));
|
||||
write (STDERR_FILENO, ": ", 2);
|
||||
write (STDERR_FILENO, message, strlen (message));
|
||||
write (STDERR_FILENO, "\n", 1);
|
||||
if (! signo)
|
||||
_exit (exit_failure);
|
||||
kill (getpid (), signo);
|
||||
abort ();
|
||||
}
|
||||
|
||||
#if HAVE_SIGALTSTACK && HAVE_DECL_SIGALTSTACK
|
||||
|
||||
/* Direction of the C runtime stack. This function is
|
||||
async-signal-safe. */
|
||||
|
||||
# if STACK_DIRECTION
|
||||
# define find_stack_direction(ptr) STACK_DIRECTION
|
||||
# else
|
||||
static int
|
||||
find_stack_direction (char const *addr)
|
||||
{
|
||||
char dummy;
|
||||
return ! addr ? find_stack_direction (&dummy) : addr < &dummy ? 1 : -1;
|
||||
}
|
||||
# endif
|
||||
|
||||
# if HAVE_XSI_STACK_OVERFLOW_HEURISTIC
|
||||
# define get_stack_location(argv) 0
|
||||
# else
|
||||
|
||||
# if defined RLIMIT_STACK && defined _SC_PAGESIZE
|
||||
|
||||
/* Return the minimum machine address deducible from ARGV. This
|
||||
includes the addresses of all the strings that ARGV points at, as
|
||||
well as the address of ARGV itself. */
|
||||
|
||||
static char const *
|
||||
min_address_from_argv (char * const *argv)
|
||||
{
|
||||
char const *min = (char const *) argv;
|
||||
char const *p;
|
||||
while ((p = *argv++))
|
||||
if (p < min)
|
||||
min = p;
|
||||
return min;
|
||||
}
|
||||
|
||||
/* Return the maximum machine address deducible from ARGV. */
|
||||
|
||||
static char const *
|
||||
max_address_from_argv (char * const *argv)
|
||||
{
|
||||
char const *max = *argv;
|
||||
char const *max1;
|
||||
char const *p;
|
||||
while ((p = *argv++))
|
||||
if (max < p)
|
||||
max = p;
|
||||
max1 = (char const *) (argv + 1);
|
||||
return max && max1 < max ? max + strlen (max) + 1 : max1;
|
||||
}
|
||||
# endif
|
||||
|
||||
/* The base and size of the stack, determined at startup. */
|
||||
static char const * volatile stack_base;
|
||||
static size_t volatile stack_size;
|
||||
|
||||
/* Store the base and size of the stack into the static variables
|
||||
STACK_BASE and STACK_SIZE. The base is the numerically lowest
|
||||
address in the stack. Return -1 (setting errno) if this cannot be
|
||||
done. */
|
||||
|
||||
static int
|
||||
get_stack_location (char * const *argv)
|
||||
{
|
||||
# if ! (defined RLIMIT_STACK && defined _SC_PAGESIZE)
|
||||
|
||||
errno = ENOTSUP;
|
||||
return -1;
|
||||
|
||||
# else
|
||||
|
||||
struct rlimit rlimit;
|
||||
int r = getrlimit (RLIMIT_STACK, &rlimit);
|
||||
if (r == 0)
|
||||
{
|
||||
char const *base;
|
||||
size_t size = rlimit.rlim_cur;
|
||||
extern char **environ;
|
||||
size_t page_size = sysconf (_SC_PAGESIZE);
|
||||
int stack_direction = find_stack_direction (0);
|
||||
|
||||
# if HAVE_GETCONTEXT && HAVE_DECL_GETCONTEXT
|
||||
ucontext_t context;
|
||||
if (getcontext (&context) == 0)
|
||||
{
|
||||
base = context.uc_stack.ss_sp;
|
||||
if (stack_direction < 0)
|
||||
base -= size - context.uc_stack.ss_size;
|
||||
}
|
||||
else
|
||||
# endif
|
||||
{
|
||||
if (stack_direction < 0)
|
||||
{
|
||||
char const *a = max_address_from_argv (argv);
|
||||
char const *b = max_address_from_argv (environ);
|
||||
base = (a < b ? b : a) - size;
|
||||
base += - (size_t) base % page_size;
|
||||
}
|
||||
else
|
||||
{
|
||||
char const *a = min_address_from_argv (argv);
|
||||
char const *b = min_address_from_argv (environ);
|
||||
base = a < b ? a : b;
|
||||
base -= (size_t) base % page_size;
|
||||
}
|
||||
}
|
||||
|
||||
if (size != rlimit.rlim_cur
|
||||
|| rlimit.rlim_cur < 0
|
||||
|| base + size < base
|
||||
# ifdef RLIM_SAVED_CUR
|
||||
|| rlimit.rlim_cur == RLIM_SAVED_CUR
|
||||
# endif
|
||||
# ifdef RLIM_SAVED_MAX
|
||||
|| rlimit.rlim_cur == RLIM_SAVED_MAX
|
||||
# endif
|
||||
# ifdef RLIM_INFINITY
|
||||
|| rlimit.rlim_cur == RLIM_INFINITY
|
||||
# endif
|
||||
)
|
||||
{
|
||||
errno = EOVERFLOW;
|
||||
return -1;
|
||||
}
|
||||
|
||||
stack_base = base;
|
||||
stack_size = size;
|
||||
|
||||
# if DEBUG
|
||||
fprintf (stderr, "get_stack_location base=%p size=%lx\n",
|
||||
base, (unsigned long) size);
|
||||
# endif
|
||||
}
|
||||
|
||||
return r;
|
||||
|
||||
# endif
|
||||
}
|
||||
# endif
|
||||
|
||||
/* Storage for the alternate signal stack. */
|
||||
static union
|
||||
{
|
||||
char buffer[SIGSTKSZ];
|
||||
|
||||
/* These other members are for proper alignment. There's no
|
||||
standard way to guarantee stack alignment, but this seems enough
|
||||
in practice. */
|
||||
long double ld;
|
||||
long l;
|
||||
void *p;
|
||||
} alternate_signal_stack;
|
||||
|
||||
# if defined SA_ONSTACK && defined SA_SIGINFO && defined _SC_PAGESIZE
|
||||
|
||||
/* Handle a segmentation violation and exit. This function is
|
||||
async-signal-safe. */
|
||||
|
||||
static void segv_handler (int, siginfo_t *, void *) __attribute__((noreturn));
|
||||
static void
|
||||
segv_handler (int signo, siginfo_t *info,
|
||||
void *context __attribute__ ((unused)))
|
||||
{
|
||||
/* Clear SIGNO if it seems to have been a stack overflow. */
|
||||
if (0 < info->si_code)
|
||||
{
|
||||
/* If the faulting address is within the stack, or within one
|
||||
page of the stack end, assume that it is a stack
|
||||
overflow. */
|
||||
# if HAVE_XSI_STACK_OVERFLOW_HEURISTIC
|
||||
ucontext_t const *user_context = context;
|
||||
char const *stack_base = user_context->uc_stack.ss_sp;
|
||||
size_t stack_size = user_context->uc_stack.ss_size;
|
||||
# endif
|
||||
char const *faulting_address = info->si_addr;
|
||||
size_t s = faulting_address - stack_base;
|
||||
size_t page_size = sysconf (_SC_PAGESIZE);
|
||||
if (find_stack_direction (0) < 0)
|
||||
s += page_size;
|
||||
if (s < stack_size + page_size)
|
||||
signo = 0;
|
||||
|
||||
# if DEBUG
|
||||
{
|
||||
char buf[1024];
|
||||
sprintf (buf,
|
||||
"segv_handler fault=%p base=%p size=%lx page=%lx signo=%d\n",
|
||||
faulting_address, stack_base, (unsigned long) stack_size,
|
||||
(unsigned long) page_size, signo);
|
||||
write (STDERR_FILENO, buf, strlen (buf));
|
||||
}
|
||||
# endif
|
||||
}
|
||||
|
||||
die (signo);
|
||||
}
|
||||
# endif
|
||||
|
||||
static void
|
||||
null_action (int signo __attribute__ ((unused)))
|
||||
{
|
||||
}
|
||||
|
||||
/* Assuming ARGV is the argument vector of `main', set up ACTION so
|
||||
that it is invoked on C stack overflow. Return -1 (setting errno)
|
||||
if this cannot be done.
|
||||
|
||||
When ACTION is called, it is passed an argument equal to SIGSEGV
|
||||
for a segmentation violation that does not appear related to stack
|
||||
overflow, and is passed zero otherwise.
|
||||
|
||||
A null ACTION acts like an action that does nothing.
|
||||
|
||||
ACTION must be async-signal-safe. ACTION together with its callees
|
||||
must not require more than SIGSTKSZ bytes of stack space. */
|
||||
|
||||
int
|
||||
c_stack_action (char * const *argv __attribute__ ((unused)),
|
||||
void (*action) (int))
|
||||
{
|
||||
int r = get_stack_location (argv);
|
||||
if (r != 0)
|
||||
return r;
|
||||
|
||||
{
|
||||
stack_t st;
|
||||
st.ss_flags = 0;
|
||||
st.ss_sp = alternate_signal_stack.buffer;
|
||||
st.ss_size = sizeof alternate_signal_stack.buffer;
|
||||
r = sigaltstack (&st, 0);
|
||||
if (r != 0)
|
||||
return r;
|
||||
}
|
||||
|
||||
segv_action = action ? action : null_action;
|
||||
program_error_message = _("program error");
|
||||
stack_overflow_message = _("stack overflow");
|
||||
|
||||
{
|
||||
# if ! (defined SA_ONSTACK && defined SA_SIGINFO && defined _SC_PAGESIZE)
|
||||
return signal (SIGSEGV, die) == SIG_ERR ? -1 : 0;
|
||||
# else
|
||||
struct sigaction act;
|
||||
sigemptyset (&act.sa_mask);
|
||||
|
||||
/* POSIX 1003.1-2001 says SA_RESETHAND implies SA_NODEFER, but
|
||||
this is not true on Solaris 8 at least. It doesn't hurt to use
|
||||
SA_NODEFER here, so leave it in. */
|
||||
act.sa_flags = SA_NODEFER | SA_ONSTACK | SA_RESETHAND | SA_SIGINFO;
|
||||
|
||||
act.sa_sigaction = segv_handler;
|
||||
|
||||
return sigaction (SIGSEGV, &act, 0);
|
||||
# endif
|
||||
}
|
||||
}
|
||||
|
||||
#else /* ! (HAVE_SIGALTSTACK && HAVE_DECL_SIGALTSTACK) */
|
||||
|
||||
int
|
||||
c_stack_action (char * const *argv __attribute__ ((unused)),
|
||||
void (*action) (int) __attribute__ ((unused)))
|
||||
{
|
||||
errno = ENOTSUP;
|
||||
return -1;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#if DEBUG
|
||||
|
||||
int volatile exit_failure;
|
||||
|
||||
static long
|
||||
recurse (char *p)
|
||||
{
|
||||
char array[500];
|
||||
array[0] = 1;
|
||||
return *p + recurse (array);
|
||||
}
|
||||
|
||||
char *program_name;
|
||||
|
||||
int
|
||||
main (int argc __attribute__ ((unused)), char **argv)
|
||||
{
|
||||
program_name = argv[0];
|
||||
fprintf (stderr, "The last line of output should be \"stack overflow\".\n");
|
||||
if (c_stack_action (argv, 0) == 0)
|
||||
return recurse ("\1");
|
||||
perror ("c_stack_action");
|
||||
return 1;
|
||||
}
|
||||
|
||||
#endif /* DEBUG */
|
||||
|
||||
/*
|
||||
Local Variables:
|
||||
compile-command: "gcc -DDEBUG -DHAVE_CONFIG_H -I.. -g -O -Wall -W c-stack.c"
|
||||
End:
|
||||
*/
|
||||
@@ -46,10 +46,6 @@
|
||||
# include <arpa/inet.h>
|
||||
#endif
|
||||
|
||||
#ifndef strdup
|
||||
char *strdup ();
|
||||
#endif
|
||||
|
||||
/* Returns the canonical hostname associated with HOST (allocated in a static
|
||||
buffer), or 0 if it can't be determined. */
|
||||
char *
|
||||
|
||||
300
lib/canonicalize.c
Normal file
300
lib/canonicalize.c
Normal file
@@ -0,0 +1,300 @@
|
||||
/* Return the canonical absolute name of a given file.
|
||||
Copyright (C) 1996-2001, 2002, 2003 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; see the file COPYING.
|
||||
If not, write to the Free Software Foundation,
|
||||
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#ifdef STDC_HEADERS
|
||||
# include <stdlib.h>
|
||||
#else
|
||||
void free ();
|
||||
#endif
|
||||
|
||||
#if defined STDC_HEADERS || defined HAVE_STRING_H
|
||||
# include <string.h>
|
||||
#else
|
||||
# include <strings.h>
|
||||
#endif
|
||||
|
||||
#if HAVE_SYS_PARAM_H
|
||||
# include <sys/param.h>
|
||||
#endif
|
||||
|
||||
#include <sys/stat.h>
|
||||
|
||||
#include <errno.h>
|
||||
|
||||
#include "path-concat.h"
|
||||
#include "xalloc.h"
|
||||
#include "xgetcwd.h"
|
||||
|
||||
#ifndef errno
|
||||
extern int errno;
|
||||
#endif
|
||||
|
||||
#ifndef __set_errno
|
||||
# define __set_errno(Val) errno = (Val)
|
||||
#endif
|
||||
|
||||
#if !HAVE_RESOLVEPATH
|
||||
|
||||
/* If __PTRDIFF_TYPE__ is
|
||||
defined, as with GNU C, use that; that way we don't pollute the
|
||||
namespace with <stddef.h>'s symbols. Otherwise, if <stddef.h> is
|
||||
available, include it and use ptrdiff_t. In traditional C, long is
|
||||
the best that we can do. */
|
||||
|
||||
# ifdef __PTRDIFF_TYPE__
|
||||
# define PTR_INT_TYPE __PTRDIFF_TYPE__
|
||||
# else
|
||||
# ifdef HAVE_STDDEF_H
|
||||
# include <stddef.h>
|
||||
# define PTR_INT_TYPE ptrdiff_t
|
||||
# else
|
||||
# define PTR_INT_TYPE long
|
||||
# endif
|
||||
# endif
|
||||
|
||||
# include "pathmax.h"
|
||||
# include "xreadlink.h"
|
||||
|
||||
# ifdef STAT_MACROS_BROKEN
|
||||
# undef S_ISLNK
|
||||
# endif
|
||||
|
||||
# ifndef S_ISLNK
|
||||
# ifdef S_IFLNK
|
||||
# define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK)
|
||||
# endif
|
||||
# endif
|
||||
|
||||
#endif /* !HAVE_RESOLVEPATH */
|
||||
|
||||
/* Return the canonical absolute name of file NAME. A canonical name
|
||||
does not contain any `.', `..' components nor any repeated path
|
||||
separators ('/') or symlinks. All path components must exist.
|
||||
The result is malloc'd. */
|
||||
|
||||
char *
|
||||
canonicalize_file_name (const char *name)
|
||||
{
|
||||
#if HAVE_RESOLVEPATH
|
||||
|
||||
char *resolved, *extra_buf = NULL;
|
||||
size_t resolved_size;
|
||||
ssize_t resolved_len;
|
||||
|
||||
#else /* !HAVE_RESOLVEPATH */
|
||||
|
||||
char *rpath, *dest, *extra_buf = NULL;
|
||||
const char *start, *end, *rpath_limit;
|
||||
size_t extra_len = 0;
|
||||
int num_links = 0;
|
||||
|
||||
#endif /* !HAVE_RESOLVEPATH */
|
||||
|
||||
if (name == NULL)
|
||||
{
|
||||
__set_errno (EINVAL);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (name[0] == '\0')
|
||||
{
|
||||
__set_errno (ENOENT);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#if HAVE_RESOLVEPATH
|
||||
|
||||
/* All known hosts with resolvepath (e.g. Solaris 7) don't turn
|
||||
relative names into absolute ones, so prepend the working
|
||||
directory if the path is not absolute. */
|
||||
if (name[0] != '/')
|
||||
{
|
||||
char *wd;
|
||||
|
||||
if (!(wd = xgetcwd ()));
|
||||
return NULL;
|
||||
|
||||
extra_buf = path_concat (wd, name, NULL);
|
||||
if (!extra_buf)
|
||||
xalloc_die ();
|
||||
|
||||
name = extra_buf;
|
||||
free (wd);
|
||||
}
|
||||
|
||||
resolved_size = strlen (name);
|
||||
while (1)
|
||||
{
|
||||
resolved_size = 2 * resolved_size + 1;
|
||||
resolved = xmalloc (resolved_size);
|
||||
resolved_len = resolvepath (name, resolved, resolved_size);
|
||||
if (resolved_len < resolved_size)
|
||||
break;
|
||||
free (resolved);
|
||||
}
|
||||
|
||||
if (resolved_len < 0)
|
||||
{
|
||||
free (resolved);
|
||||
resolved = NULL;
|
||||
}
|
||||
|
||||
free (extra_buf);
|
||||
return resolved;
|
||||
|
||||
#else /* !HAVE_RESOLVEPATH */
|
||||
|
||||
if (name[0] != '/')
|
||||
{
|
||||
rpath = xgetcwd ();
|
||||
if (!rpath)
|
||||
return NULL;
|
||||
dest = strchr (rpath, '\0');
|
||||
if (dest < rpath + PATH_MAX)
|
||||
{
|
||||
rpath = xrealloc (rpath, PATH_MAX);
|
||||
rpath_limit = rpath + PATH_MAX;
|
||||
}
|
||||
else
|
||||
{
|
||||
rpath_limit = dest;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
rpath = xmalloc (PATH_MAX);
|
||||
rpath_limit = rpath + PATH_MAX;
|
||||
rpath[0] = '/';
|
||||
dest = rpath + 1;
|
||||
}
|
||||
|
||||
for (start = end = name; *start; start = end)
|
||||
{
|
||||
/* Skip sequence of multiple path-separators. */
|
||||
while (*start == '/')
|
||||
++start;
|
||||
|
||||
/* Find end of path component. */
|
||||
for (end = start; *end && *end != '/'; ++end)
|
||||
/* Nothing. */;
|
||||
|
||||
if (end - start == 0)
|
||||
break;
|
||||
else if (end - start == 1 && start[0] == '.')
|
||||
/* nothing */;
|
||||
else if (end - start == 2 && start[0] == '.' && start[1] == '.')
|
||||
{
|
||||
/* Back up to previous component, ignore if at root already. */
|
||||
if (dest > rpath + 1)
|
||||
while ((--dest)[-1] != '/');
|
||||
}
|
||||
else
|
||||
{
|
||||
struct stat st;
|
||||
|
||||
if (dest[-1] != '/')
|
||||
*dest++ = '/';
|
||||
|
||||
if (dest + (end - start) >= rpath_limit)
|
||||
{
|
||||
PTR_INT_TYPE dest_offset = dest - rpath;
|
||||
size_t new_size = rpath_limit - rpath;
|
||||
|
||||
if (end - start + 1 > PATH_MAX)
|
||||
new_size += end - start + 1;
|
||||
else
|
||||
new_size += PATH_MAX;
|
||||
rpath = (char *) xrealloc (rpath, new_size);
|
||||
rpath_limit = rpath + new_size;
|
||||
|
||||
dest = rpath + dest_offset;
|
||||
}
|
||||
|
||||
dest = memcpy (dest, start, end - start);
|
||||
dest += end - start;
|
||||
*dest = '\0';
|
||||
|
||||
if (lstat (rpath, &st) < 0)
|
||||
goto error;
|
||||
|
||||
# ifdef S_ISLNK
|
||||
if (S_ISLNK (st.st_mode))
|
||||
{
|
||||
char *buf;
|
||||
size_t n, len;
|
||||
|
||||
# ifdef MAXSYMLINKS
|
||||
if (++num_links > MAXSYMLINKS)
|
||||
{
|
||||
__set_errno (ELOOP);
|
||||
goto error;
|
||||
}
|
||||
# endif /* MAXSYMLINKS */
|
||||
|
||||
buf = xreadlink (rpath);
|
||||
if (!buf)
|
||||
goto error;
|
||||
|
||||
n = strlen (buf);
|
||||
len = strlen (end);
|
||||
|
||||
if (!extra_len)
|
||||
{
|
||||
extra_len =
|
||||
((n + len + 1) > PATH_MAX) ? (n + len + 1) : PATH_MAX;
|
||||
extra_buf = xmalloc (extra_len);
|
||||
}
|
||||
else if ((n + len + 1) > extra_len)
|
||||
{
|
||||
extra_len = n + len + 1;
|
||||
extra_buf = xrealloc (extra_buf, extra_len);
|
||||
}
|
||||
|
||||
/* Careful here, end may be a pointer into extra_buf... */
|
||||
memmove (&extra_buf[n], end, len + 1);
|
||||
name = end = memcpy (extra_buf, buf, n);
|
||||
|
||||
if (buf[0] == '/')
|
||||
dest = rpath + 1; /* It's an absolute symlink */
|
||||
else
|
||||
/* Back up to previous component, ignore if at root already: */
|
||||
if (dest > rpath + 1)
|
||||
while ((--dest)[-1] != '/');
|
||||
|
||||
free (buf);
|
||||
}
|
||||
# endif /* S_ISLNK */
|
||||
}
|
||||
}
|
||||
if (dest > rpath + 1 && dest[-1] == '/')
|
||||
--dest;
|
||||
*dest = '\0';
|
||||
|
||||
free (extra_buf);
|
||||
return rpath;
|
||||
|
||||
error:
|
||||
free (extra_buf);
|
||||
free (rpath);
|
||||
return NULL;
|
||||
#endif /* !HAVE_RESOLVEPATH */
|
||||
}
|
||||
3
lib/canonicalize.h
Normal file
3
lib/canonicalize.h
Normal file
@@ -0,0 +1,3 @@
|
||||
#if !HAVE_CANONICALIZE_FILE_NAME
|
||||
char *canonicalize_file_name (const char *);
|
||||
#endif
|
||||
87
lib/cycle-check.c
Normal file
87
lib/cycle-check.c
Normal file
@@ -0,0 +1,87 @@
|
||||
/* help detect directory cycles efficiently
|
||||
Copyright 2003 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; see the file COPYING.
|
||||
If not, write to the Free Software Foundation,
|
||||
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
|
||||
/* Written by Jim Meyering */
|
||||
|
||||
#if HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <stdio.h>
|
||||
#include <assert.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#if HAVE_STDBOOL_H
|
||||
# include <stdbool.h>
|
||||
#else
|
||||
typedef enum {false = 0, true = 1} bool;
|
||||
#endif
|
||||
|
||||
#include "cycle-check.h"
|
||||
#include "xalloc.h"
|
||||
|
||||
#define SAME_INODE(Stat_buf_1, Stat_buf_2) \
|
||||
((Stat_buf_1).st_ino == (Stat_buf_2).st_ino \
|
||||
&& (Stat_buf_1).st_dev == (Stat_buf_2).st_dev)
|
||||
|
||||
#define CC_MAGIC 9827862
|
||||
|
||||
static inline bool
|
||||
is_power_of_two (unsigned int i)
|
||||
{
|
||||
return (i & (i - 1)) == 0;
|
||||
}
|
||||
|
||||
void
|
||||
cycle_check_init (struct cycle_check_state *state)
|
||||
{
|
||||
state->chdir_counter = 0;
|
||||
state->magic = CC_MAGIC;
|
||||
}
|
||||
|
||||
/* In traversing a directory hierarchy, call this function once for each
|
||||
descending chdir call, with SB corresponding to the chdir operand.
|
||||
If SB corresponds to a directory that has already been seen,
|
||||
return true to indicate that there is a directory cycle.
|
||||
Note that this is done `lazily', which means that some of
|
||||
the directories in the cycle may be processed twice before
|
||||
the cycle is detected. */
|
||||
|
||||
bool
|
||||
cycle_check (struct cycle_check_state *state, struct stat const *sb)
|
||||
{
|
||||
assert (state->magic == CC_MAGIC);
|
||||
|
||||
/* If the current directory ever happens to be the same
|
||||
as the one we last recorded for the cycle detection,
|
||||
then it's obviously part of a cycle. */
|
||||
if (state->chdir_counter && SAME_INODE (*sb, state->dev_ino))
|
||||
return true;
|
||||
|
||||
/* If the number of `descending' chdir calls is a power of two,
|
||||
record the dev/ino of the current directory. */
|
||||
if (is_power_of_two (++(state->chdir_counter)))
|
||||
{
|
||||
state->dev_ino.st_dev = sb->st_dev;
|
||||
state->dev_ino.st_ino = sb->st_ino;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
33
lib/cycle-check.h
Normal file
33
lib/cycle-check.h
Normal file
@@ -0,0 +1,33 @@
|
||||
#ifndef CYCLE_CHECK_H
|
||||
# define CYCLE_CHECK_H 1
|
||||
|
||||
/* Before including this file, you need something like the following:
|
||||
|
||||
#if HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
|
||||
#if HAVE_STDBOOL_H
|
||||
# include <stdbool.h>
|
||||
#else
|
||||
typedef enum {false = 0, true = 1} bool;
|
||||
#endif
|
||||
|
||||
so that the proper identifiers are all declared. */
|
||||
|
||||
# include "dev-ino.h"
|
||||
|
||||
struct cycle_check_state
|
||||
{
|
||||
struct dev_ino dev_ino;
|
||||
size_t chdir_counter;
|
||||
long unsigned int magic;
|
||||
};
|
||||
|
||||
void cycle_check_init (struct cycle_check_state *state);
|
||||
bool cycle_check (struct cycle_check_state *state, struct stat const *sb);
|
||||
|
||||
#endif
|
||||
10
lib/dev-ino.h
Normal file
10
lib/dev-ino.h
Normal file
@@ -0,0 +1,10 @@
|
||||
#ifndef DEV_INO_H
|
||||
# define DEV_INO_H 1
|
||||
|
||||
struct dev_ino
|
||||
{
|
||||
ino_t st_ino;
|
||||
dev_t st_dev;
|
||||
};
|
||||
|
||||
#endif
|
||||
40
lib/error.c
40
lib/error.c
@@ -1,5 +1,5 @@
|
||||
/* Error handler for noninteractive utilities
|
||||
Copyright (C) 1990-1998, 2000, 2001, 2002 Free Software Foundation, Inc.
|
||||
Copyright (C) 1990-1998, 2000, 2001, 2002, 2003 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)
|
||||
@@ -93,12 +93,10 @@ extern void __error_at_line (int status, int errnum, const char *file_name,
|
||||
# define error __error
|
||||
# define error_at_line __error_at_line
|
||||
|
||||
# ifdef USE_IN_LIBIO
|
||||
# include <libio/iolibio.h>
|
||||
# define fflush(s) INTUSE(_IO_fflush) (s)
|
||||
# undef putc
|
||||
# define putc(c, fp) INTUSE(_IO_putc) (c, fp)
|
||||
# endif
|
||||
# include <libio/iolibio.h>
|
||||
# define fflush(s) INTUSE(_IO_fflush) (s)
|
||||
# undef putc
|
||||
# define putc(c, fp) INTUSE(_IO_putc) (c, fp)
|
||||
|
||||
#else /* not _LIBC */
|
||||
|
||||
@@ -163,7 +161,7 @@ print_errno_message (int errnum)
|
||||
s = _("Unknown system error");
|
||||
#endif
|
||||
|
||||
#if _LIBC && USE_IN_LIBIO
|
||||
#if _LIBC
|
||||
if (_IO_fwide (stderr, 0) > 0)
|
||||
{
|
||||
__fwprintf (stderr, L": %s", s);
|
||||
@@ -179,7 +177,7 @@ static void
|
||||
error_tail (int status, int errnum, const char *message, va_list args)
|
||||
{
|
||||
# if HAVE_VPRINTF || _LIBC
|
||||
# if _LIBC && USE_IN_LIBIO
|
||||
# if _LIBC
|
||||
if (_IO_fwide (stderr, 0) > 0)
|
||||
{
|
||||
# define ALLOCA_LIMIT 2000
|
||||
@@ -230,7 +228,7 @@ error_tail (int status, int errnum, const char *message, va_list args)
|
||||
++error_message_count;
|
||||
if (errnum)
|
||||
print_errno_message (errnum);
|
||||
# if _LIBC && USE_IN_LIBIO
|
||||
# if _LIBC
|
||||
if (_IO_fwide (stderr, 0) > 0)
|
||||
putwc (L'\n', stderr);
|
||||
else
|
||||
@@ -265,17 +263,13 @@ error (status, errnum, message, va_alist)
|
||||
|
||||
fflush (stdout);
|
||||
#ifdef _LIBC
|
||||
# ifdef USE_IN_LIBIO
|
||||
_IO_flockfile (stderr);
|
||||
# else
|
||||
__flockfile (stderr);
|
||||
# endif
|
||||
#endif
|
||||
if (error_print_progname)
|
||||
(*error_print_progname) ();
|
||||
else
|
||||
{
|
||||
#if _LIBC && USE_IN_LIBIO
|
||||
#if _LIBC
|
||||
if (_IO_fwide (stderr, 0) > 0)
|
||||
__fwprintf (stderr, L"%s: ", program_name);
|
||||
else
|
||||
@@ -299,11 +293,7 @@ error (status, errnum, message, va_alist)
|
||||
#endif
|
||||
|
||||
#ifdef _LIBC
|
||||
# ifdef USE_IN_LIBIO
|
||||
_IO_funlockfile (stderr);
|
||||
# else
|
||||
__funlockfile (stderr);
|
||||
# endif
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -346,17 +336,13 @@ error_at_line (status, errnum, file_name, line_number, message, va_alist)
|
||||
|
||||
fflush (stdout);
|
||||
#ifdef _LIBC
|
||||
# ifdef USE_IN_LIBIO
|
||||
_IO_flockfile (stderr);
|
||||
# else
|
||||
__flockfile (stderr);
|
||||
# endif
|
||||
#endif
|
||||
if (error_print_progname)
|
||||
(*error_print_progname) ();
|
||||
else
|
||||
{
|
||||
#if _LIBC && USE_IN_LIBIO
|
||||
#if _LIBC
|
||||
if (_IO_fwide (stderr, 0) > 0)
|
||||
__fwprintf (stderr, L"%s: ", program_name);
|
||||
else
|
||||
@@ -366,7 +352,7 @@ error_at_line (status, errnum, file_name, line_number, message, va_alist)
|
||||
|
||||
if (file_name != NULL)
|
||||
{
|
||||
#if _LIBC && USE_IN_LIBIO
|
||||
#if _LIBC
|
||||
if (_IO_fwide (stderr, 0) > 0)
|
||||
__fwprintf (stderr, L"%s:%d: ", file_name, line_number);
|
||||
else
|
||||
@@ -390,11 +376,7 @@ error_at_line (status, errnum, file_name, line_number, message, va_alist)
|
||||
#endif
|
||||
|
||||
#ifdef _LIBC
|
||||
# ifdef USE_IN_LIBIO
|
||||
_IO_funlockfile (stderr);
|
||||
# else
|
||||
__funlockfile (stderr);
|
||||
# endif
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* euidaccess -- check if effective user id can access file
|
||||
Copyright (C) 1990, 1991, 1995, 1998, 2000 Free Software Foundation, Inc.
|
||||
Copyright (C) 1990, 1991, 1995, 1998, 2000, 2003 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
@@ -69,6 +69,7 @@ extern int errno;
|
||||
#ifndef __set_errno
|
||||
# define __set_errno(val) errno = (val)
|
||||
#endif
|
||||
#include "euidaccess.h"
|
||||
|
||||
#if defined(EACCES) && !defined(EACCESS)
|
||||
# define EACCESS EACCES
|
||||
|
||||
3
lib/euidaccess.h
Normal file
3
lib/euidaccess.h
Normal file
@@ -0,0 +1,3 @@
|
||||
#if ! HAVE_DECL_EUIDACCESS
|
||||
int euidaccess (char const *file, int mode);
|
||||
#endif
|
||||
@@ -1,7 +1,7 @@
|
||||
/* exclude.c -- exclude file names
|
||||
|
||||
Copyright 1992, 1993, 1994, 1997, 1999, 2000, 2001 Free Software
|
||||
Foundation, Inc.
|
||||
Copyright (C) 1992, 1993, 1994, 1997, 1999, 2000, 2001, 2002, 2003 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
|
||||
@@ -67,9 +67,17 @@ extern int errno;
|
||||
/* Verify a requirement at compile-time (unlike assert, which is runtime). */
|
||||
#define verify(name, assertion) struct name { char a[(assertion) ? 1 : -1]; }
|
||||
|
||||
/* Non-GNU systems lack these options, so we don't need to check them. */
|
||||
#ifndef FNM_CASEFOLD
|
||||
# define FNM_CASEFOLD 0
|
||||
#endif
|
||||
#ifndef FNM_LEADING_DIR
|
||||
# define FNM_LEADING_DIR 0
|
||||
#endif
|
||||
|
||||
verify (EXCLUDE_macros_do_not_collide_with_FNM_macros,
|
||||
(((EXCLUDE_ANCHORED | EXCLUDE_INCLUDE | EXCLUDE_WILDCARDS)
|
||||
& (FNM_FILE_NAME | FNM_NOESCAPE | FNM_PERIOD | FNM_LEADING_DIR
|
||||
& (FNM_PATHNAME | FNM_NOESCAPE | FNM_PERIOD | FNM_LEADING_DIR
|
||||
| FNM_CASEFOLD))
|
||||
== 0));
|
||||
|
||||
@@ -165,7 +173,7 @@ excluded_filename (struct exclude const *ex, char const *f)
|
||||
int options = exclude[i].options;
|
||||
if (excluded == !! (options & EXCLUDE_INCLUDE))
|
||||
{
|
||||
int (*matcher) PARAMS ((char const *, char const *, int)) =
|
||||
int (*matcher) (char const *, char const *, int) =
|
||||
(options & EXCLUDE_WILDCARDS
|
||||
? fnmatch
|
||||
: fnmatch_no_wildcards);
|
||||
@@ -212,8 +220,7 @@ add_exclude (struct exclude *ex, char const *pattern, int options)
|
||||
on failure, 0 on success. */
|
||||
|
||||
int
|
||||
add_exclude_file (void (*add_func) PARAMS ((struct exclude *,
|
||||
char const *, int)),
|
||||
add_exclude_file (void (*add_func) (struct exclude *, char const *, int),
|
||||
struct exclude *ex, char const *filename, int options,
|
||||
char line_end)
|
||||
{
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
/* exclude.h -- declarations for excluding file names
|
||||
Copyright 1992, 1993, 1994, 1997, 1999, 2001 Free Software Foundation, Inc.
|
||||
|
||||
Copyright (C) 1992, 1993, 1994, 1997, 1999, 2001, 2002, 2003 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
|
||||
@@ -18,32 +20,24 @@
|
||||
|
||||
/* Written by Paul Eggert <eggert@twinsun.com> */
|
||||
|
||||
#ifndef PARAMS
|
||||
# if defined PROTOTYPES || (defined __STDC__ && __STDC__)
|
||||
# define PARAMS(Args) Args
|
||||
# else
|
||||
# define PARAMS(Args) ()
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* Exclude options, which can be ORed with fnmatch options. */
|
||||
|
||||
/* Patterns must match the start of file names, instead of matching
|
||||
anywhere after a '/'. */
|
||||
#define EXCLUDE_ANCHORED (1 << 5)
|
||||
#define EXCLUDE_ANCHORED (1 << 30)
|
||||
|
||||
/* Include instead of exclude. */
|
||||
#define EXCLUDE_INCLUDE (1 << 6)
|
||||
#define EXCLUDE_INCLUDE (1 << 29)
|
||||
|
||||
/* '?', '*', '[', and '\\' are special in patterns. Without this
|
||||
option, these characters are ordinary and fnmatch is not used. */
|
||||
#define EXCLUDE_WILDCARDS (1 << 7)
|
||||
#define EXCLUDE_WILDCARDS (1 << 28)
|
||||
|
||||
struct exclude;
|
||||
|
||||
struct exclude *new_exclude PARAMS ((void));
|
||||
void free_exclude PARAMS ((struct exclude *));
|
||||
void add_exclude PARAMS ((struct exclude *, char const *, int));
|
||||
int add_exclude_file PARAMS ((void (*) (struct exclude *, char const *, int),
|
||||
struct exclude *, char const *, int, char));
|
||||
bool excluded_filename PARAMS ((struct exclude const *, char const *));
|
||||
struct exclude *new_exclude (void);
|
||||
void free_exclude (struct exclude *);
|
||||
void add_exclude (struct exclude *, char const *, int);
|
||||
int add_exclude_file (void (*) (struct exclude *, char const *, int),
|
||||
struct exclude *, char const *, int, char);
|
||||
bool excluded_filename (struct exclude const *, char const *);
|
||||
|
||||
14
lib/fchdir-stub.c
Normal file
14
lib/fchdir-stub.c
Normal file
@@ -0,0 +1,14 @@
|
||||
#include <config.h>
|
||||
#include <sys/types.h>
|
||||
#include <errno.h>
|
||||
|
||||
/* A trivial substitute for `fchdir'.
|
||||
|
||||
DJGPP 2.03 and earlier don't have `fchdir'. */
|
||||
|
||||
int
|
||||
fchdir (int fd)
|
||||
{
|
||||
errno = ENOSYS;
|
||||
return -1;
|
||||
}
|
||||
15
lib/fchown-stub.c
Normal file
15
lib/fchown-stub.c
Normal file
@@ -0,0 +1,15 @@
|
||||
#include <config.h>
|
||||
#include <sys/types.h>
|
||||
#include <errno.h>
|
||||
|
||||
/* A trivial substitute for `fchown'.
|
||||
|
||||
DJGPP 2.03 and earlier (and perhaps later) don't have `fchown',
|
||||
so we pretend no-one has permission for this operation. */
|
||||
|
||||
int
|
||||
fchown (int fd, uid_t uid, gid_t gid)
|
||||
{
|
||||
errno = EPERM;
|
||||
return -1;
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 1991, 1992, 1993, 1996, 1997, 1998, 1999, 2001, 2002
|
||||
/* Copyright (C) 1991, 1992, 1993, 1996, 1997, 1998, 1999, 2001, 2002, 2003
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
@@ -35,10 +35,6 @@ extern "C" {
|
||||
non-ANSI C where `const' is problematical. */
|
||||
# endif /* C++ or ANSI C. */
|
||||
|
||||
# ifndef __const
|
||||
# define __const const
|
||||
# endif
|
||||
|
||||
/* We #undef these before defining them because some losing systems
|
||||
(HP-UX A.08.07 for example) define these in <unistd.h>. */
|
||||
# undef FNM_PATHNAME
|
||||
@@ -70,7 +66,7 @@ extern "C" {
|
||||
|
||||
/* Match NAME against the filename pattern PATTERN,
|
||||
returning zero if it matches, FNM_NOMATCH if not. */
|
||||
extern int fnmatch __P ((__const char *__pattern, __const char *__name,
|
||||
extern int fnmatch __P ((const char *__pattern, const char *__name,
|
||||
int __flags));
|
||||
|
||||
# ifdef __cplusplus
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* Copyright (C) 1991, 1992, 1993, 1996, 1997, 1998, 1999, 2000, 2001,
|
||||
2002 Free Software Foundation, Inc.
|
||||
2002, 2003 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
|
||||
@@ -1051,13 +1051,14 @@ EXT (INT opt, const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||||
/* This means we found the end of the pattern. */
|
||||
#define NEW_PATTERN \
|
||||
struct patternlist *newp; \
|
||||
size_t plen; \
|
||||
\
|
||||
if (opt == L('?') || opt == L('@')) \
|
||||
newp = alloca (offsetof (struct patternlist, str) \
|
||||
+ (pattern_len * sizeof (CHAR))); \
|
||||
else \
|
||||
newp = alloca (offsetof (struct patternlist, str) \
|
||||
+ ((p - startp + 1) * sizeof (CHAR))); \
|
||||
plen = (opt == L('?') || opt == L('@') \
|
||||
? pattern_len \
|
||||
: p - startp + 1); \
|
||||
newp = (struct patternlist *) \
|
||||
alloca (offsetof (struct patternlist, str) \
|
||||
+ (plen * sizeof (CHAR))); \
|
||||
*((CHAR *) MEMPCPY (newp->str, startp, p - startp)) = L('\0'); \
|
||||
newp->next = NULL; \
|
||||
*lastp = newp; \
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* fsusage.c -- return space usage of mounted filesystems
|
||||
Copyright (C) 1991, 1992, 1996, 1998, 1999, 2002 Free Software
|
||||
Copyright (C) 1991, 1992, 1996, 1998, 1999, 2002, 2003 Free Software
|
||||
Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
@@ -42,8 +42,6 @@
|
||||
# define CHAR_BIT 8
|
||||
#endif
|
||||
|
||||
int statfs ();
|
||||
|
||||
#if HAVE_SYS_PARAM_H
|
||||
# include <sys/param.h>
|
||||
#endif
|
||||
@@ -81,6 +79,8 @@ int statfs ();
|
||||
int statvfs ();
|
||||
#endif
|
||||
|
||||
#include "full-read.h"
|
||||
|
||||
/* Many space usage primitives use all 1 bits to denote a value that is
|
||||
not applicable or unknown. Propagate this information by returning
|
||||
a uintmax_t value that is all 1 bits if X is all 1 bits, even if X
|
||||
@@ -105,8 +105,6 @@ int statvfs ();
|
||||
otherwise, use PROPAGATE_ALL_ONES. */
|
||||
#define PROPAGATE_TOP_BIT(x) ((x) | ~ (EXTRACT_TOP_BIT (x) - 1))
|
||||
|
||||
int safe_read ();
|
||||
|
||||
/* Fill in the fields of FSP with information about space usage for
|
||||
the filesystem on which PATH resides.
|
||||
DISK is the device on which PATH is mounted, for space-getting
|
||||
@@ -163,7 +161,7 @@ get_fs_usage (const char *path, const char *disk, struct fs_usage *fsp)
|
||||
if (fd < 0)
|
||||
return -1;
|
||||
lseek (fd, (off_t) SUPERBOFF, 0);
|
||||
if (safe_read (fd, (char *) &fsd, sizeof fsd) != sizeof fsd)
|
||||
if (full_read (fd, (char *) &fsd, sizeof fsd) != sizeof fsd)
|
||||
{
|
||||
close (fd);
|
||||
return -1;
|
||||
|
||||
128
lib/fts_.h
Normal file
128
lib/fts_.h
Normal file
@@ -0,0 +1,128 @@
|
||||
/*
|
||||
* Copyright (c) 1989, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)fts.h 8.3 (Berkeley) 8/14/94
|
||||
*/
|
||||
|
||||
#ifndef _FTS_H
|
||||
# define _FTS_H 1
|
||||
|
||||
# include <features.h>
|
||||
# include <sys/types.h>
|
||||
|
||||
|
||||
typedef struct {
|
||||
struct _ftsent *fts_cur; /* current node */
|
||||
struct _ftsent *fts_child; /* linked list of children */
|
||||
struct _ftsent **fts_array; /* sort array */
|
||||
dev_t fts_dev; /* starting device # */
|
||||
char *fts_path; /* path for this descent */
|
||||
int fts_rfd; /* fd for root */
|
||||
int fts_pathlen; /* sizeof(path) */
|
||||
int fts_nitems; /* elements in the sort array */
|
||||
int (*fts_compar) (const void *, const void *); /* compare fn */
|
||||
|
||||
# define FTS_COMFOLLOW 0x0001 /* follow command line symlinks */
|
||||
# define FTS_LOGICAL 0x0002 /* logical walk */
|
||||
# define FTS_NOCHDIR 0x0004 /* don't change directories */
|
||||
# define FTS_NOSTAT 0x0008 /* don't get stat info */
|
||||
# define FTS_PHYSICAL 0x0010 /* physical walk */
|
||||
# define FTS_SEEDOT 0x0020 /* return dot and dot-dot */
|
||||
# define FTS_XDEV 0x0040 /* don't cross devices */
|
||||
# define FTS_WHITEOUT 0x0080 /* return whiteout information */
|
||||
# define FTS_OPTIONMASK 0x00ff /* valid user option mask */
|
||||
|
||||
# define FTS_NAMEONLY 0x0100 /* (private) child names only */
|
||||
# define FTS_STOP 0x0200 /* (private) unrecoverable error */
|
||||
int fts_options; /* fts_open options, global flags */
|
||||
/* Data structure in which to store the fingerprint
|
||||
of each directory we've encountered. */
|
||||
void *fts_dir_signatures;
|
||||
} FTS;
|
||||
|
||||
typedef struct _ftsent {
|
||||
struct _ftsent *fts_cycle; /* cycle node */
|
||||
struct _ftsent *fts_parent; /* parent directory */
|
||||
struct _ftsent *fts_link; /* next file in directory */
|
||||
long fts_number; /* local numeric value */
|
||||
void *fts_pointer; /* local address value */
|
||||
char *fts_accpath; /* access path */
|
||||
char *fts_path; /* root path */
|
||||
int fts_errno; /* errno for this node */
|
||||
int fts_symfd; /* fd for symlink */
|
||||
u_short fts_pathlen; /* strlen(fts_path) */
|
||||
u_short fts_namelen; /* strlen(fts_name) */
|
||||
|
||||
ino_t fts_ino; /* inode */
|
||||
dev_t fts_dev; /* device */
|
||||
nlink_t fts_nlink; /* link count */
|
||||
|
||||
# define FTS_ROOTPARENTLEVEL -1
|
||||
# define FTS_ROOTLEVEL 0
|
||||
short fts_level; /* depth (-1 to N) */
|
||||
|
||||
# define FTS_D 1 /* preorder directory */
|
||||
# define FTS_DC 2 /* directory that causes cycles */
|
||||
# define FTS_DEFAULT 3 /* none of the above */
|
||||
# define FTS_DNR 4 /* unreadable directory */
|
||||
# define FTS_DOT 5 /* dot or dot-dot */
|
||||
# define FTS_DP 6 /* postorder directory */
|
||||
# define FTS_ERR 7 /* error; errno is set */
|
||||
# define FTS_F 8 /* regular file */
|
||||
# define FTS_INIT 9 /* initialized only */
|
||||
# define FTS_NS 10 /* stat(2) failed */
|
||||
# define FTS_NSOK 11 /* no stat(2) requested */
|
||||
# define FTS_SL 12 /* symbolic link */
|
||||
# define FTS_SLNONE 13 /* symbolic link without target */
|
||||
# define FTS_W 14 /* whiteout object */
|
||||
u_short fts_info; /* user flags for FTSENT structure */
|
||||
|
||||
# define FTS_DONTCHDIR 0x01 /* don't chdir .. to the parent */
|
||||
# define FTS_SYMFOLLOW 0x02 /* followed a symlink to get here */
|
||||
u_short fts_flags; /* private flags for FTSENT structure */
|
||||
|
||||
# define FTS_AGAIN 1 /* read node again */
|
||||
# define FTS_FOLLOW 2 /* follow symbolic link */
|
||||
# define FTS_NOINSTR 3 /* no instructions */
|
||||
# define FTS_SKIP 4 /* discard node */
|
||||
u_short fts_instr; /* fts_set() instructions */
|
||||
|
||||
struct stat *fts_statp; /* stat(2) information */
|
||||
char fts_name[1]; /* file name */
|
||||
} FTSENT;
|
||||
|
||||
__BEGIN_DECLS
|
||||
FTSENT *fts_children (FTS *, int) __THROW;
|
||||
int fts_close (FTS *) __THROW;
|
||||
FTS *fts_open (char * const *, int,
|
||||
int (*)(const FTSENT **, const FTSENT **)) __THROW;
|
||||
FTSENT *fts_read (FTS *) __THROW;
|
||||
int fts_set (FTS *, FTSENT *, int) __THROW;
|
||||
__END_DECLS
|
||||
|
||||
#endif /* fts.h */
|
||||
837
lib/ftw.c
Normal file
837
lib/ftw.c
Normal file
@@ -0,0 +1,837 @@
|
||||
/* File tree walker functions.
|
||||
Copyright (C) 1996-2001, 2002, 2003 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
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
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; 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>
|
||||
#endif
|
||||
|
||||
#if __GNUC__
|
||||
# define alloca __builtin_alloca
|
||||
#else
|
||||
# if HAVE_ALLOCA_H
|
||||
# include <alloca.h>
|
||||
# else
|
||||
# ifdef _AIX
|
||||
# pragma alloca
|
||||
# else
|
||||
char *alloca ();
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
#if defined _LIBC
|
||||
# include <dirent.h>
|
||||
# define NAMLEN(dirent) _D_EXACT_NAMLEN (dirent)
|
||||
#else
|
||||
# if HAVE_DIRENT_H
|
||||
# include <dirent.h>
|
||||
# define NAMLEN(dirent) strlen ((dirent)->d_name)
|
||||
# else
|
||||
# define dirent direct
|
||||
# define NAMLEN(dirent) (dirent)->d_namlen
|
||||
# if HAVE_SYS_NDIR_H
|
||||
# include <sys/ndir.h>
|
||||
# endif
|
||||
# if HAVE_SYS_DIR_H
|
||||
# include <sys/dir.h>
|
||||
# endif
|
||||
# if HAVE_NDIR_H
|
||||
# include <ndir.h>
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#include <errno.h>
|
||||
#include <ftw.h>
|
||||
#include <limits.h>
|
||||
#include <search.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#if HAVE_SYS_PARAM_H || defined _LIBC
|
||||
# include <sys/param.h>
|
||||
#endif
|
||||
#ifdef _LIBC
|
||||
# include <include/sys/stat.h>
|
||||
#else
|
||||
# include <sys/stat.h>
|
||||
#endif
|
||||
|
||||
#if ! _LIBC && !HAVE_DECL_STPCPY && !defined stpcpy
|
||||
char *stpcpy ();
|
||||
#endif
|
||||
|
||||
#if ! _LIBC && ! defined HAVE_MEMPCPY && ! defined mempcpy
|
||||
/* Be CAREFUL that there are no side effects in N. */
|
||||
# define mempcpy(D, S, N) ((void *) ((char *) memcpy (D, S, N) + (N)))
|
||||
#endif
|
||||
|
||||
/* #define NDEBUG 1 */
|
||||
#include <assert.h>
|
||||
|
||||
#include "save-cwd.h"
|
||||
|
||||
#ifndef _LIBC
|
||||
# undef __chdir
|
||||
# define __chdir chdir
|
||||
# undef __closedir
|
||||
# define __closedir closedir
|
||||
# undef __fchdir
|
||||
# define __fchdir fchdir
|
||||
# undef __mempcpy
|
||||
# define __mempcpy mempcpy
|
||||
# undef __opendir
|
||||
# define __opendir opendir
|
||||
# undef __readdir64
|
||||
# define __readdir64 readdir
|
||||
# undef __stpcpy
|
||||
# define __stpcpy stpcpy
|
||||
# undef __tdestroy
|
||||
# define __tdestroy tdestroy
|
||||
# undef __tfind
|
||||
# define __tfind tfind
|
||||
# undef __tsearch
|
||||
# define __tsearch tsearch
|
||||
# undef internal_function
|
||||
# define internal_function /* empty */
|
||||
# undef dirent64
|
||||
# define dirent64 dirent
|
||||
# undef MAX
|
||||
# define MAX(a, b) ((a) > (b) ? (a) : (b))
|
||||
#endif
|
||||
|
||||
/* Arrange to make lstat calls go through the wrapper function
|
||||
on systems with an lstat function that does not dereference symlinks
|
||||
that are specified with a trailing slash. */
|
||||
#if ! _LIBC && ! LSTAT_FOLLOWS_SLASHED_SYMLINK
|
||||
int rpl_lstat (const char *, struct stat *);
|
||||
# undef lstat
|
||||
# define lstat(Name, Stat_buf) rpl_lstat(Name, Stat_buf)
|
||||
#endif
|
||||
|
||||
#ifndef __set_errno
|
||||
# define __set_errno(Val) errno = (Val)
|
||||
#endif
|
||||
|
||||
/* Support for the LFS API version. */
|
||||
#ifndef FTW_NAME
|
||||
# define FTW_NAME ftw
|
||||
# define NFTW_NAME nftw
|
||||
# define INO_T ino_t
|
||||
# define FTW_STAT stat
|
||||
# ifdef _LIBC
|
||||
# define LXSTAT __lxstat
|
||||
# define XSTAT __xstat
|
||||
# else
|
||||
# define LXSTAT(V,f,sb) lstat (f,sb)
|
||||
# define XSTAT(V,f,sb) stat (f,sb)
|
||||
# endif
|
||||
# define FTW_FUNC_T __ftw_func_t
|
||||
# define NFTW_FUNC_T __nftw_func_t
|
||||
#endif
|
||||
|
||||
/* We define PATH_MAX if the system does not provide a definition.
|
||||
This does not artificially limit any operation. PATH_MAX is simply
|
||||
used as a guesstimate for the expected maximal path length.
|
||||
Buffers will be enlarged if necessary. */
|
||||
#ifndef PATH_MAX
|
||||
# define PATH_MAX 1024
|
||||
#endif
|
||||
|
||||
#ifndef S_IFMT
|
||||
# define S_IFMT 0170000
|
||||
#endif
|
||||
|
||||
#if STAT_MACROS_BROKEN
|
||||
# undef S_ISLNK
|
||||
#endif
|
||||
|
||||
#ifndef S_ISLNK
|
||||
# ifdef S_IFLNK
|
||||
# define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK)
|
||||
# else
|
||||
# define S_ISLNK(m) 0
|
||||
# endif
|
||||
#endif
|
||||
|
||||
struct dir_data
|
||||
{
|
||||
DIR *stream;
|
||||
char *content;
|
||||
};
|
||||
|
||||
struct known_object
|
||||
{
|
||||
dev_t dev;
|
||||
INO_T ino;
|
||||
};
|
||||
|
||||
struct ftw_data
|
||||
{
|
||||
/* Array with pointers to open directory streams. */
|
||||
struct dir_data **dirstreams;
|
||||
size_t actdir;
|
||||
size_t maxdir;
|
||||
|
||||
/* Buffer containing name of currently processed object. */
|
||||
char *dirbuf;
|
||||
size_t dirbufsize;
|
||||
|
||||
/* Passed as fourth argument to `nftw' callback. The `base' member
|
||||
tracks the content of the `dirbuf'. */
|
||||
struct FTW ftw;
|
||||
|
||||
/* Flags passed to `nftw' function. 0 for `ftw'. */
|
||||
int flags;
|
||||
|
||||
/* Conversion array for flag values. It is the identity mapping for
|
||||
`nftw' calls, otherwise it maps the values to those known by
|
||||
`ftw'. */
|
||||
const int *cvt_arr;
|
||||
|
||||
/* Callback function. We always use the `nftw' form. */
|
||||
NFTW_FUNC_T func;
|
||||
|
||||
/* Device of starting point. Needed for FTW_MOUNT. */
|
||||
dev_t dev;
|
||||
|
||||
/* Data structure for keeping fingerprints of already processed
|
||||
object. This is needed when not using FTW_PHYS. */
|
||||
void *known_objects;
|
||||
};
|
||||
|
||||
|
||||
/* Internally we use the FTW_* constants used for `nftw'. When invoked
|
||||
as `ftw', map each flag to the subset of values used by `ftw'. */
|
||||
static const int nftw_arr[] =
|
||||
{
|
||||
FTW_F, FTW_D, FTW_DNR, FTW_NS, FTW_SL, FTW_DP, FTW_SLN
|
||||
};
|
||||
|
||||
static const int ftw_arr[] =
|
||||
{
|
||||
FTW_F, FTW_D, FTW_DNR, FTW_NS, FTW_F, FTW_D, FTW_NS
|
||||
};
|
||||
|
||||
|
||||
/* Forward declarations of local functions. */
|
||||
static int ftw_dir (struct ftw_data *data, struct FTW_STAT *st)
|
||||
internal_function;
|
||||
|
||||
|
||||
static int
|
||||
object_compare (const void *p1, const void *p2)
|
||||
{
|
||||
/* We don't need a sophisticated and useful comparison. We are only
|
||||
interested in equality. However, we must be careful not to
|
||||
accidentally compare `holes' in the structure. */
|
||||
const struct known_object *kp1 = p1, *kp2 = p2;
|
||||
int cmp1;
|
||||
cmp1 = (kp1->ino > kp2->ino) - (kp1->ino < kp2->ino);
|
||||
if (cmp1 != 0)
|
||||
return cmp1;
|
||||
return (kp1->dev > kp2->dev) - (kp1->dev < kp2->dev);
|
||||
}
|
||||
|
||||
|
||||
static inline int
|
||||
add_object (struct ftw_data *data, struct FTW_STAT *st)
|
||||
{
|
||||
struct known_object *newp = malloc (sizeof (struct known_object));
|
||||
if (newp == NULL)
|
||||
return -1;
|
||||
newp->dev = st->st_dev;
|
||||
newp->ino = st->st_ino;
|
||||
return __tsearch (newp, &data->known_objects, object_compare) ? 0 : -1;
|
||||
}
|
||||
|
||||
|
||||
static inline int
|
||||
find_object (struct ftw_data *data, struct FTW_STAT *st)
|
||||
{
|
||||
struct known_object obj;
|
||||
obj.dev = st->st_dev;
|
||||
obj.ino = st->st_ino;
|
||||
return __tfind (&obj, &data->known_objects, object_compare) != NULL;
|
||||
}
|
||||
|
||||
|
||||
static inline int
|
||||
open_dir_stream (struct ftw_data *data, struct dir_data *dirp)
|
||||
{
|
||||
int result = 0;
|
||||
|
||||
if (data->dirstreams[data->actdir] != NULL)
|
||||
{
|
||||
/* Oh, oh. We must close this stream. Get all remaining
|
||||
entries and store them as a list in the `content' member of
|
||||
the `struct dir_data' variable. */
|
||||
size_t bufsize = 1024;
|
||||
char *buf = malloc (bufsize);
|
||||
|
||||
if (buf == NULL)
|
||||
result = -1;
|
||||
else
|
||||
{
|
||||
DIR *st = data->dirstreams[data->actdir]->stream;
|
||||
struct dirent64 *d;
|
||||
size_t actsize = 0;
|
||||
|
||||
while ((d = __readdir64 (st)) != NULL)
|
||||
{
|
||||
size_t this_len = NAMLEN (d);
|
||||
if (actsize + this_len + 2 >= bufsize)
|
||||
{
|
||||
char *newp;
|
||||
bufsize += MAX (1024, 2 * this_len);
|
||||
newp = (char *) realloc (buf, bufsize);
|
||||
if (newp == NULL)
|
||||
{
|
||||
/* No more memory. */
|
||||
int save_err = errno;
|
||||
free (buf);
|
||||
__set_errno (save_err);
|
||||
result = -1;
|
||||
break;
|
||||
}
|
||||
buf = newp;
|
||||
}
|
||||
|
||||
*((char *) __mempcpy (buf + actsize, d->d_name, this_len))
|
||||
= '\0';
|
||||
actsize += this_len + 1;
|
||||
}
|
||||
|
||||
/* Terminate the list with an additional NUL byte. */
|
||||
buf[actsize++] = '\0';
|
||||
|
||||
/* Shrink the buffer to what we actually need. */
|
||||
data->dirstreams[data->actdir]->content = realloc (buf, actsize);
|
||||
if (data->dirstreams[data->actdir]->content == NULL)
|
||||
{
|
||||
int save_err = errno;
|
||||
free (buf);
|
||||
__set_errno (save_err);
|
||||
result = -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
__closedir (st);
|
||||
data->dirstreams[data->actdir]->stream = NULL;
|
||||
data->dirstreams[data->actdir] = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Open the new stream. */
|
||||
if (result == 0)
|
||||
{
|
||||
const char *name = ((data->flags & FTW_CHDIR)
|
||||
? data->dirbuf + data->ftw.base: data->dirbuf);
|
||||
assert (data->dirstreams[data->actdir] == NULL);
|
||||
|
||||
dirp->stream = __opendir (name);
|
||||
if (dirp->stream == NULL)
|
||||
result = -1;
|
||||
else
|
||||
{
|
||||
dirp->content = NULL;
|
||||
data->dirstreams[data->actdir] = dirp;
|
||||
|
||||
if (++data->actdir == data->maxdir)
|
||||
data->actdir = 0;
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
static inline int
|
||||
process_entry (struct ftw_data *data, struct dir_data *dir, const char *name,
|
||||
size_t namlen)
|
||||
{
|
||||
struct FTW_STAT st;
|
||||
int result = 0;
|
||||
int flag = 0;
|
||||
size_t new_buflen;
|
||||
|
||||
if (name[0] == '.' && (name[1] == '\0'
|
||||
|| (name[1] == '.' && name[2] == '\0')))
|
||||
/* Don't process the "." and ".." entries. */
|
||||
return 0;
|
||||
|
||||
new_buflen = data->ftw.base + namlen + 2;
|
||||
if (data->dirbufsize < new_buflen)
|
||||
{
|
||||
/* Enlarge the buffer. */
|
||||
char *newp;
|
||||
|
||||
data->dirbufsize = 2 * new_buflen;
|
||||
newp = (char *) realloc (data->dirbuf, data->dirbufsize);
|
||||
if (newp == NULL)
|
||||
return -1;
|
||||
data->dirbuf = newp;
|
||||
}
|
||||
|
||||
*((char *) __mempcpy (data->dirbuf + data->ftw.base, name, namlen)) = '\0';
|
||||
|
||||
if ((data->flags & FTW_CHDIR) == 0)
|
||||
name = data->dirbuf;
|
||||
|
||||
if (((data->flags & FTW_PHYS)
|
||||
? LXSTAT (_STAT_VER, name, &st)
|
||||
: XSTAT (_STAT_VER, name, &st)) < 0)
|
||||
{
|
||||
if (errno != EACCES && errno != ENOENT)
|
||||
result = -1;
|
||||
else if (!(data->flags & FTW_PHYS)
|
||||
&& LXSTAT (_STAT_VER, name, &st) == 0
|
||||
&& S_ISLNK (st.st_mode))
|
||||
flag = FTW_SLN;
|
||||
else
|
||||
flag = FTW_NS;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (S_ISDIR (st.st_mode))
|
||||
flag = FTW_D;
|
||||
else if (S_ISLNK (st.st_mode))
|
||||
flag = FTW_SL;
|
||||
else
|
||||
flag = FTW_F;
|
||||
}
|
||||
|
||||
if (result == 0
|
||||
&& (flag == FTW_NS
|
||||
|| !(data->flags & FTW_MOUNT) || st.st_dev == data->dev))
|
||||
{
|
||||
if (flag == FTW_D)
|
||||
{
|
||||
if ((data->flags & FTW_PHYS)
|
||||
|| (!find_object (data, &st)
|
||||
/* Remember the object. */
|
||||
&& (result = add_object (data, &st)) == 0))
|
||||
{
|
||||
/* When processing a directory as part of a depth-first traversal,
|
||||
invoke the user's callback function with type=FTW_DPRE
|
||||
just before processing any entry in that directory.
|
||||
And if the callback sets ftw.skip, then don't process
|
||||
any entries of the directory. */
|
||||
if ((data->flags & FTW_DEPTH)
|
||||
&& (result = (*data->func) (data->dirbuf, &st, FTW_DPRE,
|
||||
&data->ftw)) == 0
|
||||
&& ! data->ftw.skip)
|
||||
result = ftw_dir (data, &st);
|
||||
|
||||
if (result == 0 && (data->flags & FTW_CHDIR))
|
||||
{
|
||||
/* Change back to the parent directory. */
|
||||
int done = 0;
|
||||
if (dir->stream != NULL)
|
||||
if (__fchdir (dirfd (dir->stream)) == 0)
|
||||
done = 1;
|
||||
|
||||
if (!done)
|
||||
{
|
||||
if (data->ftw.base == 1)
|
||||
{
|
||||
if (__chdir ("/") < 0)
|
||||
result = -1;
|
||||
}
|
||||
else
|
||||
if (__chdir ("..") < 0)
|
||||
result = -1;
|
||||
}
|
||||
|
||||
if (result < 0)
|
||||
{
|
||||
result = (*data->func) (data->dirbuf, NULL, FTW_DCHP,
|
||||
&data->ftw);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
result = (*data->func) (data->dirbuf, &st, data->cvt_arr[flag],
|
||||
&data->ftw);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
internal_function
|
||||
ftw_dir (struct ftw_data *data, struct FTW_STAT *st)
|
||||
{
|
||||
struct dir_data dir;
|
||||
struct dirent64 *d;
|
||||
int previous_base = data->ftw.base;
|
||||
int result;
|
||||
char *startp;
|
||||
|
||||
/* Open the stream for this directory. This might require that
|
||||
another stream has to be closed. */
|
||||
result = open_dir_stream (data, &dir);
|
||||
if (result != 0)
|
||||
{
|
||||
if (errno == EACCES)
|
||||
/* We cannot read the directory. Signal this with a special flag. */
|
||||
result = (*data->func) (data->dirbuf, st, FTW_DNR, &data->ftw);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/* First, report the directory (if not depth-first). */
|
||||
if (!(data->flags & FTW_DEPTH))
|
||||
{
|
||||
result = (*data->func) (data->dirbuf, st, FTW_D, &data->ftw);
|
||||
if (result != 0)
|
||||
return result;
|
||||
}
|
||||
|
||||
/* If necessary, change to this directory. */
|
||||
if (data->flags & FTW_CHDIR)
|
||||
{
|
||||
if (__fchdir (dirfd (dir.stream)) < 0)
|
||||
{
|
||||
if (errno == ENOSYS)
|
||||
{
|
||||
if (__chdir (data->dirbuf) < 0)
|
||||
result = -1;
|
||||
}
|
||||
else
|
||||
result = -1;
|
||||
}
|
||||
|
||||
if (result != 0)
|
||||
{
|
||||
int save_err = errno;
|
||||
__closedir (dir.stream);
|
||||
__set_errno (save_err);
|
||||
|
||||
if (data->actdir-- == 0)
|
||||
data->actdir = data->maxdir - 1;
|
||||
data->dirstreams[data->actdir] = NULL;
|
||||
|
||||
/* We cannot change to the directory.
|
||||
Signal this with a special flag. */
|
||||
result = (*data->func) (data->dirbuf, st, FTW_DCH, &data->ftw);
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
/* Next, update the `struct FTW' information. */
|
||||
++data->ftw.level;
|
||||
startp = strchr (data->dirbuf, '\0');
|
||||
/* There always must be a directory name. */
|
||||
assert (startp != data->dirbuf);
|
||||
if (startp[-1] != '/')
|
||||
*startp++ = '/';
|
||||
data->ftw.base = startp - data->dirbuf;
|
||||
|
||||
while (dir.stream != NULL && (d = __readdir64 (dir.stream)) != NULL)
|
||||
{
|
||||
result = process_entry (data, &dir, d->d_name, NAMLEN (d));
|
||||
if (result != 0)
|
||||
break;
|
||||
}
|
||||
|
||||
if (dir.stream != NULL)
|
||||
{
|
||||
/* The stream is still open. I.e., we did not need more
|
||||
descriptors. Simply close the stream now. */
|
||||
int save_err = errno;
|
||||
|
||||
assert (dir.content == NULL);
|
||||
|
||||
__closedir (dir.stream);
|
||||
__set_errno (save_err);
|
||||
|
||||
if (data->actdir-- == 0)
|
||||
data->actdir = data->maxdir - 1;
|
||||
data->dirstreams[data->actdir] = NULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
int save_err;
|
||||
char *runp = dir.content;
|
||||
|
||||
while (result == 0 && *runp != '\0')
|
||||
{
|
||||
char *endp = strchr (runp, '\0');
|
||||
|
||||
result = process_entry (data, &dir, runp, endp - runp);
|
||||
|
||||
runp = endp + 1;
|
||||
}
|
||||
|
||||
save_err = errno;
|
||||
free (dir.content);
|
||||
__set_errno (save_err);
|
||||
}
|
||||
|
||||
/* Prepare the return, revert the `struct FTW' information. */
|
||||
data->dirbuf[data->ftw.base - 1] = '\0';
|
||||
--data->ftw.level;
|
||||
data->ftw.base = previous_base;
|
||||
|
||||
/* Finally, if we process depth-first report the directory. */
|
||||
if (result == 0 && (data->flags & FTW_DEPTH))
|
||||
result = (*data->func) (data->dirbuf, st, FTW_DP, &data->ftw);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
#ifdef _LIBC
|
||||
# define ISSLASH(C) ((C) == '/')
|
||||
# define FILESYSTEM_PREFIX_LEN(Filename) 0
|
||||
#endif
|
||||
|
||||
/* In general, we can't use the builtin `basename' function if available,
|
||||
since it has different meanings in different environments.
|
||||
In some environments the builtin `basename' modifies its argument.
|
||||
|
||||
Return the address of the last file name component of NAME. If
|
||||
NAME has no file name components because it is all slashes, return
|
||||
NAME if it is empty, the address of its last slash otherwise. */
|
||||
|
||||
static char *
|
||||
base_name (char const *name)
|
||||
{
|
||||
char const *base = name + FILESYSTEM_PREFIX_LEN (name);
|
||||
char const *p;
|
||||
|
||||
for (p = base; *p; p++)
|
||||
{
|
||||
if (ISSLASH (*p))
|
||||
{
|
||||
/* Treat multiple adjacent slashes like a single slash. */
|
||||
do p++;
|
||||
while (ISSLASH (*p));
|
||||
|
||||
/* If the file name ends in slash, use the trailing slash as
|
||||
the basename if no non-slashes have been found. */
|
||||
if (! *p)
|
||||
{
|
||||
if (ISSLASH (*base))
|
||||
base = p - 1;
|
||||
break;
|
||||
}
|
||||
|
||||
/* *P is a non-slash preceded by a slash. */
|
||||
base = p;
|
||||
}
|
||||
}
|
||||
|
||||
return (char *) base;
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
internal_function
|
||||
ftw_startup (const char *dir, int is_nftw, NFTW_FUNC_T func, int descriptors,
|
||||
int flags)
|
||||
{
|
||||
struct ftw_data data;
|
||||
struct FTW_STAT st;
|
||||
int result = 0;
|
||||
int save_err;
|
||||
struct saved_cwd cwd;
|
||||
size_t dir_len;
|
||||
|
||||
/* First make sure the parameters are reasonable. */
|
||||
if (dir[0] == '\0')
|
||||
{
|
||||
__set_errno (ENOENT);
|
||||
return -1;
|
||||
}
|
||||
|
||||
data.maxdir = descriptors < 1 ? 1 : descriptors;
|
||||
data.actdir = 0;
|
||||
data.dirstreams = (struct dir_data **) alloca (data.maxdir
|
||||
* sizeof (struct dir_data *));
|
||||
if (data.dirstreams == NULL)
|
||||
return -1;
|
||||
memset (data.dirstreams, '\0', data.maxdir * sizeof (struct dir_data *));
|
||||
|
||||
/* PATH_MAX is always defined when we get here. */
|
||||
dir_len = strlen (dir);
|
||||
data.dirbufsize = MAX (2 * dir_len, PATH_MAX);
|
||||
data.dirbuf = (char *) malloc (data.dirbufsize);
|
||||
if (data.dirbuf == NULL)
|
||||
return -1;
|
||||
memcpy (data.dirbuf, dir, dir_len + 1);
|
||||
|
||||
data.ftw.level = 0;
|
||||
|
||||
/* Find offset of basename. */
|
||||
data.ftw.base = base_name (data.dirbuf) - data.dirbuf;
|
||||
|
||||
data.flags = flags;
|
||||
|
||||
/* This assignment might seem to be strange but it is what we want.
|
||||
The trick is that the first three arguments to the `ftw' and
|
||||
`nftw' callback functions are equal. Therefore we can call in
|
||||
every case the callback using the format of the `nftw' version
|
||||
and get the correct result since the stack layout for a function
|
||||
call in C allows this. */
|
||||
data.func = func;
|
||||
|
||||
/* Since we internally use the complete set of FTW_* values we need
|
||||
to reduce the value range before calling a `ftw' callback. */
|
||||
data.cvt_arr = is_nftw ? nftw_arr : ftw_arr;
|
||||
|
||||
/* No object known so far. */
|
||||
data.known_objects = NULL;
|
||||
|
||||
/* Now go to the directory containing the initial file/directory. */
|
||||
if (flags & FTW_CHDIR)
|
||||
{
|
||||
if (save_cwd (&cwd))
|
||||
result = -1;
|
||||
else if (data.ftw.base > 0)
|
||||
{
|
||||
/* Change to the directory the file is in. In data.dirbuf
|
||||
we have a writable copy of the file name. Just NUL
|
||||
terminate it for now and change the directory. */
|
||||
if (data.ftw.base == 1)
|
||||
/* I.e., the file is in the root directory. */
|
||||
result = __chdir ("/");
|
||||
else
|
||||
{
|
||||
char ch = data.dirbuf[data.ftw.base - 1];
|
||||
data.dirbuf[data.ftw.base - 1] = '\0';
|
||||
result = __chdir (data.dirbuf);
|
||||
data.dirbuf[data.ftw.base - 1] = ch;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Get stat info for start directory. */
|
||||
if (result == 0)
|
||||
{
|
||||
const char *name = ((data.flags & FTW_CHDIR)
|
||||
? data.dirbuf + data.ftw.base
|
||||
: data.dirbuf);
|
||||
|
||||
if (((flags & FTW_PHYS)
|
||||
? LXSTAT (_STAT_VER, name, &st)
|
||||
: XSTAT (_STAT_VER, name, &st)) < 0)
|
||||
{
|
||||
if (!(flags & FTW_PHYS)
|
||||
&& errno == ENOENT
|
||||
&& LXSTAT (_STAT_VER, name, &st) == 0
|
||||
&& S_ISLNK (st.st_mode))
|
||||
result = (*data.func) (data.dirbuf, &st, data.cvt_arr[FTW_SLN],
|
||||
&data.ftw);
|
||||
else
|
||||
/* No need to call the callback since we cannot say anything
|
||||
about the object. */
|
||||
result = -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (S_ISDIR (st.st_mode))
|
||||
{
|
||||
/* Remember the device of the initial directory in case
|
||||
FTW_MOUNT is given. */
|
||||
data.dev = st.st_dev;
|
||||
|
||||
/* We know this directory now. */
|
||||
if (!(flags & FTW_PHYS))
|
||||
result = add_object (&data, &st);
|
||||
|
||||
if (result == 0)
|
||||
{
|
||||
/* If we're doing a depth-first traversal, give the user
|
||||
a chance to prune the top-level directory. */
|
||||
if ((flags & FTW_DEPTH)
|
||||
&& (result = (*data.func) (data.dirbuf, &st, FTW_DPRE,
|
||||
&data.ftw)) == 0
|
||||
&& ! data.ftw.skip)
|
||||
result = ftw_dir (&data, &st);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
int flag = S_ISLNK (st.st_mode) ? FTW_SL : FTW_F;
|
||||
|
||||
result = (*data.func) (data.dirbuf, &st, data.cvt_arr[flag],
|
||||
&data.ftw);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Return to the start directory (if necessary). */
|
||||
if (flags & FTW_CHDIR)
|
||||
{
|
||||
save_err = errno;
|
||||
/* If restore_cwd fails and there wasn't a prior failure,
|
||||
then let this new errno override any prior value.
|
||||
FIXME: ideally, we'd be able to return some indication
|
||||
of what the failure means. Otherwise, the caller will
|
||||
have a hard time distinguishing between e.g., `out of memory'
|
||||
and this sort of failure. */
|
||||
if (restore_cwd (&cwd) && result == 0)
|
||||
{
|
||||
save_err = errno;
|
||||
result = -1;
|
||||
}
|
||||
|
||||
__set_errno (save_err);
|
||||
}
|
||||
|
||||
/* Free all memory. */
|
||||
save_err = errno;
|
||||
__tdestroy (data.known_objects, free);
|
||||
free (data.dirbuf);
|
||||
__set_errno (save_err);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Entry points. */
|
||||
|
||||
int
|
||||
FTW_NAME (path, func, descriptors)
|
||||
const char *path;
|
||||
FTW_FUNC_T func;
|
||||
int descriptors;
|
||||
{
|
||||
return ftw_startup (path, 0, (NFTW_FUNC_T) func, descriptors, 0);
|
||||
}
|
||||
|
||||
int
|
||||
NFTW_NAME (path, func, descriptors, flags)
|
||||
const char *path;
|
||||
NFTW_FUNC_T func;
|
||||
int descriptors;
|
||||
int flags;
|
||||
{
|
||||
return ftw_startup (path, 1, func, descriptors, flags);
|
||||
}
|
||||
186
lib/ftw_.h
Normal file
186
lib/ftw_.h
Normal file
@@ -0,0 +1,186 @@
|
||||
/* Copyright (C) 1992, 1996, 1997, 1998, 1999, 2003
|
||||
Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
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
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
|
||||
/*
|
||||
* X/Open Portability Guide 4.2: ftw.h
|
||||
*/
|
||||
|
||||
#ifndef _FTW_H
|
||||
# define _FTW_H 1
|
||||
|
||||
# ifdef _LIBC
|
||||
# include <features.h>
|
||||
# else
|
||||
# undef __THROW
|
||||
# define __THROW
|
||||
# undef __BEGIN_DECLS
|
||||
# define __BEGIN_DECLS
|
||||
# undef __END_DECLS
|
||||
# define __END_DECLS
|
||||
# endif
|
||||
|
||||
# include <sys/types.h>
|
||||
# include <sys/stat.h>
|
||||
|
||||
/* When compiling stand-alone on a system that does not define
|
||||
__USE_XOPEN_EXTENDED, define that symbol so that all the
|
||||
required declarations appear. */
|
||||
# if ! defined _LIBC && ! defined __USE_XOPEN_EXTENDED
|
||||
# define FTW_H_STANDALONE 1
|
||||
# define __USE_XOPEN_EXTENDED 1
|
||||
# endif
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
/* Values for the FLAG argument to the user function passed to `ftw'
|
||||
and 'nftw'. */
|
||||
enum
|
||||
{
|
||||
FTW_F, /* Regular file. */
|
||||
# define FTW_F FTW_F
|
||||
FTW_D, /* Directory. */
|
||||
# define FTW_D FTW_D
|
||||
FTW_DNR, /* Unreadable directory. */
|
||||
# define FTW_DNR FTW_DNR
|
||||
FTW_NS, /* Unstatable file. */
|
||||
# define FTW_NS FTW_NS
|
||||
|
||||
/* Can't chdir to named directory. This can happen only when using
|
||||
FTW_CHDIR. Note that although we can't chdir into that directory,
|
||||
we were able to stat it, so SB (2nd argument to callback) is valid. */
|
||||
FTW_DCH,
|
||||
# define FTW_DCH FTW_DCH
|
||||
|
||||
/* Can't chdir to parent of named directory. This can happen only when
|
||||
using FTW_CHDIR. Unlike for FTW_DCH, in this case, SB is not valid.
|
||||
In fact, it is NULL. */
|
||||
FTW_DCHP,
|
||||
# define FTW_DCHP FTW_DCHP
|
||||
|
||||
/* nftw calls the user-supplied function at most twice for each directory
|
||||
it encounters. When calling it the first time, it passes this value
|
||||
as the `type'. */
|
||||
FTW_DPRE,
|
||||
# define FTW_DPRE FTW_DPRE
|
||||
|
||||
# if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
|
||||
|
||||
FTW_SL, /* Symbolic link. */
|
||||
# define FTW_SL FTW_SL
|
||||
# endif
|
||||
|
||||
# ifdef __USE_XOPEN_EXTENDED
|
||||
/* These flags are only passed from the `nftw' function. */
|
||||
FTW_DP, /* Directory, all subdirs have been visited. */
|
||||
# define FTW_DP FTW_DP
|
||||
FTW_SLN /* Symbolic link naming non-existing file. */
|
||||
# define FTW_SLN FTW_SLN
|
||||
|
||||
# endif /* extended X/Open */
|
||||
};
|
||||
|
||||
|
||||
# ifdef __USE_XOPEN_EXTENDED
|
||||
/* Flags for fourth argument of `nftw'. */
|
||||
enum
|
||||
{
|
||||
FTW_PHYS = 1, /* Perform physical walk, ignore symlinks. */
|
||||
# define FTW_PHYS FTW_PHYS
|
||||
FTW_MOUNT = 2, /* Report only files on same file system as the
|
||||
argument. */
|
||||
# define FTW_MOUNT FTW_MOUNT
|
||||
FTW_CHDIR = 4, /* Change to current directory while processing it. */
|
||||
# define FTW_CHDIR FTW_CHDIR
|
||||
FTW_DEPTH = 8 /* Report files in directory before directory itself.*/
|
||||
# define FTW_DEPTH FTW_DEPTH
|
||||
};
|
||||
|
||||
/* Structure used for fourth argument to callback function for `nftw'. */
|
||||
struct FTW
|
||||
{
|
||||
int base;
|
||||
int level;
|
||||
int skip;
|
||||
};
|
||||
# endif /* extended X/Open */
|
||||
|
||||
|
||||
/* Convenient types for callback functions. */
|
||||
typedef int (*__ftw_func_t) (const char *__filename,
|
||||
const struct stat *__status, int __flag);
|
||||
# ifdef __USE_LARGEFILE64
|
||||
typedef int (*__ftw64_func_t) (const char *__filename,
|
||||
const struct stat64 *__status, int __flag);
|
||||
# endif
|
||||
# ifdef __USE_XOPEN_EXTENDED
|
||||
typedef int (*__nftw_func_t) (const char *__filename,
|
||||
const struct stat *__status, int __flag,
|
||||
struct FTW *__info);
|
||||
# ifdef __USE_LARGEFILE64
|
||||
typedef int (*__nftw64_func_t) (const char *__filename,
|
||||
const struct stat64 *__status,
|
||||
int __flag, struct FTW *__info);
|
||||
# endif
|
||||
# endif
|
||||
|
||||
/* Call a function on every element in a directory tree. */
|
||||
# ifndef __USE_FILE_OFFSET64
|
||||
extern int ftw (const char *__dir, __ftw_func_t __func, int __descriptors)
|
||||
__THROW;
|
||||
# else
|
||||
# ifdef __REDIRECT
|
||||
extern int __REDIRECT (ftw, (const char *__dir, __ftw_func_t __func,
|
||||
int __descriptors) __THROW, ftw64);
|
||||
# else
|
||||
# define ftw ftw64
|
||||
# endif
|
||||
# endif
|
||||
# ifdef __USE_LARGEFILE64
|
||||
extern int ftw64 (const char *__dir, __ftw64_func_t __func,
|
||||
int __descriptors) __THROW;
|
||||
# endif
|
||||
|
||||
# ifdef __USE_XOPEN_EXTENDED
|
||||
/* Call a function on every element in a directory tree. FLAG allows
|
||||
to specify the behaviour more detailed. */
|
||||
# ifndef __USE_FILE_OFFSET64
|
||||
extern int nftw (const char *__dir, __nftw_func_t __func, int __descriptors,
|
||||
int __flag) __THROW;
|
||||
# else
|
||||
# ifdef __REDIRECT
|
||||
extern int __REDIRECT (nftw, (const char *__dir, __nftw_func_t __func,
|
||||
int __descriptors, int __flag) __THROW, nftw64);
|
||||
# else
|
||||
# define nftw nftw64
|
||||
# endif
|
||||
# endif
|
||||
# ifdef __USE_LARGEFILE64
|
||||
extern int nftw64 (const char *__dir, __nftw64_func_t __func,
|
||||
int __descriptors, int __flag) __THROW;
|
||||
# endif
|
||||
# endif
|
||||
|
||||
/* If we defined __USE_XOPEN_EXTENDED above, undefine it here. */
|
||||
# ifdef FTW_H_STANDALONE
|
||||
# undef __USE_XOPEN_EXTENDED
|
||||
# endif
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#endif /* ftw.h */
|
||||
@@ -1,5 +1,5 @@
|
||||
/* stime -- set the system clock
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
/* An interface to read that retries after partial reads and interrupts.
|
||||
Copyright (C) 2002, 2003 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
|
||||
@@ -15,24 +15,5 @@
|
||||
along with this program; if not, write to the Free Software Foundation,
|
||||
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
|
||||
/* David MacKenzie <djm@ai.mit.edu> */
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/time.h>
|
||||
|
||||
/* Set the system time to *WHEN seconds past the start of 1970 GMT. */
|
||||
|
||||
int
|
||||
stime (when)
|
||||
time_t *when;
|
||||
{
|
||||
struct timeval tv;
|
||||
|
||||
tv.tv_sec = *when;
|
||||
tv.tv_usec = 0;
|
||||
return settimeofday (&tv, (struct timezone *) 0);
|
||||
}
|
||||
#define FULL_READ
|
||||
#include "full-write.c"
|
||||
24
lib/full-read.h
Normal file
24
lib/full-read.h
Normal file
@@ -0,0 +1,24 @@
|
||||
/* An interface to read() that reads all it is asked to read.
|
||||
|
||||
Copyright (C) 2002 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, read to the Free Software Foundation,
|
||||
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
/* Read COUNT bytes at BUF to descriptor FD, retrying if interrupted
|
||||
or if partial reads occur. Return the number of bytes successfully
|
||||
read, setting errno if that is less than COUNT. errno = 0 means EOF. */
|
||||
extern size_t full_read (int fd, void *buf, size_t count);
|
||||
@@ -1,7 +1,6 @@
|
||||
/* An interface to write() that writes all it is asked to write.
|
||||
/* An interface to read and write that retries (if necessary) until complete.
|
||||
|
||||
Copyright (C) 1993, 1994, 1997, 1998, 1999, 2000, 2001, 2002 Free Software
|
||||
Foundation, Inc.
|
||||
Copyright (C) 1993, 1994, 1997-2003 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
|
||||
@@ -21,41 +20,61 @@
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
/* Specification. */
|
||||
#include "full-write.h"
|
||||
|
||||
#include <errno.h>
|
||||
#ifndef errno
|
||||
extern int errno;
|
||||
#endif
|
||||
|
||||
#include "safe-write.h"
|
||||
#ifdef FULL_READ
|
||||
# include "full-read.h"
|
||||
# include "safe-read.h"
|
||||
# define safe_rw safe_read
|
||||
# define full_rw full_read
|
||||
# undef const
|
||||
# define const /* empty */
|
||||
#else
|
||||
# include "full-write.h"
|
||||
# include "safe-write.h"
|
||||
# define safe_rw safe_write
|
||||
# define full_rw full_write
|
||||
#endif
|
||||
|
||||
/* Write COUNT bytes at BUF to descriptor FD, retrying if interrupted
|
||||
or if partial writes occur. Return the number of bytes successfully
|
||||
written, setting errno if that is less than COUNT. */
|
||||
#ifdef FULL_READ
|
||||
/* Set errno to zero upon EOF. */
|
||||
# define ZERO_BYTE_TRANSFER_ERRNO 0
|
||||
#else
|
||||
/* Some buggy drivers return 0 when one tries to write beyond
|
||||
a device's end. (Example: Linux 1.2.13 on /dev/fd0.)
|
||||
Set errno to ENOSPC so they get a sensible diagnostic. */
|
||||
# define ZERO_BYTE_TRANSFER_ERRNO ENOSPC
|
||||
#endif
|
||||
|
||||
/* Write(read) COUNT bytes at BUF to(from) descriptor FD, retrying if
|
||||
interrupted or if a partial write(read) occurs. Return the number
|
||||
of bytes transferred.
|
||||
When writing, set errno if fewer than COUNT bytes are written.
|
||||
When reading, if fewer than COUNT bytes are read, you must examine
|
||||
errno to distinguish failure from EOF (errno == 0). */
|
||||
size_t
|
||||
full_write (int fd, const void *buf, size_t count)
|
||||
full_rw (int fd, const void *buf, size_t count)
|
||||
{
|
||||
size_t total_written = 0;
|
||||
size_t total = 0;
|
||||
const char *ptr = buf;
|
||||
|
||||
while (count > 0)
|
||||
{
|
||||
size_t written = safe_write (fd, ptr, count);
|
||||
if (written == (size_t)-1)
|
||||
size_t n_rw = safe_rw (fd, ptr, count);
|
||||
if (n_rw == (size_t) -1)
|
||||
break;
|
||||
if (written == 0)
|
||||
if (n_rw == 0)
|
||||
{
|
||||
/* Some buggy drivers return 0 when you fall off a device's
|
||||
end. (Example: Linux 1.2.13 on /dev/fd0.) */
|
||||
errno = ENOSPC;
|
||||
errno = ZERO_BYTE_TRANSFER_ERRNO;
|
||||
break;
|
||||
}
|
||||
total_written += written;
|
||||
ptr += written;
|
||||
count -= written;
|
||||
total += n_rw;
|
||||
ptr += n_rw;
|
||||
count -= n_rw;
|
||||
}
|
||||
|
||||
return total_written;
|
||||
return total;
|
||||
}
|
||||
|
||||
74
lib/getcwd.c
Normal file
74
lib/getcwd.c
Normal file
@@ -0,0 +1,74 @@
|
||||
/* Provide a replacement for the POSIX getcwd function.
|
||||
Copyright (C) 2003 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. */
|
||||
|
||||
/* written by Jim Meyering */
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include <errno.h>
|
||||
#ifndef errno
|
||||
extern int errno;
|
||||
#endif
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
#include "pathmax.h"
|
||||
#include "same.h"
|
||||
|
||||
/* Guess high, because that makes the test below more conservative.
|
||||
But this is a kludge, because we should really use
|
||||
pathconf (".", _PC_NAME_MAX). But it's probably not worth the cost. */
|
||||
#define KLUDGE_POSIX_NAME_MAX 255
|
||||
|
||||
#define MAX_SAFE_LEN (PATH_MAX - 1 - KLUDGE_POSIX_NAME_MAX - 1)
|
||||
|
||||
/* Undefine getcwd here, as near the use as possible, in case any
|
||||
of the files included above define it to rpl_getcwd. */
|
||||
#undef getcwd
|
||||
|
||||
/* Any declaration of getcwd from headers included above has
|
||||
been changed to a declaration of rpl_getcwd. Declare it here. */
|
||||
extern char *getcwd (char *buf, size_t size);
|
||||
|
||||
/* This is a wrapper for getcwd.
|
||||
Some implementations (at least GNU libc 2.3.1 + linux-2.4.20) return
|
||||
non-NULL for a working directory name longer than PATH_MAX, yet the
|
||||
returned string is a strict prefix of the desired directory name.
|
||||
Upon such a failure, free the offending string, set errno to
|
||||
ENAMETOOLONG, and return NULL.
|
||||
|
||||
I've heard that this is a Linux kernel bug, and that it has
|
||||
been fixed between 2.4.21-pre3 and 2.4.21-pre4. */
|
||||
|
||||
char *
|
||||
rpl_getcwd (char *buf, size_t size)
|
||||
{
|
||||
char *cwd = getcwd (buf, size);
|
||||
|
||||
if (cwd == NULL)
|
||||
return NULL;
|
||||
|
||||
if (strlen (cwd) <= MAX_SAFE_LEN || same_name (cwd, "."))
|
||||
return cwd;
|
||||
|
||||
free (cwd);
|
||||
errno = ENAMETOOLONG;
|
||||
return NULL;
|
||||
}
|
||||
@@ -908,7 +908,7 @@ get_date (const char *p, const time_t *now)
|
||||
pc.local_zones_seen = 0;
|
||||
pc.zones_seen = 0;
|
||||
|
||||
#if HAVE_TM_ZONE
|
||||
#if HAVE_STRUCT_TM_TM_ZONE
|
||||
pc.local_time_zone_table[0].name = tmp->tm_zone;
|
||||
pc.local_time_zone_table[0].type = tLOCAL_ZONE;
|
||||
pc.local_time_zone_table[0].value = tmp->tm_isdst;
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
#include <stdio.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
char *xmalloc ();
|
||||
#include "xalloc.h"
|
||||
|
||||
/* On at least Ultrix 4.3 and NextStep 3.2, getgroups (0, 0) always fails.
|
||||
On other systems, it returns the number of supplemental groups for the
|
||||
|
||||
@@ -31,9 +31,7 @@
|
||||
#endif
|
||||
|
||||
#include "group-member.h"
|
||||
|
||||
char *xmalloc ();
|
||||
char *xrealloc ();
|
||||
#include "xalloc.h"
|
||||
|
||||
struct group_info
|
||||
{
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* idcache.c -- map user and group IDs, cached for speed
|
||||
Copyright (C) 1985, 1988, 1989, 1990, 1997, 1998 Free Software
|
||||
Copyright (C) 1985, 1988, 1989, 1990, 1997, 1998, 2003 Free Software
|
||||
Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
@@ -35,6 +35,8 @@
|
||||
# include <unistd.h>
|
||||
#endif
|
||||
|
||||
#include "xalloc.h"
|
||||
|
||||
#ifndef _POSIX_VERSION
|
||||
struct passwd *getpwuid ();
|
||||
struct passwd *getpwnam ();
|
||||
@@ -42,9 +44,6 @@ struct group *getgrgid ();
|
||||
struct group *getgrnam ();
|
||||
#endif
|
||||
|
||||
char *xmalloc ();
|
||||
char *xstrdup ();
|
||||
|
||||
#ifdef __DJGPP__
|
||||
static char digits[] = "0123456789";
|
||||
#endif
|
||||
|
||||
13
lib/lstat-stub.c
Normal file
13
lib/lstat-stub.c
Normal file
@@ -0,0 +1,13 @@
|
||||
#include <config.h>
|
||||
#include <sys/stat.h>
|
||||
|
||||
/* A trivial substitute for `lstat'.
|
||||
|
||||
DJGPP 2.03 and earlier don't have `lstat' and don't support
|
||||
symlinks. */
|
||||
|
||||
int
|
||||
lstat (const char *fname, struct stat *st_buf)
|
||||
{
|
||||
return stat (fname, st_buf);
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
/* makepath.c -- Ensure that a directory path exists.
|
||||
Copyright (C) 1990, 1997, 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
|
||||
Copyright (C) 1990, 1997, 1998, 1999, 2000, 2002, 2003 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
|
||||
@@ -58,9 +59,7 @@ char *alloca ();
|
||||
# include <stdlib.h>
|
||||
#endif
|
||||
|
||||
#if HAVE_ERRNO_H
|
||||
# include <errno.h>
|
||||
#endif
|
||||
#include <errno.h>
|
||||
|
||||
#ifndef errno
|
||||
extern int errno;
|
||||
@@ -118,10 +117,16 @@ extern int errno;
|
||||
Restore working directory. */ \
|
||||
if (do_chdir) \
|
||||
{ \
|
||||
int _fail = restore_cwd (&cwd, NULL, NULL); \
|
||||
if (restore_cwd (&cwd) != 0) \
|
||||
{ \
|
||||
int _saved_errno = errno; \
|
||||
error (0, errno, \
|
||||
_("failed to return to initial working directory")); \
|
||||
free_cwd (&cwd); \
|
||||
errno = _saved_errno; \
|
||||
return 1; \
|
||||
} \
|
||||
free_cwd (&cwd); \
|
||||
if (_fail) \
|
||||
return 1; \
|
||||
} \
|
||||
} \
|
||||
while (0)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* Determine the number of screen columns needed for a string.
|
||||
Copyright (C) 2000-2002 Free Software Foundation, Inc.
|
||||
Copyright (C) 2000-2003 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
|
||||
@@ -17,6 +17,14 @@
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
/* Avoid a clash of our mbswidth() with a function of the same name defined
|
||||
in UnixWare 7.1.1 <wchar.h>. We need this #include before the #define
|
||||
below. */
|
||||
#if HAVE_WCHAR_H
|
||||
# include <wchar.h>
|
||||
#endif
|
||||
|
||||
|
||||
/* Optional flags to influence mbswidth/mbsnwidth behavior. */
|
||||
|
||||
/* If this bit is set, return -1 upon finding an invalid or incomplete
|
||||
|
||||
100
lib/md5.c
100
lib/md5.c
@@ -1,6 +1,6 @@
|
||||
/* md5.c - Functions to compute MD5 message digest of files or memory blocks
|
||||
according to the definition of MD5 in RFC 1321 from April 1992.
|
||||
Copyright (C) 1995, 1996, 2001 Free Software Foundation, Inc.
|
||||
Copyright (C) 1995, 1996, 2001, 2003 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.
|
||||
|
||||
@@ -43,6 +43,15 @@
|
||||
# if __BYTE_ORDER == __BIG_ENDIAN
|
||||
# define WORDS_BIGENDIAN 1
|
||||
# endif
|
||||
/* We need to keep the namespace clean so define the MD5 function
|
||||
protected using leading __ . */
|
||||
# define md5_init_ctx __md5_init_ctx
|
||||
# define md5_process_block __md5_process_block
|
||||
# define md5_process_bytes __md5_process_bytes
|
||||
# define md5_finish_ctx __md5_finish_ctx
|
||||
# define md5_read_ctx __md5_read_ctx
|
||||
# define md5_stream __md5_stream
|
||||
# define md5_buffer __md5_buffer
|
||||
#endif
|
||||
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
@@ -52,6 +61,12 @@
|
||||
# define SWAP(n) (n)
|
||||
#endif
|
||||
|
||||
#define BLOCKSIZE 4096
|
||||
/* Ensure that BLOCKSIZE is a multiple of 64. */
|
||||
#if BLOCKSIZE % 64 != 0
|
||||
/* FIXME-someday (soon?): use #error instead of this kludge. */
|
||||
"invalid BLOCKSIZE"
|
||||
#endif
|
||||
|
||||
/* This array contains the bytes used to pad the buffer to the next
|
||||
64-byte boundary. (RFC 1321, 3.1: Step 1) */
|
||||
@@ -132,8 +147,6 @@ md5_stream (stream, resblock)
|
||||
FILE *stream;
|
||||
void *resblock;
|
||||
{
|
||||
/* Important: BLOCKSIZE must be a multiple of 64. */
|
||||
#define BLOCKSIZE 4096
|
||||
struct md5_ctx ctx;
|
||||
char buffer[BLOCKSIZE + 72];
|
||||
size_t sum;
|
||||
@@ -151,19 +164,31 @@ md5_stream (stream, resblock)
|
||||
sum = 0;
|
||||
|
||||
/* Read block. Take care for partial reads. */
|
||||
do
|
||||
while (1)
|
||||
{
|
||||
n = fread (buffer + sum, 1, BLOCKSIZE - sum, stream);
|
||||
|
||||
sum += n;
|
||||
}
|
||||
while (sum < BLOCKSIZE && n != 0);
|
||||
if (n == 0 && ferror (stream))
|
||||
return 1;
|
||||
|
||||
/* If end of file is reached, end the loop. */
|
||||
if (n == 0)
|
||||
break;
|
||||
if (sum == BLOCKSIZE)
|
||||
break;
|
||||
|
||||
if (n == 0)
|
||||
{
|
||||
/* Check for the error flag IFF N == 0, so that we don't
|
||||
exit the loop after a partial read due to e.g., EAGAIN
|
||||
or EWOULDBLOCK. */
|
||||
if (ferror (stream))
|
||||
return 1;
|
||||
goto process_partial_block;
|
||||
}
|
||||
|
||||
/* We've read at least one byte, so ignore errors. But always
|
||||
check for EOF, since feof may be true even though N > 0.
|
||||
Otherwise, we could end up calling fread after EOF. */
|
||||
if (feof (stream))
|
||||
goto process_partial_block;
|
||||
}
|
||||
|
||||
/* Process buffer with BLOCKSIZE bytes. Note that
|
||||
BLOCKSIZE % 64 == 0
|
||||
@@ -171,7 +196,9 @@ md5_stream (stream, resblock)
|
||||
md5_process_block (buffer, BLOCKSIZE, &ctx);
|
||||
}
|
||||
|
||||
/* Add the last bytes if necessary. */
|
||||
process_partial_block:;
|
||||
|
||||
/* Process any remaining bytes. */
|
||||
if (sum > 0)
|
||||
md5_process_bytes (buffer, sum, &ctx);
|
||||
|
||||
@@ -219,13 +246,14 @@ md5_process_bytes (buffer, len, ctx)
|
||||
memcpy (&ctx->buffer[left_over], buffer, add);
|
||||
ctx->buflen += add;
|
||||
|
||||
if (left_over + add > 64)
|
||||
if (ctx->buflen > 64)
|
||||
{
|
||||
md5_process_block (ctx->buffer, (left_over + add) & ~63, ctx);
|
||||
md5_process_block (ctx->buffer, ctx->buflen & ~63, ctx);
|
||||
|
||||
ctx->buflen &= 63;
|
||||
/* The regions in the following copy operation cannot overlap. */
|
||||
memcpy (ctx->buffer, &ctx->buffer[(left_over + add) & ~63],
|
||||
(left_over + add) & 63);
|
||||
ctx->buflen = (left_over + add) & 63;
|
||||
ctx->buflen);
|
||||
}
|
||||
|
||||
buffer = (const char *) buffer + add;
|
||||
@@ -233,18 +261,46 @@ md5_process_bytes (buffer, len, ctx)
|
||||
}
|
||||
|
||||
/* Process available complete blocks. */
|
||||
if (len > 64)
|
||||
if (len >= 64)
|
||||
{
|
||||
md5_process_block (buffer, len & ~63, ctx);
|
||||
buffer = (const char *) buffer + (len & ~63);
|
||||
len &= 63;
|
||||
#if !_STRING_ARCH_unaligned
|
||||
/* To check alignment gcc has an appropriate operator. Other
|
||||
compilers don't. */
|
||||
# if __GNUC__ >= 2
|
||||
# define UNALIGNED_P(p) (((md5_uintptr) p) % __alignof__ (md5_uint32) != 0)
|
||||
# else
|
||||
# define UNALIGNED_P(p) (((md5_uintptr) p) % sizeof (md5_uint32) != 0)
|
||||
# endif
|
||||
if (UNALIGNED_P (buffer))
|
||||
while (len > 64)
|
||||
{
|
||||
md5_process_block (memcpy (ctx->buffer, buffer, 64), 64, ctx);
|
||||
buffer = (const char *) buffer + 64;
|
||||
len -= 64;
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
md5_process_block (buffer, len & ~63, ctx);
|
||||
buffer = (const char *) buffer + (len & ~63);
|
||||
len &= 63;
|
||||
}
|
||||
}
|
||||
|
||||
/* Move remaining bytes in internal buffer. */
|
||||
if (len > 0)
|
||||
{
|
||||
memcpy (ctx->buffer, buffer, len);
|
||||
ctx->buflen = len;
|
||||
size_t left_over = ctx->buflen;
|
||||
|
||||
memcpy (&ctx->buffer[left_over], buffer, len);
|
||||
left_over += len;
|
||||
if (left_over >= 64)
|
||||
{
|
||||
md5_process_block (ctx->buffer, 64, ctx);
|
||||
left_over -= 64;
|
||||
memcpy (ctx->buffer, &ctx->buffer[64], left_over);
|
||||
}
|
||||
ctx->buflen = left_over;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -35,8 +35,9 @@
|
||||
is usually not possible. */
|
||||
|
||||
#ifdef _LIBC
|
||||
# include <sys/types.h>
|
||||
typedef u_int32_t md5_uint32;
|
||||
# include <stdint.h>
|
||||
typedef uint32_t md5_uint32;
|
||||
typedef uintptr_t md5_uintptr;
|
||||
#else
|
||||
# if defined __STDC__ && __STDC__
|
||||
# define UINT_MAX_32_BITS 4294967295U
|
||||
@@ -68,6 +69,9 @@ typedef u_int32_t md5_uint32;
|
||||
# endif
|
||||
# endif
|
||||
# endif
|
||||
/* We have to make a guess about the integer type equivalent in size
|
||||
to pointers which should always be correct. */
|
||||
typedef unsigned long int md5_uintptr;
|
||||
#endif
|
||||
|
||||
#undef __P
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* mountlist.c -- return a list of mounted filesystems
|
||||
Copyright (C) 1991, 1992, 1997-2002 Free Software Foundation, Inc.
|
||||
Copyright (C) 1991, 1992, 1997-2003 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
|
||||
@@ -730,16 +730,27 @@ read_filesystem_list (int need_fs_type)
|
||||
int bufsize;
|
||||
char *entries, *thisent;
|
||||
struct vmount *vmp;
|
||||
int n_entries;
|
||||
int i;
|
||||
|
||||
/* Ask how many bytes to allocate for the mounted filesystem info. */
|
||||
mntctl (MCTL_QUERY, sizeof bufsize, (struct vmount *) &bufsize);
|
||||
if (mntctl (MCTL_QUERY, sizeof bufsize, (struct vmount *) &bufsize) != 0)
|
||||
return NULL;
|
||||
entries = xmalloc (bufsize);
|
||||
|
||||
/* Get the list of mounted filesystems. */
|
||||
mntctl (MCTL_QUERY, bufsize, (struct vmount *) entries);
|
||||
n_entries = mntctl (MCTL_QUERY, bufsize, (struct vmount *) entries);
|
||||
if (n_entries < 0)
|
||||
{
|
||||
int saved_errno = errno;
|
||||
free (entries);
|
||||
errno = saved_errno;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
for (thisent = entries; thisent < entries + bufsize;
|
||||
thisent += vmp->vmt_length)
|
||||
for (i = 0, thisent = entries;
|
||||
i < n_entries;
|
||||
i++, thisent += vmp->vmt_length)
|
||||
{
|
||||
char *options, *ignore;
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* obstack.h - object stack macros
|
||||
Copyright (C) 1988,89,90,91,92,93,94,96,97,98,99 Free Software Foundation, Inc.
|
||||
Copyright (C) 1988,89,90,91,92,93,94,96,97,98,99,2003 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.
|
||||
@@ -123,8 +123,12 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
#ifndef __INT_TO_PTR
|
||||
#if defined __STDC__ && __STDC__
|
||||
# define __INT_TO_PTR(P) ((void *) ((P) + (char *) 0))
|
||||
#else
|
||||
# define __INT_TO_PTR(P) ((P) + (char *) 0)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* We need the type of the resulting object. If __PTRDIFF_TYPE__ is
|
||||
defined, as with GNU C, use that; that way we don't pollute the
|
||||
@@ -368,12 +372,12 @@ extern int obstack_exit_failure;
|
||||
|
||||
# define obstack_object_size(OBSTACK) \
|
||||
__extension__ \
|
||||
({ struct obstack *__o = (OBSTACK); \
|
||||
({ struct obstack const *__o = (OBSTACK); \
|
||||
(unsigned) (__o->next_free - __o->object_base); })
|
||||
|
||||
# define obstack_room(OBSTACK) \
|
||||
__extension__ \
|
||||
({ struct obstack *__o = (OBSTACK); \
|
||||
({ struct obstack const *__o = (OBSTACK); \
|
||||
(unsigned) (__o->chunk_limit - __o->next_free); })
|
||||
|
||||
# define obstack_make_room(OBSTACK,length) \
|
||||
@@ -386,7 +390,7 @@ __extension__ \
|
||||
|
||||
# define obstack_empty_p(OBSTACK) \
|
||||
__extension__ \
|
||||
({ struct obstack *__o = (OBSTACK); \
|
||||
({ struct obstack const *__o = (OBSTACK); \
|
||||
(__o->chunk->prev == 0 && __o->next_free - __o->chunk->contents == 0); })
|
||||
|
||||
# define obstack_grow(OBSTACK,where,length) \
|
||||
|
||||
231
lib/physmem.c
231
lib/physmem.c
@@ -1,5 +1,5 @@
|
||||
/* Calculate the size of physical memory.
|
||||
Copyright 2000, 2001 Free Software Foundation, Inc.
|
||||
Copyright 2000, 2001, 2003 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
|
||||
@@ -21,8 +21,6 @@
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#include "physmem.h"
|
||||
|
||||
#if HAVE_UNISTD_H
|
||||
# include <unistd.h>
|
||||
#endif
|
||||
@@ -31,12 +29,63 @@
|
||||
# include <sys/pstat.h>
|
||||
#endif
|
||||
|
||||
#if HAVE_SYS_SYSMP_H
|
||||
# include <sys/sysmp.h>
|
||||
#endif
|
||||
|
||||
#if HAVE_SYS_SYSINFO_H && HAVE_MACHINE_HAL_SYSINFO_H
|
||||
# include <sys/sysinfo.h>
|
||||
# include <machine/hal_sysinfo.h>
|
||||
#endif
|
||||
|
||||
#if HAVE_SYS_TABLE_H
|
||||
# include <sys/table.h>
|
||||
#endif
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
#if HAVE_SYS_PARAM_H
|
||||
# include <sys/param.h>
|
||||
#endif
|
||||
|
||||
#if HAVE_SYS_SYSCTL_H
|
||||
# include <sys/sysctl.h>
|
||||
#endif
|
||||
|
||||
#if HAVE_SYS_SYSTEMCFG_H
|
||||
# include <sys/systemcfg.h>
|
||||
#endif
|
||||
|
||||
#ifdef _WIN32
|
||||
# define WIN32_LEAN_AND_MEAN
|
||||
# include <windows.h>
|
||||
/* MEMORYSTATUSEX is missing from older windows headers, so define
|
||||
a local replacement. */
|
||||
typedef struct
|
||||
{
|
||||
DWORD dwLength;
|
||||
DWORD dwMemoryLoad;
|
||||
DWORDLONG ullTotalPhys;
|
||||
DWORDLONG ullAvailPhys;
|
||||
DWORDLONG ullTotalPageFile;
|
||||
DWORDLONG ullAvailPageFile;
|
||||
DWORDLONG ullTotalVirtual;
|
||||
DWORDLONG ullAvailVirtual;
|
||||
DWORDLONG ullAvailExtendedVirtual;
|
||||
} lMEMORYSTATUSEX;
|
||||
typedef WINBOOL (WINAPI *PFN_MS_EX) (lMEMORYSTATUSEX*);
|
||||
#endif
|
||||
|
||||
#include "physmem.h"
|
||||
|
||||
#define ARRAY_SIZE(a) (sizeof (a) / sizeof ((a)[0]))
|
||||
|
||||
/* Return the total amount of physical memory. */
|
||||
double
|
||||
physmem_total (void)
|
||||
physmem_total ()
|
||||
{
|
||||
#if defined _SC_PHYS_PAGES && defined _SC_PAGESIZE
|
||||
{
|
||||
{ /* This works on linux-gnu, solaris2 and cygwin. */
|
||||
double pages = sysconf (_SC_PHYS_PAGES);
|
||||
double pagesize = sysconf (_SC_PAGESIZE);
|
||||
if (0 <= pages && 0 <= pagesize)
|
||||
@@ -45,7 +94,7 @@ physmem_total (void)
|
||||
#endif
|
||||
|
||||
#if HAVE_PSTAT_GETSTATIC
|
||||
{
|
||||
{ /* This works on hpux11. */
|
||||
struct pst_static pss;
|
||||
if (0 <= pstat_getstatic (&pss, sizeof pss, 1, 0))
|
||||
{
|
||||
@@ -57,16 +106,90 @@ physmem_total (void)
|
||||
}
|
||||
#endif
|
||||
|
||||
#if HAVE_SYSMP && defined MP_SAGET && defined MPSA_RMINFO && defined _SC_PAGESIZE
|
||||
{ /* This works on irix6. */
|
||||
struct rminfo realmem;
|
||||
if (sysmp (MP_SAGET, MPSA_RMINFO, &realmem, sizeof realmem) == 0)
|
||||
{
|
||||
double pagesize = sysconf (_SC_PAGESIZE);
|
||||
double pages = realmem.physmem;
|
||||
if (0 <= pages && 0 <= pagesize)
|
||||
return pages * pagesize;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#if HAVE_GETSYSINFO && defined GSI_PHYSMEM
|
||||
{ /* This works on Tru64 UNIX V4/5. */
|
||||
int physmem;
|
||||
|
||||
if (getsysinfo (GSI_PHYSMEM, (caddr_t) &physmem, sizeof (physmem),
|
||||
NULL, NULL, NULL) == 1)
|
||||
{
|
||||
double kbytes = physmem;
|
||||
|
||||
if (0 <= kbytes)
|
||||
return kbytes * 1024.0;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#if HAVE_SYSCTL && defined HW_PHYSMEM
|
||||
{ /* This works on *bsd and darwin. */
|
||||
unsigned int physmem;
|
||||
size_t len = sizeof physmem;
|
||||
static int mib[2] = { CTL_HW, HW_PHYSMEM };
|
||||
|
||||
if (sysctl (mib, ARRAY_SIZE (mib), &physmem, &len, NULL, 0) == 0
|
||||
&& len == sizeof (physmem))
|
||||
return (double) physmem;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if HAVE__SYSTEM_CONFIGURATION
|
||||
/* This works on AIX. */
|
||||
return _system_configuration.physmem;
|
||||
#endif
|
||||
|
||||
#if defined _WIN32
|
||||
{ /* this works on windows */
|
||||
PFN_MS_EX pfnex;
|
||||
HMODULE h = GetModuleHandle ("kernel32.dll");
|
||||
|
||||
if (!h)
|
||||
return 0.0;
|
||||
|
||||
/* Use GlobalMemoryStatusEx if available. */
|
||||
if ((pfnex = (PFN_MS_EX) GetProcAddress (h, "GlobalMemoryStatusEx")))
|
||||
{
|
||||
lMEMORYSTATUSEX lms_ex;
|
||||
lms_ex.dwLength = sizeof lms_ex;
|
||||
if (!pfnex (&lms_ex))
|
||||
return 0.0;
|
||||
return (double) lms_ex.ullTotalPhys;
|
||||
}
|
||||
|
||||
/* Fall back to GlobalMemoryStatus which is always available.
|
||||
but returns wrong results for physical memory > 4GB. */
|
||||
else
|
||||
{
|
||||
MEMORYSTATUS ms;
|
||||
GlobalMemoryStatus (&ms);
|
||||
return (double) ms.dwTotalPhys;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Guess 64 MB. It's probably an older host, so guess small. */
|
||||
return 64 * 1024 * 1024;
|
||||
}
|
||||
|
||||
/* Return the amount of physical memory available. */
|
||||
double
|
||||
physmem_available (void)
|
||||
physmem_available ()
|
||||
{
|
||||
#if defined _SC_AVPHYS_PAGES && defined _SC_PAGESIZE
|
||||
{
|
||||
{ /* This works on linux-gnu, solaris2 and cygwin. */
|
||||
double pages = sysconf (_SC_AVPHYS_PAGES);
|
||||
double pagesize = sysconf (_SC_PAGESIZE);
|
||||
if (0 <= pages && 0 <= pagesize)
|
||||
@@ -75,7 +198,7 @@ physmem_available (void)
|
||||
#endif
|
||||
|
||||
#if HAVE_PSTAT_GETSTATIC && HAVE_PSTAT_GETDYNAMIC
|
||||
{
|
||||
{ /* This works on hpux11. */
|
||||
struct pst_static pss;
|
||||
struct pst_dynamic psd;
|
||||
if (0 <= pstat_getstatic (&pss, sizeof pss, 1, 0)
|
||||
@@ -89,6 +212,96 @@ physmem_available (void)
|
||||
}
|
||||
#endif
|
||||
|
||||
#if HAVE_SYSMP && defined MP_SAGET && defined MPSA_RMINFO && defined _SC_PAGESIZE
|
||||
{ /* This works on irix6. */
|
||||
struct rminfo realmem;
|
||||
if (sysmp (MP_SAGET, MPSA_RMINFO, &realmem, sizeof realmem) == 0)
|
||||
{
|
||||
double pagesize = sysconf (_SC_PAGESIZE);
|
||||
double pages = realmem.availrmem;
|
||||
if (0 <= pages && 0 <= pagesize)
|
||||
return pages * pagesize;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#if HAVE_TABLE && defined TBL_VMSTATS
|
||||
{ /* This works on Tru64 UNIX V4/5. */
|
||||
struct tbl_vmstats vmstats;
|
||||
|
||||
if (table (TBL_VMSTATS, 0, &vmstats, 1, sizeof (vmstats)) == 1)
|
||||
{
|
||||
double pages = vmstats.free_count;
|
||||
double pagesize = vmstats.pagesize;
|
||||
|
||||
if (0 <= pages && 0 <= pagesize)
|
||||
return pages * pagesize;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#if HAVE_SYSCTL && defined HW_USERMEM
|
||||
{ /* This works on *bsd and darwin. */
|
||||
unsigned int usermem;
|
||||
size_t len = sizeof usermem;
|
||||
static int mib[2] = { CTL_HW, HW_USERMEM };
|
||||
|
||||
if (sysctl (mib, ARRAY_SIZE (mib), &usermem, &len, NULL, 0) == 0
|
||||
&& len == sizeof (usermem))
|
||||
return (double) usermem;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined _WIN32
|
||||
{ /* this works on windows */
|
||||
PFN_MS_EX pfnex;
|
||||
HMODULE h = GetModuleHandle ("kernel32.dll");
|
||||
|
||||
if (!h)
|
||||
return 0.0;
|
||||
|
||||
/* Use GlobalMemoryStatusEx if available. */
|
||||
if ((pfnex = (PFN_MS_EX) GetProcAddress (h, "GlobalMemoryStatusEx")))
|
||||
{
|
||||
lMEMORYSTATUSEX lms_ex;
|
||||
lms_ex.dwLength = sizeof lms_ex;
|
||||
if (!pfnex (&lms_ex))
|
||||
return 0.0;
|
||||
return (double) lms_ex.ullAvailPhys;
|
||||
}
|
||||
|
||||
/* Fall back to GlobalMemoryStatus which is always available.
|
||||
but returns wrong results for physical memory > 4GB */
|
||||
else
|
||||
{
|
||||
MEMORYSTATUS ms;
|
||||
GlobalMemoryStatus (&ms);
|
||||
return (double) ms.dwAvailPhys;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Guess 25% of physical memory. */
|
||||
return physmem_total () / 4;
|
||||
}
|
||||
|
||||
|
||||
#if DEBUG
|
||||
|
||||
# include <stdio.h>
|
||||
# include <stdlib.h>
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
printf ("%12.f %12.f\n", physmem_total (), physmem_available ());
|
||||
exit (0);
|
||||
}
|
||||
|
||||
#endif /* DEBUG */
|
||||
|
||||
/*
|
||||
Local Variables:
|
||||
compile-command: "gcc -DDEBUG -DHAVE_CONFIG_H -I.. -g -O -Wall -W physmem.c"
|
||||
End:
|
||||
*/
|
||||
|
||||
10
lib/quote.c
10
lib/quote.c
@@ -1,5 +1,5 @@
|
||||
/* quote.c - quote arguments for output
|
||||
Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
|
||||
Copyright (C) 1998, 1999, 2000, 2001, 2003 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,16 +28,16 @@
|
||||
#include "quotearg.h"
|
||||
#include "quote.h"
|
||||
|
||||
/* Return an unambiguous printable representated, allocated in slot N,
|
||||
for NAME, suitable for diagnostics. */
|
||||
/* Return an unambiguous printable representation of NAME,
|
||||
allocated in slot N, suitable for diagnostics. */
|
||||
char const *
|
||||
quote_n (int n, char const *name)
|
||||
{
|
||||
return quotearg_n_style (n, locale_quoting_style, name);
|
||||
}
|
||||
|
||||
/* Return an unambiguous printable representation of NAME, suitable
|
||||
for diagnostics. */
|
||||
/* Return an unambiguous printable representation of NAME,
|
||||
suitable for diagnostics. */
|
||||
char const *
|
||||
quote (char const *name)
|
||||
{
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* Provide a non-threads replacement for the POSIX raise function.
|
||||
Copyright (C) 2002 Free Software Foundation, Inc.
|
||||
Copyright (C) 2002, 2003 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
|
||||
@@ -19,10 +19,6 @@
|
||||
|
||||
#include <config.h>
|
||||
|
||||
/* Undefine raise here so any system prototype is not redefined
|
||||
to be a prototype for rpl_raise. */
|
||||
#undef raise
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <signal.h>
|
||||
#if HAVE_UNISTD_H
|
||||
@@ -30,7 +26,7 @@
|
||||
#endif
|
||||
|
||||
int
|
||||
rpl_raise (int sig)
|
||||
raise (int sig)
|
||||
{
|
||||
return kill (getpid (), sig);
|
||||
}
|
||||
|
||||
15
lib/readlink-stub.c
Normal file
15
lib/readlink-stub.c
Normal file
@@ -0,0 +1,15 @@
|
||||
#include <config.h>
|
||||
#include <stddef.h>
|
||||
#include <errno.h>
|
||||
|
||||
/* A trivial substitute for `readlink'.
|
||||
|
||||
DJGPP 2.03 and earlier don't have `readlink' and don't support
|
||||
symlinks. */
|
||||
|
||||
int
|
||||
readlink (const char *filename, char *buffer, size_t size)
|
||||
{
|
||||
errno = EINVAL;
|
||||
return -1;
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
/* readtokens.c -- Functions for reading tokens from an input stream.
|
||||
Copyright (C) 1990-1991, 1999, 2001 Jim Meyering.
|
||||
Copyright (C) 1990-1991, 1999, 2001, 2003 Jim Meyering.
|
||||
|
||||
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
|
||||
@@ -113,7 +113,7 @@ readtoken (FILE *stream,
|
||||
for (j = 0; j < sizeof (isdelim); j++)
|
||||
isdelim[j] = 0;
|
||||
for (t = delim; *t; t++)
|
||||
isdelim[(unsigned int) *t] = 1;
|
||||
isdelim[(unsigned char) *t] = 1;
|
||||
}
|
||||
|
||||
p = tokenbuffer->buffer;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* GNU's read utmp module.
|
||||
Copyright (C) 1992-2001 Free Software Foundation, Inc.
|
||||
Copyright (C) 1992-2001, 2003 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
|
||||
@@ -29,11 +29,15 @@
|
||||
# include <strings.h>
|
||||
#endif /* STDC_HEADERS || HAVE_STRING_H */
|
||||
|
||||
#if STDC_HEADERS
|
||||
# include <stdlib.h>
|
||||
#else
|
||||
void *realloc ();
|
||||
#endif
|
||||
|
||||
#include "readutmp.h"
|
||||
#include "unlocked-io.h"
|
||||
|
||||
char *xmalloc ();
|
||||
char *realloc ();
|
||||
#include "xalloc.h"
|
||||
|
||||
/* Copy UT->ut_name into storage obtained from malloc. Then remove any
|
||||
trailing spaces from the copy, NUL terminate it, and return the copy. */
|
||||
|
||||
64
lib/same.c
64
lib/same.c
@@ -1,5 +1,5 @@
|
||||
/* Determine whether two file names refer to the same file.
|
||||
Copyright (C) 1997-2000, 2002 Free Software Foundation, Inc.
|
||||
Copyright (C) 1997-2000, 2002-2003 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,37 +64,41 @@ void free ();
|
||||
int
|
||||
same_name (const char *source, const char *dest)
|
||||
{
|
||||
struct stat source_dir_stats;
|
||||
struct stat dest_dir_stats;
|
||||
char *source_dirname, *dest_dirname;
|
||||
char *source_basename, *dest_basename;
|
||||
size_t source_baselen, dest_baselen;
|
||||
/* Compare the basenames. */
|
||||
char const *source_basename = base_name (source);
|
||||
char const *dest_basename = base_name (dest);
|
||||
size_t source_baselen = base_len (source_basename);
|
||||
size_t dest_baselen = base_len (dest_basename);
|
||||
|
||||
source_dirname = dir_name (source);
|
||||
dest_dirname = dir_name (dest);
|
||||
|
||||
if (stat (source_dirname, &source_dir_stats))
|
||||
if (source_baselen == dest_baselen
|
||||
&& memcmp (source_basename, dest_basename, dest_baselen) == 0)
|
||||
{
|
||||
/* Shouldn't happen. */
|
||||
error (1, errno, "%s", source_dirname);
|
||||
struct stat source_dir_stats;
|
||||
struct stat dest_dir_stats;
|
||||
char *source_dirname, *dest_dirname;
|
||||
|
||||
/* Compare the parent directories (via the device and inode numbers). */
|
||||
source_dirname = dir_name (source);
|
||||
dest_dirname = dir_name (dest);
|
||||
|
||||
if (stat (source_dirname, &source_dir_stats))
|
||||
{
|
||||
/* Shouldn't happen. */
|
||||
error (1, errno, "%s", source_dirname);
|
||||
}
|
||||
|
||||
if (stat (dest_dirname, &dest_dir_stats))
|
||||
{
|
||||
/* Shouldn't happen. */
|
||||
error (1, errno, "%s", dest_dirname);
|
||||
}
|
||||
|
||||
free (source_dirname);
|
||||
free (dest_dirname);
|
||||
|
||||
if (SAME_INODE (source_dir_stats, dest_dir_stats))
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (stat (dest_dirname, &dest_dir_stats))
|
||||
{
|
||||
/* Shouldn't happen. */
|
||||
error (1, errno, "%s", dest_dirname);
|
||||
}
|
||||
|
||||
free (source_dirname);
|
||||
free (dest_dirname);
|
||||
|
||||
if (! SAME_INODE (source_dir_stats, dest_dir_stats))
|
||||
return 0;
|
||||
|
||||
source_basename = base_name (source);
|
||||
dest_basename = base_name (dest);
|
||||
source_baselen = base_len (source_basename);
|
||||
dest_baselen = base_len (dest_basename);
|
||||
return (source_baselen == dest_baselen
|
||||
&& memcmp (source_basename, dest_basename, dest_baselen) == 0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
16
lib/same.h
16
lib/same.h
@@ -1,5 +1,5 @@
|
||||
/* Determine whether two file names refer to the same file.
|
||||
Copyright (C) 1997-2000 Free Software Foundation, Inc.
|
||||
Copyright (C) 1997-2000, 2003 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
|
||||
@@ -18,19 +18,7 @@
|
||||
#ifndef SAME_H_
|
||||
# define SAME_H_ 1
|
||||
|
||||
# if HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
# endif
|
||||
|
||||
# ifndef PARAMS
|
||||
# if defined PROTOTYPES || (defined __STDC__ && __STDC__)
|
||||
# define PARAMS(Args) Args
|
||||
# else
|
||||
# define PARAMS(Args) ()
|
||||
# endif
|
||||
# endif
|
||||
|
||||
int
|
||||
same_name PARAMS ((const char *source, const char *dest));
|
||||
same_name (const char *source, const char *dest);
|
||||
|
||||
#endif /* SAME_H_ */
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* save-cwd.c -- Save and restore current working directory.
|
||||
Copyright (C) 1995, 1997, 1998 Free Software Foundation, Inc.
|
||||
Copyright (C) 1995, 1997, 1998, 2003 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
|
||||
@@ -15,7 +15,7 @@
|
||||
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 Jim Meyering <meyering@na-net.ornl.gov>. */
|
||||
/* Written by Jim Meyering. */
|
||||
|
||||
#if HAVE_CONFIG_H
|
||||
# include "config.h"
|
||||
@@ -48,8 +48,7 @@ extern int errno;
|
||||
|
||||
#include "save-cwd.h"
|
||||
#include "error.h"
|
||||
|
||||
char *xgetcwd PARAMS ((void));
|
||||
#include "xgetcwd.h"
|
||||
|
||||
/* Record the location of the current working directory in CWD so that
|
||||
the program may change to other directories and later use restore_cwd
|
||||
@@ -58,7 +57,15 @@ char *xgetcwd PARAMS ((void));
|
||||
use free_cwd to perform the necessary free or close. Upon failure,
|
||||
no memory is allocated, any locally opened file descriptors are
|
||||
closed; return non-zero -- in that case, free_cwd need not be
|
||||
called, but doing so is ok. Otherwise, return zero. */
|
||||
called, but doing so is ok. Otherwise, return zero.
|
||||
|
||||
The `raison d'etre' for this interface is that some systems lack
|
||||
support for fchdir, and getcwd is not robust or as efficient.
|
||||
So, we prefer to use the open/fchdir approach, but fall back on
|
||||
getcwd if necessary. Some systems lack fchdir altogether: OS/2,
|
||||
Cygwin (as of March 2003), SCO Xenix. At least SunOS4 and Irix 5.3
|
||||
provide the function, yet it doesn't work for partitions on which
|
||||
auditing is enabled. */
|
||||
|
||||
int
|
||||
save_cwd (struct saved_cwd *cwd)
|
||||
@@ -79,8 +86,8 @@ save_cwd (struct saved_cwd *cwd)
|
||||
}
|
||||
|
||||
# if __sun__ || sun
|
||||
/* On SunOS 4, fchdir returns EINVAL if accounting is enabled,
|
||||
so we have to fall back to chdir. */
|
||||
/* On SunOS 4 and IRIX 5.3, fchdir returns EINVAL when auditing
|
||||
is enabled, so we have to fall back to chdir. */
|
||||
if (fchdir (cwd->desc))
|
||||
{
|
||||
if (errno == EINVAL)
|
||||
@@ -117,30 +124,16 @@ save_cwd (struct saved_cwd *cwd)
|
||||
}
|
||||
|
||||
/* Change to recorded location, CWD, in directory hierarchy.
|
||||
If "saved working directory", NULL))
|
||||
*/
|
||||
Upon failure, return nonzero (errno is set by chdir or fchdir).
|
||||
Upon success, return zero. */
|
||||
|
||||
int
|
||||
restore_cwd (const struct saved_cwd *cwd, const char *dest, const char *from)
|
||||
restore_cwd (const struct saved_cwd *cwd)
|
||||
{
|
||||
int fail = 0;
|
||||
if (cwd->desc >= 0)
|
||||
{
|
||||
if (fchdir (cwd->desc))
|
||||
{
|
||||
error (0, errno, "cannot return to %s%s%s",
|
||||
(dest ? dest : "saved working directory"),
|
||||
(from ? " from " : ""),
|
||||
(from ? from : ""));
|
||||
fail = 1;
|
||||
}
|
||||
}
|
||||
else if (chdir (cwd->name) < 0)
|
||||
{
|
||||
error (0, errno, "%s", cwd->name);
|
||||
fail = 1;
|
||||
}
|
||||
return fail;
|
||||
if (0 <= cwd->desc)
|
||||
return fchdir (cwd->desc) < 0;
|
||||
else
|
||||
return chdir (cwd->name) < 0;
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
@@ -7,17 +7,8 @@ struct saved_cwd
|
||||
char *name;
|
||||
};
|
||||
|
||||
# ifndef PARAMS
|
||||
# if defined PROTOTYPES || (defined __STDC__ && __STDC__)
|
||||
# define PARAMS(Args) Args
|
||||
# else
|
||||
# define PARAMS(Args) ()
|
||||
# endif
|
||||
# endif
|
||||
|
||||
int save_cwd PARAMS ((struct saved_cwd *cwd));
|
||||
int restore_cwd PARAMS ((const struct saved_cwd *cwd, const char *dest,
|
||||
const char *from));
|
||||
void free_cwd PARAMS ((struct saved_cwd *cwd));
|
||||
int save_cwd (struct saved_cwd *cwd);
|
||||
int restore_cwd (const struct saved_cwd *cwd);
|
||||
void free_cwd (struct saved_cwd *cwd);
|
||||
|
||||
#endif /* SAVE_CWD_H */
|
||||
|
||||
69
lib/search_.h
Normal file
69
lib/search_.h
Normal file
@@ -0,0 +1,69 @@
|
||||
/* For use with hsearch(3). */
|
||||
#ifndef __COMPAR_FN_T
|
||||
# define __COMPAR_FN_T
|
||||
typedef int (*__compar_fn_t) (const void *, const void *);
|
||||
|
||||
# ifdef __USE_GNU
|
||||
typedef __compar_fn_t comparison_fn_t;
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* The tsearch routines are very interesting. They make many
|
||||
assumptions about the compiler. It assumes that the first field
|
||||
in node must be the "key" field, which points to the datum.
|
||||
Everything depends on that. */
|
||||
/* For tsearch */
|
||||
typedef enum
|
||||
{
|
||||
preorder,
|
||||
postorder,
|
||||
endorder,
|
||||
leaf
|
||||
}
|
||||
VISIT;
|
||||
|
||||
/* GCC 2.95 and later have "__restrict"; C99 compilers have
|
||||
"restrict", and "configure" may have defined "restrict". */
|
||||
#ifndef __restrict
|
||||
# if ! (2 < __GNUC__ || (2 == __GNUC__ && 95 <= __GNUC_MINOR__))
|
||||
# if defined restrict || 199901L <= __STDC_VERSION__
|
||||
# define __restrict restrict
|
||||
# else
|
||||
# define __restrict
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* Search for an entry matching the given KEY in the tree pointed to
|
||||
by *ROOTP and insert a new element if not found. */
|
||||
extern void *tsearch (const void *__key, void **__rootp,
|
||||
__compar_fn_t __compar);
|
||||
|
||||
/* Search for an entry matching the given KEY in the tree pointed to
|
||||
by *ROOTP. If no matching entry is available return NULL. */
|
||||
extern void *tfind (const void *__key, void *const *__rootp,
|
||||
__compar_fn_t __compar);
|
||||
|
||||
/* Remove the element matching KEY from the tree pointed to by *ROOTP. */
|
||||
extern void *tdelete (const void *__restrict __key,
|
||||
void **__restrict __rootp,
|
||||
__compar_fn_t __compar);
|
||||
|
||||
#ifndef __ACTION_FN_T
|
||||
# define __ACTION_FN_T
|
||||
typedef void (*__action_fn_t) (const void *__nodep, VISIT __value,
|
||||
int __level);
|
||||
#endif
|
||||
|
||||
/* Walk through the whole tree and call the ACTION callback for every node
|
||||
or leaf. */
|
||||
extern void twalk (const void *__root, __action_fn_t __action);
|
||||
|
||||
#ifdef __USE_GNU
|
||||
/* Callback type for function to free a tree node. If the keys are atomic
|
||||
data this function should do nothing. */
|
||||
typedef void (*__free_fn_t) (void *__nodep);
|
||||
|
||||
/* Destroy the whole tree, call FREEFCT for each node or leaf. */
|
||||
extern void tdestroy (void *__root, __free_fn_t __freefct);
|
||||
#endif
|
||||
92
lib/sha.c
92
lib/sha.c
@@ -1,7 +1,7 @@
|
||||
/* sha.c - Functions to compute the SHA1 hash (message-digest) of files
|
||||
or blocks of memory. Complies to the NIST specification FIPS-180-1.
|
||||
|
||||
Copyright (C) 2000, 2001 Scott G. Miller
|
||||
Copyright (C) 2000, 2001, 2003 Scott G. Miller
|
||||
|
||||
Credits:
|
||||
Robert Klep <robert@ilse.nl> -- Expansion function fix
|
||||
@@ -41,6 +41,13 @@
|
||||
# define SWAP(n) (n)
|
||||
#endif
|
||||
|
||||
#define BLOCKSIZE 4096
|
||||
/* Ensure that BLOCKSIZE is a multiple of 64. */
|
||||
#if BLOCKSIZE % 64 != 0
|
||||
/* FIXME-someday (soon?): use #error instead of this kludge. */
|
||||
"invalid BLOCKSIZE"
|
||||
#endif
|
||||
|
||||
/* This array contains the bytes used to pad the buffer to the next
|
||||
64-byte boundary. (RFC 1321, 3.1: Step 1) */
|
||||
static const unsigned char fillbuf[64] = { 0x80, 0 /* , 0, 0, ... */ };
|
||||
@@ -118,8 +125,6 @@ sha_finish_ctx (struct sha_ctx *ctx, void *resbuf)
|
||||
int
|
||||
sha_stream (FILE *stream, void *resblock)
|
||||
{
|
||||
/* Important: BLOCKSIZE must be a multiple of 64. */
|
||||
#define BLOCKSIZE 4096
|
||||
struct sha_ctx ctx;
|
||||
char buffer[BLOCKSIZE + 72];
|
||||
size_t sum;
|
||||
@@ -137,19 +142,31 @@ sha_stream (FILE *stream, void *resblock)
|
||||
sum = 0;
|
||||
|
||||
/* Read block. Take care for partial reads. */
|
||||
do
|
||||
while (1)
|
||||
{
|
||||
n = fread (buffer + sum, 1, BLOCKSIZE - sum, stream);
|
||||
|
||||
sum += n;
|
||||
}
|
||||
while (sum < BLOCKSIZE && n != 0);
|
||||
if (n == 0 && ferror (stream))
|
||||
return 1;
|
||||
|
||||
/* If end of file is reached, end the loop. */
|
||||
if (n == 0)
|
||||
break;
|
||||
if (sum == BLOCKSIZE)
|
||||
break;
|
||||
|
||||
if (n == 0)
|
||||
{
|
||||
/* Check for the error flag IFF N == 0, so that we don't
|
||||
exit the loop after a partial read due to e.g., EAGAIN
|
||||
or EWOULDBLOCK. */
|
||||
if (ferror (stream))
|
||||
return 1;
|
||||
goto process_partial_block;
|
||||
}
|
||||
|
||||
/* We've read at least one byte, so ignore errors. But always
|
||||
check for EOF, since feof may be true even though N > 0.
|
||||
Otherwise, we could end up calling fread after EOF. */
|
||||
if (feof (stream))
|
||||
goto process_partial_block;
|
||||
}
|
||||
|
||||
/* Process buffer with BLOCKSIZE bytes. Note that
|
||||
BLOCKSIZE % 64 == 0
|
||||
@@ -157,7 +174,9 @@ sha_stream (FILE *stream, void *resblock)
|
||||
sha_process_block (buffer, BLOCKSIZE, &ctx);
|
||||
}
|
||||
|
||||
/* Add the last bytes if necessary. */
|
||||
process_partial_block:;
|
||||
|
||||
/* Process any remaining bytes. */
|
||||
if (sum > 0)
|
||||
sha_process_bytes (buffer, sum, &ctx);
|
||||
|
||||
@@ -198,13 +217,14 @@ sha_process_bytes (const void *buffer, size_t len, struct sha_ctx *ctx)
|
||||
memcpy (&ctx->buffer[left_over], buffer, add);
|
||||
ctx->buflen += add;
|
||||
|
||||
if (left_over + add > 64)
|
||||
if (ctx->buflen > 64)
|
||||
{
|
||||
sha_process_block (ctx->buffer, (left_over + add) & ~63, ctx);
|
||||
sha_process_block (ctx->buffer, ctx->buflen & ~63, ctx);
|
||||
|
||||
ctx->buflen &= 63;
|
||||
/* The regions in the following copy operation cannot overlap. */
|
||||
memcpy (ctx->buffer, &ctx->buffer[(left_over + add) & ~63],
|
||||
(left_over + add) & 63);
|
||||
ctx->buflen = (left_over + add) & 63;
|
||||
ctx->buflen);
|
||||
}
|
||||
|
||||
buffer = (const char *) buffer + add;
|
||||
@@ -212,18 +232,46 @@ sha_process_bytes (const void *buffer, size_t len, struct sha_ctx *ctx)
|
||||
}
|
||||
|
||||
/* Process available complete blocks. */
|
||||
if (len > 64)
|
||||
if (len >= 64)
|
||||
{
|
||||
sha_process_block (buffer, len & ~63, ctx);
|
||||
buffer = (const char *) buffer + (len & ~63);
|
||||
len &= 63;
|
||||
#if !_STRING_ARCH_unaligned
|
||||
/* To check alignment gcc has an appropriate operator. Other
|
||||
compilers don't. */
|
||||
# if __GNUC__ >= 2
|
||||
# define UNALIGNED_P(p) (((md5_uintptr) p) % __alignof__ (md5_uint32) != 0)
|
||||
# else
|
||||
# define UNALIGNED_P(p) (((md5_uintptr) p) % sizeof (md5_uint32) != 0)
|
||||
# endif
|
||||
if (UNALIGNED_P (buffer))
|
||||
while (len > 64)
|
||||
{
|
||||
sha_process_block (memcpy (ctx->buffer, buffer, 64), 64, ctx);
|
||||
buffer = (const char *) buffer + 64;
|
||||
len -= 64;
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
sha_process_block (buffer, len & ~63, ctx);
|
||||
buffer = (const char *) buffer + (len & ~63);
|
||||
len &= 63;
|
||||
}
|
||||
}
|
||||
|
||||
/* Move remaining bytes in internal buffer. */
|
||||
if (len > 0)
|
||||
{
|
||||
memcpy (ctx->buffer, buffer, len);
|
||||
ctx->buflen = len;
|
||||
size_t left_over = ctx->buflen;
|
||||
|
||||
memcpy (&ctx->buffer[left_over], buffer, len);
|
||||
left_over += len;
|
||||
if (left_over >= 64)
|
||||
{
|
||||
sha_process_block (ctx->buffer, 64, ctx);
|
||||
left_over -= 64;
|
||||
memcpy (ctx->buffer, &ctx->buffer[64], left_over);
|
||||
}
|
||||
ctx->buflen = left_over;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* Work around the bug in some systems whereby stat/lstat succeeds when
|
||||
given the zero-length file name argument. The stat/lstat from SunOS4.1.4
|
||||
has this bug.
|
||||
Copyright (C) 1997-2002 Free Software Foundation, Inc.
|
||||
Copyright (C) 1997-2003 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
|
||||
@@ -53,7 +53,7 @@ extern int errno;
|
||||
void free ();
|
||||
# endif
|
||||
|
||||
char *xmalloc ();
|
||||
# include "xalloc.h"
|
||||
|
||||
/* lstat works differently on Linux and Solaris systems. POSIX (see
|
||||
`pathname resolution' in the glossary) requires that programs like `ls'
|
||||
|
||||
203
lib/strftime.c
203
lib/strftime.c
@@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 1991-1999, 2000, 2001 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1991-1999, 2000, 2001, 2003 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.
|
||||
@@ -265,7 +265,7 @@ static const CHAR_T zeroes[16] = /* "0000000000000000" */
|
||||
int _n = (n); \
|
||||
int _delta = width - _n; \
|
||||
int _incr = _n + (_delta > 0 ? _delta : 0); \
|
||||
if (i + _incr >= maxsize) \
|
||||
if ((size_t) _incr >= maxsize - i) \
|
||||
return 0; \
|
||||
if (p) \
|
||||
{ \
|
||||
@@ -285,35 +285,76 @@ static const CHAR_T zeroes[16] = /* "0000000000000000" */
|
||||
#define cpy(n, s) \
|
||||
add ((n), \
|
||||
if (to_lowcase) \
|
||||
memcpy_lowcase (p, (s), _n); \
|
||||
memcpy_lowcase (p, (s), _n LOCALE_ARG); \
|
||||
else if (to_uppcase) \
|
||||
memcpy_uppcase (p, (s), _n); \
|
||||
memcpy_uppcase (p, (s), _n LOCALE_ARG); \
|
||||
else \
|
||||
MEMCPY ((PTR) p, (const PTR) (s), _n))
|
||||
|
||||
#ifdef COMPILE_WIDE
|
||||
# ifndef USE_IN_EXTENDED_LOCALE_MODEL
|
||||
# undef __mbsrtowcs_l
|
||||
# define __mbsrtowcs_l(d, s, l, st, loc) __mbsrtowcs (d, s, l, st)
|
||||
# endif
|
||||
# define widen(os, ws, l) \
|
||||
{ \
|
||||
mbstate_t __st; \
|
||||
const char *__s = os; \
|
||||
memset (&__st, '\0', sizeof (__st)); \
|
||||
l = __mbsrtowcs (NULL, &__s, 0, &__st); \
|
||||
ws = alloca ((l + 1) * sizeof (wchar_t)); \
|
||||
(void) __mbsrtowcs (ws, &__s, l, &__st); \
|
||||
l = __mbsrtowcs_l (NULL, &__s, 0, &__st, loc); \
|
||||
ws = (wchar_t *) alloca ((l + 1) * sizeof (wchar_t)); \
|
||||
(void) __mbsrtowcs_l (ws, &__s, l, &__st, loc); \
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#if defined _LIBC && defined USE_IN_EXTENDED_LOCALE_MODEL
|
||||
/* We use this code also for the extended locale handling where the
|
||||
function gets as an additional argument the locale which has to be
|
||||
used. To access the values we have to redefine the _NL_CURRENT
|
||||
macro. */
|
||||
# define strftime __strftime_l
|
||||
# define wcsftime __wcsftime_l
|
||||
# undef _NL_CURRENT
|
||||
# define _NL_CURRENT(category, item) \
|
||||
(current->values[_NL_ITEM_INDEX (item)].string)
|
||||
# define LOCALE_PARAM , loc
|
||||
# define LOCALE_ARG , loc
|
||||
# define LOCALE_PARAM_DECL __locale_t loc;
|
||||
# define LOCALE_PARAM_PROTO , __locale_t loc
|
||||
# define HELPER_LOCALE_ARG , current
|
||||
#else
|
||||
# define LOCALE_PARAM
|
||||
# define LOCALE_PARAM_PROTO
|
||||
# define LOCALE_ARG
|
||||
# define LOCALE_PARAM_DECL
|
||||
# ifdef _LIBC
|
||||
# define HELPER_LOCALE_ARG , _NL_CURRENT_DATA (LC_TIME)
|
||||
# else
|
||||
# define HELPER_LOCALE_ARG
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifdef COMPILE_WIDE
|
||||
# define TOUPPER(Ch) towupper (Ch)
|
||||
# define TOLOWER(Ch) towlower (Ch)
|
||||
# ifdef USE_IN_EXTENDED_LOCALE_MODEL
|
||||
# define TOUPPER(Ch, L) __towupper_l (Ch, L)
|
||||
# define TOLOWER(Ch, L) __towlower_l (Ch, L)
|
||||
# else
|
||||
# define TOUPPER(Ch, L) towupper (Ch)
|
||||
# define TOLOWER(Ch, L) towlower (Ch)
|
||||
# endif
|
||||
#else
|
||||
# ifdef _LIBC
|
||||
# define TOUPPER(Ch) toupper (Ch)
|
||||
# define TOLOWER(Ch) tolower (Ch)
|
||||
# ifdef USE_IN_EXTENDED_LOCALE_MODEL
|
||||
# define TOUPPER(Ch, L) __toupper_l (Ch, L)
|
||||
# define TOLOWER(Ch, L) __tolower_l (Ch, L)
|
||||
# else
|
||||
# define TOUPPER(Ch, L) toupper (Ch)
|
||||
# define TOLOWER(Ch, L) tolower (Ch)
|
||||
# endif
|
||||
# else
|
||||
# define TOUPPER(Ch) (islower (Ch) ? toupper (Ch) : (Ch))
|
||||
# define TOLOWER(Ch) (isupper (Ch) ? tolower (Ch) : (Ch))
|
||||
# define TOUPPER(Ch, L) (islower (Ch) ? toupper (Ch) : (Ch))
|
||||
# define TOLOWER(Ch, L) (isupper (Ch) ? tolower (Ch) : (Ch))
|
||||
# endif
|
||||
#endif
|
||||
/* We don't use `isdigit' here since the locale dependent
|
||||
@@ -323,30 +364,32 @@ static const CHAR_T zeroes[16] = /* "0000000000000000" */
|
||||
#define ISDIGIT(Ch) ((unsigned int) (Ch) - L_('0') <= 9)
|
||||
|
||||
static CHAR_T *memcpy_lowcase __P ((CHAR_T *dest, const CHAR_T *src,
|
||||
size_t len));
|
||||
size_t len LOCALE_PARAM_PROTO));
|
||||
|
||||
static CHAR_T *
|
||||
memcpy_lowcase (dest, src, len)
|
||||
memcpy_lowcase (dest, src, len LOCALE_PARAM)
|
||||
CHAR_T *dest;
|
||||
const CHAR_T *src;
|
||||
size_t len;
|
||||
LOCALE_PARAM_DECL
|
||||
{
|
||||
while (len-- > 0)
|
||||
dest[len] = TOLOWER ((UCHAR_T) src[len]);
|
||||
dest[len] = TOLOWER ((UCHAR_T) src[len], loc);
|
||||
return dest;
|
||||
}
|
||||
|
||||
static CHAR_T *memcpy_uppcase __P ((CHAR_T *dest, const CHAR_T *src,
|
||||
size_t len));
|
||||
size_t len LOCALE_PARAM_PROTO));
|
||||
|
||||
static CHAR_T *
|
||||
memcpy_uppcase (dest, src, len)
|
||||
memcpy_uppcase (dest, src, len LOCALE_PARAM)
|
||||
CHAR_T *dest;
|
||||
const CHAR_T *src;
|
||||
size_t len;
|
||||
LOCALE_PARAM_DECL
|
||||
{
|
||||
while (len-- > 0)
|
||||
dest[len] = TOUPPER ((UCHAR_T) src[len]);
|
||||
dest[len] = TOUPPER ((UCHAR_T) src[len], loc);
|
||||
return dest;
|
||||
}
|
||||
|
||||
@@ -437,8 +480,10 @@ static CHAR_T const month_name[][10] =
|
||||
#else
|
||||
# ifdef COMPILE_WIDE
|
||||
# define my_strftime wcsftime
|
||||
# define nl_get_alt_digit _nl_get_walt_digit
|
||||
# else
|
||||
# define my_strftime strftime
|
||||
# define nl_get_alt_digit _nl_get_alt_digit
|
||||
# endif
|
||||
# define extra_args
|
||||
# define extra_args_spec
|
||||
@@ -477,13 +522,18 @@ static CHAR_T const month_name[][10] =
|
||||
anywhere, so to determine how many characters would be
|
||||
written, use NULL for S and (size_t) UINT_MAX for MAXSIZE. */
|
||||
size_t
|
||||
my_strftime (s, maxsize, format, tp extra_args)
|
||||
my_strftime (s, maxsize, format, tp extra_args LOCALE_PARAM)
|
||||
CHAR_T *s;
|
||||
size_t maxsize;
|
||||
const CHAR_T *format;
|
||||
const struct tm *tp;
|
||||
extra_args_spec
|
||||
LOCALE_PARAM_DECL
|
||||
{
|
||||
#if defined _LIBC && defined USE_IN_EXTENDED_LOCALE_MODEL
|
||||
struct locale_data *const current = loc->__locales[LC_TIME];
|
||||
#endif
|
||||
|
||||
int hour12 = tp->tm_hour;
|
||||
#ifdef _NL_CURRENT
|
||||
/* We cannot make the following values variables since we must delay
|
||||
@@ -546,9 +596,8 @@ my_strftime (s, maxsize, format, tp extra_args)
|
||||
}
|
||||
else
|
||||
{
|
||||
/* POSIX.1 8.1.1 requires that whenever strftime() is called, the
|
||||
time zone names contained in the external variable `tzname' shall
|
||||
be set as if the tzset() function had been called. */
|
||||
/* POSIX.1 requires that local time zone information be used as
|
||||
though strftime called tzset. */
|
||||
# if HAVE_TZSET
|
||||
tzset ();
|
||||
# endif
|
||||
@@ -699,8 +748,15 @@ my_strftime (s, maxsize, format, tp extra_args)
|
||||
width = 0;
|
||||
do
|
||||
{
|
||||
width *= 10;
|
||||
width += *f - L_('0');
|
||||
if (width > INT_MAX / 10
|
||||
|| (width == INT_MAX / 10 && *f - L_('0') > INT_MAX % 10))
|
||||
/* Avoid overflow. */
|
||||
width = INT_MAX;
|
||||
else
|
||||
{
|
||||
width *= 10;
|
||||
width += *f - L_('0');
|
||||
}
|
||||
++f;
|
||||
}
|
||||
while (ISDIGIT (*f));
|
||||
@@ -724,10 +780,10 @@ my_strftime (s, maxsize, format, tp extra_args)
|
||||
switch (format_char)
|
||||
{
|
||||
#define DO_NUMBER(d, v) \
|
||||
digits = width == -1 ? d : width; \
|
||||
digits = d > width ? d : width; \
|
||||
number_value = v; goto do_number
|
||||
#define DO_NUMBER_SPACEPAD(d, v) \
|
||||
digits = width == -1 ? d : width; \
|
||||
digits = d > width ? d : width; \
|
||||
number_value = v; goto do_number_spacepad
|
||||
|
||||
case L_('%'):
|
||||
@@ -767,7 +823,7 @@ my_strftime (s, maxsize, format, tp extra_args)
|
||||
#endif
|
||||
|
||||
case L_('b'):
|
||||
case L_('h'): /* POSIX.2 extension. */
|
||||
case L_('h'):
|
||||
if (change_case)
|
||||
{
|
||||
to_uppcase = 1;
|
||||
@@ -819,14 +875,14 @@ my_strftime (s, maxsize, format, tp extra_args)
|
||||
{
|
||||
CHAR_T *old_start = p;
|
||||
size_t len = my_strftime (NULL, (size_t) -1, subfmt,
|
||||
tp extra_args);
|
||||
tp extra_args LOCALE_ARG);
|
||||
add (len, my_strftime (p, maxsize - i, subfmt,
|
||||
tp extra_args));
|
||||
tp extra_args LOCALE_ARG));
|
||||
|
||||
if (to_uppcase)
|
||||
while (old_start < p)
|
||||
{
|
||||
*old_start = TOUPPER ((UCHAR_T) *old_start);
|
||||
*old_start = TOUPPER ((UCHAR_T) *old_start, loc);
|
||||
++old_start;
|
||||
}
|
||||
}
|
||||
@@ -862,13 +918,13 @@ my_strftime (s, maxsize, format, tp extra_args)
|
||||
break;
|
||||
#endif
|
||||
|
||||
case L_('C'): /* POSIX.2 extension. */
|
||||
case L_('C'):
|
||||
if (modifier == L_('O'))
|
||||
goto bad_format;
|
||||
if (modifier == L_('E'))
|
||||
{
|
||||
#if HAVE_STRUCT_ERA_ENTRY
|
||||
struct era_entry *era = _nl_get_era_entry (tp);
|
||||
struct era_entry *era = _nl_get_era_entry (tp HELPER_LOCALE_ARG);
|
||||
if (era)
|
||||
{
|
||||
# ifdef COMPILE_WIDE
|
||||
@@ -909,7 +965,7 @@ my_strftime (s, maxsize, format, tp extra_args)
|
||||
/* Fall through. */
|
||||
# endif
|
||||
#endif
|
||||
case L_('D'): /* POSIX.2 extension. */
|
||||
case L_('D'):
|
||||
if (modifier != 0)
|
||||
goto bad_format;
|
||||
subfmt = L_("%m/%d/%y");
|
||||
@@ -921,7 +977,7 @@ my_strftime (s, maxsize, format, tp extra_args)
|
||||
|
||||
DO_NUMBER (2, tp->tm_mday);
|
||||
|
||||
case L_('e'): /* POSIX.2 extension. */
|
||||
case L_('e'):
|
||||
if (modifier == L_('E'))
|
||||
goto bad_format;
|
||||
|
||||
@@ -943,11 +999,8 @@ my_strftime (s, maxsize, format, tp extra_args)
|
||||
#ifdef _NL_CURRENT
|
||||
/* Get the locale specific alternate representation of
|
||||
the number NUMBER_VALUE. If none exist NULL is returned. */
|
||||
# ifdef COMPILE_WIDE
|
||||
const wchar_t *cp = _nl_get_walt_digit (number_value);
|
||||
# else
|
||||
const char *cp = _nl_get_alt_digit (number_value);
|
||||
# endif
|
||||
const CHAR_T *cp = nl_get_alt_digit (number_value
|
||||
HELPER_LOCALE_ARG);
|
||||
|
||||
if (cp != NULL)
|
||||
{
|
||||
@@ -987,18 +1040,37 @@ my_strftime (s, maxsize, format, tp extra_args)
|
||||
int padding = digits - (buf + (sizeof (buf) / sizeof (buf[0]))
|
||||
- bufp);
|
||||
|
||||
if (pad == L_('_'))
|
||||
if (padding > 0)
|
||||
{
|
||||
while (0 < padding--)
|
||||
*--bufp = L_(' ');
|
||||
}
|
||||
else
|
||||
{
|
||||
bufp += negative_number;
|
||||
while (0 < padding--)
|
||||
*--bufp = L_('0');
|
||||
if (negative_number)
|
||||
*--bufp = L_('-');
|
||||
if (pad == L_('_'))
|
||||
{
|
||||
if ((size_t) padding >= maxsize - i)
|
||||
return 0;
|
||||
|
||||
if (p)
|
||||
memset_space (p, padding);
|
||||
i += padding;
|
||||
width = width > padding ? width - padding : 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((size_t) digits >= maxsize - i)
|
||||
return 0;
|
||||
|
||||
if (negative_number)
|
||||
{
|
||||
++bufp;
|
||||
|
||||
if (p)
|
||||
*p++ = L_('-');
|
||||
++i;
|
||||
}
|
||||
|
||||
if (p)
|
||||
memset_zero (p, padding);
|
||||
i += padding;
|
||||
width = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1053,6 +1125,7 @@ my_strftime (s, maxsize, format, tp extra_args)
|
||||
|
||||
DO_NUMBER (2, tp->tm_mon + 1);
|
||||
|
||||
#ifndef _LIBC
|
||||
case L_('N'): /* GNU extension. */
|
||||
if (modifier == L_('E'))
|
||||
goto bad_format;
|
||||
@@ -1067,8 +1140,9 @@ my_strftime (s, maxsize, format, tp extra_args)
|
||||
}
|
||||
|
||||
DO_NUMBER (9, number_value);
|
||||
#endif
|
||||
|
||||
case L_('n'): /* POSIX.2 extension. */
|
||||
case L_('n'):
|
||||
add (1, *p = L_('\n'));
|
||||
break;
|
||||
|
||||
@@ -1092,11 +1166,11 @@ my_strftime (s, maxsize, format, tp extra_args)
|
||||
goto underlying_strftime;
|
||||
#endif
|
||||
|
||||
case L_('R'): /* ISO C99 extension. */
|
||||
case L_('R'):
|
||||
subfmt = L_("%H:%M");
|
||||
goto subformat;
|
||||
|
||||
case L_('r'): /* POSIX.2 extension. */
|
||||
case L_('r'):
|
||||
#ifdef _NL_CURRENT
|
||||
if (*(subfmt = (const CHAR_T *) _NL_CURRENT (LC_TIME,
|
||||
NLW(T_FMT_AMPM)))
|
||||
@@ -1167,15 +1241,15 @@ my_strftime (s, maxsize, format, tp extra_args)
|
||||
/* Fall through. */
|
||||
# endif
|
||||
#endif
|
||||
case L_('T'): /* POSIX.2 extension. */
|
||||
case L_('T'):
|
||||
subfmt = L_("%H:%M:%S");
|
||||
goto subformat;
|
||||
|
||||
case L_('t'): /* POSIX.2 extension. */
|
||||
case L_('t'):
|
||||
add (1, *p = L_('\t'));
|
||||
break;
|
||||
|
||||
case L_('u'): /* POSIX.2 extension. */
|
||||
case L_('u'):
|
||||
DO_NUMBER (1, (tp->tm_wday - 1 + 7) % 7 + 1);
|
||||
|
||||
case L_('U'):
|
||||
@@ -1185,8 +1259,8 @@ my_strftime (s, maxsize, format, tp extra_args)
|
||||
DO_NUMBER (2, (tp->tm_yday - tp->tm_wday + 7) / 7);
|
||||
|
||||
case L_('V'):
|
||||
case L_('g'): /* ISO C99 extension. */
|
||||
case L_('G'): /* ISO C99 extension. */
|
||||
case L_('g'):
|
||||
case L_('G'):
|
||||
if (modifier == L_('E'))
|
||||
goto bad_format;
|
||||
{
|
||||
@@ -1241,7 +1315,7 @@ my_strftime (s, maxsize, format, tp extra_args)
|
||||
if (modifier == 'E')
|
||||
{
|
||||
#if HAVE_STRUCT_ERA_ENTRY
|
||||
struct era_entry *era = _nl_get_era_entry (tp);
|
||||
struct era_entry *era = _nl_get_era_entry (tp HELPER_LOCALE_ARG);
|
||||
if (era)
|
||||
{
|
||||
# ifdef COMPILE_WIDE
|
||||
@@ -1266,7 +1340,7 @@ my_strftime (s, maxsize, format, tp extra_args)
|
||||
if (modifier == L_('E'))
|
||||
{
|
||||
#if HAVE_STRUCT_ERA_ENTRY
|
||||
struct era_entry *era = _nl_get_era_entry (tp);
|
||||
struct era_entry *era = _nl_get_era_entry (tp HELPER_LOCALE_ARG);
|
||||
if (era)
|
||||
{
|
||||
int delta = tp->tm_year - era->start_date[0];
|
||||
@@ -1294,7 +1368,7 @@ my_strftime (s, maxsize, format, tp extra_args)
|
||||
zone = tzname[tp->tm_isdst];
|
||||
#endif
|
||||
if (! zone)
|
||||
zone = ""; /* POSIX.2 requires the empty string here. */
|
||||
zone = "";
|
||||
|
||||
#ifdef COMPILE_WIDE
|
||||
{
|
||||
@@ -1310,7 +1384,7 @@ my_strftime (s, maxsize, format, tp extra_args)
|
||||
#endif
|
||||
break;
|
||||
|
||||
case L_('z'): /* ISO C99 extension. */
|
||||
case L_('z'):
|
||||
if (tp->tm_isdst < 0)
|
||||
break;
|
||||
|
||||
@@ -1388,6 +1462,9 @@ my_strftime (s, maxsize, format, tp extra_args)
|
||||
*p = L_('\0');
|
||||
return i;
|
||||
}
|
||||
#ifdef _LIBC
|
||||
libc_hidden_def (my_strftime)
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef emacs
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* Stack overflow handling.
|
||||
/* declarations for strftime.c
|
||||
|
||||
Copyright (C) 2002 Free Software Foundation, Inc.
|
||||
|
||||
@@ -16,4 +16,4 @@
|
||||
along with this program; if not, write to the Free Software Foundation,
|
||||
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
|
||||
int c_stack_action (char * const *, void (*) (int));
|
||||
size_t nstrftime (char *, size_t, char const *, struct tm const *, int, int);
|
||||
698
lib/tsearch.c
Normal file
698
lib/tsearch.c
Normal file
@@ -0,0 +1,698 @@
|
||||
/* Copyright (C) 1995, 1996, 1997, 2000 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Bernd Schmidt <crux@Pool.Informatik.RWTH-Aachen.DE>, 1997.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
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
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
|
||||
/* Tree search for red/black trees.
|
||||
The algorithm for adding nodes is taken from one of the many "Algorithms"
|
||||
books by Robert Sedgewick, although the implementation differs.
|
||||
The algorithm for deleting nodes can probably be found in a book named
|
||||
"Introduction to Algorithms" by Cormen/Leiserson/Rivest. At least that's
|
||||
the book that my professor took most algorithms from during the "Data
|
||||
Structures" course...
|
||||
|
||||
Totally public domain. */
|
||||
|
||||
/* Red/black trees are binary trees in which the edges are colored either red
|
||||
or black. They have the following properties:
|
||||
1. The number of black edges on every path from the root to a leaf is
|
||||
constant.
|
||||
2. No two red edges are adjacent.
|
||||
Therefore there is an upper bound on the length of every path, it's
|
||||
O(log n) where n is the number of nodes in the tree. No path can be longer
|
||||
than 1+2*P where P is the length of the shortest path in the tree.
|
||||
Useful for the implementation:
|
||||
3. If one of the children of a node is NULL, then the other one is red
|
||||
(if it exists).
|
||||
|
||||
In the implementation, not the edges are colored, but the nodes. The color
|
||||
interpreted as the color of the edge leading to this node. The color is
|
||||
meaningless for the root node, but we color the root node black for
|
||||
convenience. All added nodes are red initially.
|
||||
|
||||
Adding to a red/black tree is rather easy. The right place is searched
|
||||
with a usual binary tree search. Additionally, whenever a node N is
|
||||
reached that has two red successors, the successors are colored black and
|
||||
the node itself colored red. This moves red edges up the tree where they
|
||||
pose less of a problem once we get to really insert the new node. Changing
|
||||
N's color to red may violate rule 2, however, so rotations may become
|
||||
necessary to restore the invariants. Adding a new red leaf may violate
|
||||
the same rule, so afterwards an additional check is run and the tree
|
||||
possibly rotated.
|
||||
|
||||
Deleting is hairy. There are mainly two nodes involved: the node to be
|
||||
deleted (n1), and another node that is to be unchained from the tree (n2).
|
||||
If n1 has a successor (the node with a smallest key that is larger than
|
||||
n1), then the successor becomes n2 and its contents are copied into n1,
|
||||
otherwise n1 becomes n2.
|
||||
Unchaining a node may violate rule 1: if n2 is black, one subtree is
|
||||
missing one black edge afterwards. The algorithm must try to move this
|
||||
error upwards towards the root, so that the subtree that does not have
|
||||
enough black edges becomes the whole tree. Once that happens, the error
|
||||
has disappeared. It may not be necessary to go all the way up, since it
|
||||
is possible that rotations and recoloring can fix the error before that.
|
||||
|
||||
Although the deletion algorithm must walk upwards through the tree, we
|
||||
do not store parent pointers in the nodes. Instead, delete allocates a
|
||||
small array of parent pointers and fills it while descending the tree.
|
||||
Since we know that the length of a path is O(log n), where n is the number
|
||||
of nodes, this is likely to use less memory. */
|
||||
|
||||
/* Tree rotations look like this:
|
||||
A C
|
||||
/ \ / \
|
||||
B C A G
|
||||
/ \ / \ --> / \
|
||||
D E F G B F
|
||||
/ \
|
||||
D E
|
||||
|
||||
In this case, A has been rotated left. This preserves the ordering of the
|
||||
binary tree. */
|
||||
|
||||
#if HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#if __GNUC__
|
||||
# define alloca __builtin_alloca
|
||||
#else
|
||||
# if HAVE_ALLOCA_H
|
||||
# include <alloca.h>
|
||||
# else
|
||||
# ifdef _AIX
|
||||
# pragma alloca
|
||||
# else
|
||||
char *alloca ();
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <search.h>
|
||||
|
||||
#ifndef weak_alias
|
||||
# define __tsearch tsearch
|
||||
# define __tfind tfind
|
||||
# define __tdelete tdelete
|
||||
# define __twalk twalk
|
||||
# define __tdestroy tdestroy
|
||||
#endif
|
||||
|
||||
#ifndef _LIBC
|
||||
# define weak_alias(f,g)
|
||||
# define internal_function
|
||||
#endif
|
||||
|
||||
typedef struct node_t
|
||||
{
|
||||
/* Callers expect this to be the first element in the structure - do not
|
||||
move! */
|
||||
const void *key;
|
||||
struct node_t *left;
|
||||
struct node_t *right;
|
||||
unsigned int red:1;
|
||||
} *node;
|
||||
typedef const struct node_t *const_node;
|
||||
|
||||
#undef DEBUGGING
|
||||
|
||||
#ifdef DEBUGGING
|
||||
|
||||
/* Routines to check tree invariants. */
|
||||
|
||||
# include <assert.h>
|
||||
|
||||
# define CHECK_TREE(a) check_tree(a)
|
||||
|
||||
static void
|
||||
check_tree_recurse (node p, int d_sofar, int d_total)
|
||||
{
|
||||
if (p == NULL)
|
||||
{
|
||||
assert (d_sofar == d_total);
|
||||
return;
|
||||
}
|
||||
|
||||
check_tree_recurse (p->left, d_sofar + (p->left && !p->left->red), d_total);
|
||||
check_tree_recurse (p->right, d_sofar + (p->right && !p->right->red), d_total);
|
||||
if (p->left)
|
||||
assert (!(p->left->red && p->red));
|
||||
if (p->right)
|
||||
assert (!(p->right->red && p->red));
|
||||
}
|
||||
|
||||
static void
|
||||
check_tree (node root)
|
||||
{
|
||||
int cnt = 0;
|
||||
node p;
|
||||
if (root == NULL)
|
||||
return;
|
||||
root->red = 0;
|
||||
for(p = root->left; p; p = p->left)
|
||||
cnt += !p->red;
|
||||
check_tree_recurse (root, 0, cnt);
|
||||
}
|
||||
|
||||
|
||||
#else
|
||||
|
||||
# define CHECK_TREE(a)
|
||||
|
||||
#endif
|
||||
|
||||
/* Possibly "split" a node with two red successors, and/or fix up two red
|
||||
edges in a row. ROOTP is a pointer to the lowest node we visited, PARENTP
|
||||
and GPARENTP pointers to its parent/grandparent. P_R and GP_R contain the
|
||||
comparison values that determined which way was taken in the tree to reach
|
||||
ROOTP. MODE is 1 if we need not do the split, but must check for two red
|
||||
edges between GPARENTP and ROOTP. */
|
||||
static void
|
||||
maybe_split_for_insert (node *rootp, node *parentp, node *gparentp,
|
||||
int p_r, int gp_r, int mode)
|
||||
{
|
||||
node root = *rootp;
|
||||
node *rp, *lp;
|
||||
rp = &(*rootp)->right;
|
||||
lp = &(*rootp)->left;
|
||||
|
||||
/* See if we have to split this node (both successors red). */
|
||||
if (mode == 1
|
||||
|| ((*rp) != NULL && (*lp) != NULL && (*rp)->red && (*lp)->red))
|
||||
{
|
||||
/* This node becomes red, its successors black. */
|
||||
root->red = 1;
|
||||
if (*rp)
|
||||
(*rp)->red = 0;
|
||||
if (*lp)
|
||||
(*lp)->red = 0;
|
||||
|
||||
/* If the parent of this node is also red, we have to do
|
||||
rotations. */
|
||||
if (parentp != NULL && (*parentp)->red)
|
||||
{
|
||||
node gp = *gparentp;
|
||||
node p = *parentp;
|
||||
/* There are two main cases:
|
||||
1. The edge types (left or right) of the two red edges differ.
|
||||
2. Both red edges are of the same type.
|
||||
There exist two symmetries of each case, so there is a total of
|
||||
4 cases. */
|
||||
if ((p_r > 0) != (gp_r > 0))
|
||||
{
|
||||
/* Put the child at the top of the tree, with its parent
|
||||
and grandparent as successors. */
|
||||
p->red = 1;
|
||||
gp->red = 1;
|
||||
root->red = 0;
|
||||
if (p_r < 0)
|
||||
{
|
||||
/* Child is left of parent. */
|
||||
p->left = *rp;
|
||||
*rp = p;
|
||||
gp->right = *lp;
|
||||
*lp = gp;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Child is right of parent. */
|
||||
p->right = *lp;
|
||||
*lp = p;
|
||||
gp->left = *rp;
|
||||
*rp = gp;
|
||||
}
|
||||
*gparentp = root;
|
||||
}
|
||||
else
|
||||
{
|
||||
*gparentp = *parentp;
|
||||
/* Parent becomes the top of the tree, grandparent and
|
||||
child are its successors. */
|
||||
p->red = 0;
|
||||
gp->red = 1;
|
||||
if (p_r < 0)
|
||||
{
|
||||
/* Left edges. */
|
||||
gp->left = p->right;
|
||||
p->right = gp;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Right edges. */
|
||||
gp->right = p->left;
|
||||
p->left = gp;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Find or insert datum into search tree.
|
||||
KEY is the key to be located, ROOTP is the address of tree root,
|
||||
COMPAR the ordering function. */
|
||||
void *
|
||||
__tsearch (const void *key, void **vrootp, __compar_fn_t compar)
|
||||
{
|
||||
node q;
|
||||
node *parentp = NULL, *gparentp = NULL;
|
||||
node *rootp = (node *) vrootp;
|
||||
node *nextp;
|
||||
int r = 0, p_r = 0, gp_r = 0; /* No they might not, Mr Compiler. */
|
||||
|
||||
if (rootp == NULL)
|
||||
return NULL;
|
||||
|
||||
/* This saves some additional tests below. */
|
||||
if (*rootp != NULL)
|
||||
(*rootp)->red = 0;
|
||||
|
||||
CHECK_TREE (*rootp);
|
||||
|
||||
nextp = rootp;
|
||||
while (*nextp != NULL)
|
||||
{
|
||||
node root = *rootp;
|
||||
r = (*compar) (key, root->key);
|
||||
if (r == 0)
|
||||
return root;
|
||||
|
||||
maybe_split_for_insert (rootp, parentp, gparentp, p_r, gp_r, 0);
|
||||
/* If that did any rotations, parentp and gparentp are now garbage.
|
||||
That doesn't matter, because the values they contain are never
|
||||
used again in that case. */
|
||||
|
||||
nextp = r < 0 ? &root->left : &root->right;
|
||||
if (*nextp == NULL)
|
||||
break;
|
||||
|
||||
gparentp = parentp;
|
||||
parentp = rootp;
|
||||
rootp = nextp;
|
||||
|
||||
gp_r = p_r;
|
||||
p_r = r;
|
||||
}
|
||||
|
||||
q = (struct node_t *) malloc (sizeof (struct node_t));
|
||||
if (q != NULL)
|
||||
{
|
||||
*nextp = q; /* link new node to old */
|
||||
q->key = key; /* initialize new node */
|
||||
q->red = 1;
|
||||
q->left = q->right = NULL;
|
||||
}
|
||||
if (nextp != rootp)
|
||||
/* There may be two red edges in a row now, which we must avoid by
|
||||
rotating the tree. */
|
||||
maybe_split_for_insert (nextp, rootp, parentp, r, p_r, 1);
|
||||
|
||||
return q;
|
||||
}
|
||||
#ifdef weak_alias
|
||||
weak_alias (__tsearch, tsearch)
|
||||
#endif
|
||||
|
||||
|
||||
/* Find datum in search tree.
|
||||
KEY is the key to be located, ROOTP is the address of tree root,
|
||||
COMPAR the ordering function. */
|
||||
void *
|
||||
__tfind (key, vrootp, compar)
|
||||
const void *key;
|
||||
void *const *vrootp;
|
||||
__compar_fn_t compar;
|
||||
{
|
||||
node *rootp = (node *) vrootp;
|
||||
|
||||
if (rootp == NULL)
|
||||
return NULL;
|
||||
|
||||
CHECK_TREE (*rootp);
|
||||
|
||||
while (*rootp != NULL)
|
||||
{
|
||||
node root = *rootp;
|
||||
int r;
|
||||
|
||||
r = (*compar) (key, root->key);
|
||||
if (r == 0)
|
||||
return root;
|
||||
|
||||
rootp = r < 0 ? &root->left : &root->right;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
#ifdef weak_alias
|
||||
weak_alias (__tfind, tfind)
|
||||
#endif
|
||||
|
||||
|
||||
/* Delete node with given key.
|
||||
KEY is the key to be deleted, ROOTP is the address of the root of tree,
|
||||
COMPAR the comparison function. */
|
||||
void *
|
||||
__tdelete (const void *key, void **vrootp, __compar_fn_t compar)
|
||||
{
|
||||
node p, q, r, retval;
|
||||
int cmp;
|
||||
node *rootp = (node *) vrootp;
|
||||
node root, unchained;
|
||||
/* Stack of nodes so we remember the parents without recursion. It's
|
||||
_very_ unlikely that there are paths longer than 40 nodes. The tree
|
||||
would need to have around 250.000 nodes. */
|
||||
int stacksize = 40;
|
||||
int sp = 0;
|
||||
node **nodestack = (node **) alloca (sizeof (node *) * stacksize);
|
||||
|
||||
if (rootp == NULL)
|
||||
return NULL;
|
||||
p = *rootp;
|
||||
if (p == NULL)
|
||||
return NULL;
|
||||
|
||||
CHECK_TREE (p);
|
||||
|
||||
while ((cmp = (*compar) (key, (*rootp)->key)) != 0)
|
||||
{
|
||||
if (sp == stacksize)
|
||||
{
|
||||
node **newstack;
|
||||
stacksize += 20;
|
||||
newstack = (node **) alloca (sizeof (node *) * stacksize);
|
||||
nodestack = memcpy (newstack, nodestack, sp * sizeof (node *));
|
||||
}
|
||||
|
||||
nodestack[sp++] = rootp;
|
||||
p = *rootp;
|
||||
rootp = ((cmp < 0)
|
||||
? &(*rootp)->left
|
||||
: &(*rootp)->right);
|
||||
if (*rootp == NULL)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* This is bogus if the node to be deleted is the root... this routine
|
||||
really should return an integer with 0 for success, -1 for failure
|
||||
and errno = ESRCH or something. */
|
||||
retval = p;
|
||||
|
||||
/* We don't unchain the node we want to delete. Instead, we overwrite
|
||||
it with its successor and unchain the successor. If there is no
|
||||
successor, we really unchain the node to be deleted. */
|
||||
|
||||
root = *rootp;
|
||||
|
||||
r = root->right;
|
||||
q = root->left;
|
||||
|
||||
if (q == NULL || r == NULL)
|
||||
unchained = root;
|
||||
else
|
||||
{
|
||||
node *parent = rootp, *up = &root->right;
|
||||
for (;;)
|
||||
{
|
||||
if (sp == stacksize)
|
||||
{
|
||||
node **newstack;
|
||||
stacksize += 20;
|
||||
newstack = (node **) alloca (sizeof (node *) * stacksize);
|
||||
nodestack = memcpy (newstack, nodestack, sp * sizeof (node *));
|
||||
}
|
||||
nodestack[sp++] = parent;
|
||||
parent = up;
|
||||
if ((*up)->left == NULL)
|
||||
break;
|
||||
up = &(*up)->left;
|
||||
}
|
||||
unchained = *up;
|
||||
}
|
||||
|
||||
/* We know that either the left or right successor of UNCHAINED is NULL.
|
||||
R becomes the other one, it is chained into the parent of UNCHAINED. */
|
||||
r = unchained->left;
|
||||
if (r == NULL)
|
||||
r = unchained->right;
|
||||
if (sp == 0)
|
||||
*rootp = r;
|
||||
else
|
||||
{
|
||||
q = *nodestack[sp-1];
|
||||
if (unchained == q->right)
|
||||
q->right = r;
|
||||
else
|
||||
q->left = r;
|
||||
}
|
||||
|
||||
if (unchained != root)
|
||||
root->key = unchained->key;
|
||||
if (!unchained->red)
|
||||
{
|
||||
/* Now we lost a black edge, which means that the number of black
|
||||
edges on every path is no longer constant. We must balance the
|
||||
tree. */
|
||||
/* NODESTACK now contains all parents of R. R is likely to be NULL
|
||||
in the first iteration. */
|
||||
/* NULL nodes are considered black throughout - this is necessary for
|
||||
correctness. */
|
||||
while (sp > 0 && (r == NULL || !r->red))
|
||||
{
|
||||
node *pp = nodestack[sp - 1];
|
||||
p = *pp;
|
||||
/* Two symmetric cases. */
|
||||
if (r == p->left)
|
||||
{
|
||||
/* Q is R's brother, P is R's parent. The subtree with root
|
||||
R has one black edge less than the subtree with root Q. */
|
||||
q = p->right;
|
||||
if (q != NULL && q->red)
|
||||
{
|
||||
/* If Q is red, we know that P is black. We rotate P left
|
||||
so that Q becomes the top node in the tree, with P below
|
||||
it. P is colored red, Q is colored black.
|
||||
This action does not change the black edge count for any
|
||||
leaf in the tree, but we will be able to recognize one
|
||||
of the following situations, which all require that Q
|
||||
is black. */
|
||||
q->red = 0;
|
||||
p->red = 1;
|
||||
/* Left rotate p. */
|
||||
p->right = q->left;
|
||||
q->left = p;
|
||||
*pp = q;
|
||||
/* Make sure pp is right if the case below tries to use
|
||||
it. */
|
||||
nodestack[sp++] = pp = &q->left;
|
||||
q = p->right;
|
||||
}
|
||||
/* We know that Q can't be NULL here. We also know that Q is
|
||||
black. */
|
||||
if ((q->left == NULL || !q->left->red)
|
||||
&& (q->right == NULL || !q->right->red))
|
||||
{
|
||||
/* Q has two black successors. We can simply color Q red.
|
||||
The whole subtree with root P is now missing one black
|
||||
edge. Note that this action can temporarily make the
|
||||
tree invalid (if P is red). But we will exit the loop
|
||||
in that case and set P black, which both makes the tree
|
||||
valid and also makes the black edge count come out
|
||||
right. If P is black, we are at least one step closer
|
||||
to the root and we'll try again the next iteration. */
|
||||
q->red = 1;
|
||||
r = p;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Q is black, one of Q's successors is red. We can
|
||||
repair the tree with one operation and will exit the
|
||||
loop afterwards. */
|
||||
if (q->right == NULL || !q->right->red)
|
||||
{
|
||||
/* The left one is red. We perform the same action as
|
||||
in maybe_split_for_insert where two red edges are
|
||||
adjacent but point in different directions:
|
||||
Q's left successor (let's call it Q2) becomes the
|
||||
top of the subtree we are looking at, its parent (Q)
|
||||
and grandparent (P) become its successors. The former
|
||||
successors of Q2 are placed below P and Q.
|
||||
P becomes black, and Q2 gets the color that P had.
|
||||
This changes the black edge count only for node R and
|
||||
its successors. */
|
||||
node q2 = q->left;
|
||||
q2->red = p->red;
|
||||
p->right = q2->left;
|
||||
q->left = q2->right;
|
||||
q2->right = q;
|
||||
q2->left = p;
|
||||
*pp = q2;
|
||||
p->red = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* It's the right one. Rotate P left. P becomes black,
|
||||
and Q gets the color that P had. Q's right successor
|
||||
also becomes black. This changes the black edge
|
||||
count only for node R and its successors. */
|
||||
q->red = p->red;
|
||||
p->red = 0;
|
||||
|
||||
q->right->red = 0;
|
||||
|
||||
/* left rotate p */
|
||||
p->right = q->left;
|
||||
q->left = p;
|
||||
*pp = q;
|
||||
}
|
||||
|
||||
/* We're done. */
|
||||
sp = 1;
|
||||
r = NULL;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Comments: see above. */
|
||||
q = p->left;
|
||||
if (q != NULL && q->red)
|
||||
{
|
||||
q->red = 0;
|
||||
p->red = 1;
|
||||
p->left = q->right;
|
||||
q->right = p;
|
||||
*pp = q;
|
||||
nodestack[sp++] = pp = &q->right;
|
||||
q = p->left;
|
||||
}
|
||||
if ((q->right == NULL || !q->right->red)
|
||||
&& (q->left == NULL || !q->left->red))
|
||||
{
|
||||
q->red = 1;
|
||||
r = p;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (q->left == NULL || !q->left->red)
|
||||
{
|
||||
node q2 = q->right;
|
||||
q2->red = p->red;
|
||||
p->left = q2->right;
|
||||
q->right = q2->left;
|
||||
q2->left = q;
|
||||
q2->right = p;
|
||||
*pp = q2;
|
||||
p->red = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
q->red = p->red;
|
||||
p->red = 0;
|
||||
q->left->red = 0;
|
||||
p->left = q->right;
|
||||
q->right = p;
|
||||
*pp = q;
|
||||
}
|
||||
sp = 1;
|
||||
r = NULL;
|
||||
}
|
||||
}
|
||||
--sp;
|
||||
}
|
||||
if (r != NULL)
|
||||
r->red = 0;
|
||||
}
|
||||
|
||||
free (unchained);
|
||||
return retval;
|
||||
}
|
||||
#ifdef weak_alias
|
||||
weak_alias (__tdelete, tdelete)
|
||||
#endif
|
||||
|
||||
|
||||
/* Walk the nodes of a tree.
|
||||
ROOT is the root of the tree to be walked, ACTION the function to be
|
||||
called at each node. LEVEL is the level of ROOT in the whole tree. */
|
||||
static void
|
||||
internal_function
|
||||
trecurse (const void *vroot, __action_fn_t action, int level)
|
||||
{
|
||||
const_node root = (const_node) vroot;
|
||||
|
||||
if (root->left == NULL && root->right == NULL)
|
||||
(*action) (root, leaf, level);
|
||||
else
|
||||
{
|
||||
(*action) (root, preorder, level);
|
||||
if (root->left != NULL)
|
||||
trecurse (root->left, action, level + 1);
|
||||
(*action) (root, postorder, level);
|
||||
if (root->right != NULL)
|
||||
trecurse (root->right, action, level + 1);
|
||||
(*action) (root, endorder, level);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Walk the nodes of a tree.
|
||||
ROOT is the root of the tree to be walked, ACTION the function to be
|
||||
called at each node. */
|
||||
void
|
||||
__twalk (const void *vroot, __action_fn_t action)
|
||||
{
|
||||
const_node root = (const_node) vroot;
|
||||
|
||||
CHECK_TREE (root);
|
||||
|
||||
if (root != NULL && action != NULL)
|
||||
trecurse (root, action, 0);
|
||||
}
|
||||
#ifdef weak_alias
|
||||
weak_alias (__twalk, twalk)
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
/* The standardized functions miss an important functionality: the
|
||||
tree cannot be removed easily. We provide a function to do this. */
|
||||
static void
|
||||
internal_function
|
||||
tdestroy_recurse (node root, void (*freefct)(void *))
|
||||
{
|
||||
if (root->left != NULL)
|
||||
tdestroy_recurse (root->left, freefct);
|
||||
if (root->right != NULL)
|
||||
tdestroy_recurse (root->right, freefct);
|
||||
(*freefct) ((void *) root->key);
|
||||
/* Free the node itself. */
|
||||
free (root);
|
||||
}
|
||||
|
||||
void
|
||||
__tdestroy (void *vroot, void (*freefct)(void *))
|
||||
{
|
||||
node root = (node) vroot;
|
||||
|
||||
CHECK_TREE (root);
|
||||
|
||||
if (root != NULL)
|
||||
tdestroy_recurse (root, freefct);
|
||||
}
|
||||
#ifdef weak_alias
|
||||
weak_alias (__tdestroy, tdestroy)
|
||||
#endif
|
||||
@@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 1998, 2001 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1998, 2001-2002 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
|
||||
@@ -58,14 +58,14 @@ utime_null (const char *file)
|
||||
fd = open (file, O_RDWR);
|
||||
if (fd < 0
|
||||
|| fstat (fd, &sb) < 0
|
||||
|| safe_read (fd, &c, sizeof c) < 0
|
||||
|| safe_read (fd, &c, sizeof c) == SAFE_READ_ERROR
|
||||
|| lseek (fd, (off_t) 0, SEEK_SET) < 0
|
||||
|| full_write (fd, &c, sizeof c) != sizeof c
|
||||
/* Maybe do this -- it's necessary on SunOS4.1.3 with some combination
|
||||
of patches, but that system doesn't use this code: it has utimes.
|
||||
|| fsync (fd) < 0
|
||||
*/
|
||||
|| ftruncate (fd, st.st_size) < 0
|
||||
|| (st.st_size == 0 && ftruncate (fd, st.st_size) < 0)
|
||||
|| close (fd) < 0)
|
||||
status = -1;
|
||||
return status;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* Utility to help print --version output in a consistent format.
|
||||
Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
|
||||
Copyright (C) 1999, 2000, 2001, 2002, 2003 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
|
||||
@@ -32,7 +32,7 @@
|
||||
|
||||
char* version_etc_copyright =
|
||||
/* Do *not* mark this string for translation. */
|
||||
"Copyright (C) 2002 Free Software Foundation, Inc.";
|
||||
"Copyright (C) 2003 Free Software Foundation, Inc.";
|
||||
|
||||
|
||||
/* Display the --version information the standard way.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* xgetcwd.c -- return current directory with unlimited length
|
||||
Copyright (C) 1992, 1996, 2000, 2001 Free Software Foundation, Inc.
|
||||
Copyright (C) 1992, 1996, 2000, 2001, 2003 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
|
||||
@@ -46,12 +46,16 @@ char *getwd ();
|
||||
#endif
|
||||
|
||||
#include "xalloc.h"
|
||||
#include "xgetcwd.h"
|
||||
|
||||
/* Return the current directory, newly allocated, arbitrarily long.
|
||||
Return NULL and set errno on error. */
|
||||
/* Return the current directory, newly allocated, assuming it fits
|
||||
within PATH_MAX bytes -- this is a common system-imposed limit
|
||||
on how getcwd works.
|
||||
Upon an out-of-memory error, call xalloc_die.
|
||||
Upon any other type of error, return NULL. */
|
||||
|
||||
char *
|
||||
xgetcwd ()
|
||||
xgetcwd (void)
|
||||
{
|
||||
#if HAVE_GETCWD_NULL
|
||||
char *cwd = getcwd (NULL, 0);
|
||||
|
||||
18
lib/xgetcwd.h
Normal file
18
lib/xgetcwd.h
Normal file
@@ -0,0 +1,18 @@
|
||||
/* prototype for xgetcwd
|
||||
Copyright (C) 2003 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. */
|
||||
|
||||
extern char *xgetcwd (void);
|
||||
@@ -1,5 +1,5 @@
|
||||
/* xnanosleep.c -- a more convenient interface to nanosleep
|
||||
Copyright (C) 2002 Free Software Foundation, Inc.
|
||||
Copyright (C) 2002, 2003 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,12 @@
|
||||
#include <sys/types.h>
|
||||
#include <time.h>
|
||||
|
||||
#define USE_CLOCK_GETTIME (defined CLOCK_REALTIME && HAVE_CLOCK_GETTIME)
|
||||
#if HAVE_CLOCK_GETTIME && defined CLOCK_REALTIME
|
||||
# define USE_CLOCK_GETTIME 1
|
||||
#else
|
||||
# define USE_CLOCK_GETTIME 0
|
||||
#endif
|
||||
|
||||
#if ! USE_CLOCK_GETTIME
|
||||
# include <sys/time.h>
|
||||
#endif
|
||||
|
||||
188
m4/ChangeLog
188
m4/ChangeLog
@@ -1,3 +1,191 @@
|
||||
2003-04-02 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* perl.m4 (jm_PERL): Use $am_missing_run, not undefined $missing_dir.
|
||||
|
||||
2003-03-19 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* ftw.m4 (AC_FUNC_FTW): Require AC_HEADER_STAT.
|
||||
|
||||
2003-03-17 Richard Dawe <rich@phekda.freeserve.co.uk>
|
||||
|
||||
* jm-macros.m4 (jm_MACROS): Include $(EXEEXT) in DF_PROG's program
|
||||
name, since automake only adds $(EXEEXT) to programs in its *_PROGRAMS.
|
||||
Arrange to compile the corresponding stub function if fchdir is missing.
|
||||
|
||||
2003-03-18 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* ls-mntd-fs.m4 (jm_LIST_MOUNTED_FILESYSTEMS): Move the MOUNTED_VMOUNT
|
||||
test to precede the MOUNTED_GETMNTENT1 tests, since otherwise, AIX 5.1
|
||||
systems would end up using the latter. MOUNTED_GETMNTENT1 support
|
||||
is inadequate on such systems: 1) detecting whether a file system
|
||||
is remote doesn't work 2) the MOUNTED_VMOUNT code reports the
|
||||
HOSTNAME:/MOUNT_POINT, while the MOUNTED_GETMNTENT1 code reports
|
||||
merely /MOUNT_POINT. Reported by Mike Jetzer.
|
||||
|
||||
2003-03-17 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* dirfd.m4 (UTILS_FUNC_DIRFD): Test the cache variable, not one
|
||||
that is guaranteed to be `no'. Use `no_such_member' to indicate
|
||||
that condition, rather than `-1' which is slightly misleading.
|
||||
Change the name of the cache variable to have the gl_ prefix.
|
||||
Prompted by a patch from Richard Dawe for DJGPP.
|
||||
|
||||
2003-03-14 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* prereq.m4 (jm_PREREQ): Also forbid the gl_[A-Z] prefix.
|
||||
Don't require jm_PREREQ_C_STACK.
|
||||
|
||||
2003-03-13 Paul Eggert <eggert@twinsun.com>
|
||||
|
||||
[from gnulib]
|
||||
* onceonly.m4 (m4_quote): New macro.
|
||||
(AC_CHECK_HEADERS_ONCE, AC_CHECK_FUNCS_ONCE, AC_CHECK_DECLS_ONCE):
|
||||
Quote AC_FOREACH variable-expansions properly.
|
||||
|
||||
2003-03-13 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* jm-macros.m4 (jm_MACROS): Arrange to compile the corresponding stub
|
||||
function if any of the following is missing: fchown, lstat, readlink.
|
||||
From Richard Dawe.
|
||||
|
||||
2003-03-07 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* jm-macros.m4 (AC_LANG_SOURCE(C)): New macro, undefine, then define
|
||||
using the latest version from cvs. This avoids problems with #line
|
||||
directives using a vendor (Sun) compiler.
|
||||
|
||||
* jm-macros.m4: Don't require AC_SYS_MMAP_STACK.
|
||||
* mmap-stack.m4 (AC_SYS_MMAP_STACK): Remove file.
|
||||
|
||||
2003-03-06 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* getcwd-path-max.m4 (GL_FUNC_GETCWD_PATH_MAX): Check for
|
||||
declaration of getcwd.
|
||||
|
||||
2003-03-04 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* getcwd-path-max.m4 (GL_FUNC_GETCWD_PATH_MAX): New macro.
|
||||
* jm-macros.m4: Require GL_FUNC_GETCWD_PATH_MAX.
|
||||
|
||||
`df /some/mount-point' no longer hangs when an unrelated hard-mount
|
||||
is unavailable
|
||||
* fsusage.m4 [__GLIBC__]: GNU libc's statvfs stats each mount point in
|
||||
/proc/mounts until it finds one with matching device number. This is
|
||||
unnecessary when the FILE argument *is* a mount point. No stat call
|
||||
is necessary in that case. So, disable the statvfs-testing code on
|
||||
systems with GNU libc. Reported by Andrei Gaponenko via Tim Waugh
|
||||
as RedHat bug# 84846.
|
||||
|
||||
2003-02-27 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* prereq.m4 (jm_PREREQ_PHYSMEM): Also check for `table' function.
|
||||
Reported by Kaveh Ghazi.
|
||||
|
||||
* prereq.m4 (gl_SYS__SYSTEM_CONFIGURATION): New function.
|
||||
(jm_PREREQ_PHYSMEM): Check for new headers and functions.
|
||||
Use gl_SYS__SYSTEM_CONFIGURATION.
|
||||
With suggestions from Kaveh Ghazi.
|
||||
|
||||
2003-02-19 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* c-stack.m4 (AC_SYS_XSI_STACK_OVERFLOW_HEURISTIC): Limit stack size
|
||||
to 1MB, so as not to render systems with no stack size limit (e.g.,
|
||||
linux-2.2.x) unusable. Suggestion and code from Bruno Haible.
|
||||
|
||||
2003-02-17 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* prereq.m4 (jm_PREREQ_PHYSMEM): Undo last change, since
|
||||
Kaveh Ghazi found a better way to get the required information.
|
||||
Add check for sys/sysmp.h.
|
||||
|
||||
2003-02-15 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* mmap-stack.m4: New file.
|
||||
|
||||
* jm-macros.m4: Require AC_SYS_MMAP_STACK.
|
||||
|
||||
Add Irix6 support to physmem.c.
|
||||
* prereq.m4 (jm_PREREQ_PHYSMEM): Also check for sys/sysget.h
|
||||
and sys/sysinfo.h.
|
||||
Also check for sysget.
|
||||
Reported by Kaveh Ghazi.
|
||||
|
||||
2003-02-12 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* restrict.m4 (ACX_C_RESTRICT): Remove #ifndef -- so now this
|
||||
macro also checks for support when using a C++ compiler.
|
||||
Also, remove the test for SGI's __restrict.
|
||||
Suggested by Steven G. Johnson.
|
||||
|
||||
* regex.m4 (jm_PREREQ_REGEX): Require ACX_C_RESTRICT.
|
||||
|
||||
* restrict.m4 (ACX_C_RESTRICT): Minor syntactic changes:
|
||||
Split long lines, use AC_COMPILE_IFELSE, indent, use `case'
|
||||
instead of nested `if's, remove unnecessary quotes.
|
||||
|
||||
* restrict.m4 (ACX_C_RESTRICT): New macro.
|
||||
Copied directly from the URL in the comments.
|
||||
By Steven G. Johnson.
|
||||
|
||||
2003-02-09 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* check-decl.m4 (jm_CHECK_DECLS): Add euidaccess.
|
||||
|
||||
2003-02-03 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* c-stack.m4: Include <unistd.h>. On some systems,
|
||||
it is required for the definition of _SC_PAGESIZE.
|
||||
|
||||
2003-02-02 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* onceonly.m4: New file. From gnulib.
|
||||
|
||||
* regex.m4 (jm_PREREQ_REGEX): New function, from gnulib.
|
||||
(jm_INCLUDED_REGEX): Use it.
|
||||
* prereq.m4 (jm_PREREQ_REGEX): Remove.
|
||||
|
||||
2003-01-31 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* open-max.m4 (UTILS_SYS_OPEN_MAX): New file/macro.
|
||||
* jm-macros.m4 (jm_MACROS): Require UTILS_SYS_OPEN_MAX.
|
||||
|
||||
2003-01-29 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* regex.m4: Detect broken re_search in e.g. glibc-2.2.93.
|
||||
|
||||
2003-01-23 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* dirfd.m4 (UTILS_FUNC_DIRFD): Correct typo: s/-1/no/ that kept this
|
||||
from working on systems without dirfd (at least Irix and OSF1/Tru64).
|
||||
|
||||
Merge in change by Bruno Haible from gnulib.
|
||||
* dirfd.m4 (UTILS_FUNC_DIRFD): Invoke some AC_EGREP_CPP requirements.
|
||||
|
||||
2003-01-16 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* regex.m4: The `regex' struct is both input and output.
|
||||
Initialize it before each use. Patch by Tim Waugh.
|
||||
|
||||
2003-01-15 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* jm-macros.m4: Require AC_FUNC_FTW.
|
||||
|
||||
2003-01-12 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* ftw.m4: New file.
|
||||
|
||||
2003-01-11 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* canonicalize.m4 (AC_FUNC_CANONICALIZE_FILE_NAME): New file and macro.
|
||||
* jm-macros.m4: Require AC_FUNC_CANONICALIZE_FILE_NAME.
|
||||
(jm_MACROS): No longer check for resolvepath or canonicalize_file_name.
|
||||
|
||||
2002-12-15 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* jm-glibc-io.m4n: Remove now-unused file.
|
||||
* Makefile.am.in (Makefile.am): Remove jm-glibc-io.m4
|
||||
and jm-glibc-io.m4n.
|
||||
|
||||
2002-12-11 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* jm-glibc-io.m4: Maintain this file manually rather than generating it.
|
||||
|
||||
@@ -2,13 +2,14 @@
|
||||
|
||||
##m4-files-begin
|
||||
EXTRA_DIST = \
|
||||
README jm-glibc-io.m4 jm-glibc-io.m4n Makefile.am.in \
|
||||
README Makefile.am.in \
|
||||
acl.m4 \
|
||||
afs.m4 \
|
||||
assert.m4 \
|
||||
bison.m4 \
|
||||
boottime.m4 \
|
||||
c-stack.m4 \
|
||||
canonicalize.m4 \
|
||||
check-decl.m4 \
|
||||
chown.m4 \
|
||||
codeset.m4 \
|
||||
@@ -21,6 +22,8 @@ fpending.m4 \
|
||||
fstypename.m4 \
|
||||
fsusage.m4 \
|
||||
ftruncate.m4 \
|
||||
ftw.m4 \
|
||||
getcwd-path-max.m4 \
|
||||
getcwd.m4 \
|
||||
getgroups.m4 \
|
||||
getline.m4 \
|
||||
@@ -56,12 +59,15 @@ memcmp.m4 \
|
||||
mkdir-slash.m4 \
|
||||
mkstemp.m4 \
|
||||
nanosleep.m4 \
|
||||
onceonly.m4 \
|
||||
open-max.m4 \
|
||||
perl.m4 \
|
||||
prereq.m4 \
|
||||
progtest.m4 \
|
||||
putenv.m4 \
|
||||
regex.m4 \
|
||||
rename.m4 \
|
||||
restrict.m4 \
|
||||
rmdir-errno.m4 \
|
||||
search-libs.m4 \
|
||||
st_dm_mode.m4 \
|
||||
@@ -83,7 +89,7 @@ Makefile.am: Makefile.am.in
|
||||
rm -f $@ $@t
|
||||
sed -n '1,/^##m4-files-begin/p' $< > $@t
|
||||
(((echo EXTRA_DIST =; \
|
||||
echo " README jm-glibc-io.m4 jm-glibc-io.m4n Makefile.am.in" \
|
||||
echo " README Makefile.am.in" \
|
||||
) | tr '\012' @); \
|
||||
(echo *.m4|tr ' ' @) ) \
|
||||
|sed 's/@$$/%/;s/@/ \\@/g' |tr @% '\012\012' \
|
||||
|
||||
@@ -7,7 +7,7 @@ Makefile.am: Makefile.am.in
|
||||
rm -f $@ $@t
|
||||
sed -n '1,/^##m4-files-begin/p' $< > $@t
|
||||
(((echo EXTRA_DIST =; \
|
||||
echo " README jm-glibc-io.m4 jm-glibc-io.m4n Makefile.am.in" \
|
||||
echo " README Makefile.am.in" \
|
||||
) | tr '\012' @); \
|
||||
(echo *.m4|tr ' ' @) ) \
|
||||
|sed 's/@$$/%/;s/@/ \\@/g' |tr @% '\012\012' \
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# Makefile.in generated by automake 1.7.1b from Makefile.am.
|
||||
# Makefile.in generated by automake 1.7.3 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
|
||||
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
|
||||
# Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@@ -79,6 +79,7 @@ LIBS = @LIBS@
|
||||
LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
|
||||
LIB_CRYPT = @LIB_CRYPT@
|
||||
LIB_NANOSLEEP = @LIB_NANOSLEEP@
|
||||
LN_S = @LN_S@
|
||||
LTLIBICONV = @LTLIBICONV@
|
||||
LTLIBINTL = @LTLIBINTL@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
@@ -118,6 +119,7 @@ ac_ct_STRIP = @ac_ct_STRIP@
|
||||
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
|
||||
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
@@ -148,13 +150,14 @@ sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
|
||||
EXTRA_DIST = \
|
||||
README jm-glibc-io.m4 jm-glibc-io.m4n Makefile.am.in \
|
||||
README Makefile.am.in \
|
||||
acl.m4 \
|
||||
afs.m4 \
|
||||
assert.m4 \
|
||||
bison.m4 \
|
||||
boottime.m4 \
|
||||
c-stack.m4 \
|
||||
canonicalize.m4 \
|
||||
check-decl.m4 \
|
||||
chown.m4 \
|
||||
codeset.m4 \
|
||||
@@ -167,6 +170,8 @@ fpending.m4 \
|
||||
fstypename.m4 \
|
||||
fsusage.m4 \
|
||||
ftruncate.m4 \
|
||||
ftw.m4 \
|
||||
getcwd-path-max.m4 \
|
||||
getcwd.m4 \
|
||||
getgroups.m4 \
|
||||
getline.m4 \
|
||||
@@ -202,12 +207,15 @@ memcmp.m4 \
|
||||
mkdir-slash.m4 \
|
||||
mkstemp.m4 \
|
||||
nanosleep.m4 \
|
||||
onceonly.m4 \
|
||||
open-max.m4 \
|
||||
perl.m4 \
|
||||
prereq.m4 \
|
||||
progtest.m4 \
|
||||
putenv.m4 \
|
||||
regex.m4 \
|
||||
rename.m4 \
|
||||
restrict.m4 \
|
||||
rmdir-errno.m4 \
|
||||
search-libs.m4 \
|
||||
st_dm_mode.m4 \
|
||||
@@ -225,6 +233,7 @@ xstrtoimax.m4 \
|
||||
xstrtoumax.m4
|
||||
|
||||
subdir = m4
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
@@ -365,7 +374,7 @@ Makefile.am: Makefile.am.in
|
||||
rm -f $@ $@t
|
||||
sed -n '1,/^##m4-files-begin/p' $< > $@t
|
||||
(((echo EXTRA_DIST =; \
|
||||
echo " README jm-glibc-io.m4 jm-glibc-io.m4n Makefile.am.in" \
|
||||
echo " README Makefile.am.in" \
|
||||
) | tr '\012' @); \
|
||||
(echo *.m4|tr ' ' @) ) \
|
||||
|sed 's/@$$/%/;s/@/ \\@/g' |tr @% '\012\012' \
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Check prerequisites for compiling lib/c-stack.c.
|
||||
|
||||
# Copyright (C) 2002 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2002, 2003 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
|
||||
@@ -22,13 +22,20 @@
|
||||
AC_DEFUN([AC_SYS_XSI_STACK_OVERFLOW_HEURISTIC],
|
||||
[# for STACK_DIRECTION
|
||||
AC_REQUIRE([AC_FUNC_ALLOCA])
|
||||
AC_CHECK_FUNCS(setrlimit)
|
||||
|
||||
AC_CACHE_CHECK([for working C stack overflow detection],
|
||||
ac_cv_sys_xsi_stack_overflow_heuristic,
|
||||
[AC_TRY_RUN(
|
||||
[
|
||||
#include <unistd.h>
|
||||
#include <signal.h>
|
||||
#include <ucontext.h>
|
||||
#if HAVE_SETRLIMIT
|
||||
# include <sys/types.h>
|
||||
# include <sys/time.h>
|
||||
# include <sys/resource.h>
|
||||
#endif
|
||||
|
||||
static union
|
||||
{
|
||||
@@ -101,6 +108,16 @@ AC_DEFUN([AC_SYS_XSI_STACK_OVERFLOW_HEURISTIC],
|
||||
int
|
||||
main (void)
|
||||
{
|
||||
#if HAVE_SETRLIMIT && defined RLIMIT_STACK
|
||||
/* Before starting the endless recursion, try to be friendly
|
||||
to the user's machine. On some Linux 2.2.x systems, there
|
||||
is no stack limit for user processes at all. We don't want
|
||||
to kill such systems. */
|
||||
struct rlimit rl;
|
||||
rl.rlim_cur = rl.rlim_max = 0x100000; /* 1 MB */
|
||||
setrlimit (RLIMIT_STACK, &rl);
|
||||
#endif
|
||||
|
||||
c_stack_action ();
|
||||
return recurse ("\1");
|
||||
}
|
||||
|
||||
13
m4/canonicalize.m4
Normal file
13
m4/canonicalize.m4
Normal file
@@ -0,0 +1,13 @@
|
||||
#serial 1
|
||||
AC_DEFUN([AC_FUNC_CANONICALIZE_FILE_NAME],
|
||||
[
|
||||
AC_REQUIRE([AC_HEADER_STDC])
|
||||
AC_CHECK_HEADERS(string.h sys/param.h stddef.h)
|
||||
AC_CHECK_FUNCS(resolvepath)
|
||||
AC_REQUIRE([AC_HEADER_STAT])
|
||||
|
||||
# This would simply be AC_REPLACE_FUNC([canonicalize_file_name])
|
||||
# if the function name weren't so long. Besides, I would rather
|
||||
# not have underscores in file names.
|
||||
AC_CHECK_FUNC([canonicalize_file_name], , [AC_LIBOBJ(canonicalize)])
|
||||
])
|
||||
@@ -1,4 +1,4 @@
|
||||
#serial 18
|
||||
#serial 19
|
||||
|
||||
dnl This is just a wrapper function to encapsulate this kludge.
|
||||
dnl Putting it in a separate file like this helps share it between
|
||||
@@ -52,6 +52,7 @@ AC_DEFUN([jm_CHECK_DECLS],
|
||||
'
|
||||
|
||||
AC_CHECK_DECLS([
|
||||
euidaccess,
|
||||
free,
|
||||
getenv,
|
||||
geteuid,
|
||||
|
||||
16
m4/dirfd.m4
16
m4/dirfd.m4
@@ -1,10 +1,14 @@
|
||||
#serial 2
|
||||
#serial 5
|
||||
|
||||
dnl Find out how to get the file descriptor associated with an open DIR*.
|
||||
dnl From Jim Meyering
|
||||
|
||||
AC_DEFUN([UTILS_FUNC_DIRFD],
|
||||
[
|
||||
dnl Work around a bug of AC_EGREP_CPP in autoconf-2.57.
|
||||
AC_REQUIRE([AC_PROG_CPP])
|
||||
AC_REQUIRE([AC_PROG_EGREP])
|
||||
|
||||
AC_HEADER_DIRENT
|
||||
dirfd_headers='
|
||||
#if HAVE_DIRENT_H
|
||||
@@ -41,7 +45,7 @@ AC_DEFUN([UTILS_FUNC_DIRFD],
|
||||
AC_REPLACE_FUNCS([dirfd])
|
||||
AC_CACHE_CHECK(
|
||||
[how to get the file descriptor associated with an open DIR*],
|
||||
ac_cv_sys_dir_fd_member_name,
|
||||
gl_cv_sys_dir_fd_member_name,
|
||||
[
|
||||
dirfd_save_CFLAGS=$CFLAGS
|
||||
for ac_expr in d_fd dd_fd; do
|
||||
@@ -56,14 +60,14 @@ AC_DEFUN([UTILS_FUNC_DIRFD],
|
||||
CFLAGS=$dirfd_save_CFLAGS
|
||||
test "$dir_fd_found" = yes && break
|
||||
done
|
||||
test "$dir_fd_found" = yes || ac_expr=-1
|
||||
test "$dir_fd_found" = yes || ac_expr=no_such_member
|
||||
|
||||
ac_cv_sys_dir_fd_member_name=$ac_expr
|
||||
gl_cv_sys_dir_fd_member_name=$ac_expr
|
||||
]
|
||||
)
|
||||
if test $ac_cv_have_decl_dirfd = -1; then
|
||||
if test $gl_cv_sys_dir_fd_member_name != no_such_member; then
|
||||
AC_DEFINE_UNQUOTED(DIR_FD_MEMBER_NAME,
|
||||
$ac_cv_sys_dir_fd_member_name,
|
||||
$gl_cv_sys_dir_fd_member_name,
|
||||
[the name of the file descriptor member of DIR])
|
||||
fi
|
||||
AH_VERBATIM(DIR_TO_FD,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#serial 8
|
||||
#serial 9
|
||||
|
||||
# From fileutils/configure.in
|
||||
|
||||
@@ -24,6 +24,11 @@ if test $ac_fsusage_space = no; then
|
||||
# SVR4
|
||||
AC_CACHE_CHECK([for statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
|
||||
[AC_TRY_LINK([#include <sys/types.h>
|
||||
#ifdef __GLIBC__
|
||||
Do not use statvfs on systems with GNU libc, because that function stats
|
||||
all preceding entries in /proc/mounts, and that makes df hang if even
|
||||
one of the corresponding file systems is hard-mounted, but not available.
|
||||
#endif
|
||||
#include <sys/statvfs.h>],
|
||||
[struct statvfs fsd; statvfs (0, &fsd);],
|
||||
fu_cv_sys_stat_statvfs=yes,
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user