mirror of
https://git.savannah.gnu.org/git/coreutils.git
synced 2025-09-10 07:59:52 +02:00
Compare commits
1523 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2df18658dc | ||
|
|
22ce855eb6 | ||
|
|
e5b0d0aa85 | ||
|
|
3b3a4c3b20 | ||
|
|
a23eb4a58c | ||
|
|
987f3b383a | ||
|
|
3a246cc314 | ||
|
|
a0fcf62767 | ||
|
|
5ad9cd982c | ||
|
|
1289d06809 | ||
|
|
1a00d99c2f | ||
|
|
418a7c8c43 | ||
|
|
3244e9a493 | ||
|
|
80886a8db3 | ||
|
|
ba79117e35 | ||
|
|
0154d1876b | ||
|
|
78bc0d8366 | ||
|
|
9236b6befc | ||
|
|
cfbf64e087 | ||
|
|
16d5b9133a | ||
|
|
c84d9ff0d1 | ||
|
|
9d302e0729 | ||
|
|
fa2b1fe3bc | ||
|
|
ead8494d04 | ||
|
|
023d6ad752 | ||
|
|
8397326569 | ||
|
|
f073139b52 | ||
|
|
4a16cc52e0 | ||
|
|
037836e29f | ||
|
|
2869cbffcf | ||
|
|
9afbf11b76 | ||
|
|
ffafcd2998 | ||
|
|
01dddfef2a | ||
|
|
db7ffe5582 | ||
|
|
6d1d2c0068 | ||
|
|
407ff38d94 | ||
|
|
ade68b234a | ||
|
|
8c0eb21023 | ||
|
|
decc2e1f87 | ||
|
|
93f90065f3 | ||
|
|
d24265f965 | ||
|
|
433a1eac7f | ||
|
|
acaeed035b | ||
|
|
4e9733c2e1 | ||
|
|
4cf3358407 | ||
|
|
15c54c0b83 | ||
|
|
87bfb896c6 | ||
|
|
4ab47a295f | ||
|
|
adcb60e9d8 | ||
|
|
b1a2656bdb | ||
|
|
a5e7cc0811 | ||
|
|
ff7f318ae1 | ||
|
|
aa4f6c56c7 | ||
|
|
a402cb33ba | ||
|
|
5e56a8e861 | ||
|
|
dc64059426 | ||
|
|
cd321e4660 | ||
|
|
7c4b2e2a5c | ||
|
|
73742c2566 | ||
|
|
f2f8ea1001 | ||
|
|
f8abf03c3f | ||
|
|
65533e1b09 | ||
|
|
129e7756b9 | ||
|
|
8cfbf68782 | ||
|
|
c678c40671 | ||
|
|
36ed13bc2f | ||
|
|
14f6099f6e | ||
|
|
2409478e37 | ||
|
|
a7537e5f07 | ||
|
|
7e5863463c | ||
|
|
0d98074403 | ||
|
|
f0992c673c | ||
|
|
6767712f7e | ||
|
|
d578d8a8be | ||
|
|
528fe6e504 | ||
|
|
aa24517b5f | ||
|
|
6eb119a91e | ||
|
|
e7583d05d3 | ||
|
|
1e7c68d3fc | ||
|
|
aaa8e4f378 | ||
|
|
fa78395b2a | ||
|
|
b8bbece57a | ||
|
|
82e0ce4d8b | ||
|
|
667f225c08 | ||
|
|
256d18e81b | ||
|
|
2f418ef97d | ||
|
|
d2c6ae7fbc | ||
|
|
2465b478fd | ||
|
|
efb40f6b0f | ||
|
|
03d872537a | ||
|
|
b7f9a7ed05 | ||
|
|
97e1e9019d | ||
|
|
5637c1634f | ||
|
|
0b34021d6d | ||
|
|
995cbf7830 | ||
|
|
2a287ee69b | ||
|
|
fd991bcc57 | ||
|
|
ef79e4ea3b | ||
|
|
c04a374bb0 | ||
|
|
5a06d062c7 | ||
|
|
3a208b1404 | ||
|
|
a321dfb09d | ||
|
|
1827b515aa | ||
|
|
ccb1883fcd | ||
|
|
427a636ae3 | ||
|
|
0ff7cb7f69 | ||
|
|
627f9b7fb1 | ||
|
|
f2641bb9f7 | ||
|
|
7192610528 | ||
|
|
bdcc26e24b | ||
|
|
a29aa4faa6 | ||
|
|
e27208b635 | ||
|
|
e718c61a7c | ||
|
|
554d94c647 | ||
|
|
2df2295d68 | ||
|
|
0971f7f44a | ||
|
|
c6a13a3354 | ||
|
|
680bd6f6dd | ||
|
|
a1eae84aed | ||
|
|
2c5f6e6e2c | ||
|
|
eb12ed1aa7 | ||
|
|
9e0a095be6 | ||
|
|
2060c55141 | ||
|
|
6ad7eac04f | ||
|
|
492f011795 | ||
|
|
3ddfde6897 | ||
|
|
aa91e4fe34 | ||
|
|
6e41860c41 | ||
|
|
6e31234fbb | ||
|
|
84d2889e40 | ||
|
|
db42e50e5e | ||
|
|
7d97c337a7 | ||
|
|
30e6fc491f | ||
|
|
865bf3e4ff | ||
|
|
603da96fbd | ||
|
|
6f91fb9595 | ||
|
|
76d82ec5cc | ||
|
|
f8e8d8dd69 | ||
|
|
a58ac00556 | ||
|
|
16f64d42ba | ||
|
|
6d62ac46ce | ||
|
|
628c7baa85 | ||
|
|
d847e28b37 | ||
|
|
01014bb951 | ||
|
|
4d9d2da4a8 | ||
|
|
577faf65e3 | ||
|
|
1d396d7008 | ||
|
|
76b12f0005 | ||
|
|
83978a5654 | ||
|
|
8401b6ae54 | ||
|
|
c09c4070ff | ||
|
|
6060142d89 | ||
|
|
1d5f7fa081 | ||
|
|
b2bc8fd0fd | ||
|
|
86e8a6b15e | ||
|
|
44ba013923 | ||
|
|
9a1ed6fbf9 | ||
|
|
a60cc14aed | ||
|
|
e9b48653e2 | ||
|
|
3a10b32994 | ||
|
|
f25ddb12c6 | ||
|
|
999eeed90f | ||
|
|
c5b6394401 | ||
|
|
77c9d9a009 | ||
|
|
a283f2df1a | ||
|
|
01e7d49a3b | ||
|
|
d6697c60c3 | ||
|
|
2b6236d156 | ||
|
|
888ee9b8d9 | ||
|
|
6e1e9cd9b4 | ||
|
|
86f86c121b | ||
|
|
6eb562ad35 | ||
|
|
04463c3a6f | ||
|
|
159f930158 | ||
|
|
914c8674a5 | ||
|
|
f354f3be02 | ||
|
|
197b96d069 | ||
|
|
b3e1ad7a5d | ||
|
|
b35b31b0f8 | ||
|
|
20c336e6d2 | ||
|
|
2b001e3490 | ||
|
|
c7a6c4014f | ||
|
|
8c572b86f6 | ||
|
|
613b3f819c | ||
|
|
925076c5d6 | ||
|
|
55755b03cd | ||
|
|
1ee1c4d4a3 | ||
|
|
7c3fd7cbec | ||
|
|
d740f05066 | ||
|
|
fbb436b3f8 | ||
|
|
cb052e4f6c | ||
|
|
28edf6a75e | ||
|
|
533793f35c | ||
|
|
ba6a5af063 | ||
|
|
62f3c3097c | ||
|
|
75f0b1e2da | ||
|
|
7d65513654 | ||
|
|
00318b60c9 | ||
|
|
7ea443fa86 | ||
|
|
a3752970c9 | ||
|
|
ecdb09854e | ||
|
|
2d9ebdc8ae | ||
|
|
d80c390842 | ||
|
|
6b535b03bb | ||
|
|
24ec8f28bb | ||
|
|
a56e9c5a4d | ||
|
|
38fbc11f7b | ||
|
|
1ac491f062 | ||
|
|
b544360dab | ||
|
|
2a7f886e47 | ||
|
|
36a288e41a | ||
|
|
7669f3998d | ||
|
|
21f0c888a2 | ||
|
|
addbdadf16 | ||
|
|
2880a90019 | ||
|
|
ba761d685f | ||
|
|
ab4ed7f7f1 | ||
|
|
6a97405672 | ||
|
|
8e19f6282b | ||
|
|
d380605f01 | ||
|
|
71e6c80352 | ||
|
|
948ca71450 | ||
|
|
a9cf203e2d | ||
|
|
1a29d221b8 | ||
|
|
a47c5ca291 | ||
|
|
2741ffb8b4 | ||
|
|
ae87c86b4a | ||
|
|
d67693ced9 | ||
|
|
20592da66e | ||
|
|
c4a674722c | ||
|
|
f483ac253e | ||
|
|
001f33d478 | ||
|
|
2789dcc1b9 | ||
|
|
85e93ac1bf | ||
|
|
b1f0257390 | ||
|
|
58df3afc50 | ||
|
|
047839ffb4 | ||
|
|
31acf81fa0 | ||
|
|
2d33a9301b | ||
|
|
7b49a25b50 | ||
|
|
0830b1b82a | ||
|
|
aa9b173531 | ||
|
|
530a8d72cc | ||
|
|
8939a957c7 | ||
|
|
69f1a97138 | ||
|
|
248c092226 | ||
|
|
3964d508e2 | ||
|
|
42ae65127f | ||
|
|
507aaa0037 | ||
|
|
6b2cf24aac | ||
|
|
0f39955197 | ||
|
|
1d30cbe7df | ||
|
|
37fe2d4d3e | ||
|
|
6c5f11fbfe | ||
|
|
75a229e3a3 | ||
|
|
74d539a32f | ||
|
|
28b3cf0a5c | ||
|
|
2e63aaa8a9 | ||
|
|
4a8016db69 | ||
|
|
59e82cb266 | ||
|
|
5b3614ac91 | ||
|
|
3869e29196 | ||
|
|
ab621d9fa1 | ||
|
|
699d9c460e | ||
|
|
0b24b84044 | ||
|
|
3eaec256b7 | ||
|
|
d54ac21e44 | ||
|
|
41872b2d6b | ||
|
|
c1f8b7eba9 | ||
|
|
84ab5b148f | ||
|
|
4333e76636 | ||
|
|
78e532a9e4 | ||
|
|
0e0f6e1050 | ||
|
|
c4d2d39cf8 | ||
|
|
05d3db5c60 | ||
|
|
df96ded8ae | ||
|
|
80059da4ca | ||
|
|
7590adf9b9 | ||
|
|
78b166d1b1 | ||
|
|
9cabe37ac9 | ||
|
|
5cd6710f08 | ||
|
|
6def7f6227 | ||
|
|
d77808bb40 | ||
|
|
59bafa5a0c | ||
|
|
cc70571401 | ||
|
|
b2657ecc6a | ||
|
|
99fb2bfe1f | ||
|
|
b505087420 | ||
|
|
9d5fbcc019 | ||
|
|
8280381dd7 | ||
|
|
c88873d3a4 | ||
|
|
d5a9087fb1 | ||
|
|
bee8bb4c9b | ||
|
|
050ec5cb29 | ||
|
|
ed91e298a4 | ||
|
|
48d2f62213 | ||
|
|
a40e199756 | ||
|
|
0b1dce2485 | ||
|
|
bf24627b4f | ||
|
|
0399d3ff5f | ||
|
|
89c21e7043 | ||
|
|
ef8e124bb2 | ||
|
|
a49a6bfe1b | ||
|
|
3afe316b52 | ||
|
|
a2b4ccc56a | ||
|
|
585d681783 | ||
|
|
e48234f842 | ||
|
|
61691e8f40 | ||
|
|
3807c8d93d | ||
|
|
b50d64f0ad | ||
|
|
966a2f95a3 | ||
|
|
ba2948b764 | ||
|
|
13d0cd669e | ||
|
|
ff276995ff | ||
|
|
d9f0cce0f4 | ||
|
|
949ed19da0 | ||
|
|
a8ee9bcfb3 | ||
|
|
82f9a230aa | ||
|
|
ea7ded281d | ||
|
|
790892db65 | ||
|
|
cad27cdc2e | ||
|
|
0eef2e1e8b | ||
|
|
8863262663 | ||
|
|
dea306fe78 | ||
|
|
0038f24b9a | ||
|
|
8ef928100b | ||
|
|
856e93df76 | ||
|
|
8818e69748 | ||
|
|
0d82817eb4 | ||
|
|
f9265a7efe | ||
|
|
53ca379fa3 | ||
|
|
4c7979f7c2 | ||
|
|
6293c4ae50 | ||
|
|
09024704ab | ||
|
|
db5756af29 | ||
|
|
593453d7bf | ||
|
|
cfa91bfde8 | ||
|
|
8cf6d1850d | ||
|
|
42314d3303 | ||
|
|
5d3b41a84a | ||
|
|
558b3aacbe | ||
|
|
d641a6ad5d | ||
|
|
90407bb522 | ||
|
|
a143307078 | ||
|
|
84abb198a2 | ||
|
|
9af6ea12a1 | ||
|
|
8542aa6622 | ||
|
|
59985f42e6 | ||
|
|
9602351980 | ||
|
|
fe7323d6cf | ||
|
|
206844c0c4 | ||
|
|
837d12dd60 | ||
|
|
17fc4cd8ab | ||
|
|
3dc0c35710 | ||
|
|
df91a82135 | ||
|
|
6f12bb8b21 | ||
|
|
d3ff52d9e2 | ||
|
|
19c28b06a0 | ||
|
|
83e40cc849 | ||
|
|
35e7e45ccd | ||
|
|
ff2009280e | ||
|
|
b854d91281 | ||
|
|
e9eb2ad579 | ||
|
|
32cea0d8ae | ||
|
|
5002b0ba79 | ||
|
|
066e22e537 | ||
|
|
850b999dbb | ||
|
|
8ebe82ae29 | ||
|
|
bd52082675 | ||
|
|
41f08b2239 | ||
|
|
82008e43bd | ||
|
|
c512471974 | ||
|
|
900b6598d1 | ||
|
|
d523a83be5 | ||
|
|
3e3aff9926 | ||
|
|
8fb9de41d5 | ||
|
|
6776bb7d30 | ||
|
|
ae5d9079f9 | ||
|
|
20c78772b3 | ||
|
|
c58e7ee1cc | ||
|
|
c11a92383d | ||
|
|
ccea9e8650 | ||
|
|
86873e5082 | ||
|
|
7e9a2a1429 | ||
|
|
4e5f6a5b5e | ||
|
|
197f7d766e | ||
|
|
e06a5a5cc7 | ||
|
|
58f42eb607 | ||
|
|
db19f3df8b | ||
|
|
212ffe61af | ||
|
|
06918c9589 | ||
|
|
63deb75831 | ||
|
|
ad17714291 | ||
|
|
7729ee5e68 | ||
|
|
48138763f0 | ||
|
|
3c51d8f36f | ||
|
|
4e4cb620fb | ||
|
|
9f1c534949 | ||
|
|
b54dfec827 | ||
|
|
0e3dfb2439 | ||
|
|
3b136eec7b | ||
|
|
03b02874a7 | ||
|
|
ccafe4292f | ||
|
|
5a55ecfac3 | ||
|
|
af5ca358b9 | ||
|
|
156459c2f5 | ||
|
|
8ebce3d9a5 | ||
|
|
54d36f3dc2 | ||
|
|
b7c2ae47f0 | ||
|
|
96a2e1be04 | ||
|
|
c70ad7aa27 | ||
|
|
6ccf57e3b9 | ||
|
|
40b5d67c1f | ||
|
|
f79fbe2212 | ||
|
|
f1d1ee9121 | ||
|
|
029057a361 | ||
|
|
6dd69d3281 | ||
|
|
b8b7669b3e | ||
|
|
d4d3446bab | ||
|
|
6af864de67 | ||
|
|
194a26ac5c | ||
|
|
c8a85eda8c | ||
|
|
f7e3e90916 | ||
|
|
89745f895e | ||
|
|
afbf453a82 | ||
|
|
a44d1cdd38 | ||
|
|
e0beb8aab5 | ||
|
|
23e6a454b4 | ||
|
|
9980147451 | ||
|
|
f3e78aa999 | ||
|
|
cc86eaf147 | ||
|
|
b68ddecba7 | ||
|
|
439be6d613 | ||
|
|
1cf31b9cb6 | ||
|
|
c5a425ef3d | ||
|
|
8840dfb071 | ||
|
|
7704c7d7cb | ||
|
|
29f7820bba | ||
|
|
aa02687360 | ||
|
|
8b13a959ae | ||
|
|
b5497557d3 | ||
|
|
06ba3a2237 | ||
|
|
d98da55f1d | ||
|
|
72049d2e2e | ||
|
|
db0ab05030 | ||
|
|
6c63d830b4 | ||
|
|
aac1ddf240 | ||
|
|
c1f85fb9e1 | ||
|
|
b400a630ae | ||
|
|
c139c9a58b | ||
|
|
1e4bc06b2e | ||
|
|
c37b81a6fa | ||
|
|
1f350a9d34 | ||
|
|
a99440c4ee | ||
|
|
f0562bdf48 | ||
|
|
972d0198a9 | ||
|
|
dfef85e753 | ||
|
|
9f0b994993 | ||
|
|
d02ad57764 | ||
|
|
779532f556 | ||
|
|
79aba863ce | ||
|
|
02207e6a72 | ||
|
|
972fa947d1 | ||
|
|
db6a912f8c | ||
|
|
513c5ec411 | ||
|
|
5bbcc061d8 | ||
|
|
43d487b711 | ||
|
|
f3bacff51f | ||
|
|
332498c318 | ||
|
|
ae5252e393 | ||
|
|
d918aff890 | ||
|
|
58d7770a00 | ||
|
|
137de3d3b6 | ||
|
|
54cf93b996 | ||
|
|
99277ba7c6 | ||
|
|
dc536fbed1 | ||
|
|
ac2d45ce67 | ||
|
|
79cbf5925c | ||
|
|
3280967bdb | ||
|
|
1cdde80263 | ||
|
|
e4e04491a0 | ||
|
|
0c13c770e3 | ||
|
|
58fab28670 | ||
|
|
415dddb568 | ||
|
|
ade4e95345 | ||
|
|
39448a239a | ||
|
|
ca094485f9 | ||
|
|
52f9cd6688 | ||
|
|
ea26299816 | ||
|
|
47d0eb8722 | ||
|
|
8085d02998 | ||
|
|
d657c35562 | ||
|
|
091c012089 | ||
|
|
52bb8bdd10 | ||
|
|
3125c35bc7 | ||
|
|
372285b207 | ||
|
|
eeac99af71 | ||
|
|
e0637b5b68 | ||
|
|
00e67bf028 | ||
|
|
eda15d7cca | ||
|
|
2e16cd4302 | ||
|
|
e26a29be00 | ||
|
|
cec6e43aae | ||
|
|
2fc455e2d5 | ||
|
|
368bc94656 | ||
|
|
dfe1ede00d | ||
|
|
ce1f8e6ecd | ||
|
|
7e17831f0a | ||
|
|
79b051c610 | ||
|
|
93305ed5f9 | ||
|
|
661b506c3d | ||
|
|
110970f622 | ||
|
|
6fd9c6f98e | ||
|
|
2a75bb4ae0 | ||
|
|
f666da6f32 | ||
|
|
1ff52c6a54 | ||
|
|
0dfc08bf3a | ||
|
|
9066275509 | ||
|
|
1f1ff10b0c | ||
|
|
8745735aaf | ||
|
|
fad52643e0 | ||
|
|
2a124564c7 | ||
|
|
87bd526828 | ||
|
|
ff652937b0 | ||
|
|
ba75c95164 | ||
|
|
72021730a8 | ||
|
|
1fe38016fa | ||
|
|
dd175a9f41 | ||
|
|
38433b219d | ||
|
|
568eec4a9d | ||
|
|
6809ff6910 | ||
|
|
b1aecc319f | ||
|
|
2fdcdc90f0 | ||
|
|
1ae249fba2 | ||
|
|
5378e090da | ||
|
|
4e5755ff74 | ||
|
|
ce88154fd8 | ||
|
|
120d34efe1 | ||
|
|
c5e8364536 | ||
|
|
20e2d352c0 | ||
|
|
1c952c4d7d | ||
|
|
a35fc49153 | ||
|
|
fa9be79b41 | ||
|
|
3c7ab9f144 | ||
|
|
d5a462a196 | ||
|
|
665ede556d | ||
|
|
864c4c28af | ||
|
|
8773d59d55 | ||
|
|
8132c6e76e | ||
|
|
ba0f1e7d7f | ||
|
|
7029f979e5 | ||
|
|
cb916337dc | ||
|
|
bfbe80d004 | ||
|
|
4ecf233b95 | ||
|
|
ee660c455a | ||
|
|
bbee8a57b0 | ||
|
|
0ad9592c12 | ||
|
|
1225a53068 | ||
|
|
b828255717 | ||
|
|
d4d9a40b82 | ||
|
|
0cabfe4b6d | ||
|
|
00f103b6d1 | ||
|
|
811ecf9284 | ||
|
|
02b8c9a452 | ||
|
|
9c3afb4a64 | ||
|
|
a1935760e5 | ||
|
|
c3965052fe | ||
|
|
a9e9c226da | ||
|
|
ba3419a626 | ||
|
|
a538c18d7a | ||
|
|
fdecd2cfcd | ||
|
|
82142e155d | ||
|
|
06ada66861 | ||
|
|
1f16c42214 | ||
|
|
8ebb9e3154 | ||
|
|
1a032f1114 | ||
|
|
c170f9ca79 | ||
|
|
c794482058 | ||
|
|
14c720faab | ||
|
|
cd70d37ee3 | ||
|
|
f6d592cbb2 | ||
|
|
195689e7c7 | ||
|
|
7a88cb696f | ||
|
|
6fe4cc7f91 | ||
|
|
9b109290de | ||
|
|
29360166ff | ||
|
|
9f6b2d2548 | ||
|
|
4de8dde339 | ||
|
|
7cf97ab1ff | ||
|
|
164d936ac2 | ||
|
|
e233777dbe | ||
|
|
57a06e9966 | ||
|
|
ca29b9b803 | ||
|
|
9589cc5c57 | ||
|
|
97530a0a35 | ||
|
|
7202bc0610 | ||
|
|
d01c74cabd | ||
|
|
f7bc3c2bfc | ||
|
|
2379e76856 | ||
|
|
bfae88c97b | ||
|
|
09674e1952 | ||
|
|
e22fdec364 | ||
|
|
fd1628cb1c | ||
|
|
de33c6c49d | ||
|
|
c079c60598 | ||
|
|
d0c89246d0 | ||
|
|
4798c23152 | ||
|
|
b1bb68d5b1 | ||
|
|
435f331bee | ||
|
|
f497e71465 | ||
|
|
5ff988ec22 | ||
|
|
ac1e215dc2 | ||
|
|
275d9242ff | ||
|
|
fa44d25fdb | ||
|
|
6ae28d0eb5 | ||
|
|
1ccf35a5e3 | ||
|
|
a0d7555ba0 | ||
|
|
9dbfaca637 | ||
|
|
34401c51f9 | ||
|
|
eb5f5d091d | ||
|
|
dc73889ce6 | ||
|
|
9c8902a290 | ||
|
|
90be59547e | ||
|
|
801f6fc44e | ||
|
|
99db964248 | ||
|
|
66314b605e | ||
|
|
c9d6c40b73 | ||
|
|
be8d40f7e7 | ||
|
|
9c4784e50e | ||
|
|
13431ec5b0 | ||
|
|
7384af3482 | ||
|
|
28bffbc6fe | ||
|
|
76d20d82dd | ||
|
|
6754d7a74f | ||
|
|
b72303e7e6 | ||
|
|
bf46e04149 | ||
|
|
90b915c863 | ||
|
|
12565180f4 | ||
|
|
cf40950274 | ||
|
|
e190228997 | ||
|
|
c66e95f41f | ||
|
|
4e96bd9131 | ||
|
|
2810f3534b | ||
|
|
ca6207e2f9 | ||
|
|
7c7486d168 | ||
|
|
c21aeb1bd8 | ||
|
|
82a7e80d5b | ||
|
|
78006af421 | ||
|
|
64e8ade1fa | ||
|
|
103d096349 | ||
|
|
2467cad537 | ||
|
|
bda9edc1d5 | ||
|
|
0be41be0df | ||
|
|
83e984547b | ||
|
|
450dee8d8d | ||
|
|
158c715afd | ||
|
|
d95fa804bb | ||
|
|
cdf8e464b0 | ||
|
|
d124b35e42 | ||
|
|
79e217821d | ||
|
|
91473aec4c | ||
|
|
bf515ddf82 | ||
|
|
d447ec607f | ||
|
|
909b7b12a2 | ||
|
|
f291424dd9 | ||
|
|
96a0a0857a | ||
|
|
193f1a070a | ||
|
|
4cfd2d742b | ||
|
|
f89c9d724c | ||
|
|
60fc871dcd | ||
|
|
2f18c53a7b | ||
|
|
0c0d4f5707 | ||
|
|
aeacca612b | ||
|
|
d3ae5ba2b4 | ||
|
|
51fd587ca6 | ||
|
|
0374086247 | ||
|
|
021990a737 | ||
|
|
a4050e7a70 | ||
|
|
1d9604cdd6 | ||
|
|
f3465b0ec6 | ||
|
|
5c86478c19 | ||
|
|
63351bf602 | ||
|
|
3d1be95578 | ||
|
|
6b66f12ea8 | ||
|
|
b4b3e819aa | ||
|
|
ee5fbeafea | ||
|
|
cec76053e7 | ||
|
|
7561654142 | ||
|
|
083f6ad61c | ||
|
|
af7863c36c | ||
|
|
33eb3efe9f | ||
|
|
256239cd3d | ||
|
|
b16a67a7c9 | ||
|
|
963120cb52 | ||
|
|
1bb24c3039 | ||
|
|
9d9d11937b | ||
|
|
6870eeeaff | ||
|
|
362e0d7bd1 | ||
|
|
0e3c5842ad | ||
|
|
5bc9231e76 | ||
|
|
33637fa804 | ||
|
|
cdc9fa3b0c | ||
|
|
77ab7a182c | ||
|
|
e8bf2b837f | ||
|
|
0aed496787 | ||
|
|
5db7689366 | ||
|
|
3f7e0c2173 | ||
|
|
ed5113ea27 | ||
|
|
81e3b9d698 | ||
|
|
f97b02c197 | ||
|
|
9d07927d52 | ||
|
|
2e1677873a | ||
|
|
1a301edfc7 | ||
|
|
da3340fab1 | ||
|
|
703b835b47 | ||
|
|
d6342e9352 | ||
|
|
e7771c1161 | ||
|
|
8c232ab86f | ||
|
|
4492bcd9ef | ||
|
|
74699a2b52 | ||
|
|
1ec610ba19 | ||
|
|
ec2631dee1 | ||
|
|
9955ae4cc5 | ||
|
|
d2462f8a1b | ||
|
|
1442d8987d | ||
|
|
05e61daca4 | ||
|
|
83dcf2436f | ||
|
|
6d35aa2e6e | ||
|
|
907ec598fc | ||
|
|
2ceb43fd7a | ||
|
|
87f3f6a09a | ||
|
|
be54312178 | ||
|
|
c45d1385a9 | ||
|
|
158f8bac05 | ||
|
|
2f1ac790d9 | ||
|
|
a3057b4382 | ||
|
|
8a52d68a72 | ||
|
|
398c7ab669 | ||
|
|
4eb8760272 | ||
|
|
f99aab89d3 | ||
|
|
724f97cee2 | ||
|
|
0d26303c37 | ||
|
|
6c71cff47b | ||
|
|
29dc2a0dfc | ||
|
|
15ee70a510 | ||
|
|
048e85c751 | ||
|
|
8b8f569619 | ||
|
|
3d2111620b | ||
|
|
86dd36850a | ||
|
|
2365901176 | ||
|
|
3693f5cc94 | ||
|
|
420e8bfc35 | ||
|
|
abe70265ce | ||
|
|
a98c1e15eb | ||
|
|
afbc8353e7 | ||
|
|
9754f53054 | ||
|
|
db4e4b670c | ||
|
|
0e58927dd9 | ||
|
|
8bb7d21a7c | ||
|
|
3b79c6d912 | ||
|
|
f00751ef19 | ||
|
|
be39ded889 | ||
|
|
870179fcd8 | ||
|
|
bcaa48a0e3 | ||
|
|
ea05edb822 | ||
|
|
be8d11b9ed | ||
|
|
8018407342 | ||
|
|
eedf8c2d7d | ||
|
|
de107e9110 | ||
|
|
9d5e0e26db | ||
|
|
6ceaaa02dc | ||
|
|
321f772415 | ||
|
|
dd8d8b4be1 | ||
|
|
b455780a19 | ||
|
|
f90c6bf22e | ||
|
|
781167fbe1 | ||
|
|
cabedb13fd | ||
|
|
2f26574a5d | ||
|
|
6b43f36dcb | ||
|
|
6f4ae95f06 | ||
|
|
82959f79fe | ||
|
|
b564d5e88f | ||
|
|
2489dfb646 | ||
|
|
c501fbc346 | ||
|
|
bfd6ff089f | ||
|
|
32d3c24ad6 | ||
|
|
c4ae842f9e | ||
|
|
0c7caf6d13 | ||
|
|
21b19ab75b | ||
|
|
ca51e71b96 | ||
|
|
4c448c6245 | ||
|
|
811ae088ec | ||
|
|
c446eceb9c | ||
|
|
3ff73ab0a9 | ||
|
|
130dd0656d | ||
|
|
ee84ffc695 | ||
|
|
6e7b489f51 | ||
|
|
4fdce04c94 | ||
|
|
ec1f8579a0 | ||
|
|
76a9394075 | ||
|
|
77c01d6dfb | ||
|
|
c11d87154a | ||
|
|
20d6e394fe | ||
|
|
cacbb7434a | ||
|
|
4ccc271adf | ||
|
|
9a8fc54523 | ||
|
|
b88d20f978 | ||
|
|
32c694b908 | ||
|
|
2741d9b096 | ||
|
|
944a17de32 | ||
|
|
81b5d8af5f | ||
|
|
f7617f0b4d | ||
|
|
07fcda028e | ||
|
|
6fa9bd80b9 | ||
|
|
4b4cc17d42 | ||
|
|
e7000e0118 | ||
|
|
251468f113 | ||
|
|
8d5ba536cf | ||
|
|
7fb7a2d271 | ||
|
|
32aba5ac50 | ||
|
|
da953b9d22 | ||
|
|
a768b3ebec | ||
|
|
1a9e9d670d | ||
|
|
f3c2752caa | ||
|
|
3423599809 | ||
|
|
e2c3daca96 | ||
|
|
14e53291e3 | ||
|
|
292e0cdfa6 | ||
|
|
900cc884d6 | ||
|
|
0a42446129 | ||
|
|
d433382eaa | ||
|
|
5b917cfa59 | ||
|
|
0efb6d171e | ||
|
|
79dc4ea61d | ||
|
|
b80418f744 | ||
|
|
b4440fe269 | ||
|
|
b11079e168 | ||
|
|
1f6beea8e9 | ||
|
|
8e3fd3cc7a | ||
|
|
d99e1c3342 | ||
|
|
b2c30f765b | ||
|
|
8c905f8349 | ||
|
|
0cc660d1fe | ||
|
|
a30a9a3ec4 | ||
|
|
529ecbddcc | ||
|
|
4cf7d77126 | ||
|
|
e17e330140 | ||
|
|
791e40357b | ||
|
|
7c364b54fc | ||
|
|
3173cb27dd | ||
|
|
abfc689b07 | ||
|
|
af1885b91f | ||
|
|
4393cb56ca | ||
|
|
5a85d9f93f | ||
|
|
911776e965 | ||
|
|
a74a458f5f | ||
|
|
f8655e1804 | ||
|
|
d848382c2f | ||
|
|
42629c4629 | ||
|
|
d55e2d8528 | ||
|
|
88df081621 | ||
|
|
264f1bc3cd | ||
|
|
debc171df3 | ||
|
|
b517279580 | ||
|
|
ba19fb9f38 | ||
|
|
5c184343b8 | ||
|
|
0ca8bc4273 | ||
|
|
c97a36e2d9 | ||
|
|
e9f0c42afc | ||
|
|
a28b096d7f | ||
|
|
c1994c16c2 | ||
|
|
739de8914f | ||
|
|
b88411cca3 | ||
|
|
9f43b7e39d | ||
|
|
a25795c926 | ||
|
|
583cd919cc | ||
|
|
153a886d6d | ||
|
|
6c1675394f | ||
|
|
86d43d3826 | ||
|
|
8e6c26e593 | ||
|
|
d56050cc6f | ||
|
|
2a8499e09f | ||
|
|
9d7a6ee0f3 | ||
|
|
7dabfc7e73 | ||
|
|
8d75ee59e0 | ||
|
|
c27afc1a04 | ||
|
|
b78b7818af | ||
|
|
e4c3f364f3 | ||
|
|
e9a7b49342 | ||
|
|
395cb7a6b9 | ||
|
|
d80a835f4a | ||
|
|
41a358ec88 | ||
|
|
9b6eae76de | ||
|
|
ea58c1150c | ||
|
|
518d041db8 | ||
|
|
59a8b22268 | ||
|
|
3f83336726 | ||
|
|
a60af3a64f | ||
|
|
25962cd489 | ||
|
|
1834ba06ac | ||
|
|
3024d13d7e | ||
|
|
7354a360be | ||
|
|
71b4960878 | ||
|
|
aa038250c3 | ||
|
|
4eafb9d163 | ||
|
|
50114df430 | ||
|
|
aa990c11dd | ||
|
|
3ff0576f2b | ||
|
|
d7210c4542 | ||
|
|
a45c0f4168 | ||
|
|
108b46760a | ||
|
|
cf6281916b | ||
|
|
e51c87a604 | ||
|
|
b5d36033f1 | ||
|
|
bfbe450d32 | ||
|
|
f9574570b3 | ||
|
|
08e4a9a00e | ||
|
|
f84dc6ccfc | ||
|
|
614235c849 | ||
|
|
dc15b27c50 | ||
|
|
32b8a61ecf | ||
|
|
dc9da6bde0 | ||
|
|
0e42486491 | ||
|
|
9cbd6c0366 | ||
|
|
c6749127ca | ||
|
|
06df842f61 | ||
|
|
d1fe298155 | ||
|
|
20f53c8aac | ||
|
|
6b8b2183e7 | ||
|
|
b5284da0c0 | ||
|
|
d5dcff8362 | ||
|
|
e06993903e | ||
|
|
388f158acf | ||
|
|
00eeaec5f2 | ||
|
|
d11af4159e | ||
|
|
71520b31c0 | ||
|
|
58e925ce5f | ||
|
|
f26f53be9c | ||
|
|
e774de2be6 | ||
|
|
6757e33c92 | ||
|
|
0f07bd690c | ||
|
|
c0ac40d98f | ||
|
|
b6541058ce | ||
|
|
f09a4ffe18 | ||
|
|
0cb6f1cc82 | ||
|
|
52b94c3e57 | ||
|
|
28a712f205 | ||
|
|
cbd0078fcf | ||
|
|
9145f2798c | ||
|
|
f17c770dfe | ||
|
|
56e7ad3001 | ||
|
|
55e0a76ddc | ||
|
|
7e140557e9 | ||
|
|
00d069f7d9 | ||
|
|
ea20facd90 | ||
|
|
7dcf7e3788 | ||
|
|
01ab0b79a1 | ||
|
|
de0f11596d | ||
|
|
955fbf3211 | ||
|
|
4b980c0877 | ||
|
|
a12500ecac | ||
|
|
15556eed38 | ||
|
|
91be6f4495 | ||
|
|
084903a2b1 | ||
|
|
15954c3753 | ||
|
|
72631a7b41 | ||
|
|
6b9ee559f0 | ||
|
|
07fa3b9baa | ||
|
|
757b8d0edd | ||
|
|
8f0572299a | ||
|
|
7b22d09fba | ||
|
|
63028c863d | ||
|
|
0aea37a1b3 | ||
|
|
27ab46340c | ||
|
|
a2fa57b24c | ||
|
|
8692feeacc | ||
|
|
39a400feeb | ||
|
|
035a7af4a6 | ||
|
|
8e702fc759 | ||
|
|
b9c62b6747 | ||
|
|
2b9a6ee886 | ||
|
|
6a845acf0f | ||
|
|
f6f906808d | ||
|
|
7126eb3216 | ||
|
|
6023a62148 | ||
|
|
d290c45ca9 | ||
|
|
e1acba3234 | ||
|
|
818f1e37c1 | ||
|
|
7d9fe7fa8e | ||
|
|
ba05f7eeff | ||
|
|
7f8d61f03e | ||
|
|
8298ae989a | ||
|
|
f59d4713e5 | ||
|
|
5dc67d68b6 | ||
|
|
f78f184a14 | ||
|
|
6aab791a58 | ||
|
|
c0dac69808 | ||
|
|
ab21036d6d | ||
|
|
885cd884d4 | ||
|
|
9c2fded343 | ||
|
|
70efb5ac20 | ||
|
|
bee93bd060 | ||
|
|
862fbc427b | ||
|
|
4ff2e46dde | ||
|
|
a8c545ea74 | ||
|
|
51050b62c8 | ||
|
|
4aff81e69a | ||
|
|
faac2ccac5 | ||
|
|
e59703a1d6 | ||
|
|
968bee81e8 | ||
|
|
c225633528 | ||
|
|
c432136c3c | ||
|
|
b4c0a12e3b | ||
|
|
00b8d64531 | ||
|
|
c414f983b4 | ||
|
|
72f81e727d | ||
|
|
aac8ce8261 | ||
|
|
04354518e1 | ||
|
|
67e065e79d | ||
|
|
eb330d2584 | ||
|
|
3f11d67a56 | ||
|
|
40ea51a322 | ||
|
|
da4c548bbb | ||
|
|
97fe820f88 | ||
|
|
ee7334652f | ||
|
|
0d7468cabd | ||
|
|
cc4d59e9cd | ||
|
|
8846a6bfdd | ||
|
|
a2c8ec26a4 | ||
|
|
edf69af317 | ||
|
|
078800a00b | ||
|
|
7cffc5f20e | ||
|
|
f7a0d07623 | ||
|
|
11eedd84d3 | ||
|
|
8b9f6b163a | ||
|
|
532cf2ac33 | ||
|
|
735fb62c0f | ||
|
|
d789e78a75 | ||
|
|
f9f6078432 | ||
|
|
dc217ce9c2 | ||
|
|
7916560259 | ||
|
|
5d3118175f | ||
|
|
bdf801ef29 | ||
|
|
7616f9171a | ||
|
|
2eab9d93fc | ||
|
|
867dbd1591 | ||
|
|
bd80c2e5a7 | ||
|
|
6ed15904b1 | ||
|
|
bda1fc0aa4 | ||
|
|
23490f81f8 | ||
|
|
b5bfbe2385 | ||
|
|
2bd65173c2 | ||
|
|
b6c621211b | ||
|
|
1e1938032b | ||
|
|
3114855498 | ||
|
|
9eb2e69d62 | ||
|
|
05eb4556c8 | ||
|
|
a7c7b483f1 | ||
|
|
2956eb272c | ||
|
|
3108671902 | ||
|
|
d0344cfc55 | ||
|
|
0b7757fac4 | ||
|
|
cf02d3c6f6 | ||
|
|
ddb24aa9fb | ||
|
|
7be64dd68f | ||
|
|
07d7677196 | ||
|
|
3d49eb721b | ||
|
|
a8b913cfdd | ||
|
|
fa6cfcb9ce | ||
|
|
52893ffd2a | ||
|
|
17f521adfd | ||
|
|
e0029290b8 | ||
|
|
89276658f2 | ||
|
|
457167610f | ||
|
|
1e4cd701dc | ||
|
|
5df3b1a078 | ||
|
|
46f3108c99 | ||
|
|
eb931cda05 | ||
|
|
88d381bada | ||
|
|
26f5a6e03e | ||
|
|
88c3a9be50 | ||
|
|
c99e1d2cb6 | ||
|
|
c4a1355047 | ||
|
|
2862dc7af9 | ||
|
|
01a5f3830f | ||
|
|
7b08fdb1eb | ||
|
|
eee9e3d072 | ||
|
|
406a9d3636 | ||
|
|
fdffb6bb48 | ||
|
|
4fb20524d7 | ||
|
|
f634e88445 | ||
|
|
e6ece7ba6c | ||
|
|
3c0d9bc513 | ||
|
|
4a12f5ebcf | ||
|
|
9566c9c9d3 | ||
|
|
2eb8cbd948 | ||
|
|
f69fb2f533 | ||
|
|
1833362111 | ||
|
|
25c49ccc1c | ||
|
|
3f86aaadcf | ||
|
|
1c5cebe703 | ||
|
|
0ae5a45fcb | ||
|
|
ce79c562f6 | ||
|
|
41e95465a6 | ||
|
|
c1c8e668de | ||
|
|
a025357bd6 | ||
|
|
b7c426c0ab | ||
|
|
6dcd2807d7 | ||
|
|
a37438984f | ||
|
|
fee8c3985a | ||
|
|
049a807bc6 | ||
|
|
6e7efd30f0 | ||
|
|
5124a296ab | ||
|
|
8768b88913 | ||
|
|
7383c9a1a3 | ||
|
|
d1f5df777f | ||
|
|
2a390dea1f | ||
|
|
cd42358418 | ||
|
|
e18c4ff172 | ||
|
|
4382b8ce00 | ||
|
|
1dbd70442d | ||
|
|
56805cd202 | ||
|
|
ce1be021a7 | ||
|
|
b0cee61e23 | ||
|
|
bd78a76886 | ||
|
|
0d58d63090 | ||
|
|
85fba4dc43 | ||
|
|
82944b0300 | ||
|
|
dcc1bc1759 | ||
|
|
6d577b6fb4 | ||
|
|
f5e1bca49d | ||
|
|
3463531cd0 | ||
|
|
8bf7f49616 | ||
|
|
23b2b5c660 | ||
|
|
a6caba2509 | ||
|
|
706c4369de | ||
|
|
4170c66d45 | ||
|
|
eaebfec990 | ||
|
|
a867264a18 | ||
|
|
c5174f6fb2 | ||
|
|
b22d6cc592 | ||
|
|
d2af4ddbeb | ||
|
|
9df4b20557 | ||
|
|
1f20820f7e | ||
|
|
6078d7175d | ||
|
|
0abb871873 | ||
|
|
021921a712 | ||
|
|
55173eaa9e | ||
|
|
dee72c1194 | ||
|
|
30e44dd014 | ||
|
|
f7a86b7734 | ||
|
|
67ee303724 | ||
|
|
8340fb2805 | ||
|
|
09227c31dd | ||
|
|
2a6eef20f5 | ||
|
|
d5978ad190 | ||
|
|
437a569c53 | ||
|
|
dfacfaf971 | ||
|
|
3199892488 | ||
|
|
2f33661051 | ||
|
|
df4dc0666d | ||
|
|
41c0ee3fe4 | ||
|
|
dbfc16effb | ||
|
|
c4666a397d | ||
|
|
ea947bc7f0 | ||
|
|
fbaa8e9719 | ||
|
|
beb862ee9c | ||
|
|
d6482a9ac2 | ||
|
|
a2b661352b | ||
|
|
e2b9d79b9c | ||
|
|
d65090198c | ||
|
|
9967cd6a63 | ||
|
|
7de48ccced | ||
|
|
f9b90d0739 | ||
|
|
e076a77851 | ||
|
|
569c4876bc | ||
|
|
4013c49f1b | ||
|
|
7c2beeafd7 | ||
|
|
71bc739b35 | ||
|
|
a237792d66 | ||
|
|
078b4f861c | ||
|
|
4713202758 | ||
|
|
467d73aac9 | ||
|
|
99f35425a7 | ||
|
|
55897502a6 | ||
|
|
e83af19449 | ||
|
|
843efb8e3b | ||
|
|
bbfe621405 | ||
|
|
8b43cfcc59 | ||
|
|
88afdc99f2 | ||
|
|
cb65d67c2a | ||
|
|
f2ced93400 | ||
|
|
0e91392981 | ||
|
|
d17f5073fc | ||
|
|
5ea987eade | ||
|
|
c25ad39393 | ||
|
|
df621389b0 | ||
|
|
24bf7fd4ad | ||
|
|
96d80f5f4a | ||
|
|
db3375452d | ||
|
|
88f5132b30 | ||
|
|
907c710b9a | ||
|
|
5dd8839716 | ||
|
|
45daa1a04d | ||
|
|
de69f524a6 | ||
|
|
bed3e0c42e | ||
|
|
19af464ef3 | ||
|
|
e1c945b363 | ||
|
|
f517ded11a | ||
|
|
c837e0038d | ||
|
|
5e36a5a28f | ||
|
|
6a33c69c49 | ||
|
|
9333b3a359 | ||
|
|
f390052b80 | ||
|
|
ca88a482a5 | ||
|
|
a936ac291c | ||
|
|
b3e300393e | ||
|
|
e12e1864fc | ||
|
|
b867d3fcfb | ||
|
|
08a0a7291f | ||
|
|
43233c319e | ||
|
|
616fc42b4f | ||
|
|
448d523897 | ||
|
|
6d28d2c738 | ||
|
|
48f08b4f53 | ||
|
|
feb302b9f2 | ||
|
|
e4f62b9fcf | ||
|
|
76bebf24a5 | ||
|
|
b3c0bca1f8 | ||
|
|
82ff869140 | ||
|
|
be3ef12b92 | ||
|
|
46679371cb | ||
|
|
ea2a4f2658 | ||
|
|
798f577bec | ||
|
|
07c80bab50 | ||
|
|
48a8638c23 | ||
|
|
29a3f2f810 | ||
|
|
3f23bf599c | ||
|
|
2e72b76fd3 | ||
|
|
76b8c64505 | ||
|
|
7214c0bf70 | ||
|
|
fc0fa751c4 | ||
|
|
7c69f05221 | ||
|
|
1e20020bb8 | ||
|
|
e9c8be100e | ||
|
|
bb14284481 | ||
|
|
45ad3543a9 | ||
|
|
9b539d8634 | ||
|
|
128bc21842 | ||
|
|
b7fa297fa5 | ||
|
|
dedcfff69c | ||
|
|
e05c20ea7a | ||
|
|
6771c1b415 | ||
|
|
c63680e87b | ||
|
|
1b7e4389dc | ||
|
|
f85b578dbb | ||
|
|
2678a248bb | ||
|
|
f36a979ac9 | ||
|
|
5ee3356ed3 | ||
|
|
f8f2c8b7b1 | ||
|
|
211d43d85e | ||
|
|
25719a3315 | ||
|
|
757d7a8eb5 | ||
|
|
ef774a082b | ||
|
|
79eb35c4e5 | ||
|
|
325619eb0d | ||
|
|
1aab378857 | ||
|
|
694b9b330a | ||
|
|
e8609798de | ||
|
|
1000eb18b6 | ||
|
|
32034e05b7 | ||
|
|
8f092ad8e8 | ||
|
|
f076895070 | ||
|
|
5ff678924e | ||
|
|
5db92fc43c | ||
|
|
43f9368331 | ||
|
|
6e4cda39d3 | ||
|
|
8c1debf168 | ||
|
|
66878248f6 | ||
|
|
b5373161d0 | ||
|
|
e76200e6fa | ||
|
|
bc3d6c6e81 | ||
|
|
8d8739a0c5 | ||
|
|
ad1df12ba2 | ||
|
|
901835b8bf | ||
|
|
bf1de05827 | ||
|
|
d0a109b244 | ||
|
|
b8616748f2 | ||
|
|
9c14365b2a | ||
|
|
d591c30293 | ||
|
|
2fa54245e1 | ||
|
|
026769d1ce | ||
|
|
2f6048508c | ||
|
|
a2895948e9 | ||
|
|
b99b6ac9ff | ||
|
|
8b0e637515 | ||
|
|
75e3f2ecf2 | ||
|
|
800af65fec | ||
|
|
18673b9f2d | ||
|
|
e88132fa06 | ||
|
|
c0c83656d2 | ||
|
|
6ec2bc2d61 | ||
|
|
a1343d67f2 | ||
|
|
fd907a33bd | ||
|
|
c7c0e0b0ed | ||
|
|
1314a5e7d3 | ||
|
|
efe0b59c14 | ||
|
|
761440da1b | ||
|
|
b9267a07a8 | ||
|
|
a6a99fdf5d | ||
|
|
a46640e980 | ||
|
|
4ace21e534 | ||
|
|
4b4233be05 | ||
|
|
ca7cafb093 | ||
|
|
8ee6b05308 | ||
|
|
dfae63e27b | ||
|
|
d80dfec1d6 | ||
|
|
e663408a22 | ||
|
|
b02d160c35 | ||
|
|
422bcecd8a | ||
|
|
c5eaca325d | ||
|
|
43acd2b833 | ||
|
|
da2a1139b0 | ||
|
|
66f47a91d1 | ||
|
|
c9b1de9d5e | ||
|
|
e58e148e51 | ||
|
|
42bfe5a874 | ||
|
|
29eb8e66c2 | ||
|
|
97de3a32b6 | ||
|
|
f360c113d5 | ||
|
|
95c4014913 | ||
|
|
9c0540b548 | ||
|
|
24ce72f635 | ||
|
|
ace5616c61 | ||
|
|
114492b826 | ||
|
|
0278065f3f | ||
|
|
db604d8e8a | ||
|
|
9a233da2ab | ||
|
|
8645d522c0 | ||
|
|
12fc258f9f | ||
|
|
087fd33c32 | ||
|
|
53d4c7bf09 | ||
|
|
db5eb389ad | ||
|
|
6b869921fa | ||
|
|
8d9ddc0c12 | ||
|
|
f0afe32b84 | ||
|
|
be5f6397eb | ||
|
|
ab792811f5 | ||
|
|
a0d4d9ab95 | ||
|
|
fdbc317e46 | ||
|
|
f4b8a25cb5 | ||
|
|
3275aebb6a | ||
|
|
233f9cae0c | ||
|
|
719d884ff9 | ||
|
|
ff9382628e | ||
|
|
315d88ac83 | ||
|
|
b1fa77721e | ||
|
|
9f9747fc1e | ||
|
|
28c7ac000b | ||
|
|
68943d27f8 | ||
|
|
13e06b3243 | ||
|
|
dcd8aa97f2 | ||
|
|
353d44df02 | ||
|
|
d81b50dc88 | ||
|
|
3fd87d8e73 | ||
|
|
716377a20a | ||
|
|
108429b83f | ||
|
|
af3cabbf7f | ||
|
|
fd13239884 | ||
|
|
8f0753ece7 | ||
|
|
38a1bfa703 | ||
|
|
2b46dc5403 | ||
|
|
c0943d140a | ||
|
|
f1126d2639 | ||
|
|
7fdc7d4df9 | ||
|
|
e5475103aa | ||
|
|
3afe2cd61c | ||
|
|
4c9fae6b88 | ||
|
|
9d9e6430a3 | ||
|
|
163141255f | ||
|
|
14f7ef9d17 | ||
|
|
aad084f10f | ||
|
|
c5ad46e57f | ||
|
|
8b5df58140 | ||
|
|
2aa901dadd | ||
|
|
6837183d42 | ||
|
|
9391b55213 | ||
|
|
de4224e5df | ||
|
|
47d8cac561 | ||
|
|
4c60a9a964 | ||
|
|
ce8f6d2bab | ||
|
|
6d73e34764 | ||
|
|
1ab59b0b84 | ||
|
|
59eb233924 | ||
|
|
4413276c24 | ||
|
|
a8d0fd4c1b | ||
|
|
fc7d5aa98a | ||
|
|
2c428e4487 | ||
|
|
e239238882 | ||
|
|
3b9f405a99 | ||
|
|
33dd08b37b | ||
|
|
933576b440 | ||
|
|
cf18eb7ca4 | ||
|
|
ae7a1142ac | ||
|
|
33c6233c8d | ||
|
|
58e8de7c4d | ||
|
|
63e0e4288b | ||
|
|
8227fec80a | ||
|
|
149f1bbd10 | ||
|
|
302043681f | ||
|
|
4b2069b57f | ||
|
|
b38883ea2f | ||
|
|
ce1d20289c | ||
|
|
11fc9bca5f | ||
|
|
784e24b06b | ||
|
|
162a2d69bc | ||
|
|
8a64a8b127 | ||
|
|
d8d9b43921 | ||
|
|
186bf114dd | ||
|
|
812db65afa | ||
|
|
ad1faa0f28 | ||
|
|
a49c7ccfe1 | ||
|
|
83743fc715 | ||
|
|
e0b652c488 | ||
|
|
f626cd65cc | ||
|
|
588df316d9 | ||
|
|
4db5b5cf11 | ||
|
|
4df4047d35 | ||
|
|
4b15886f93 | ||
|
|
473a0d6209 | ||
|
|
a2bacbdc9c | ||
|
|
71fa8dc28e | ||
|
|
1a0a832ac8 | ||
|
|
d6fa12c0f9 | ||
|
|
fd449d30a8 | ||
|
|
0287c32733 | ||
|
|
407fb46c87 | ||
|
|
99f09784cc | ||
|
|
4fb9c70faf | ||
|
|
18eb295ec4 | ||
|
|
a53513f142 | ||
|
|
91f8e15bff | ||
|
|
15d4c70e08 | ||
|
|
a504db1780 | ||
|
|
3103c9009b | ||
|
|
a54170c2a0 | ||
|
|
9b700d84f7 | ||
|
|
d9b19cac60 | ||
|
|
9c9083d9a7 | ||
|
|
9fb982e150 | ||
|
|
b90c07efd8 | ||
|
|
5648577df0 | ||
|
|
cada888edd | ||
|
|
50a6da201b | ||
|
|
f6d480b0a7 | ||
|
|
cc7c372176 | ||
|
|
84131ca42b | ||
|
|
9793cca908 | ||
|
|
1828ebcc26 | ||
|
|
c30dcb08eb | ||
|
|
55b84cf932 | ||
|
|
47af602add | ||
|
|
7a3af1eb39 | ||
|
|
91795f6fa2 | ||
|
|
b9165cb373 | ||
|
|
8578313a4a | ||
|
|
0938dcec7b | ||
|
|
075b283689 | ||
|
|
e082e26ce0 | ||
|
|
f169968735 | ||
|
|
465b852e3b | ||
|
|
e928445598 | ||
|
|
e8871a9516 | ||
|
|
30bf08a3da | ||
|
|
d038ef379e | ||
|
|
b8cedd257a | ||
|
|
946e7dc930 | ||
|
|
5b427ce7c3 | ||
|
|
ce44b29901 | ||
|
|
295bdba02c | ||
|
|
b648b4af3d | ||
|
|
4005639856 | ||
|
|
91c0fe6767 | ||
|
|
bc8ada5325 | ||
|
|
5c0879b3ca | ||
|
|
84aca29abf | ||
|
|
57d5938b17 | ||
|
|
48e6b74278 | ||
|
|
315b42ce8e | ||
|
|
d0889c6d10 | ||
|
|
d3a1d47934 | ||
|
|
aa2165429c | ||
|
|
b7d83f310d | ||
|
|
708c4e6682 | ||
|
|
79999f2e85 | ||
|
|
f0b2494fa6 | ||
|
|
441c8bd865 | ||
|
|
00ba9322af | ||
|
|
e2cfa48b0f | ||
|
|
d294610a58 | ||
|
|
c5795228dd | ||
|
|
1ad9207ebb | ||
|
|
ac3fa5399b | ||
|
|
b6b139e070 | ||
|
|
d45f1b2d27 | ||
|
|
2c91d95619 | ||
|
|
ce9b73cda4 | ||
|
|
123571ad4d | ||
|
|
1974bccc56 | ||
|
|
5528d926f6 | ||
|
|
c999d42c57 | ||
|
|
3b63180c8c | ||
|
|
61fa9f0cfe | ||
|
|
e849be6c8b | ||
|
|
f4b517cb6d | ||
|
|
0ebfe3cf4b | ||
|
|
426b5f6752 | ||
|
|
4d895ec806 | ||
|
|
7ac64b812e | ||
|
|
b5c354ca15 | ||
|
|
9db8ccf72a | ||
|
|
7fc7e01a25 | ||
|
|
d5e98be935 |
154
.gitignore
vendored
Normal file
154
.gitignore
vendored
Normal file
@@ -0,0 +1,154 @@
|
||||
*.1
|
||||
*.I[12]
|
||||
*.[EIOX]
|
||||
*.gmo
|
||||
*.o
|
||||
*/.deps
|
||||
*~
|
||||
.kludge-stamp
|
||||
Makefile
|
||||
Makefile.in
|
||||
THANKS-to-translators
|
||||
aclocal.m4
|
||||
autom4te.cache
|
||||
config.cache
|
||||
config.h
|
||||
config.hin
|
||||
config.log
|
||||
config.status
|
||||
configure
|
||||
coreutils-*.tar.bz2
|
||||
coreutils-*.tar.bz2.sig
|
||||
coreutils-*.tar.gz
|
||||
coreutils-*.tar.gz.sig
|
||||
coreutils-*.xdelta
|
||||
coreutils-*.xdelta.sig
|
||||
doc/constants.texi
|
||||
doc/coreutils.info
|
||||
doc/stamp-vti
|
||||
doc/version.texi
|
||||
lib/alloca.h
|
||||
lib/charset.alias
|
||||
lib/getdate.c
|
||||
lib/libcoreutils.a
|
||||
lib/ref-add.sed
|
||||
lib/ref-del.sed
|
||||
lib/stdint.h
|
||||
lib/t-fpending
|
||||
po/Makefile.in
|
||||
po/POTFILES
|
||||
po/coreutils.pot
|
||||
po/stamp-po
|
||||
src/\[
|
||||
src/base64
|
||||
src/basename
|
||||
src/cat
|
||||
src/chgrp
|
||||
src/chmod
|
||||
src/chown
|
||||
src/chroot
|
||||
src/cksum
|
||||
src/comm
|
||||
src/cp
|
||||
src/csplit
|
||||
src/cut
|
||||
src/date
|
||||
src/dd
|
||||
src/df
|
||||
src/dir
|
||||
src/dircolors
|
||||
src/dircolors.h
|
||||
src/dirname
|
||||
src/du
|
||||
src/echo
|
||||
src/env
|
||||
src/expand
|
||||
src/expr
|
||||
src/factor
|
||||
src/false
|
||||
src/fmt
|
||||
src/fold
|
||||
src/fs.h
|
||||
src/ginstall
|
||||
src/groups
|
||||
src/head
|
||||
src/hostid
|
||||
src/hostname
|
||||
src/id
|
||||
src/join
|
||||
src/kill
|
||||
src/link
|
||||
src/ln
|
||||
src/localedir.h
|
||||
src/logname
|
||||
src/ls
|
||||
src/md5sum
|
||||
src/mkdir
|
||||
src/mkfifo
|
||||
src/mknod
|
||||
src/mv
|
||||
src/nice
|
||||
src/nl
|
||||
src/nohup
|
||||
src/od
|
||||
src/paste
|
||||
src/pathchk
|
||||
src/pinky
|
||||
src/pr
|
||||
src/printenv
|
||||
src/printf
|
||||
src/ptx
|
||||
src/pwd
|
||||
src/readlink
|
||||
src/rm
|
||||
src/rmdir
|
||||
src/seq
|
||||
src/setuidgid
|
||||
src/sha1sum
|
||||
src/sha224sum
|
||||
src/sha256sum
|
||||
src/sha384sum
|
||||
src/sha512sum
|
||||
src/shred
|
||||
src/sleep
|
||||
src/sort
|
||||
src/split
|
||||
src/stat
|
||||
src/stty
|
||||
src/su
|
||||
src/sum
|
||||
src/sync
|
||||
src/tac
|
||||
src/tail
|
||||
src/tee
|
||||
src/test
|
||||
src/touch
|
||||
src/tr
|
||||
src/true
|
||||
src/tsort
|
||||
src/tty
|
||||
src/uname
|
||||
src/unexpand
|
||||
src/uniq
|
||||
src/unlink
|
||||
src/uptime
|
||||
src/users
|
||||
src/vdir
|
||||
src/wc
|
||||
src/wheel-size.h
|
||||
src/wheel.h
|
||||
src/who
|
||||
src/whoami
|
||||
src/yes
|
||||
stamp-h1
|
||||
tests/cut/cut-tests
|
||||
tests/head/head-tests
|
||||
tests/join/join-tests
|
||||
tests/pr/pr-tests
|
||||
tests/sort/sort-tests
|
||||
tests/tac/tac-tests
|
||||
tests/tail/tail-tests
|
||||
tests/test/test-tests
|
||||
tests/tr/tr-tests
|
||||
tests/uniq/uniq-tests
|
||||
tests/wc/wc-tests
|
||||
147
.hgignore
Normal file
147
.hgignore
Normal file
@@ -0,0 +1,147 @@
|
||||
.*/Makefile$
|
||||
.*/Makefile\.in$
|
||||
.*/\.deps/
|
||||
.*\.1$
|
||||
.*\.o$
|
||||
.*~$
|
||||
^Makefile$
|
||||
^Makefile\.in$
|
||||
^THANKS-to-translators$
|
||||
^aclocal\.m4$
|
||||
^autom4te\.cache/
|
||||
^config\.h$
|
||||
^config\.hin$
|
||||
^config\.log$
|
||||
^config\.status$
|
||||
^configure$
|
||||
^doc/constants\.texi$
|
||||
^doc/coreutils\.info$
|
||||
^doc/stamp-vti$
|
||||
^doc/version\.texi$
|
||||
^lib/alloca\.h$
|
||||
^lib/charset\.alias$
|
||||
^lib/getdate\.c$
|
||||
^lib/libcoreutils\.a$
|
||||
^lib/ref-add\.sed$
|
||||
^lib/ref-del\.sed$
|
||||
^lib/t-fpending$
|
||||
^po/.*\.gmo$
|
||||
^po/.*\.po$
|
||||
^po/POTFILES$
|
||||
^po/stamp-po$
|
||||
^po/remove-potcdate.sed$
|
||||
^src/\[$
|
||||
^src/base64$
|
||||
^src/basename$
|
||||
^src/cat$
|
||||
^src/chgrp$
|
||||
^src/chmod$
|
||||
^src/chown$
|
||||
^src/chroot$
|
||||
^src/cksum$
|
||||
^src/comm$
|
||||
^src/cp$
|
||||
^src/csplit$
|
||||
^src/cut$
|
||||
^src/date$
|
||||
^src/dd$
|
||||
^src/df$
|
||||
^src/dir$
|
||||
^src/dircolors$
|
||||
^src/dircolors\.h$
|
||||
^src/dirname$
|
||||
^src/du$
|
||||
^src/echo$
|
||||
^src/env$
|
||||
^src/expand$
|
||||
^src/expr$
|
||||
^src/factor$
|
||||
^src/false$
|
||||
^src/fmt$
|
||||
^src/fold$
|
||||
^src/fs\.h$
|
||||
^src/ginstall$
|
||||
^src/groups$
|
||||
^src/head$
|
||||
^src/hostid$
|
||||
^src/hostname$
|
||||
^src/id$
|
||||
^src/join$
|
||||
^src/kill$
|
||||
^src/link$
|
||||
^src/ln$
|
||||
^src/localedir\.h$
|
||||
^src/logname$
|
||||
^src/ls$
|
||||
^src/md5sum$
|
||||
^src/mkdir$
|
||||
^src/mkfifo$
|
||||
^src/mknod$
|
||||
^src/mv$
|
||||
^src/nice$
|
||||
^src/nl$
|
||||
^src/nohup$
|
||||
^src/od$
|
||||
^src/paste$
|
||||
^src/pathchk$
|
||||
^src/pinky$
|
||||
^src/pr$
|
||||
^src/printenv$
|
||||
^src/printf$
|
||||
^src/ptx$
|
||||
^src/pwd$
|
||||
^src/readlink$
|
||||
^src/rm$
|
||||
^src/rmdir$
|
||||
^src/seq$
|
||||
^src/setuidgid$
|
||||
^src/sha1sum$
|
||||
^src/sha224sum$
|
||||
^src/sha256sum$
|
||||
^src/sha384sum$
|
||||
^src/sha512sum$
|
||||
^src/shred$
|
||||
^src/sleep$
|
||||
^src/sort$
|
||||
^src/split$
|
||||
^src/stat$
|
||||
^src/stty$
|
||||
^src/su$
|
||||
^src/sum$
|
||||
^src/sync$
|
||||
^src/tac$
|
||||
^src/tail$
|
||||
^src/tee$
|
||||
^src/test$
|
||||
^src/touch$
|
||||
^src/tr$
|
||||
^src/true$
|
||||
^src/tsort$
|
||||
^src/tty$
|
||||
^src/uname$
|
||||
^src/unexpand$
|
||||
^src/uniq$
|
||||
^src/unlink$
|
||||
^src/uptime$
|
||||
^src/users$
|
||||
^src/vdir$
|
||||
^src/wc$
|
||||
^src/wheel-size\.h$
|
||||
^src/wheel\.h$
|
||||
^src/who$
|
||||
^src/whoami$
|
||||
^src/yes$
|
||||
^stamp-h1$
|
||||
^tests/.*\.I[12]$
|
||||
^tests/.*\.[EIOX]$
|
||||
^tests/cut/cut-tests$
|
||||
^tests/head/head-tests$
|
||||
^tests/join/join-tests$
|
||||
^tests/pr/pr-tests$
|
||||
^tests/sort/sort-tests$
|
||||
^tests/tac/tac-tests$
|
||||
^tests/tail/tail-tests$
|
||||
^tests/test/test-tests$
|
||||
^tests/tr/tr-tests$
|
||||
^tests/uniq/uniq-tests$
|
||||
^tests/wc/wc-tests$
|
||||
@@ -1 +1 @@
|
||||
5.91
|
||||
5.92
|
||||
|
||||
3
.x-po-check
Normal file
3
.x-po-check
Normal file
@@ -0,0 +1,3 @@
|
||||
ChangeLog(-[0-9]+)?$
|
||||
^old/
|
||||
^src/c99-to-c98\.diff$
|
||||
@@ -3,3 +3,4 @@ Makefile.maint
|
||||
config.hin
|
||||
configure
|
||||
m4/jm-macros.m4
|
||||
src/system.h
|
||||
|
||||
0
.x-sc_prohibit_assert_without_use
Normal file
0
.x-sc_prohibit_assert_without_use
Normal file
@@ -3,5 +3,6 @@ ChangeLog
|
||||
^lib/mktime\.c$
|
||||
^lib/getloadavg\.c$
|
||||
^lib/euidaccess\.c$
|
||||
^lib/euidaccess-stat\.c$
|
||||
^lib/group-member\.c$
|
||||
^Makefile\.maint$
|
||||
|
||||
27
.x-sc_require_config_h
Normal file
27
.x-sc_require_config_h
Normal file
@@ -0,0 +1,27 @@
|
||||
^lib/bcopy\.c$
|
||||
^lib/buffer-lcm\.c$
|
||||
^lib/c-strtold\.c$
|
||||
^lib/fnmatch_loop\.c$
|
||||
^lib/full-read\.c$
|
||||
^lib/imaxtostr\.c$
|
||||
^lib/mempcpy\.c$
|
||||
^lib/memset\.c$
|
||||
^lib/offtostr\.c$
|
||||
^lib/regcomp\.c$
|
||||
^lib/regex_internal\.c$
|
||||
^lib/regexec\.c$
|
||||
^lib/safe-write\.c$
|
||||
^lib/strtoll\.c$
|
||||
^lib/strtoul\.c$
|
||||
^lib/strtoull\.c$
|
||||
^lib/strtoumax\.c$
|
||||
^lib/umaxtostr\.c$
|
||||
^lib/xstrtold\.c$
|
||||
^lib/xstrtoul\.c$
|
||||
^src/false\.c$
|
||||
^src/lbracket\.c$
|
||||
^src/ls-dir\.c$
|
||||
^src/ls-ls\.c$
|
||||
^src/ls-vdir\.c$
|
||||
^src/rand-isaac\.c$
|
||||
^src/tac-pipe\.c$
|
||||
@@ -8,3 +8,4 @@ m4/lib-ld.m4
|
||||
m4/lib-prefix.m4
|
||||
m4/po.m4
|
||||
aclocal.m4
|
||||
src/c99-to-c89.diff
|
||||
|
||||
@@ -3,3 +3,4 @@ Makefile\.in$
|
||||
^config-log/
|
||||
^build-aux/texinfo\.tex$
|
||||
\.gdb-history$
|
||||
^src/c99-to-c89\.diff
|
||||
|
||||
0
.x-sc_two_space_separator_in_usage
Normal file
0
.x-sc_two_space_separator_in_usage
Normal file
@@ -1 +1,2 @@
|
||||
^lib/xstrtol\.h$
|
||||
^build-aux/cvsu$
|
||||
|
||||
@@ -1,14 +1,12 @@
|
||||
^build-aux/config.guess
|
||||
^configure
|
||||
^lib/alloca.c
|
||||
^lib/fileblocks.c
|
||||
^lib/fts.c
|
||||
^lib/getdate.c
|
||||
^lib/getloadavg.c
|
||||
^lib/gettext.h
|
||||
^lib/getusershell.c
|
||||
^lib/mbswidth.c
|
||||
^lib/readutmp.h
|
||||
^lib/strtod.c
|
||||
^lib/xstrtol.c
|
||||
^m4/
|
||||
|
||||
10
AUTHORS
10
AUTHORS
@@ -1,6 +1,7 @@
|
||||
Here are the names of the programs in this package,
|
||||
each followed by the name(s) of its author(s).
|
||||
|
||||
base64: Simon Josefsson
|
||||
basename: FIXME unknown
|
||||
cat: Torbjorn Granlund, Richard M. Stallman
|
||||
chgrp: David MacKenzie, Jim Meyering
|
||||
@@ -39,7 +40,7 @@ link: Michael Stone
|
||||
ln: Mike Parker, David MacKenzie
|
||||
logname: FIXME: unknown
|
||||
ls: Richard Stallman, David MacKenzie
|
||||
md5sum: Ulrich Drepper, Scott Miller
|
||||
md5sum: Ulrich Drepper, Scott Miller, David Madore
|
||||
mkdir: David MacKenzie
|
||||
mkfifo: David MacKenzie
|
||||
mknod: David MacKenzie
|
||||
@@ -60,8 +61,13 @@ readlink: Dmitry V. Levin
|
||||
rm: Paul Rubin, David MacKenzie, Richard Stallman, Jim Meyering
|
||||
rmdir: David MacKenzie
|
||||
seq: Ulrich Drepper
|
||||
sha1sum: Ulrich Drepper, Scott Miller
|
||||
sha1sum: Ulrich Drepper, Scott Miller, David Madore
|
||||
sha224sum: Ulrich Drepper, Scott Miller, David Madore
|
||||
sha256sum: Ulrich Drepper, Scott Miller, David Madore
|
||||
sha384sum: Ulrich Drepper, Scott Miller, David Madore
|
||||
sha512sum: Ulrich Drepper, Scott Miller, David Madore
|
||||
shred: Colin Plumb
|
||||
shuf: Paul Eggert
|
||||
sleep: Jim Meyering, Paul Eggert
|
||||
sort: Mike Haertel, Paul Eggert
|
||||
split: Torbjorn Granlund, Richard M. Stallman
|
||||
|
||||
6
COPYING
6
COPYING
@@ -2,7 +2,7 @@
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
@@ -305,7 +305,7 @@ the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
@@ -313,7 +313,7 @@ Also add information on how to contact you by electronic and paper mail.
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) year name of author
|
||||
Gnomovision version 69, Copyright (C) year name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
11002
ChangeLog-2005
Normal file
11002
ChangeLog-2005
Normal file
File diff suppressed because it is too large
Load Diff
@@ -4,7 +4,7 @@
|
||||
# It is necessary if you want to build targets usually of interest
|
||||
# only to the maintainer.
|
||||
|
||||
# Copyright (C) 2001, 2003 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2001, 2003, 2006 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,8 +46,8 @@ include $(srcdir)/Makefile.maint
|
||||
else
|
||||
|
||||
all:
|
||||
@echo There seems to be no Makefile in this directory.
|
||||
@echo "You must run ./configure before running \`make'."
|
||||
@echo There seems to be no Makefile in this directory. 1>&2
|
||||
@echo "You must run ./configure before running \`make'." 1>&2
|
||||
@exit 1
|
||||
|
||||
endif
|
||||
|
||||
67
INSTALL
67
INSTALL
@@ -1,13 +1,16 @@
|
||||
Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software
|
||||
Foundation, Inc.
|
||||
Installation Instructions
|
||||
*************************
|
||||
|
||||
This file is free documentation; the Free Software Foundation gives
|
||||
Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
|
||||
2006 Free Software Foundation, Inc.
|
||||
|
||||
This file is free documentation; the Free Software Foundation gives
|
||||
unlimited permission to copy, distribute and modify it.
|
||||
|
||||
Basic Installation
|
||||
==================
|
||||
|
||||
These are generic installation instructions.
|
||||
These are generic installation instructions.
|
||||
|
||||
The `configure' shell script attempts to guess correct values for
|
||||
various system-dependent variables used during compilation. It uses
|
||||
@@ -67,9 +70,9 @@ The simplest way to compile this package is:
|
||||
Compilers and Options
|
||||
=====================
|
||||
|
||||
Some systems require unusual options for compilation or linking that
|
||||
the `configure' script does not know about. Run `./configure --help'
|
||||
for details on some of the pertinent environment variables.
|
||||
Some systems require unusual options for compilation or linking that the
|
||||
`configure' script does not know about. Run `./configure --help' for
|
||||
details on some of the pertinent environment variables.
|
||||
|
||||
You can give `configure' initial values for configuration parameters
|
||||
by setting variables in the command line or in the environment. Here
|
||||
@@ -82,7 +85,7 @@ is an example:
|
||||
Compiling For Multiple Architectures
|
||||
====================================
|
||||
|
||||
You can compile the package for more than one kind of computer at the
|
||||
You can compile the package for more than one kind of computer at the
|
||||
same time, by placing the object files for each architecture in their
|
||||
own directory. To do this, you must use a version of `make' that
|
||||
supports the `VPATH' variable, such as GNU `make'. `cd' to the
|
||||
@@ -99,19 +102,19 @@ for another architecture.
|
||||
Installation Names
|
||||
==================
|
||||
|
||||
By default, `make install' will install the package's files in
|
||||
`/usr/local/bin', `/usr/local/man', etc. You can specify an
|
||||
installation prefix other than `/usr/local' by giving `configure' the
|
||||
option `--prefix=PATH'.
|
||||
By default, `make install' installs the package's commands under
|
||||
`/usr/local/bin', include files under `/usr/local/include', etc. You
|
||||
can specify an installation prefix other than `/usr/local' by giving
|
||||
`configure' the option `--prefix=PREFIX'.
|
||||
|
||||
You can specify separate installation prefixes for
|
||||
architecture-specific files and architecture-independent files. If you
|
||||
give `configure' the option `--exec-prefix=PATH', the package will use
|
||||
PATH as the prefix for installing programs and libraries.
|
||||
Documentation and other data files will still use the regular prefix.
|
||||
pass the option `--exec-prefix=PREFIX' to `configure', the package uses
|
||||
PREFIX as the prefix for installing programs and libraries.
|
||||
Documentation and other data files still use the regular prefix.
|
||||
|
||||
In addition, if you use an unusual directory layout you can give
|
||||
options like `--bindir=PATH' to specify different values for particular
|
||||
options like `--bindir=DIR' to specify different values for particular
|
||||
kinds of files. Run `configure --help' for a list of the directories
|
||||
you can set and what kinds of files go in them.
|
||||
|
||||
@@ -122,7 +125,7 @@ option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
|
||||
Optional Features
|
||||
=================
|
||||
|
||||
Some packages pay attention to `--enable-FEATURE' options to
|
||||
Some packages pay attention to `--enable-FEATURE' options to
|
||||
`configure', where FEATURE indicates an optional part of the package.
|
||||
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
|
||||
is something like `gnu-as' or `x' (for the X Window System). The
|
||||
@@ -137,11 +140,11 @@ you can use the `configure' options `--x-includes=DIR' and
|
||||
Specifying the System Type
|
||||
==========================
|
||||
|
||||
There may be some features `configure' cannot figure out
|
||||
automatically, but needs to determine by the type of machine the package
|
||||
will run on. Usually, assuming the package is built to be run on the
|
||||
_same_ architectures, `configure' can figure that out, but if it prints
|
||||
a message saying it cannot guess the machine type, give it the
|
||||
There may be some features `configure' cannot figure out automatically,
|
||||
but needs to determine by the type of machine the package will run on.
|
||||
Usually, assuming the package is built to be run on the _same_
|
||||
architectures, `configure' can figure that out, but if it prints a
|
||||
message saying it cannot guess the machine type, give it the
|
||||
`--build=TYPE' option. TYPE can either be a short name for the system
|
||||
type, such as `sun4', or a canonical name which has the form:
|
||||
|
||||
@@ -156,7 +159,7 @@ where SYSTEM can have one of these forms:
|
||||
need to know the machine type.
|
||||
|
||||
If you are _building_ compiler tools for cross-compiling, you should
|
||||
use the `--target=TYPE' option to select the type of system they will
|
||||
use the option `--target=TYPE' to select the type of system they will
|
||||
produce code for.
|
||||
|
||||
If you want to _use_ a cross compiler, that generates code for a
|
||||
@@ -167,9 +170,9 @@ eventually be run) with `--host=TYPE'.
|
||||
Sharing Defaults
|
||||
================
|
||||
|
||||
If you want to set default values for `configure' scripts to share,
|
||||
you can create a site shell script called `config.site' that gives
|
||||
default values for variables like `CC', `cache_file', and `prefix'.
|
||||
If you want to set default values for `configure' scripts to share, you
|
||||
can create a site shell script called `config.site' that gives default
|
||||
values for variables like `CC', `cache_file', and `prefix'.
|
||||
`configure' looks for `PREFIX/share/config.site' if it exists, then
|
||||
`PREFIX/etc/config.site' if it exists. Or, you can set the
|
||||
`CONFIG_SITE' environment variable to the location of the site script.
|
||||
@@ -178,7 +181,7 @@ A warning: not all `configure' scripts look for a site script.
|
||||
Defining Variables
|
||||
==================
|
||||
|
||||
Variables not defined in a site shell script can be set in the
|
||||
Variables not defined in a site shell script can be set in the
|
||||
environment passed to `configure'. However, some packages may run
|
||||
configure again during the build, and the customized values of these
|
||||
variables may be lost. In order to avoid this problem, you should set
|
||||
@@ -186,14 +189,18 @@ them in the `configure' command line, using `VAR=value'. For example:
|
||||
|
||||
./configure CC=/usr/local2/bin/gcc
|
||||
|
||||
will cause the specified gcc to be used as the C compiler (unless it is
|
||||
causes the specified `gcc' to be used as the C compiler (unless it is
|
||||
overridden in the site shell script).
|
||||
|
||||
Unfortunately, this technique does not work for `CONFIG_SHELL' due to
|
||||
an Autoconf bug. Until the bug is fixed you can use this workaround:
|
||||
|
||||
CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
|
||||
|
||||
`configure' Invocation
|
||||
======================
|
||||
|
||||
`configure' recognizes the following options to control how it
|
||||
operates.
|
||||
`configure' recognizes the following options to control how it operates.
|
||||
|
||||
`--help'
|
||||
`-h'
|
||||
|
||||
14
Makefile.am
14
Makefile.am
@@ -2,14 +2,26 @@
|
||||
|
||||
SUBDIRS = lib src doc man po tests
|
||||
EXTRA_DIST = Makefile.cfg Makefile.maint GNUmakefile \
|
||||
.hgignore \
|
||||
.gitignore \
|
||||
.kludge-stamp .prev-version THANKS-to-translators THANKStt.in \
|
||||
.vg-suppressions \
|
||||
.x-po-check \
|
||||
.x-sc_space_tab .x-sc_sun_os_names \
|
||||
.x-sc_file_system .x-sc_obsolete_symbols \
|
||||
.x-sc_unmarked_diagnostics \
|
||||
.x-sc_useless_cpp_parens \
|
||||
.x-sc_no_if_have_config_h \
|
||||
.x-sc_require_config_h \
|
||||
.x-sc_prohibit_assert_without_use \
|
||||
.x-sc_prohibit_atoi_atof \
|
||||
.x-sc_trailing_blank \
|
||||
.x-sc_two_space_separator_in_usage \
|
||||
announce-gen \
|
||||
build-aux/cvsu \
|
||||
build-aux/vc-list-files \
|
||||
m4/ChangeLog \
|
||||
ChangeLog-2005 \
|
||||
old/fileutils/ChangeLog \
|
||||
old/fileutils/ChangeLog-1997 \
|
||||
old/sh-utils/ChangeLog \
|
||||
@@ -48,6 +60,8 @@ rm_subst = \
|
||||
perl -pi -e '$(rm_subst)' $(srcdir)/src/Makefile.in
|
||||
touch $@
|
||||
|
||||
|
||||
MAINTAINERCLEANFILES = THANKS-to-translators
|
||||
THANKS-to-translators: po/LINGUAS THANKStt.in
|
||||
( \
|
||||
cat $(srcdir)/THANKStt.in; \
|
||||
|
||||
12
Makefile.cfg
12
Makefile.cfg
@@ -1,5 +1,5 @@
|
||||
# Customize Makefile.maint. -*- makefile -*-
|
||||
# Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2003-2006 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
|
||||
@@ -47,5 +47,11 @@ cvs_files = \
|
||||
|
||||
local_updates = wget-update cvs-update
|
||||
|
||||
# Tests not to run.
|
||||
local-checks-to-skip =
|
||||
# The GnuPG ID of the key used to sign the tarballs.
|
||||
gpg_key_ID = D333CBA1
|
||||
|
||||
# Tests not to run as part of "make distcheck".
|
||||
# Exclude changelog-check here so that there's less churn in ChangeLog
|
||||
# files -- otherwise, you'd need to have the upcoming version number
|
||||
# at the top of the file for each `make distcheck' run.
|
||||
local-checks-to-skip = changelog-check
|
||||
|
||||
142
Makefile.in
142
Makefile.in
@@ -38,40 +38,46 @@ host_triplet = @host@
|
||||
DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
|
||||
$(srcdir)/Makefile.in $(srcdir)/config.hin \
|
||||
$(top_srcdir)/configure ABOUT-NLS AUTHORS COPYING ChangeLog \
|
||||
INSTALL NEWS THANKS TODO build-aux/ChangeLog \
|
||||
INSTALL NEWS THANKS TODO build-aux/ChangeLog build-aux/compile \
|
||||
build-aux/config.guess build-aux/config.rpath \
|
||||
build-aux/config.sub build-aux/depcomp build-aux/install-sh \
|
||||
build-aux/mdate-sh build-aux/missing build-aux/mkinstalldirs \
|
||||
build-aux/texinfo.tex
|
||||
subdir = .
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/afs.m4 \
|
||||
$(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/allocsa.m4 \
|
||||
$(top_srcdir)/m4/argmatch.m4 $(top_srcdir)/m4/assert.m4 \
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/absolute-header.m4 \
|
||||
$(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/alloca.m4 \
|
||||
$(top_srcdir)/m4/allocsa.m4 $(top_srcdir)/m4/argmatch.m4 \
|
||||
$(top_srcdir)/m4/arpa_inet_h.m4 $(top_srcdir)/m4/assert.m4 \
|
||||
$(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/autobuild.m4 \
|
||||
$(top_srcdir)/m4/backupfile.m4 $(top_srcdir)/m4/basename.m4 \
|
||||
$(top_srcdir)/m4/bison.m4 $(top_srcdir)/m4/boottime.m4 \
|
||||
$(top_srcdir)/m4/c-strtod.m4 $(top_srcdir)/m4/calloc.m4 \
|
||||
$(top_srcdir)/m4/canon-host.m4 \
|
||||
$(top_srcdir)/m4/canonicalize.m4 \
|
||||
$(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/check-decl.m4 \
|
||||
$(top_srcdir)/m4/chown.m4 $(top_srcdir)/m4/clock_time.m4 \
|
||||
$(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/closeout.m4 \
|
||||
$(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/chdir-safer.m4 \
|
||||
$(top_srcdir)/m4/check-decl.m4 $(top_srcdir)/m4/chown.m4 \
|
||||
$(top_srcdir)/m4/clock_time.m4 $(top_srcdir)/m4/cloexec.m4 \
|
||||
$(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/closeout.m4 \
|
||||
$(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/cycle-check.m4 \
|
||||
$(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \
|
||||
$(top_srcdir)/m4/diacrit.m4 $(top_srcdir)/m4/dirfd.m4 \
|
||||
$(top_srcdir)/m4/dirname.m4 $(top_srcdir)/m4/dos.m4 \
|
||||
$(top_srcdir)/m4/dev-ino.m4 $(top_srcdir)/m4/diacrit.m4 \
|
||||
$(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \
|
||||
$(top_srcdir)/m4/dos.m4 $(top_srcdir)/m4/double-slash-root.m4 \
|
||||
$(top_srcdir)/m4/dup2.m4 $(top_srcdir)/m4/eealloc.m4 \
|
||||
$(top_srcdir)/m4/eoverflow.m4 $(top_srcdir)/m4/error.m4 \
|
||||
$(top_srcdir)/m4/euidaccess-stat.m4 \
|
||||
$(top_srcdir)/m4/euidaccess.m4 $(top_srcdir)/m4/exclude.m4 \
|
||||
$(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \
|
||||
$(top_srcdir)/m4/fcntl-safer.m4 $(top_srcdir)/m4/fd-reopen.m4 \
|
||||
$(top_srcdir)/m4/file-type.m4 $(top_srcdir)/m4/fileblocks.m4 \
|
||||
$(top_srcdir)/m4/filemode.m4 $(top_srcdir)/m4/filenamecat.m4 \
|
||||
$(top_srcdir)/m4/fnmatch.m4 $(top_srcdir)/m4/fpending.m4 \
|
||||
$(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/fstypename.m4 \
|
||||
$(top_srcdir)/m4/fsusage.m4 $(top_srcdir)/m4/ftruncate.m4 \
|
||||
$(top_srcdir)/m4/fts.m4 $(top_srcdir)/m4/getaddrinfo.m4 \
|
||||
$(top_srcdir)/m4/fprintftime.m4 $(top_srcdir)/m4/free.m4 \
|
||||
$(top_srcdir)/m4/fstypename.m4 $(top_srcdir)/m4/fsusage.m4 \
|
||||
$(top_srcdir)/m4/ftruncate.m4 $(top_srcdir)/m4/fts.m4 \
|
||||
$(top_srcdir)/m4/getaddrinfo.m4 \
|
||||
$(top_srcdir)/m4/getcwd-abort-bug.m4 \
|
||||
$(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \
|
||||
$(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \
|
||||
$(top_srcdir)/m4/getgroups.m4 $(top_srcdir)/m4/gethostname.m4 \
|
||||
@@ -86,14 +92,17 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/afs.m4 \
|
||||
$(top_srcdir)/m4/hard-locale.m4 $(top_srcdir)/m4/hash-pjw.m4 \
|
||||
$(top_srcdir)/m4/hash.m4 $(top_srcdir)/m4/host-os.m4 \
|
||||
$(top_srcdir)/m4/human.m4 $(top_srcdir)/m4/iconv.m4 \
|
||||
$(top_srcdir)/m4/idcache.m4 $(top_srcdir)/m4/intmax_t.m4 \
|
||||
$(top_srcdir)/m4/inttostr.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
|
||||
$(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \
|
||||
$(top_srcdir)/m4/jm-macros.m4 $(top_srcdir)/m4/jm-winsz1.m4 \
|
||||
$(top_srcdir)/m4/jm-winsz2.m4 $(top_srcdir)/m4/lchown.m4 \
|
||||
$(top_srcdir)/m4/lib-check.m4 $(top_srcdir)/m4/lib-ld.m4 \
|
||||
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
|
||||
$(top_srcdir)/m4/linebuffer.m4 $(top_srcdir)/m4/link-follow.m4 \
|
||||
$(top_srcdir)/m4/idcache.m4 $(top_srcdir)/m4/inet_ntop.m4 \
|
||||
$(top_srcdir)/m4/intmax_t.m4 $(top_srcdir)/m4/inttostr.m4 \
|
||||
$(top_srcdir)/m4/inttypes-h.m4 \
|
||||
$(top_srcdir)/m4/inttypes-pri.m4 $(top_srcdir)/m4/inttypes.m4 \
|
||||
$(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/jm-macros.m4 \
|
||||
$(top_srcdir)/m4/jm-winsz1.m4 $(top_srcdir)/m4/jm-winsz2.m4 \
|
||||
$(top_srcdir)/m4/lchmod.m4 $(top_srcdir)/m4/lchown.m4 \
|
||||
$(top_srcdir)/m4/lib-check.m4 $(top_srcdir)/m4/lib-ignore.m4 \
|
||||
$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
|
||||
$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/linebuffer.m4 \
|
||||
$(top_srcdir)/m4/link-follow.m4 \
|
||||
$(top_srcdir)/m4/localcharset.m4 \
|
||||
$(top_srcdir)/m4/long-options.m4 \
|
||||
$(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \
|
||||
@@ -105,32 +114,37 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/afs.m4 \
|
||||
$(top_srcdir)/m4/memcmp.m4 $(top_srcdir)/m4/memcoll.m4 \
|
||||
$(top_srcdir)/m4/memcpy.m4 $(top_srcdir)/m4/memmove.m4 \
|
||||
$(top_srcdir)/m4/mempcpy.m4 $(top_srcdir)/m4/memrchr.m4 \
|
||||
$(top_srcdir)/m4/memset.m4 $(top_srcdir)/m4/mkdir-p.m4 \
|
||||
$(top_srcdir)/m4/memset.m4 $(top_srcdir)/m4/memxfrm.m4 \
|
||||
$(top_srcdir)/m4/mkancesdirs.m4 $(top_srcdir)/m4/mkdir-p.m4 \
|
||||
$(top_srcdir)/m4/mkdir-slash.m4 $(top_srcdir)/m4/mkstemp.m4 \
|
||||
$(top_srcdir)/m4/mktime.m4 $(top_srcdir)/m4/modechange.m4 \
|
||||
$(top_srcdir)/m4/mountlist.m4 $(top_srcdir)/m4/nanosleep.m4 \
|
||||
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/obstack.m4 \
|
||||
$(top_srcdir)/m4/onceonly_2_57.m4 $(top_srcdir)/m4/openat.m4 \
|
||||
$(top_srcdir)/m4/netinet_in_h.m4 $(top_srcdir)/m4/nls.m4 \
|
||||
$(top_srcdir)/m4/obstack.m4 $(top_srcdir)/m4/openat.m4 \
|
||||
$(top_srcdir)/m4/pathmax.m4 $(top_srcdir)/m4/perl.m4 \
|
||||
$(top_srcdir)/m4/physmem.m4 $(top_srcdir)/m4/po.m4 \
|
||||
$(top_srcdir)/m4/posixtm.m4 $(top_srcdir)/m4/posixver.m4 \
|
||||
$(top_srcdir)/m4/prereq.m4 $(top_srcdir)/m4/progtest.m4 \
|
||||
$(top_srcdir)/m4/putenv.m4 $(top_srcdir)/m4/quote.m4 \
|
||||
$(top_srcdir)/m4/quotearg.m4 $(top_srcdir)/m4/readlink.m4 \
|
||||
$(top_srcdir)/m4/readtokens.m4 $(top_srcdir)/m4/readutmp.m4 \
|
||||
$(top_srcdir)/m4/regex.m4 $(top_srcdir)/m4/rename.m4 \
|
||||
$(top_srcdir)/m4/restrict.m4 $(top_srcdir)/m4/rmdir-errno.m4 \
|
||||
$(top_srcdir)/m4/quotearg.m4 $(top_srcdir)/m4/randint.m4 \
|
||||
$(top_srcdir)/m4/randperm.m4 $(top_srcdir)/m4/randread.m4 \
|
||||
$(top_srcdir)/m4/readlink.m4 $(top_srcdir)/m4/readtokens.m4 \
|
||||
$(top_srcdir)/m4/readutmp.m4 $(top_srcdir)/m4/regex.m4 \
|
||||
$(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rmdir-errno.m4 \
|
||||
$(top_srcdir)/m4/rmdir.m4 $(top_srcdir)/m4/root-dev-ino.m4 \
|
||||
$(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
|
||||
$(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/same.m4 \
|
||||
$(top_srcdir)/m4/save-cwd.m4 $(top_srcdir)/m4/savedir.m4 \
|
||||
$(top_srcdir)/m4/setenv.m4 $(top_srcdir)/m4/settime.m4 \
|
||||
$(top_srcdir)/m4/sha1.m4 $(top_srcdir)/m4/sig2str.m4 \
|
||||
$(top_srcdir)/m4/signed.m4 $(top_srcdir)/m4/socklen.m4 \
|
||||
$(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/same-inode.m4 \
|
||||
$(top_srcdir)/m4/same.m4 $(top_srcdir)/m4/save-cwd.m4 \
|
||||
$(top_srcdir)/m4/savedir.m4 $(top_srcdir)/m4/setenv.m4 \
|
||||
$(top_srcdir)/m4/settime.m4 $(top_srcdir)/m4/sha1.m4 \
|
||||
$(top_srcdir)/m4/sha256.m4 $(top_srcdir)/m4/sha512.m4 \
|
||||
$(top_srcdir)/m4/sig2str.m4 $(top_srcdir)/m4/signed.m4 \
|
||||
$(top_srcdir)/m4/snprintf.m4 $(top_srcdir)/m4/socklen.m4 \
|
||||
$(top_srcdir)/m4/sockpfaf.m4 $(top_srcdir)/m4/ssize_t.m4 \
|
||||
$(top_srcdir)/m4/st_dm_mode.m4 $(top_srcdir)/m4/stat-macros.m4 \
|
||||
$(top_srcdir)/m4/stat-prog.m4 $(top_srcdir)/m4/stat-time.m4 \
|
||||
$(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stdint_h.m4 \
|
||||
$(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
|
||||
$(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \
|
||||
$(top_srcdir)/m4/stdio-safer.m4 \
|
||||
$(top_srcdir)/m4/stdlib-safer.m4 $(top_srcdir)/m4/stpcpy.m4 \
|
||||
$(top_srcdir)/m4/strcase.m4 $(top_srcdir)/m4/strcspn.m4 \
|
||||
@@ -142,6 +156,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/afs.m4 \
|
||||
$(top_srcdir)/m4/strtol.m4 $(top_srcdir)/m4/strtoll.m4 \
|
||||
$(top_srcdir)/m4/strtoul.m4 $(top_srcdir)/m4/strtoull.m4 \
|
||||
$(top_srcdir)/m4/strtoumax.m4 $(top_srcdir)/m4/strverscmp.m4 \
|
||||
$(top_srcdir)/m4/sys_socket_h.m4 $(top_srcdir)/m4/time_r.m4 \
|
||||
$(top_srcdir)/m4/timespec.m4 $(top_srcdir)/m4/tm_gmtoff.m4 \
|
||||
$(top_srcdir)/m4/tzset.m4 $(top_srcdir)/m4/uint32_t.m4 \
|
||||
$(top_srcdir)/m4/uintmax_t.m4 $(top_srcdir)/m4/uintptr_t.m4 \
|
||||
@@ -154,13 +169,13 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/afs.m4 \
|
||||
$(top_srcdir)/m4/utimens.m4 $(top_srcdir)/m4/utimes-null.m4 \
|
||||
$(top_srcdir)/m4/utimes.m4 $(top_srcdir)/m4/vasnprintf.m4 \
|
||||
$(top_srcdir)/m4/vasprintf.m4 $(top_srcdir)/m4/version-etc.m4 \
|
||||
$(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \
|
||||
$(top_srcdir)/m4/xalloc.m4 $(top_srcdir)/m4/xfts.m4 \
|
||||
$(top_srcdir)/m4/xgetcwd.m4 $(top_srcdir)/m4/xnanosleep.m4 \
|
||||
$(top_srcdir)/m4/xreadlink.m4 $(top_srcdir)/m4/xstrtod.m4 \
|
||||
$(top_srcdir)/m4/xstrtoimax.m4 $(top_srcdir)/m4/xstrtol.m4 \
|
||||
$(top_srcdir)/m4/xstrtoumax.m4 $(top_srcdir)/m4/yesno.m4 \
|
||||
$(top_srcdir)/configure.ac
|
||||
$(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wcwidth.m4 \
|
||||
$(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
|
||||
$(top_srcdir)/m4/xfts.m4 $(top_srcdir)/m4/xgetcwd.m4 \
|
||||
$(top_srcdir)/m4/xnanosleep.m4 $(top_srcdir)/m4/xreadlink.m4 \
|
||||
$(top_srcdir)/m4/xstrtod.m4 $(top_srcdir)/m4/xstrtoimax.m4 \
|
||||
$(top_srcdir)/m4/xstrtol.m4 $(top_srcdir)/m4/xstrtoumax.m4 \
|
||||
$(top_srcdir)/m4/yesno.m4 $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
|
||||
@@ -190,16 +205,23 @@ DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2
|
||||
GZIP_ENV = --best
|
||||
distuninstallcheck_listfiles = find . -type f -print
|
||||
distcleancheck_listfiles = find . -type f -print
|
||||
ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
|
||||
ACLOCAL = @ACLOCAL@
|
||||
ALLOCA = @ALLOCA@
|
||||
ALLOCA_H = @ALLOCA_H@
|
||||
AMDEP_FALSE = @AMDEP_FALSE@
|
||||
AMDEP_TRUE = @AMDEP_TRUE@
|
||||
AMTAR = @AMTAR@
|
||||
ARPA_INET_H = @ARPA_INET_H@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
|
||||
BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
|
||||
BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
|
||||
BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
|
||||
BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
@@ -221,8 +243,19 @@ GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
|
||||
GETOPT_H = @GETOPT_H@
|
||||
GLIBC21 = @GLIBC21@
|
||||
GMSGFMT = @GMSGFMT@
|
||||
GMSGFMT_015 = @GMSGFMT_015@
|
||||
GNU_PACKAGE = @GNU_PACKAGE@
|
||||
GREP = @GREP@
|
||||
HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
|
||||
HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
|
||||
HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
|
||||
HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
|
||||
HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
|
||||
HAVE_STDINT_H = @HAVE_STDINT_H@
|
||||
HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
|
||||
HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
|
||||
HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
|
||||
HAVE_WCHAR_H = @HAVE_WCHAR_H@
|
||||
HAVE__BOOL = @HAVE__BOOL@
|
||||
HELP2MAN = @HELP2MAN@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
@@ -237,6 +270,7 @@ LIBICONV = @LIBICONV@
|
||||
LIBINTL = @LIBINTL@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LIB_ACL = @LIB_ACL@
|
||||
LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
|
||||
LIB_CRYPT = @LIB_CRYPT@
|
||||
LIB_EACCESS = @LIB_EACCESS@
|
||||
@@ -249,10 +283,11 @@ LTLIBINTL = @LTLIBINTL@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MAN = @MAN@
|
||||
MKINSTALLDIRS = @MKINSTALLDIRS@
|
||||
MSGFMT = @MSGFMT@
|
||||
MSGFMT_015 = @MSGFMT_015@
|
||||
MSGMERGE = @MSGMERGE@
|
||||
NEED_SETGID = @NEED_SETGID@
|
||||
NETINET_IN_H = @NETINET_IN_H@
|
||||
OBJEXT = @OBJEXT@
|
||||
OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
|
||||
PACKAGE = @PACKAGE@
|
||||
@@ -265,21 +300,27 @@ PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PERL = @PERL@
|
||||
POSUB = @POSUB@
|
||||
POW_LIB = @POW_LIB@
|
||||
PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
|
||||
RANLIB = @RANLIB@
|
||||
SEQ_LIBM = @SEQ_LIBM@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
|
||||
SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
|
||||
STDBOOL_H = @STDBOOL_H@
|
||||
STDINT_H = @STDINT_H@
|
||||
STRIP = @STRIP@
|
||||
SYS_SOCKET_H = @SYS_SOCKET_H@
|
||||
U = @U@
|
||||
USE_NLS = @USE_NLS@
|
||||
VERSION = @VERSION@
|
||||
WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
|
||||
WINT_T_SUFFIX = @WINT_T_SUFFIX@
|
||||
XGETTEXT = @XGETTEXT@
|
||||
XGETTEXT_015 = @XGETTEXT_015@
|
||||
YACC = @YACC@
|
||||
YFLAGS = @YFLAGS@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_RANLIB = @ac_ct_RANLIB@
|
||||
ac_ct_STRIP = @ac_ct_STRIP@
|
||||
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
|
||||
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
|
||||
am__include = @am__include@
|
||||
@@ -324,14 +365,26 @@ sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
SUBDIRS = lib src doc man po tests
|
||||
EXTRA_DIST = Makefile.cfg Makefile.maint GNUmakefile \
|
||||
.hgignore \
|
||||
.gitignore \
|
||||
.kludge-stamp .prev-version THANKS-to-translators THANKStt.in \
|
||||
.vg-suppressions \
|
||||
.x-po-check \
|
||||
.x-sc_space_tab .x-sc_sun_os_names \
|
||||
.x-sc_file_system .x-sc_obsolete_symbols \
|
||||
.x-sc_unmarked_diagnostics \
|
||||
.x-sc_useless_cpp_parens \
|
||||
.x-sc_no_if_have_config_h \
|
||||
.x-sc_require_config_h \
|
||||
.x-sc_prohibit_assert_without_use \
|
||||
.x-sc_prohibit_atoi_atof \
|
||||
.x-sc_trailing_blank \
|
||||
.x-sc_two_space_separator_in_usage \
|
||||
announce-gen \
|
||||
build-aux/cvsu \
|
||||
build-aux/vc-list-files \
|
||||
m4/ChangeLog \
|
||||
ChangeLog-2005 \
|
||||
old/fileutils/ChangeLog \
|
||||
old/fileutils/ChangeLog-1997 \
|
||||
old/sh-utils/ChangeLog \
|
||||
@@ -353,6 +406,7 @@ ACLOCAL_AMFLAGS = -I m4
|
||||
rm_subst = \
|
||||
s!(rm -f (rm|\$$\(bin_PROGRAMS\)))$$!$$1 > /dev/null 2>&1 || /bin/$$1!
|
||||
|
||||
MAINTAINERCLEANFILES = THANKS-to-translators
|
||||
all: config.h
|
||||
$(MAKE) $(AM_MAKEFLAGS) all-recursive
|
||||
|
||||
@@ -722,6 +776,7 @@ distclean-generic:
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
|
||||
clean: clean-recursive
|
||||
|
||||
clean-am: clean-generic mostlyclean-am
|
||||
@@ -804,7 +859,6 @@ distcheck-hook:
|
||||
.kludge-stamp: $(srcdir)/src/Makefile.in
|
||||
perl -pi -e '$(rm_subst)' $(srcdir)/src/Makefile.in
|
||||
touch $@
|
||||
|
||||
THANKS-to-translators: po/LINGUAS THANKStt.in
|
||||
( \
|
||||
cat $(srcdir)/THANKStt.in; \
|
||||
|
||||
243
Makefile.maint
243
Makefile.maint
@@ -2,7 +2,7 @@
|
||||
# This Makefile fragment is shared between the coreutils,
|
||||
# CPPI, Bison, and Autoconf.
|
||||
|
||||
## Copyright (C) 2001-2005 Free Software Foundation, Inc.
|
||||
## Copyright (C) 2001-2006 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,11 +24,18 @@
|
||||
ME := Makefile.maint
|
||||
|
||||
# Do not save the original name or timestamp in the .tar.gz file.
|
||||
GZIP_ENV = '--no-name --best --rsyncable'
|
||||
# Use --rsyncable if available.
|
||||
gzip_rsyncable := \
|
||||
$(shell gzip --help|grep rsyncable >/dev/null && echo --rsyncable)
|
||||
GZIP_ENV = '--no-name --best $(gzip_rsyncable)'
|
||||
|
||||
CVS = cvs
|
||||
|
||||
CVS_LIST = cvsu --find --types=AFGM
|
||||
# cvsu is part of the cvsutils package: http://www.red-bean.com/cvsutils/
|
||||
CVS_LIST = build-aux/vc-list-files
|
||||
|
||||
CVS_LIST_EXCEPT = \
|
||||
$(CVS_LIST) | if test -f .x-$@; then grep -vEf .x-$@; else grep -v ChangeLog; fi
|
||||
|
||||
ifeq ($(origin prev_version_file), undefined)
|
||||
prev_version_file = .prev-version
|
||||
@@ -56,125 +63,116 @@ export LC_ALL = C
|
||||
## Sanity checks. ##
|
||||
## --------------- ##
|
||||
|
||||
# FIXME: add a check to prohibit definition in src/*.c of symbols defined
|
||||
# in system.h. E.g. today I removed from tail.c a useless definition of
|
||||
# ENOSYS. It was useless because system.h ensures it's defined.
|
||||
|
||||
# Checks that don't require cvs.
|
||||
# Run `changelog-check' last, as previous test may reveal problems requiring
|
||||
# new ChangeLog entries.
|
||||
local-checks-available = \
|
||||
po-check copyright-check writable-files m4-check author_mark_check \
|
||||
changelog-check strftime-check syntax-check makefile_path_separator_check \
|
||||
changelog-check patch-check strftime-check $(syntax-check-rules) \
|
||||
makefile_path_separator_check \
|
||||
makefile-check
|
||||
.PHONY: $(local-checks-available)
|
||||
|
||||
local-check = $(filter-out $(local-checks-to-skip), $(local-checks-available))
|
||||
|
||||
# Collect the names of rules starting with `sc_'.
|
||||
syntax-check-rules := $(shell sed -n 's/^\(sc_[a-zA-Z0-9_-]*\):.*/\1/p' $(ME))
|
||||
.PHONY: $(syntax-check-rules)
|
||||
syntax-check-rules = \
|
||||
sc_cast_of_argument_to_free \
|
||||
sc_cast_of_x_alloc_return_value \
|
||||
sc_cast_of_alloca_return_value \
|
||||
sc_dd_max_sym_length \
|
||||
sc_error_exit_success \
|
||||
sc_file_system \
|
||||
sc_no_if_have_config_h \
|
||||
sc_obsolete_symbols \
|
||||
sc_prohibit_atoi_atof \
|
||||
sc_prohibit_jm_in_m4 \
|
||||
sc_root_tests \
|
||||
sc_space_tab \
|
||||
sc_sun_os_names \
|
||||
sc_system_h_headers \
|
||||
sc_tight_scope \
|
||||
sc_trailing_blank \
|
||||
sc_unmarked_diagnostics \
|
||||
sc_useless_cpp_parens
|
||||
|
||||
syntax-check: $(syntax-check-rules)
|
||||
# @grep -E '# *include <(limits|std(def|arg|bool))\.h>' \
|
||||
# @grep -nE '# *include <(limits|std(def|arg|bool))\.h>' \
|
||||
# $$(find -type f -name '*.[chly]') && \
|
||||
# { echo '$(ME): found conditional include' 1>&2; \
|
||||
# exit 1; } || :
|
||||
|
||||
# grep -E '^# *include <(string|stdlib)\.h>' \
|
||||
# grep -nE '^# *include <(string|stdlib)\.h>' \
|
||||
# $(srcdir)/{lib,src}/*.[chy] && \
|
||||
# { echo '$(ME): FIXME' 1>&2; \
|
||||
# exit 1; } || :
|
||||
# FIXME: don't allow `#include .strings\.h' anywhere
|
||||
|
||||
# FIXME: add a check for this.
|
||||
# Nearly every lib/*.c file must include config.h, like this:
|
||||
# #ifdef HAVE_CONFIG_H
|
||||
# # include <config.h>
|
||||
# #endif
|
||||
|
||||
sc_cast_of_argument_to_free:
|
||||
@grep -E '\<free \(\(' $(srcdir)/{lib,src}/*.[chly] && \
|
||||
@grep -nE '\<free \(\(' $(srcdir)/{lib,src}/*.[chly] && \
|
||||
{ echo '$(ME): don'\''t cast free argument' 1>&2; \
|
||||
exit 1; } || :
|
||||
|
||||
sc_cast_of_x_alloc_return_value:
|
||||
@grep -E --exclude=$(srcdir)/lib/regex.c \
|
||||
@grep -nE --exclude=$(srcdir)/lib/regex.c \
|
||||
'\*\) *x(m|c|re)alloc\>' \
|
||||
$(srcdir)/{lib,src}/*.[chy] && \
|
||||
{ echo '$(ME): don'\''t cast x*alloc return value' 1>&2; \
|
||||
exit 1; } || :
|
||||
|
||||
sc_cast_of_alloca_return_value:
|
||||
@grep -E '\*\) *alloca\>' \
|
||||
@grep -nE '\*\) *alloca\>' \
|
||||
$(srcdir)/src/*.[chy] && \
|
||||
{ echo '$(ME): don'\''t cast alloca return value' 1>&2; \
|
||||
exit 1; } || :
|
||||
|
||||
sc_space_tab:
|
||||
@( $(CVS_LIST) ) > /dev/null 2>&1 || : && \
|
||||
grep '[ ] ' \
|
||||
$$($(CVS_LIST) | grep -vEf .x-$@ ) && \
|
||||
@grep -n '[ ] ' $$($(CVS_LIST_EXCEPT)) && \
|
||||
{ echo '$(ME): found SPACE-TAB sequence; remove the SPACE' \
|
||||
1>&2; exit 1; } || :
|
||||
|
||||
# Don't use atoi, atof, atol, atoll, or atoq in `real' code.
|
||||
# Don't use the old ato* functions in `real' code.
|
||||
# They provide no error checking mechanism.
|
||||
# Instead, use strto* functions.
|
||||
sc_prohibit_atoi_atof:
|
||||
@( $(CVS_LIST) ) > /dev/null 2>&1 || : && \
|
||||
grep -E '\<(ato[filq]|atoll)\>' \
|
||||
$$($(CVS_LIST) | grep -vEf .x-$@ ) && \
|
||||
{ echo '$(ME): do not use atof, atoi, atol, atoll, or atoq' \
|
||||
@grep -nE '\<ato([filq]|ll)\>' $$($(CVS_LIST_EXCEPT)) && \
|
||||
{ echo '$(ME): do not use ato''f, ato''i, ato''l, ato''ll, or ato''q' \
|
||||
1>&2; exit 1; } || :
|
||||
|
||||
# Using EXIT_SUCCESS as the first argument to error is misleading,
|
||||
# since when that parameter is 0, error does not exit. Use `0' instead.
|
||||
sc_error_exit_success:
|
||||
@grep -F 'error (EXIT_SUCCESS,' \
|
||||
@grep -nF 'error (EXIT_SUCCESS,' \
|
||||
$$(find -type f -name '*.[chly]') && \
|
||||
{ echo '$(ME): found error (EXIT_SUCCESS' 1>&2; \
|
||||
exit 1; } || :
|
||||
|
||||
sc_file_system:
|
||||
@grep -i 'filesystem' \
|
||||
$$($(CVS_LIST) | grep -vEf .x-$@ ) && \
|
||||
{ echo '$(ME): found use of "filesystem";' \
|
||||
@grep -ni 'file''system' $$($(CVS_LIST_EXCEPT)) && \
|
||||
{ echo '$(ME): found use of "file''system";' \
|
||||
'rewrite to use "file system"' 1>&2; \
|
||||
exit 1; } || :
|
||||
|
||||
sc_no_if_have_config_h:
|
||||
@( $(CVS_LIST) ) > /dev/null 2>&1 || : && \
|
||||
grep '^# *if HAVE_CONFIG_H' \
|
||||
$$($(CVS_LIST) | grep -vEf .x-$@ ) && \
|
||||
@grep -n '^# *if HAVE_CONFIG_H' $$($(CVS_LIST_EXCEPT)) && \
|
||||
{ echo '$(ME): found use of #if HAVE_CONFIG_H; use #ifdef' \
|
||||
1>&2; exit 1; } || :
|
||||
|
||||
# Nearly all .c files must include <config.h>.
|
||||
sc_require_config_h:
|
||||
@grep -L '^# *include <config\.h>' \
|
||||
$$($(CVS_LIST_EXCEPT) | grep '\.c$$') \
|
||||
| grep . && \
|
||||
{ echo '$(ME): the above files do not include <config.h>' \
|
||||
1>&2; exit 1; } || :
|
||||
|
||||
# Prohibit the inclusion of assert.h without an actual use of assert.
|
||||
sc_prohibit_assert_without_use:
|
||||
@files=$$(grep -l '# *include <assert\.h>' \
|
||||
$$($(CVS_LIST_EXCEPT) | grep '\.c$$')) && \
|
||||
grep -L '\<assert (' $$files \
|
||||
| grep . && \
|
||||
{ echo "$(ME): the above files include <assert.h> but don't use it" \
|
||||
1>&2; exit 1; } || :
|
||||
|
||||
sc_obsolete_symbols:
|
||||
@( $(CVS_LIST) ) > /dev/null 2>&1 || : && \
|
||||
grep -E '\<(HAVE_FCNTL_H)\>' \
|
||||
$$($(CVS_LIST) | grep -vEf .x-$@ ) && \
|
||||
{ echo '$(ME): do not use HAVE_FCNTL_H' \
|
||||
@grep -nE '\<(HAVE''_FCNTL_H|O''_NDELAY)\>' \
|
||||
$$($(CVS_LIST_EXCEPT)) && \
|
||||
{ echo '$(ME): do not use HAVE''_FCNTL_H or O''_NDELAY' \
|
||||
1>&2; exit 1; } || :
|
||||
|
||||
# FIXME: warn about definitions of EXIT_FAILURE, EXIT_SUCCESS, STREQ
|
||||
|
||||
# Each nonempty line must start with a year number, or a TAB.
|
||||
sc_changelog:
|
||||
@grep '^[^12 ]' $$(find . -maxdepth 2 -name ChangeLog) && \
|
||||
@grep -n '^[^12 ]' $$(find . -maxdepth 2 -name ChangeLog) && \
|
||||
{ echo '$(ME): found unexpected prefix in a ChangeLog' 1>&2; \
|
||||
exit 1; } || :
|
||||
|
||||
@@ -182,31 +180,31 @@ sc_changelog:
|
||||
# with the strings from the two affected variables.
|
||||
dd_c = $(srcdir)/src/dd.c
|
||||
sc_dd_max_sym_length:
|
||||
@test -f $(dd_c) || exit 0; \
|
||||
len=$$( (sed -n '/conversions\[\] =$$/,/^};/p' $(dd_c); \
|
||||
ifneq ($(wildcard $(dd_c)),)
|
||||
@len=$$( (sed -n '/conversions\[\] =$$/,/^};/p' $(dd_c);\
|
||||
sed -n '/flags\[\] =$$/,/^};/p' $(dd_c) ) \
|
||||
|sed -n '/"/s/^[^"]*"\([^"]*\)".*/\1/p' \
|
||||
| wc --max-line-length); \
|
||||
| wc --max-line-length); \
|
||||
max=$$(sed -n '/^#define LONGEST_SYMBOL /s///p' $(dd_c) \
|
||||
|tr -d '"' | wc --max-line-length); \
|
||||
if test "$$len" = "$$max"; then :; else \
|
||||
echo 'dd.c: LONGEST_SYMBOL is not longest' 1>&2; \
|
||||
exit 1; \
|
||||
fi
|
||||
endif
|
||||
|
||||
# Many m4 macros names once began with `jm_'.
|
||||
# On 2004-04-13, they were all changed to start with gl_ instead.
|
||||
# Make sure that none are inadvertently reintroduced.
|
||||
sc_prohibit_jm_in_m4:
|
||||
@( $(CVS_LIST) ) > /dev/null 2>&1 || : && \
|
||||
grep -E 'jm_[A-Z]' \
|
||||
$$($(CVS_LIST) $(srcdir)/m4 |grep '\.m4$$') && \
|
||||
{ echo '$(ME): do not use jm_ in m4 macro names' \
|
||||
@grep -nE 'jm_[A-Z]' \
|
||||
$$($(CVS_LIST) m4 |grep '\.m4$$') && \
|
||||
{ echo '$(ME): do not use jm_ in m4 macro names' \
|
||||
1>&2; exit 1; } || :
|
||||
|
||||
sc_root_tests:
|
||||
@t1=sc-root.expected; t2=sc-root.actual; \
|
||||
grep -l '^PRIV_CHECK_ARG=require-root' \
|
||||
grep -nl '^PRIV_CHECK_ARG=require-root' \
|
||||
$$($(CVS_LIST) tests) |sed s,tests,., |sort > $$t1; \
|
||||
sed -n 's, cd \([^ ]*\) .*MAKE..check TESTS=\(.*\),./\1/\2,p' \
|
||||
$(srcdir)/tests/Makefile.am |sort > $$t2; \
|
||||
@@ -229,52 +227,72 @@ sc_root_tests:
|
||||
# the headers already included via system.h.
|
||||
sc_system_h_headers: .re-list
|
||||
@if test -f $(srcdir)/src/system.h; then \
|
||||
( $(CVS_LIST) ) > /dev/null 2>&1 || exit 0; \
|
||||
trap 'rc=$$?; rm -f .re-list; exit $$rc' 0 1 2 3 15; \
|
||||
grep -E -f .re-list \
|
||||
$$($(CVS_LIST) src | grep -Ev '(copy|system)\.h$$') \
|
||||
grep -nE -f .re-list \
|
||||
$$($(CVS_LIST) src | \
|
||||
grep -Ev '((copy|system)\.h|parse-gram\.c)$$') \
|
||||
&& { echo '$(ME): the above are already included via system.h'\
|
||||
1>&2; exit 1; } || :; \
|
||||
fi
|
||||
|
||||
sc_sun_os_names:
|
||||
@( $(CVS_LIST) ) > /dev/null 2>&1 || : && \
|
||||
grep -Ei \
|
||||
@grep -nEi \
|
||||
'solaris[^[:alnum:]]*2\.(7|8|9|[1-9][0-9])|sunos[^[:alnum:]][6-9]' \
|
||||
$$($(CVS_LIST) | grep -vEf .x-$@ ) && \
|
||||
$$($(CVS_LIST_EXCEPT)) && \
|
||||
{ echo '$(ME): found misuse of Sun OS version numbers' 1>&2; \
|
||||
exit 1; } || :
|
||||
|
||||
sc_the_the:
|
||||
@grep -ni '\<the ''the\>' $$($(CVS_LIST_EXCEPT)) && \
|
||||
{ echo '$(ME): found use of "the ''the";' 1>&2; \
|
||||
exit 1; } || :
|
||||
|
||||
sc_tight_scope:
|
||||
$(MAKE) -C src $@
|
||||
|
||||
sc_trailing_blank:
|
||||
@( $(CVS_LIST) ) > /dev/null 2>&1 || : && \
|
||||
grep '[ ]$$' \
|
||||
$$($(CVS_LIST) | grep -vEf .x-$@ ) && \
|
||||
@grep -n '[ ]$$' $$($(CVS_LIST_EXCEPT)) && \
|
||||
{ echo '$(ME): found trailing blank(s)' \
|
||||
1>&2; exit 1; } || :
|
||||
|
||||
# Match lines like the following, but where there is only one space
|
||||
# between the options and the description:
|
||||
# -D, --all-repeated[=delimit-method] print all duplicate lines\n
|
||||
longopt_re = --[a-z][0-9A-Za-z-]*(\[=[0-9A-Za-z-]*\])?
|
||||
sc_two_space_separator_in_usage:
|
||||
@grep -nE '^ *(-[A-Za-z],)? $(longopt_re) [^ ].*\\$$' \
|
||||
$$($(CVS_LIST_EXCEPT)) && \
|
||||
{ echo "$(ME): help2man requires at least two spaces between"; \
|
||||
echo "$(ME): an option and its description"; \
|
||||
1>&2; exit 1; } || :
|
||||
|
||||
# Look for diagnostics that aren't marked for translation.
|
||||
# This won't find any for which error's format string is on a separate line.
|
||||
sc_unmarked_diagnostics:
|
||||
@( $(CVS_LIST) ) > /dev/null 2>&1 || : && \
|
||||
grep -E \
|
||||
'\<error \([^"]*"[^"]*[a-z]{3}' \
|
||||
$$($(CVS_LIST) | grep -vEf .x-$@ ) \
|
||||
| grep -v '_(' && \
|
||||
@grep -nE \
|
||||
'\<error \([^"]*"[^"]*[a-z]{3}' $$($(CVS_LIST_EXCEPT)) \
|
||||
| grep -v '_''(' && \
|
||||
{ echo '$(ME): found unmarked diagnostic(s)' 1>&2; \
|
||||
exit 1; } || :
|
||||
|
||||
# Avoid useless parentheses like those in this example:
|
||||
# #if defined (SYMBOL) || defined (SYM2)
|
||||
sc_useless_cpp_parens:
|
||||
@( $(CVS_LIST) ) > /dev/null 2>&1 || : && \
|
||||
grep '^# *if .*defined *(' \
|
||||
$$($(CVS_LIST) | grep -vEf .x-$@ ) && \
|
||||
@grep -n '^# *if .*defined *(' $$($(CVS_LIST_EXCEPT)) && \
|
||||
{ echo '$(ME): found useless parentheses in cpp directive' \
|
||||
1>&2; exit 1; } || :
|
||||
|
||||
# Ensure that the c99-to-c89 patch applies cleanly.
|
||||
# For now, it affects only remove.c. Eventually, we'll probably
|
||||
# have to copy all of src/ before running patch.
|
||||
patch-check:
|
||||
cp src/remove.c tmp-remove.c
|
||||
patch -V never --fuzz=0 tmp-remove.c src/c99-to-c89.diff \
|
||||
> $@.1 2>&1
|
||||
sed -n '2p' $@.1 > $@.2
|
||||
test -s $@.2 && exit 1 || :
|
||||
rm -f tmp-remove.c $@.1 $@.2
|
||||
|
||||
# Ensure that date's --help output stays in sync with the info
|
||||
# documentation for GNU strftime. The only exception is %N,
|
||||
# which date accepts but GNU strftime does not.
|
||||
@@ -294,7 +312,7 @@ strftime-check:
|
||||
# not @...@ in Makefile.am, now that we can rely on automake
|
||||
# to emit a definition for each substituted variable.
|
||||
makefile-check:
|
||||
grep -E '@[A-Z_0-9]+@' `find . -name Makefile.am` \
|
||||
grep -nE '@[A-Z_0-9]+@' `find . -name Makefile.am` \
|
||||
&& { echo 'Makefile.maint: use $$(...), not @...@' 1>&2; exit 1; } || :
|
||||
|
||||
news-date-check: NEWS
|
||||
@@ -317,19 +335,21 @@ changelog-check:
|
||||
fi
|
||||
|
||||
m4-check:
|
||||
@grep 'AC_DEFUN([^[]' m4/*.m4 \
|
||||
@grep -n 'AC_DEFUN([^[]' m4/*.m4 \
|
||||
&& { echo 'Makefile.maint: quote the first arg to AC_DEFUN' 1>&2; \
|
||||
exit 1; } || :
|
||||
|
||||
# Verify that all source files using _() are listed in po/POTFILES.in.
|
||||
# FIXME: don't hard-code src/false.c below; use a more general mechanism.
|
||||
# FIXME: don't hard-code file names below; use a more general mechanism.
|
||||
po-check:
|
||||
( $(CVS_LIST) ) > /dev/null 2>&1 || : && \
|
||||
if test -f po/POTFILES.in; then \
|
||||
grep -E -v '^(#|$$)' po/POTFILES.in \
|
||||
| grep -v '^src/false\.c$$' | sort > $@-1; \
|
||||
files=; \
|
||||
for file in $$($(CVS_LIST) lib src | grep '\.[chly]$$'); do \
|
||||
for file in $$($(CVS_LIST_EXCEPT)) lib/*.[ch]; do \
|
||||
case $$file in \
|
||||
djgpp/* | man/*) continue;; \
|
||||
esac; \
|
||||
case $$file in \
|
||||
*.[ch]) \
|
||||
base=`expr " $$file" : ' \(.*\)\..'`; \
|
||||
@@ -337,7 +357,7 @@ po-check:
|
||||
esac; \
|
||||
files="$$files $$file"; \
|
||||
done; \
|
||||
grep -E -l '\bN?_\([^)"]*("|$$)' $$files | sort > $@-2; \
|
||||
grep -E -l '\bN?_\([^)"]*("|$$)' $$files | sort -u > $@-2; \
|
||||
diff -u $@-1 $@-2 || exit 1; \
|
||||
rm -f $@-1 $@-2; \
|
||||
fi
|
||||
@@ -346,7 +366,7 @@ po-check:
|
||||
# the English word `and', the string must be marked with `N_ (...)' so that
|
||||
# gettext recognizes it as a string requiring translation.
|
||||
author_mark_check:
|
||||
@grep '^# *define AUTHORS "[^"]* and ' src/*.c |grep -v ' N_ (' && \
|
||||
@grep -n '^# *define AUTHORS "[^"]* and ' src/*.c |grep -v ' N_ (' && \
|
||||
{ echo 'Makefile.maint: enclose the above strings in N_ (...)' 1>&2; \
|
||||
exit 1; } || :
|
||||
|
||||
@@ -358,7 +378,7 @@ author_mark_check:
|
||||
# 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` \
|
||||
@grep -n '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.
|
||||
@@ -379,7 +399,7 @@ v_etc_file = lib/version-etc.c
|
||||
# Make sure that the copyright date in $(v_etc_file) is up to date.
|
||||
copyright-check:
|
||||
@if test -f $(v_etc_file); then \
|
||||
grep 'enum { COPYRIGHT_YEAR = 2005 };' $(v_etc_file) \
|
||||
grep 'enum { COPYRIGHT_YEAR = '$$(date +%Y)' };' $(v_etc_file) \
|
||||
>/dev/null \
|
||||
|| { echo 'out of date copyright in $(v_etc_file); update it' 1>&2; \
|
||||
exit 1; }; \
|
||||
@@ -405,7 +425,7 @@ cvs-diff-check:
|
||||
|
||||
cvs-check: cvs-diff-check cvs-tag-check
|
||||
|
||||
maintainer-distcheck: changelog-check
|
||||
maintainer-distcheck:
|
||||
$(MAKE) distcheck
|
||||
$(MAKE) my-distcheck
|
||||
|
||||
@@ -430,7 +450,8 @@ null_AM_MAKEFLAGS = \
|
||||
# Detect format-string/arg-list mismatches that would normally be obscured
|
||||
# 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. Also, check for shadowing problems with -Wshadow.
|
||||
# treated as a failure. Also, check for shadowing problems with -Wshadow,
|
||||
# and for pointer arithmetic problems with -Wpointer-arith.
|
||||
# These CFLAGS are pretty strict. If you build this target, you probably
|
||||
# have to have a recent version of gcc and glibc headers.
|
||||
TMPDIR ?= /tmp
|
||||
@@ -441,7 +462,7 @@ my-distcheck: $(local-check) $(release_archive_dir)/$(prev-tgz)
|
||||
GZIP=$(GZIP_ENV) $(AMTAR) -C $(t) -zxf $(distdir).tar.gz
|
||||
cd $(t)/$(distdir) \
|
||||
&& ./configure --disable-nls \
|
||||
&& $(MAKE) CFLAGS='-Werror -Wall -Wformat -Wshadow' \
|
||||
&& $(MAKE) CFLAGS='-Werror -Wall -Wformat -Wshadow -Wpointer-arith' \
|
||||
AM_MAKEFLAGS='$(null_AM_MAKEFLAGS)' \
|
||||
&& $(MAKE) dvi \
|
||||
&& $(MAKE) check \
|
||||
@@ -457,16 +478,6 @@ my-distcheck: $(local-check) $(release_archive_dir)/$(prev-tgz)
|
||||
WGET = wget
|
||||
WGETFLAGS = -C off
|
||||
|
||||
tgz-md5 = $(shell md5sum < $(my_distdir).tar.gz|sed 's/ -//')
|
||||
tgz-sha1 = $(shell sha1sum < $(my_distdir).tar.gz|sed 's/ -//')
|
||||
bz2-md5 = $(shell md5sum < $(my_distdir).tar.bz2|sed 's/ -//')
|
||||
bz2-sha1 = $(shell sha1sum < $(my_distdir).tar.bz2|sed 's/ -//')
|
||||
xdelta-md5 = $(shell md5sum < $(xd-delta)|sed 's/ -//')
|
||||
xdelta-sha1 = $(shell sha1sum < $(xd-delta)|sed 's/ -//')
|
||||
tgz-size = $(shell du --human $(my_distdir).tar.gz|sed 's/\([MkK]\).*/ \1B/')
|
||||
bz2-size = $(shell du --human $(my_distdir).tar.bz2|sed 's/\([MkK]\).*/ \1B/')
|
||||
xd-size = $(shell du --human $(xd-delta)|sed 's/\([MkK]\).*/ \1B/')
|
||||
|
||||
rel-check:
|
||||
tarz=/tmp/rel-check-tarz-$$$$; \
|
||||
md5_tmp=/tmp/rel-check-md5-$$$$; \
|
||||
@@ -487,6 +498,7 @@ announcement: NEWS ChangeLog $(rel-files)
|
||||
--prev=$(PREV_VERSION) \
|
||||
--curr=$(VERSION) \
|
||||
--release-archive-directory=$(release_archive_dir) \
|
||||
--gpg-key-id=$(gpg_key_ID) \
|
||||
--news=NEWS \
|
||||
$(addprefix --url-dir=, $(url_dir_list)) \
|
||||
|
||||
@@ -507,31 +519,10 @@ move_if_change ?= move-if-change
|
||||
# --------------------- #
|
||||
|
||||
.PHONY: update
|
||||
local_updates ?= wget-update cvs-update po-update
|
||||
local_updates ?= wget-update cvs-update
|
||||
update: $(local_updates)
|
||||
|
||||
|
||||
# ------------------- #
|
||||
# Updating PO files. #
|
||||
# ------------------- #
|
||||
|
||||
po_repo = http://www.iro.umontreal.ca/contrib/po/maint/$(PACKAGE)
|
||||
.PHONY: do-po-update po-update
|
||||
do-po-update:
|
||||
tmppo=/tmp/$(PACKAGE)-$(VERSION)-po &&\
|
||||
rm -rf $$tmppo && \
|
||||
mkdir $$tmppo && \
|
||||
(cd $$tmppo && \
|
||||
$(WGET) $(WGETFLAGS) -r -l1 -nd --no-parent -A '*.po' $(po_repo)) &&\
|
||||
cp $$tmppo/*.po po
|
||||
cd po && $(MAKE) update-po
|
||||
$(MAKE) po-check
|
||||
|
||||
po-update:
|
||||
if test -d "po"; then \
|
||||
$(MAKE) do-po-update; \
|
||||
fi
|
||||
|
||||
# -------------------------- #
|
||||
# Updating GNU build tools. #
|
||||
# -------------------------- #
|
||||
@@ -604,7 +595,11 @@ $(xd-delta): $(release_archive_dir)/$(prev-tgz) $(distdir).tar.gz
|
||||
xdelta delta -9 $^ $@ || :
|
||||
|
||||
.PHONY: alpha beta major
|
||||
alpha beta major: news-date-check $(local-check)
|
||||
alpha beta major: news-date-check changelog-check $(local-check)
|
||||
test $@ = major \
|
||||
&& { echo $(VERSION) | grep -E '^[0-9]+(\.[0-9]+)+$$' \
|
||||
|| { echo "invalid version string: $(VERSION)" 1>&2; exit 1;};}\
|
||||
|| :
|
||||
$(MAKE) cvs-dist
|
||||
$(MAKE) $(xd-delta)
|
||||
$(MAKE) -s announcement RELEASE_TYPE=$@ > /tmp/announce-$(my_distdir)
|
||||
|
||||
293
NEWS
293
NEWS
@@ -1,5 +1,292 @@
|
||||
GNU coreutils NEWS -*- outline -*-
|
||||
|
||||
* Major changes in release 6.0 (2006-08-15) [unstable]
|
||||
|
||||
** Improved robustness
|
||||
|
||||
df: if the file system claims to have more available than total blocks,
|
||||
report the number of used blocks as being "total - available"
|
||||
(a negative number) rather than as garbage.
|
||||
|
||||
dircolors: a new autoconf run-test for AIX's buggy strndup function
|
||||
prevents malfunction on that system; may also affect cut, expand,
|
||||
and unexpand.
|
||||
|
||||
fts no longer changes the current working directory, so its clients
|
||||
(chmod, chown, chgrp, du) no longer malfunction under extreme conditions.
|
||||
|
||||
pwd and other programs using lib/getcwd.c work even on file systems
|
||||
where dirent.d_ino values are inconsistent with those from stat.st_ino.
|
||||
|
||||
rm's core is now reentrant: rm --recursive (-r) now processes
|
||||
hierarchies without changing the working directory at all.
|
||||
|
||||
** Changes in behavior
|
||||
|
||||
basename and dirname now treat // as different from / on platforms
|
||||
where the two are distinct.
|
||||
|
||||
chmod, install, and mkdir now preserve a directory's set-user-ID and
|
||||
set-group-ID bits unless you explicitly request otherwise. E.g.,
|
||||
`chmod 755 DIR' and `chmod u=rwx,go=rx DIR' now preserve DIR's
|
||||
set-user-ID and set-group-ID bits instead of clearing them, and
|
||||
similarly for `mkdir -m 755 DIR' and `mkdir -m u=rwx,go=rx DIR'. To
|
||||
clear the bits, mention them explicitly in a symbolic mode, e.g.,
|
||||
`mkdir -m u=rwx,go=rx,-s DIR'. To set them, mention them explicitly
|
||||
in either a symbolic or a numeric mode, e.g., `mkdir -m 2755 DIR',
|
||||
`mkdir -m u=rwx,go=rx,g+s' DIR. This change is for convenience on
|
||||
systems where these bits inherit from parents. Unfortunately other
|
||||
operating systems are not consistent here, and portable scripts
|
||||
cannot assume the bits are set, cleared, or preserved, even when the
|
||||
bits are explicitly mentioned. For example, OpenBSD 3.9 `mkdir -m
|
||||
777 D' preserves D's setgid bit but `chmod 777 D' clears it.
|
||||
Conversely, Solaris 10 `mkdir -m 777 D', `mkdir -m g-s D', and
|
||||
`chmod 0777 D' all preserve D's setgid bit, and you must use
|
||||
something like `chmod g-s D' to clear it.
|
||||
|
||||
`cp --link --no-dereference' now works also on systems where the
|
||||
link system call cannot create a hard link to a symbolic link.
|
||||
This change has no effect on systems with a Linux-based kernel.
|
||||
|
||||
csplit and nl now use POSIX syntax for regular expressions, not
|
||||
Emacs syntax. As a result, character classes like [[:print:]] and
|
||||
interval expressions like A\{1,9\} now have their usual meaning,
|
||||
. no longer matches the null character, and \ must precede the + and
|
||||
? operators.
|
||||
|
||||
date: a command like date -d '2006-04-23 21 days ago' would print
|
||||
the wrong date in some time zones. (see the test for an example)
|
||||
|
||||
df now considers "none" and "proc" file systems to be dummies and
|
||||
therefore does not normally display them. Also, inaccessible file
|
||||
systems (which can be caused by shadowed mount points or by chrooted
|
||||
bind mounts) are now dummies, too.
|
||||
|
||||
expr no longer complains about leading ^ in a regular expression
|
||||
(the anchor is ignored), or about regular expressions like A** (the
|
||||
second "*" is ignored). expr now exits with status 2 (not 3) for
|
||||
errors it detects in the expression's values; exit status 3 is now
|
||||
used only for internal errors (such as integer overflow, which expr
|
||||
now checks for).
|
||||
|
||||
install and mkdir now implement the X permission symbol correctly,
|
||||
e.g., `mkdir -m a+X dir'; previously the X was ignored.
|
||||
|
||||
install now creates parent directories with mode u=rwx,go=rx (755)
|
||||
instead of using the mode specified by the -m option; and it does
|
||||
not change the owner or group of parent directories. This is for
|
||||
compatibility with BSD and closes some race conditions.
|
||||
|
||||
ln now uses different (and we hope clearer) diagnostics when it fails.
|
||||
ln -v now acts more like FreeBSD, so it generates output only when
|
||||
successful and the output is easier to parse.
|
||||
|
||||
ls now defaults to --time-style='locale', not --time-style='posix-long-iso'.
|
||||
However, the 'locale' time style now behaves like 'posix-long-iso'
|
||||
if your locale settings appear to be messed up. This change
|
||||
attempts to have the default be the best of both worlds.
|
||||
|
||||
mkfifo and mknod no longer set special mode bits (setuid, setgid,
|
||||
and sticky) with the -m option.
|
||||
|
||||
nohup's usual diagnostic now more precisely specifies the I/O
|
||||
redirections, e.g., "ignoring input and appending output to
|
||||
nohup.out". Also, nohup now redirects stderr to nohup.out (or
|
||||
$HOME/nohup.out) if stdout is closed and stderr is a tty; this is in
|
||||
response to Open Group XCU ERN 71.
|
||||
|
||||
rm --interactive now takes an optional argument, although the
|
||||
default of using no argument still acts like -i.
|
||||
|
||||
rm no longer fails to remove an empty, unreadable directory
|
||||
|
||||
seq changes:
|
||||
|
||||
seq defaults to a minimal fixed point format that does not lose
|
||||
information if seq's operands are all fixed point decimal numbers.
|
||||
You no longer need the `-f%.f' in `seq -f%.f 1048575 1024 1050623',
|
||||
for example, since the default format now has the same effect.
|
||||
|
||||
seq now lets you use %a, %A, %E, %F, and %G formats.
|
||||
|
||||
seq now uses long double internally rather than double.
|
||||
|
||||
sort now reports incompatible options (e.g., -i and -n) rather than
|
||||
silently ignoring one of them.
|
||||
|
||||
stat's --format=FMT option now works the way it did before 5.3.0:
|
||||
FMT is automatically newline terminated. The first stable release
|
||||
containing this change was 5.92.
|
||||
|
||||
stat accepts the new option --printf=FMT, where FMT is *not*
|
||||
automatically newline terminated.
|
||||
|
||||
stat: backslash escapes are interpreted in a format string specified
|
||||
via --printf=FMT, but not one specified via --format=FMT. That includes
|
||||
octal (\ooo, at most three octal digits), hexadecimal (\xhh, one or
|
||||
two hex digits), and the standard sequences (\a, \b, \f, \n, \r, \t,
|
||||
\v, \", \\).
|
||||
|
||||
With no operand, 'tail -f' now silently ignores the '-f' only if
|
||||
standard input is a FIFO or pipe and POSIXLY_CORRECT is set.
|
||||
Formerly, it ignored the '-f' when standard input was a FIFO, pipe,
|
||||
or socket.
|
||||
|
||||
** Scheduled for removal
|
||||
|
||||
ptx's --copyright (-C) option is scheduled for removal in 2007, and
|
||||
now evokes a warning. Use --version instead.
|
||||
|
||||
rm's --directory (-d) option is scheduled for removal in 2006. This
|
||||
option has been silently ignored since coreutils 5.0. On systems
|
||||
that support unlinking of directories, you can use the "unlink"
|
||||
command to unlink a directory.
|
||||
|
||||
Similarly, we are considering the removal of ln's --directory (-d,
|
||||
-F) option in 2006. Please write to <bug-coreutils@gnu.org> if this
|
||||
would cause a problem for you. On systems that support hard links
|
||||
to directories, you can use the "link" command to create one.
|
||||
|
||||
** New programs
|
||||
|
||||
base64: base64 encoding and decoding (RFC 3548) functionality.
|
||||
sha224sum: print or check a SHA224 (224-bit) checksum
|
||||
sha256sum: print or check a SHA256 (256-bit) checksum
|
||||
sha384sum: print or check a SHA384 (384-bit) checksum
|
||||
sha512sum: print or check a SHA512 (512-bit) checksum
|
||||
shuf: Shuffle lines of text.
|
||||
|
||||
** New features
|
||||
|
||||
chgrp now supports --preserve-root, --no-preserve-root (default),
|
||||
as it was documented to do, and just as chmod, chown, and rm do.
|
||||
|
||||
New dd iflag= and oflag= flags:
|
||||
|
||||
'directory' causes dd to fail unless the file is a directory, on
|
||||
hosts that support this (e.g., Linux kernels, version 2.1.126 and
|
||||
later). This has limited utility but is present for completeness.
|
||||
|
||||
'noatime' causes dd to read a file without updating its access
|
||||
time, on hosts that support this (e.g., Linux kernels, version
|
||||
2.6.8 and later).
|
||||
|
||||
'nolinks' causes dd to fail if the file has multiple hard links,
|
||||
on hosts that support this (e.g., Solaris 10 and later).
|
||||
|
||||
ls accepts the new option --group-directories-first, to make it
|
||||
list directories before files.
|
||||
|
||||
rm now accepts the -I (--interactive=once) option. This new option
|
||||
prompts once if rm is invoked recursively or if more than three
|
||||
files are being deleted, which is less intrusive than -i prompting
|
||||
for every file, but provides almost the same level of protection
|
||||
against mistakes.
|
||||
|
||||
shred and sort now accept the --random-source option.
|
||||
|
||||
sort now accepts the --random-sort (-R) option and `R' ordering option.
|
||||
|
||||
sort now supports obsolete usages like "sort +1 -2" unless
|
||||
POSIXLY_CORRECT is set. However, when conforming to POSIX
|
||||
1003.1-2001 "sort +1" still sorts the file named "+1".
|
||||
|
||||
wc accepts a new option --files0-from=FILE, where FILE contains a
|
||||
list of NUL-terminated file names.
|
||||
|
||||
** Bug fixes
|
||||
|
||||
cat with any of the options, -A -v -e -E -T, when applied to a
|
||||
file in /proc or /sys (linux-specific), would truncate its output,
|
||||
usually printing nothing.
|
||||
|
||||
cp -p would fail in a /proc-less chroot, on some systems
|
||||
|
||||
When `cp -RL' encounters the same directory more than once in the
|
||||
hierarchy beneath a single command-line argument, it no longer confuses
|
||||
them with hard-linked directories.
|
||||
|
||||
fts-using tools (chmod, chown, chgrp, du) no longer fail due to
|
||||
a double-free bug -- it could be triggered by making a directory
|
||||
inaccessible while e.g., du is traversing the hierarchy under it.
|
||||
|
||||
fts-using tools (chmod, chown, chgrp, du) no longer misinterpret
|
||||
a very long symlink chain as a dangling symlink. Before, such a
|
||||
misinterpretation would cause these tools not to diagnose an ELOOP error.
|
||||
|
||||
ls --indicator-style=file-type would sometimes stat a symlink
|
||||
unnecessarily.
|
||||
|
||||
ls --file-type worked like --indicator-style=slash (-p),
|
||||
rather than like --indicator-style=file-type.
|
||||
|
||||
mv: moving a symlink into the place of an existing non-directory is
|
||||
now done atomically; before, mv would first unlink the destination.
|
||||
|
||||
mv -T DIR EMPTY_DIR no longer fails unconditionally. Also, mv can
|
||||
now remove an empty destination directory: mkdir -p a b/a; mv a b
|
||||
|
||||
rm (on systems with openat) can no longer exit before processing
|
||||
all command-line arguments.
|
||||
|
||||
rm is no longer susceptible to a few low-probability memory leaks.
|
||||
|
||||
rm -r no longer fails to remove an inaccessible and empty directory
|
||||
|
||||
rm -r's cycle detection code can no longer be tricked into reporting
|
||||
a false positive (introduced in fileutils-4.1.9).
|
||||
|
||||
shred --remove FILE no longer segfaults on Gentoo systems
|
||||
|
||||
sort would fail for large inputs (~50MB) on systems with a buggy
|
||||
mkstemp function. sort and tac now use the replacement mkstemp
|
||||
function, and hence are no longer subject to limitations (of 26 or 32,
|
||||
on the maximum number of files from a given template) on HP-UX 10.20,
|
||||
SunOS 4.1.4, Solaris 2.5.1 and OSF1/Tru64 V4.0F&V5.1.
|
||||
|
||||
tail -f once again works on a file with the append-only
|
||||
attribute (affects at least Linux ext2, ext3, xfs file systems)
|
||||
|
||||
* Major changes in release 5.97 (2006-06-24) [stable]
|
||||
* Major changes in release 5.96 (2006-05-22) [stable]
|
||||
* Major changes in release 5.95 (2006-05-12) [stable]
|
||||
* Major changes in release 5.94 (2006-02-13) [stable]
|
||||
|
||||
[see the b5_9x branch for details]
|
||||
|
||||
* Major changes in release 5.93 (2005-11-06) [stable]
|
||||
|
||||
** Bug fixes
|
||||
|
||||
dircolors no longer segfaults upon an attempt to use the new
|
||||
STICKY_OTHER_WRITABLE (OWT) attribute.
|
||||
|
||||
du no longer overflows a counter when processing a file larger than
|
||||
2^31-1 on some 32-bit systems (at least some AIX 5.1 configurations).
|
||||
|
||||
md5sum once again defaults to using the ` ' non-binary marker
|
||||
(rather than the `*' binary marker) by default on Unix-like systems.
|
||||
|
||||
mkdir -p and install -d no longer exit nonzero when asked to create
|
||||
a directory like `nonexistent/.'
|
||||
|
||||
rm emits a better diagnostic when (without -r) it fails to remove
|
||||
a directory on e.g., Solaris 9/10 systems.
|
||||
|
||||
tac now works when stdin is a tty, even on non-Linux systems.
|
||||
|
||||
"tail -c 2 FILE" and "touch 0101000000" now operate as POSIX
|
||||
1003.1-2001 requires, even when coreutils is conforming to older
|
||||
POSIX standards, as the newly-required behavior is upward-compatible
|
||||
with the old.
|
||||
|
||||
The documentation no longer mentions rm's --directory (-d) option.
|
||||
|
||||
** Build-related bug fixes
|
||||
|
||||
installing .mo files would fail
|
||||
|
||||
|
||||
* Major changes in release 5.92 (2005-10-22) [stable]
|
||||
|
||||
** Bug fixes
|
||||
@@ -8,6 +295,7 @@ GNU coreutils NEWS -*- outline -*-
|
||||
|
||||
dircolors now properly quotes single-quote characters
|
||||
|
||||
|
||||
* Major changes in release 5.91 (2005-10-17) [stable candidate]
|
||||
|
||||
** Bug fixes
|
||||
@@ -373,6 +661,8 @@ GNU coreutils NEWS -*- outline -*-
|
||||
mv (when moving between partitions) no longer fails when
|
||||
operating on too many command-line-specified nonempty directories.
|
||||
|
||||
"readlink -f" is more compatible with prior implementations
|
||||
|
||||
rm (without -f) no longer hangs when attempting to remove a symlink
|
||||
to a file on an off-line NFS-mounted partition.
|
||||
|
||||
@@ -556,6 +846,9 @@ GNU coreutils NEWS -*- outline -*-
|
||||
rather than two-byte int. This makes a difference only on hosts like
|
||||
Cray systems where the C short int type requires more than two bytes.
|
||||
|
||||
readlink accepts new options: --canonicalize-existing (-e)
|
||||
and --canonicalize-missing (-m).
|
||||
|
||||
The stat option --filesystem has been renamed to --file-system, for
|
||||
consistency with POSIX "file system" and with cp and du --one-file-system.
|
||||
|
||||
|
||||
15
README
15
README
@@ -7,13 +7,14 @@ arbitrary limits.
|
||||
|
||||
The programs that can be built with this package are:
|
||||
|
||||
[ basename cat chgrp chmod chown chroot cksum comm cp csplit cut date dd
|
||||
df dir dircolors dirname du echo env expand expr factor false fmt fold
|
||||
[ base64 basename cat chgrp chmod chown chroot cksum comm cp csplit cut date
|
||||
dd 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 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
|
||||
printenv printf ptx pwd readlink rm rmdir seq sha1sum sha224sum sha256sum
|
||||
sha384sum sha512sum shred shuf 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.
|
||||
|
||||
@@ -109,7 +110,7 @@ Reporting bugs:
|
||||
|
||||
IMPORTANT: if you take the time to report a test failure,
|
||||
please be sure to include the output of running `make check'
|
||||
in verbose mode for each each failing test. For example,
|
||||
in verbose mode for each failing test. For example,
|
||||
if the test that fails is tests/mv/hard-link-1, then you
|
||||
would run this command:
|
||||
|
||||
@@ -124,7 +125,7 @@ and then include the contents of the file `log' in your bug report.
|
||||
|
||||
***************************************
|
||||
|
||||
There are pretty many tests, but nowhere near as many as we need.
|
||||
There are many tests, but nowhere near as many as we need.
|
||||
Additions and corrections are very welcome.
|
||||
|
||||
If you see a problem that you've already reported, feel free to re-report
|
||||
|
||||
@@ -16,13 +16,13 @@ coreutils=$(echo 'spy:;@echo $(all_programs)' | (cd src; make -f Makefile -f - s
|
||||
mkdir -p src/vg
|
||||
pwd=`pwd`
|
||||
srcdir=$pwd/src
|
||||
path='export PATH='$srcdir':${PATH#*:}'
|
||||
pre='#!/bin/sh\n'"$path"'\n'
|
||||
_path='export PATH='$srcdir':${PATH#*:}'
|
||||
pre='#!/bin/sh\n'"$_path"'\n'
|
||||
n=15
|
||||
vg='exec /usr/bin/valgrind --suppressions=/tmp/cu-vg --log-fd=3 --leak-check=yes --track-fds=yes --quiet --num-callers='$n
|
||||
vg='exec /usr/bin/valgrind --suppressions=/tmp/cu-vg --log-fd=3 --leak-check=yes --track-fds=yes --leak-check=full --num-callers='$n
|
||||
cat <<EOF > src/vg/gen
|
||||
for i in $coreutils; do
|
||||
printf "$pre$vg \$i"' "\$@"\n' > \$i
|
||||
printf "$pre$vg -- \$i"' "\$@"\n' > \$i
|
||||
chmod a+x \$i
|
||||
done
|
||||
EOF
|
||||
|
||||
28
THANKS
28
THANKS
@@ -8,6 +8,7 @@ the bug-report mailing list (as seen on last line of e.g., cp --help).
|
||||
|
||||
??? kytek@cybercomm.net
|
||||
A Costa agcosta@gis.net
|
||||
Aaron Hawley ashawley@uvm.edu
|
||||
Achim Blumensath blume@corona.oche.de
|
||||
Adam Klein aklein@debian.org
|
||||
Adrian Bunk bunk@stusta.de
|
||||
@@ -50,6 +51,7 @@ Arthur Pool pool@commerce.uq.edu.au
|
||||
Arun Sharma arun.sharma@intel.com
|
||||
Arvind Autar Autar022@planet.nl
|
||||
Augey Mikus mikus@dqc.org
|
||||
Aurelien Jarno aurel32@debian.org
|
||||
Austin Donnelly Austin.Donnelly@cl.cam.ac.uk
|
||||
Axel Kittenberger Anshil@gmx.net
|
||||
Bauke Jan Douma bjdouma@xs4all.nl
|
||||
@@ -92,6 +94,7 @@ Christian Harkort christian.harkort@web.de
|
||||
Christian Krackowizer ckrackowiz@std.schuler-ag.com
|
||||
Christian Rose menthos@menthos.com
|
||||
Christian von Roques roques@pond.sub.org
|
||||
Christophe LYON christophe.lyon@st.com
|
||||
Chuck Hedrick hedrick@klinzhai.rutgers.edu
|
||||
Clark Morgan cmorgan@aracnet.com
|
||||
Clement Wang clem.wang@overture.com
|
||||
@@ -115,7 +118,9 @@ David Eisner cradle@umd.edu
|
||||
David Flynn dav@chess.plus.com
|
||||
David Godfrey dave@delta.demon.co.uk
|
||||
David Luyer david_luyer@pacific.net.au
|
||||
David Madore david.madore@ens.fr
|
||||
David Malone dwmalone@cnri.dit.ie
|
||||
Dean Gaudet dean-savannah@arctic.org
|
||||
Deepak Goel deego@gnufans.org
|
||||
Dennis Henriksen opus@flamingo.osrl.dk
|
||||
Dennis Smit ds@nerds-incorporated.org
|
||||
@@ -146,9 +151,12 @@ Eric S. Raymond esr@snark.thyrsus.com
|
||||
Erik Bennett bennett@cvo.oneworld.com
|
||||
Erik Corry erik@kroete2.freinet.de
|
||||
Felix Lee flee@teleport.com
|
||||
Felix Rauch Valenti frauch@cse.unsw.edu.au
|
||||
Ferdinand fw@scenic.mine.nu
|
||||
Fletcher Mattox fletcher@cs.utexas.edu
|
||||
Florent Bayle florent@sarcelle.net
|
||||
Florin Iucha fiucha@hsys.mic.ro
|
||||
Francesco Montorsi fr_m@hotmail.com
|
||||
François Pinard pinard@iro.umontreal.ca
|
||||
Frank Adler fadler@allesklar.de
|
||||
Frank T Lofaro ftlofaro@snooks.Egr.UNLV.EDU
|
||||
@@ -222,6 +230,7 @@ Jim Dennis jimd@starshine.org
|
||||
Joakim Rosqvist dvljrt@cs.umu.se
|
||||
Jochen Hein jochen@jochen.org
|
||||
Joe Orton joe@manyfish.co.uk
|
||||
Joerg Sonnenberger joerg@britannica.bec.de
|
||||
Johan Boule bohan@bohan.dyndns.org
|
||||
Johan Danielsson joda@pdc.kth.se
|
||||
John Bley jbb6@acpub.duke.edu
|
||||
@@ -238,6 +247,7 @@ Jon Peatfield J.S.Peatfield@damtp.cam.ac.uk
|
||||
Joost van Baal joostvb@xs4all.nl
|
||||
Jorge Stolfi stolfi@ic.unicamp.br
|
||||
Joseph S. Myers jsm28@cam.ac.uk
|
||||
Joshua Hudson joshudson@gmail.com
|
||||
Juan F. Codagnone juam@arnet.com.ar
|
||||
Juan M. Guerrero st001906@hrz1.hrz.tu-darmstadt.de
|
||||
Jungshik Shin jshin@pantheon.yale.edu
|
||||
@@ -354,6 +364,8 @@ Neil Brown neilb@cse.unsw.edu.au
|
||||
Nelson H. F. Beebe beebe@math.utah.edu
|
||||
Nick Estes debian@nickstoys.com
|
||||
Nick Lawes nlawes@silverplatter.com
|
||||
Nickolai Zeldovich nickolai@cs.stanford.edu
|
||||
Nicolas François nicolas.francois@centraliens.net
|
||||
Niklas Edmundsson nikke@acc.umu.se
|
||||
Nikola Milutinovic Nikola.Milutinovic@ev.co.yu
|
||||
Noah Friedman friedman@splode.com
|
||||
@@ -371,13 +383,16 @@ Paul Jarc prj@po.cwru.edu
|
||||
Paul Nevai nevai@ops.mps.ohio-state.edu
|
||||
Paul Sauer paul@alexa.com
|
||||
Paul Slootman paul@debian.org
|
||||
Paul Townsend aab@purdue.edu
|
||||
Paul Worrall paul@basilisk.uklinux.net
|
||||
Pawel Prokop pablo@wizard.ae.krakow.pl
|
||||
Per Cederqvist ceder@lysator.liu.se
|
||||
Per Kristian Hove perhov@math.ntnu.no
|
||||
Peter Eriksson peter@ifm.liu.se
|
||||
Peter Fales psfales@lucent.com
|
||||
Peter Horst peter@ointment.org
|
||||
Peter Moulder reiter@netspace.net.au
|
||||
Peter O'Gorman bug-coreutils@mlists.thewrittenword.com
|
||||
Peter Samuelson psamuels@sampo.creighton.edu
|
||||
Peter Seebach seebs@taniemarie.solon.com
|
||||
Petter Reinholdtsen pere@hungry.com
|
||||
@@ -391,6 +406,7 @@ Piotr Kwapulinski kwap@univ.gda.pl
|
||||
Prashant TR tr@eth.net
|
||||
Rainer Orth ro@TechFak.Uni-Bielefeld.DE
|
||||
Ralf W. Stephan stephan@tmt.de
|
||||
Ralf Wildenhues Ralf.Wildenhues@gmx.de
|
||||
Ralph Loader loader@maths.ox.ac.uk
|
||||
Raul Miller moth@magenta.com
|
||||
Raúl Núñez de Arenas Coronado raul@pleyades.net
|
||||
@@ -426,6 +442,7 @@ Shing-Shong Shei shei@cs.indiana.edu
|
||||
Soeren Sonnenburg sonnenburg@informatik.hu-berlin.de
|
||||
Solar Designer solar@owl.openwall.com
|
||||
Stanislav Ievlev inger@altlinux.ru
|
||||
Stavros Passas stabat@ics.forth.gr
|
||||
Stéphane Chazelas Stephane_CHAZELAS@yahoo.fr
|
||||
Stephen Depooter sbdep@myrealbox.com
|
||||
Stephen Eglen eglen@pcg.wustl.edu
|
||||
@@ -436,12 +453,15 @@ Steven G. Johnson stevenj@alum.mit.edu
|
||||
Steven Mocking ufo@quicknet.nl
|
||||
Steven P Watson steven@magelico.net
|
||||
Stuart Kemp skemp@peter.bmc.com
|
||||
Sven Joachim sven_joachim@web.de
|
||||
Szakacsits Szabolcs szaka@sienet.hu
|
||||
Tadayoshi Funaba tadf@kt.rim.or.jp
|
||||
TAKAI Kousuke takai@vlsi.kuee.kyoto-u.ac.jp
|
||||
Theodore Ts'o tytso@rsts-11.mit.edu
|
||||
The Wanderer inverseparadox@comcast.net
|
||||
Thomas Bushnell thomas@gnu.ai.mit.edu
|
||||
Thomas Goerlich thomas@schnappmatik.de
|
||||
Thomas Hood jdthood@yahoo.co.uk
|
||||
Thomas Luzat thomas@luzat.com
|
||||
Thomas M.Ott thmo-13@gmx.de
|
||||
Thomas Quinot thomas@Cuivre.FR.EU.ORG
|
||||
@@ -454,12 +474,14 @@ Toby Peterson toby@opendarwin.org
|
||||
Todd A. Jacobs tjacobs@codegnome.org
|
||||
Tom Haynes thomas@netapp.com
|
||||
Tom Quinn trq@dionysos.thphys.ox.ac.uk
|
||||
Tomas Pospisek tpo@sourcepole.ch
|
||||
Tommi Kyntola tkyntola@cc.hut.fi
|
||||
Ton Hospel thospel@mail.dma.be
|
||||
Ton Nijkes ton@murphy.nl
|
||||
Tony Kocurko akocurko@mun.ca
|
||||
Tony Leneis tony@plaza.ds.adp.com
|
||||
Tony Robinson ajr@eng.cam.ac.uk
|
||||
Toralf Förster toralf.foerster@gmx.de
|
||||
Torbjorn Granlund tege@nada.kth.se
|
||||
Torbjorn Lindgren tl@funcom.no
|
||||
Torsten Landschoff torsten@pclab.ifg.uni-kiel.de
|
||||
@@ -470,6 +492,8 @@ Urs Thuermann urs@isnogud.escape.de
|
||||
Uwe H. Steinfeld usteinfeld@gmx.net
|
||||
Vesselin Atanasov vesselin@bgnet.bg
|
||||
Vin Shelton acs@alumni.princeton.edu
|
||||
Vineet Chadha chadha@acis.ufl.edu
|
||||
Vitaly A. Ostanin vyt@altlinux.org
|
||||
Vlada Macek tuttle@bbs.fsik.cvut.cz
|
||||
Volker Borchert bt@teknon.de
|
||||
Volker Paul vpaul@dohle.com
|
||||
@@ -488,3 +512,7 @@ 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
|
||||
|
||||
;; Local Variables:
|
||||
;; coding: utf-8
|
||||
;; End:
|
||||
|
||||
70
TODO
70
TODO
@@ -1,6 +1,4 @@
|
||||
restore djgpp, eventually
|
||||
merge TODO lists
|
||||
add unit tests for lib/*.c
|
||||
convert to use gnulib-tool
|
||||
|
||||
strip: add an option to specify the program used to strip binaries.
|
||||
suggestion from Karl Berry
|
||||
@@ -9,8 +7,6 @@ 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
|
||||
@@ -47,12 +43,8 @@ seq: give better diagnostics for invalid formats:
|
||||
e.g. no or too many % directives
|
||||
seq: consider allowing format string to contain no %-directives
|
||||
|
||||
m4: rename all macros that start with AC_ to start with another prefix
|
||||
|
||||
resolve RH report on cp -a forwarded by Tim Waugh
|
||||
|
||||
Martin Michlmayr's patch to provide ls with `--sort directory' option
|
||||
|
||||
tail: don't use xlseek; it *exits*.
|
||||
Instead, maybe use a macro and return nonzero.
|
||||
|
||||
@@ -73,16 +65,6 @@ sort: Compress temporary files when doing large external sort/merges.
|
||||
you can read/write, which is common in these days of fast CPUs.
|
||||
suggestion from Charles Randall on 2001-08-10
|
||||
|
||||
sort: Add an ordering option -R that causes 'sort' to sort according
|
||||
to a random permutation of the correct sort order. Also, add an
|
||||
option --random-seed=SEED that causes 'sort' to use an arbitrary
|
||||
string SEED to select which permutations to use, in a deterministic
|
||||
manner: that is, if you sort a permutation of the same input file
|
||||
with the same --random-seed=SEED option twice, you'll get the same
|
||||
output. The default SEED is chosen at random, and contains enough
|
||||
information to ensure that the output permutation is random.
|
||||
suggestion from Feth AREZKI, Stephan Kasal, and Paul Eggert on 2003-07-17
|
||||
|
||||
unexpand: [http://www.opengroup.org/onlinepubs/007908799/xcu/unexpand.html]
|
||||
printf 'x\t \t y\n'|unexpand -t 8,9 should print its input, unmodified.
|
||||
printf 'x\t \t y\n'|unexpand -t 5,8 should print "x\ty\n"
|
||||
@@ -112,8 +94,6 @@ cp --recursive: perform dir traversals in source and dest hierarchy rather
|
||||
than forming full file names. The latter (current) approach fails
|
||||
unnecessarily when the names become very long.
|
||||
|
||||
tail --p is now ambiguous
|
||||
|
||||
Remove suspicious uses of alloca (ones that may allocate more than
|
||||
about 4k)
|
||||
|
||||
@@ -121,15 +101,12 @@ Adapt these contribution guidelines for coreutils:
|
||||
http://sources.redhat.com/automake/contribute.html
|
||||
|
||||
|
||||
Changes expected to go in, post-5.2.1:
|
||||
Changes expected to go in, someday.
|
||||
======================================
|
||||
|
||||
wc: add an option, --files0-from [as for du] to make it read NUL-delimited
|
||||
file name arguments from a file.
|
||||
|
||||
dd patch from Olivier Delhomme
|
||||
|
||||
Apply Andreas Gruenbacher's ACL and xattr changes
|
||||
Andreas Gruenbacher's xattr changes
|
||||
|
||||
Apply Bruno Haible's hostname changes
|
||||
|
||||
@@ -158,35 +135,12 @@ Changes expected to go in, post-5.2.1:
|
||||
pb (progress bar) from Miika Pekkarinen
|
||||
|
||||
------------------------------
|
||||
Look into improving the performance of md5sum.
|
||||
`openssl md5' is consistently about 30% faster than md5sum on an idle
|
||||
AMD 2000-XP system with plenty of RAM and a 261 MB input file.
|
||||
openssl's md5 implementation is in assembly, generated by a perl script.
|
||||
|
||||
On an AMD-64 system, using a 700MB file on a tmpfs file system
|
||||
(and enough RAM so that no actual disk reads were performed),
|
||||
GNU md5sum is slightly faster than `openssl md5', e.g.:
|
||||
|
||||
2.38s user 0.38s system 100% cpu 2.756 total (gnu md5sum)
|
||||
vs.
|
||||
2.52s user 0.34s system 100% cpu 2.869 total
|
||||
|
||||
However, `openssl sha1' is about 5% faster than GNU sha1sum:
|
||||
|
||||
3.32s user 0.33s system 99% cpu 3.653 total (openssl sha1)
|
||||
3.45s user 0.39s system 99% cpu 3.843 total (gnu sha1sum)
|
||||
|
||||
The above are using the debian-sid (amd_64 alioth) binaries from
|
||||
coreutils-5.2.1. When I compile the latest (coreutils-cvs) with
|
||||
gcc-4.0 -O3, I get slightly (2-3%) better sha1sum performance,
|
||||
and a ~7% *decrease* in performance for md5sum. I suspect that
|
||||
with the right compiler options you can do much better.
|
||||
------------------------------
|
||||
|
||||
Have euidaccess.m4 check for eaccess as well as euidaccess
|
||||
If found, then do `#define euidaccess eaccess'.
|
||||
|
||||
Remove long-deprecated options like tail's --allow-missing
|
||||
Remove long-deprecated options. Search case-insensitive for
|
||||
`deprecated' and `remove in '. Automate this.
|
||||
|
||||
Add a distcheck-time test to ensure that every distributed
|
||||
file is either read-only(indicating generated) or is
|
||||
@@ -199,13 +153,13 @@ Implement Ulrich Drepper's suggestion to use getgrouplist rather
|
||||
But first we'll need a run-test (either in an autoconf macro or at
|
||||
run time) to avoid the segfault bug in libc-2.3.2's getgrouplist.
|
||||
In that case, we'd revert to using a new (to-be-written) getgrouplist
|
||||
module that does most of what `id' already does.
|
||||
module that does most of what `id' already does. Or just avoid the
|
||||
buggy use of getgrouplist by never passing it a buffer of length zero.
|
||||
See https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=200327
|
||||
|
||||
remove `%s' notation:
|
||||
grep -E "\`%.{,4}s'" src/*.c
|
||||
|
||||
remove.c should never exit, yet may do so (see uses of EXIT_FAILURE)
|
||||
|
||||
remove or adjust chown's --changes option, since it
|
||||
can't always do what it currently says it does.
|
||||
|
||||
@@ -216,8 +170,6 @@ Adapt tools like wc, tr, fmt, etc. (most of the textutils) to be
|
||||
|
||||
Remove all uses of the `register' keyword
|
||||
|
||||
rm: add support for a -I option, like that from FreeBSD's rm:
|
||||
-I Request confirmation once if more than three files are being
|
||||
removed or if a directory is being recursively removed. This
|
||||
is a far less intrusive option than -i yet provides almost
|
||||
the same level of protection against mistakes.
|
||||
pr's use of nstrftime can make it malloc a very large (up to SIZE_MAX) buffer
|
||||
|
||||
ls.c: use gettime rather than clock_gettime, gettimeofday, time
|
||||
|
||||
59
aclocal.m4
vendored
59
aclocal.m4
vendored
@@ -541,6 +541,34 @@ AC_MSG_RESULT([$_am_result])
|
||||
rm -f confinc confmf
|
||||
])
|
||||
|
||||
# Copyright (C) 1999, 2000, 2001, 2003, 2005 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 3
|
||||
|
||||
# AM_PROG_CC_C_O
|
||||
# --------------
|
||||
# Like AC_PROG_CC_C_O, but changed for automake.
|
||||
AC_DEFUN([AM_PROG_CC_C_O],
|
||||
[AC_REQUIRE([AC_PROG_CC_C_O])dnl
|
||||
AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
|
||||
# FIXME: we rely on the cache variable name because
|
||||
# there is no other way.
|
||||
set dummy $CC
|
||||
ac_cc=`echo $[2] | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']`
|
||||
if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" != yes"; then
|
||||
# Losing compiler, so override with the script.
|
||||
# FIXME: It is wrong to rewrite CC.
|
||||
# But if we don't then we get into trouble of one sort or another.
|
||||
# A longer-term fix would be to have automake use am__CC in this case,
|
||||
# and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
|
||||
CC="$am_aux_dir/compile $CC"
|
||||
fi
|
||||
])
|
||||
|
||||
# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2005
|
||||
@@ -873,11 +901,12 @@ AC_SUBST([am__tar])
|
||||
AC_SUBST([am__untar])
|
||||
]) # _AM_PROG_TAR
|
||||
|
||||
m4_include([m4/absolute-header.m4])
|
||||
m4_include([m4/acl.m4])
|
||||
m4_include([m4/afs.m4])
|
||||
m4_include([m4/alloca.m4])
|
||||
m4_include([m4/allocsa.m4])
|
||||
m4_include([m4/argmatch.m4])
|
||||
m4_include([m4/arpa_inet_h.m4])
|
||||
m4_include([m4/assert.m4])
|
||||
m4_include([m4/atexit.m4])
|
||||
m4_include([m4/autobuild.m4])
|
||||
@@ -890,23 +919,28 @@ m4_include([m4/calloc.m4])
|
||||
m4_include([m4/canon-host.m4])
|
||||
m4_include([m4/canonicalize.m4])
|
||||
m4_include([m4/chdir-long.m4])
|
||||
m4_include([m4/chdir-safer.m4])
|
||||
m4_include([m4/check-decl.m4])
|
||||
m4_include([m4/chown.m4])
|
||||
m4_include([m4/clock_time.m4])
|
||||
m4_include([m4/cloexec.m4])
|
||||
m4_include([m4/close-stream.m4])
|
||||
m4_include([m4/closeout.m4])
|
||||
m4_include([m4/codeset.m4])
|
||||
m4_include([m4/cycle-check.m4])
|
||||
m4_include([m4/d-ino.m4])
|
||||
m4_include([m4/d-type.m4])
|
||||
m4_include([m4/dev-ino.m4])
|
||||
m4_include([m4/diacrit.m4])
|
||||
m4_include([m4/dirfd.m4])
|
||||
m4_include([m4/dirname.m4])
|
||||
m4_include([m4/dos.m4])
|
||||
m4_include([m4/double-slash-root.m4])
|
||||
m4_include([m4/dup2.m4])
|
||||
m4_include([m4/eealloc.m4])
|
||||
m4_include([m4/eoverflow.m4])
|
||||
m4_include([m4/error.m4])
|
||||
m4_include([m4/euidaccess-stat.m4])
|
||||
m4_include([m4/euidaccess.m4])
|
||||
m4_include([m4/exclude.m4])
|
||||
m4_include([m4/exitfail.m4])
|
||||
@@ -919,12 +953,14 @@ m4_include([m4/filemode.m4])
|
||||
m4_include([m4/filenamecat.m4])
|
||||
m4_include([m4/fnmatch.m4])
|
||||
m4_include([m4/fpending.m4])
|
||||
m4_include([m4/fprintftime.m4])
|
||||
m4_include([m4/free.m4])
|
||||
m4_include([m4/fstypename.m4])
|
||||
m4_include([m4/fsusage.m4])
|
||||
m4_include([m4/ftruncate.m4])
|
||||
m4_include([m4/fts.m4])
|
||||
m4_include([m4/getaddrinfo.m4])
|
||||
m4_include([m4/getcwd-abort-bug.m4])
|
||||
m4_include([m4/getcwd-path-max.m4])
|
||||
m4_include([m4/getcwd.m4])
|
||||
m4_include([m4/getdate.m4])
|
||||
@@ -951,16 +987,20 @@ m4_include([m4/host-os.m4])
|
||||
m4_include([m4/human.m4])
|
||||
m4_include([m4/iconv.m4])
|
||||
m4_include([m4/idcache.m4])
|
||||
m4_include([m4/inet_ntop.m4])
|
||||
m4_include([m4/intmax_t.m4])
|
||||
m4_include([m4/inttostr.m4])
|
||||
m4_include([m4/inttypes-h.m4])
|
||||
m4_include([m4/inttypes-pri.m4])
|
||||
m4_include([m4/inttypes.m4])
|
||||
m4_include([m4/inttypes_h.m4])
|
||||
m4_include([m4/jm-macros.m4])
|
||||
m4_include([m4/jm-winsz1.m4])
|
||||
m4_include([m4/jm-winsz2.m4])
|
||||
m4_include([m4/lchmod.m4])
|
||||
m4_include([m4/lchown.m4])
|
||||
m4_include([m4/lib-check.m4])
|
||||
m4_include([m4/lib-ignore.m4])
|
||||
m4_include([m4/lib-ld.m4])
|
||||
m4_include([m4/lib-link.m4])
|
||||
m4_include([m4/lib-prefix.m4])
|
||||
@@ -987,6 +1027,8 @@ m4_include([m4/memmove.m4])
|
||||
m4_include([m4/mempcpy.m4])
|
||||
m4_include([m4/memrchr.m4])
|
||||
m4_include([m4/memset.m4])
|
||||
m4_include([m4/memxfrm.m4])
|
||||
m4_include([m4/mkancesdirs.m4])
|
||||
m4_include([m4/mkdir-p.m4])
|
||||
m4_include([m4/mkdir-slash.m4])
|
||||
m4_include([m4/mkstemp.m4])
|
||||
@@ -994,9 +1036,9 @@ m4_include([m4/mktime.m4])
|
||||
m4_include([m4/modechange.m4])
|
||||
m4_include([m4/mountlist.m4])
|
||||
m4_include([m4/nanosleep.m4])
|
||||
m4_include([m4/netinet_in_h.m4])
|
||||
m4_include([m4/nls.m4])
|
||||
m4_include([m4/obstack.m4])
|
||||
m4_include([m4/onceonly_2_57.m4])
|
||||
m4_include([m4/openat.m4])
|
||||
m4_include([m4/pathmax.m4])
|
||||
m4_include([m4/perl.m4])
|
||||
@@ -1009,26 +1051,32 @@ m4_include([m4/progtest.m4])
|
||||
m4_include([m4/putenv.m4])
|
||||
m4_include([m4/quote.m4])
|
||||
m4_include([m4/quotearg.m4])
|
||||
m4_include([m4/randint.m4])
|
||||
m4_include([m4/randperm.m4])
|
||||
m4_include([m4/randread.m4])
|
||||
m4_include([m4/readlink.m4])
|
||||
m4_include([m4/readtokens.m4])
|
||||
m4_include([m4/readutmp.m4])
|
||||
m4_include([m4/regex.m4])
|
||||
m4_include([m4/rename.m4])
|
||||
m4_include([m4/restrict.m4])
|
||||
m4_include([m4/rmdir-errno.m4])
|
||||
m4_include([m4/rmdir.m4])
|
||||
m4_include([m4/root-dev-ino.m4])
|
||||
m4_include([m4/rpmatch.m4])
|
||||
m4_include([m4/safe-read.m4])
|
||||
m4_include([m4/safe-write.m4])
|
||||
m4_include([m4/same-inode.m4])
|
||||
m4_include([m4/same.m4])
|
||||
m4_include([m4/save-cwd.m4])
|
||||
m4_include([m4/savedir.m4])
|
||||
m4_include([m4/setenv.m4])
|
||||
m4_include([m4/settime.m4])
|
||||
m4_include([m4/sha1.m4])
|
||||
m4_include([m4/sha256.m4])
|
||||
m4_include([m4/sha512.m4])
|
||||
m4_include([m4/sig2str.m4])
|
||||
m4_include([m4/signed.m4])
|
||||
m4_include([m4/snprintf.m4])
|
||||
m4_include([m4/socklen.m4])
|
||||
m4_include([m4/sockpfaf.m4])
|
||||
m4_include([m4/ssize_t.m4])
|
||||
@@ -1036,7 +1084,9 @@ m4_include([m4/st_dm_mode.m4])
|
||||
m4_include([m4/stat-macros.m4])
|
||||
m4_include([m4/stat-prog.m4])
|
||||
m4_include([m4/stat-time.m4])
|
||||
m4_include([m4/stdarg.m4])
|
||||
m4_include([m4/stdbool.m4])
|
||||
m4_include([m4/stdint.m4])
|
||||
m4_include([m4/stdint_h.m4])
|
||||
m4_include([m4/stdio-safer.m4])
|
||||
m4_include([m4/stdlib-safer.m4])
|
||||
@@ -1059,6 +1109,8 @@ m4_include([m4/strtoul.m4])
|
||||
m4_include([m4/strtoull.m4])
|
||||
m4_include([m4/strtoumax.m4])
|
||||
m4_include([m4/strverscmp.m4])
|
||||
m4_include([m4/sys_socket_h.m4])
|
||||
m4_include([m4/time_r.m4])
|
||||
m4_include([m4/timespec.m4])
|
||||
m4_include([m4/tm_gmtoff.m4])
|
||||
m4_include([m4/tzset.m4])
|
||||
@@ -1084,6 +1136,7 @@ m4_include([m4/vasnprintf.m4])
|
||||
m4_include([m4/vasprintf.m4])
|
||||
m4_include([m4/version-etc.m4])
|
||||
m4_include([m4/wchar_t.m4])
|
||||
m4_include([m4/wcwidth.m4])
|
||||
m4_include([m4/wint_t.m4])
|
||||
m4_include([m4/xalloc.m4])
|
||||
m4_include([m4/xfts.m4])
|
||||
|
||||
30
announce-gen
30
announce-gen
@@ -6,7 +6,7 @@ use Getopt::Long;
|
||||
use Digest::MD5;
|
||||
use Digest::SHA1;
|
||||
|
||||
(my $VERSION = '$Revision: 1.23 $ ') =~ tr/[0-9].//cd;
|
||||
(my $VERSION = '$Revision: 1.24 $ ') =~ tr/[0-9].//cd;
|
||||
(my $ME = $0) =~ s|.*/||;
|
||||
|
||||
my %valid_release_types = map {$_ => 1} qw (alpha beta major);
|
||||
@@ -60,6 +60,7 @@ OPTIONS:
|
||||
--package-name=PACKAGE_NAME
|
||||
--previous-version=VER
|
||||
--current-version=VER
|
||||
--gpg-key-id=ID The GnuPG ID of the key used to sign the tarballs
|
||||
--release-archive-directory=DIR
|
||||
--url-directory=URL_DIR
|
||||
--news=NEWS_FILE optional
|
||||
@@ -124,13 +125,13 @@ sub print_locations ($\@\%@)
|
||||
print "\n";
|
||||
}
|
||||
|
||||
=item C<print_signatures (@file)
|
||||
=item C<print_checksums (@file)
|
||||
|
||||
Print the MD5 and SHA1 signature section for each C<@file>.
|
||||
|
||||
=cut
|
||||
|
||||
sub print_signatures (@)
|
||||
sub print_checksums (@)
|
||||
{
|
||||
my (@file) = @_;
|
||||
|
||||
@@ -300,6 +301,7 @@ sub print_changelog_deltas ($$)
|
||||
my $prev_version;
|
||||
my $curr_version;
|
||||
my $release_archive_dir;
|
||||
my $gpg_key_id;
|
||||
my @url_dir_list;
|
||||
my @news_file;
|
||||
|
||||
@@ -309,6 +311,7 @@ sub print_changelog_deltas ($$)
|
||||
'package-name=s' => \$package_name,
|
||||
'previous-version=s' => \$prev_version,
|
||||
'current-version=s' => \$curr_version,
|
||||
'gpg-key-id=s' => \$gpg_key_id,
|
||||
'release-archive-directory=s' => \$release_archive_dir,
|
||||
'url-directory=s' => \@url_dir_list,
|
||||
'news=s' => \@news_file,
|
||||
@@ -365,10 +368,27 @@ EOF
|
||||
$tgz, $tbz);
|
||||
print_locations ("xdelta-style diffs", @url_dir_list, %size,
|
||||
$xd);
|
||||
print_locations ("GPG detached signatures", @url_dir_list, %size,
|
||||
print_locations ("GPG detached signatures[*]", @url_dir_list, %size,
|
||||
"$tgz.sig", "$tbz.sig");
|
||||
|
||||
print_signatures ($tgz, $tbz, $xd);
|
||||
print_checksums ($tgz, $tbz, $xd);
|
||||
|
||||
print <<EOF;
|
||||
|
||||
[*] You can use either of the above signature files to verify that
|
||||
the corresponding file (without the .sig suffix) is intact. First,
|
||||
be sure to download both the .sig file and the corresponding tarball.
|
||||
Then, run a command like this:
|
||||
|
||||
gpg --verify $tgz.sig
|
||||
|
||||
If that command fails because you don't have the required public key,
|
||||
then run this command to import it:
|
||||
|
||||
gpg --keyserver wwwkeys.pgp.net --recv-keys $gpg_key_id
|
||||
|
||||
and rerun the \`gpg --verify' command.
|
||||
EOF
|
||||
|
||||
print_news_deltas ($_, $prev_version, $curr_version)
|
||||
foreach @news_file;
|
||||
|
||||
@@ -1,3 +1,58 @@
|
||||
2006-08-09 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* texinfo.tex: Update from gnulib.
|
||||
|
||||
2006-07-25 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* vc-list-files: Handle git repositories, too.
|
||||
|
||||
2006-07-19 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* vc-list-files: Command line args correspond to an "include"
|
||||
list, not an exclude list.
|
||||
|
||||
2006-07-14 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* vc-list-files: New file.
|
||||
|
||||
2006-07-08 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* config.guess, config.sub, install-sh, texinfo.tex:
|
||||
Update from gnulib.
|
||||
|
||||
2006-05-29 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* config.guess, config.rpath, config.sub, install-sh:
|
||||
* mkinstalldirs, texinfo.tex: Update from gnulib.
|
||||
|
||||
2006-02-14 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* install-sh: Update from gnulib.
|
||||
|
||||
2006-01-31 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* config.guess, missing, texinfo.tex: Update from gnulib.
|
||||
|
||||
2006-01-10 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* config.guess, config.sub, depcomp, texinfo.tex: Sync from gnulib.
|
||||
|
||||
2005-12-13 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* config.guess: Sync from gnulib.
|
||||
|
||||
2005-12-07 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* cvsu: New file.
|
||||
|
||||
2005-11-12 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* config.guess, install-sh: Update from gnulib.
|
||||
|
||||
2005-10-23 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* compile: New file, used to build sha* programs from md5sum.c.
|
||||
|
||||
2005-10-13 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* texinfo.tex: Sync from gnulib.
|
||||
|
||||
136
build-aux/compile
Normal file
136
build-aux/compile
Normal file
@@ -0,0 +1,136 @@
|
||||
#! /bin/sh
|
||||
# Wrapper for compilers which do not understand `-c -o'.
|
||||
|
||||
scriptversion=2003-11-09.00
|
||||
|
||||
# Copyright (C) 1999, 2000, 2003 Free Software Foundation, Inc.
|
||||
# Written by Tom Tromey <tromey@cygnus.com>.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
# As a special exception to the GNU General Public License, if you
|
||||
# distribute this file as part of a program that contains a
|
||||
# configuration script generated by Autoconf, you may include it under
|
||||
# the same distribution terms that you use for the rest of that program.
|
||||
|
||||
# This file is maintained in Automake, please report
|
||||
# bugs to <bug-automake@gnu.org> or send patches to
|
||||
# <automake-patches@gnu.org>.
|
||||
|
||||
case $1 in
|
||||
'')
|
||||
echo "$0: No command. Try \`$0 --help' for more information." 1>&2
|
||||
exit 1;
|
||||
;;
|
||||
-h | --h*)
|
||||
cat <<\EOF
|
||||
Usage: compile [--help] [--version] PROGRAM [ARGS]
|
||||
|
||||
Wrapper for compilers which do not understand `-c -o'.
|
||||
Remove `-o dest.o' from ARGS, run PROGRAM with the remaining
|
||||
arguments, and rename the output as expected.
|
||||
|
||||
If you are trying to build a whole package this is not the
|
||||
right script to run: please start by reading the file `INSTALL'.
|
||||
|
||||
Report bugs to <bug-automake@gnu.org>.
|
||||
EOF
|
||||
exit 0
|
||||
;;
|
||||
-v | --v*)
|
||||
echo "compile $scriptversion"
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
|
||||
|
||||
prog=$1
|
||||
shift
|
||||
|
||||
ofile=
|
||||
cfile=
|
||||
args=
|
||||
while test $# -gt 0; do
|
||||
case "$1" in
|
||||
-o)
|
||||
# configure might choose to run compile as `compile cc -o foo foo.c'.
|
||||
# So we do something ugly here.
|
||||
ofile=$2
|
||||
shift
|
||||
case "$ofile" in
|
||||
*.o | *.obj)
|
||||
;;
|
||||
*)
|
||||
args="$args -o $ofile"
|
||||
ofile=
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
*.c)
|
||||
cfile=$1
|
||||
args="$args $1"
|
||||
;;
|
||||
*)
|
||||
args="$args $1"
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
if test -z "$ofile" || test -z "$cfile"; then
|
||||
# If no `-o' option was seen then we might have been invoked from a
|
||||
# pattern rule where we don't need one. That is ok -- this is a
|
||||
# normal compilation that the losing compiler can handle. If no
|
||||
# `.c' file was seen then we are probably linking. That is also
|
||||
# ok.
|
||||
exec "$prog" $args
|
||||
fi
|
||||
|
||||
# Name of file we expect compiler to create.
|
||||
cofile=`echo $cfile | sed -e 's|^.*/||' -e 's/\.c$/.o/'`
|
||||
|
||||
# Create the lock directory.
|
||||
# Note: use `[/.-]' here to ensure that we don't use the same name
|
||||
# that we are using for the .o file. Also, base the name on the expected
|
||||
# object file name, since that is what matters with a parallel build.
|
||||
lockdir=`echo $cofile | sed -e 's|[/.-]|_|g'`.d
|
||||
while true; do
|
||||
if mkdir $lockdir > /dev/null 2>&1; then
|
||||
break
|
||||
fi
|
||||
sleep 1
|
||||
done
|
||||
# FIXME: race condition here if user kills between mkdir and trap.
|
||||
trap "rmdir $lockdir; exit 1" 1 2 15
|
||||
|
||||
# Run the compile.
|
||||
"$prog" $args
|
||||
status=$?
|
||||
|
||||
if test -f "$cofile"; then
|
||||
mv "$cofile" "$ofile"
|
||||
fi
|
||||
|
||||
rmdir $lockdir
|
||||
exit $status
|
||||
|
||||
# Local Variables:
|
||||
# mode: shell-script
|
||||
# sh-indentation: 2
|
||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||
# time-stamp-start: "scriptversion="
|
||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||
# time-stamp-end: "$"
|
||||
# End:
|
||||
57
build-aux/config.guess
vendored
57
build-aux/config.guess
vendored
@@ -1,9 +1,10 @@
|
||||
#! /bin/sh
|
||||
# Attempt to guess a canonical system name.
|
||||
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
|
||||
# 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||
# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
|
||||
# Inc.
|
||||
|
||||
timestamp='2005-09-19'
|
||||
timestamp='2006-07-02'
|
||||
|
||||
# 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
|
||||
@@ -106,7 +107,7 @@ 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" ; } ||
|
||||
{ tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
|
||||
{ test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
|
||||
{ tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
|
||||
{ echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
|
||||
@@ -206,8 +207,11 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
|
||||
*:ekkoBSD:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
|
||||
exit ;;
|
||||
*:SolidBSD:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
|
||||
exit ;;
|
||||
macppc:MirBSD:*:*)
|
||||
echo powerppc-unknown-mirbsd${UNAME_RELEASE}
|
||||
echo powerpc-unknown-mirbsd${UNAME_RELEASE}
|
||||
exit ;;
|
||||
*:MirBSD:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
|
||||
@@ -764,7 +768,14 @@ EOF
|
||||
echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
|
||||
exit ;;
|
||||
*:FreeBSD:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
|
||||
case ${UNAME_MACHINE} in
|
||||
pc98)
|
||||
echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
|
||||
amd64)
|
||||
echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
|
||||
*)
|
||||
echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
|
||||
esac
|
||||
exit ;;
|
||||
i*:CYGWIN*:*)
|
||||
echo ${UNAME_MACHINE}-pc-cygwin
|
||||
@@ -779,8 +790,11 @@ EOF
|
||||
i*:PW*:*)
|
||||
echo ${UNAME_MACHINE}-pc-pw32
|
||||
exit ;;
|
||||
x86:Interix*:[34]*)
|
||||
echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//'
|
||||
x86:Interix*:[3456]*)
|
||||
echo i586-pc-interix${UNAME_RELEASE}
|
||||
exit ;;
|
||||
EM64T:Interix*:[3456]*)
|
||||
echo x86_64-unknown-interix${UNAME_RELEASE}
|
||||
exit ;;
|
||||
[345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
|
||||
echo i${UNAME_MACHINE}-pc-mks
|
||||
@@ -817,6 +831,9 @@ EOF
|
||||
arm*:Linux:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
exit ;;
|
||||
avr32*:Linux:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
exit ;;
|
||||
cris:Linux:*:*)
|
||||
echo cris-axis-linux-gnu
|
||||
exit ;;
|
||||
@@ -851,7 +868,11 @@ EOF
|
||||
#endif
|
||||
#endif
|
||||
EOF
|
||||
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
|
||||
eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
|
||||
/^CPU/{
|
||||
s: ::g
|
||||
p
|
||||
}'`"
|
||||
test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
|
||||
;;
|
||||
mips64:Linux:*:*)
|
||||
@@ -870,7 +891,11 @@ EOF
|
||||
#endif
|
||||
#endif
|
||||
EOF
|
||||
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
|
||||
eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
|
||||
/^CPU/{
|
||||
s: ::g
|
||||
p
|
||||
}'`"
|
||||
test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
|
||||
;;
|
||||
or32:Linux:*:*)
|
||||
@@ -919,6 +944,9 @@ EOF
|
||||
sparc:Linux:*:* | sparc64:Linux:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
exit ;;
|
||||
vax:Linux:*:*)
|
||||
echo ${UNAME_MACHINE}-dec-linux-gnu
|
||||
exit ;;
|
||||
x86_64:Linux:*:*)
|
||||
echo x86_64-unknown-linux-gnu
|
||||
exit ;;
|
||||
@@ -964,7 +992,7 @@ EOF
|
||||
LIBC=gnulibc1
|
||||
# endif
|
||||
#else
|
||||
#ifdef __INTEL_COMPILER
|
||||
#if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC)
|
||||
LIBC=gnu
|
||||
#else
|
||||
LIBC=gnuaout
|
||||
@@ -974,7 +1002,11 @@ EOF
|
||||
LIBC=dietlibc
|
||||
#endif
|
||||
EOF
|
||||
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
|
||||
eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
|
||||
/^LIBC/{
|
||||
s: ::g
|
||||
p
|
||||
}'`"
|
||||
test x"${LIBC}" != x && {
|
||||
echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
|
||||
exit
|
||||
@@ -1263,6 +1295,9 @@ EOF
|
||||
i*86:skyos:*:*)
|
||||
echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
|
||||
exit ;;
|
||||
i*86:rdos:*:*)
|
||||
echo ${UNAME_MACHINE}-pc-rdos
|
||||
exit ;;
|
||||
esac
|
||||
|
||||
#echo '(No uname command or uname output not recognized.)' 1>&2
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# Output a system dependent set of variables, describing how to set the
|
||||
# run time search path of shared libraries in an executable.
|
||||
#
|
||||
# Copyright 1996-2005 Free Software Foundation, Inc.
|
||||
# Copyright 1996-2006 Free Software Foundation, Inc.
|
||||
# Taken from GNU libtool, 2001
|
||||
# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
|
||||
#
|
||||
@@ -25,7 +25,7 @@
|
||||
# known workaround is to choose shorter directory names for the build
|
||||
# directory and/or the installation directory.
|
||||
|
||||
# All known linkers require a `.a' archive for static linking (except M$VC,
|
||||
# All known linkers require a `.a' archive for static linking (except MSVC,
|
||||
# which needs '.lib').
|
||||
libext=a
|
||||
shrext=.so
|
||||
@@ -35,7 +35,17 @@ host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
|
||||
host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
|
||||
host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
|
||||
|
||||
cc_basename=`echo "$CC" | sed -e 's%^.*/%%'`
|
||||
# Code taken from libtool.m4's _LT_CC_BASENAME.
|
||||
|
||||
for cc_temp in $CC""; do
|
||||
case $cc_temp in
|
||||
compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
|
||||
distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
|
||||
\-*) ;;
|
||||
*) break;;
|
||||
esac
|
||||
done
|
||||
cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'`
|
||||
|
||||
# Code taken from libtool.m4's AC_LIBTOOL_PROG_COMPILER_PIC.
|
||||
|
||||
@@ -48,7 +58,7 @@ else
|
||||
wl='-Wl,'
|
||||
;;
|
||||
darwin*)
|
||||
case "$cc_basename" in
|
||||
case $cc_basename in
|
||||
xlc*)
|
||||
wl='-Wl,'
|
||||
;;
|
||||
@@ -78,6 +88,13 @@ else
|
||||
como)
|
||||
wl='-lopt='
|
||||
;;
|
||||
*)
|
||||
case `$CC -V 2>&1 | sed 5q` in
|
||||
*Sun\ C*)
|
||||
wl='-Wl,'
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
osf3* | osf4* | osf5*)
|
||||
@@ -120,6 +137,10 @@ case "$host_os" in
|
||||
with_gnu_ld=no
|
||||
fi
|
||||
;;
|
||||
interix*)
|
||||
# we just hope/assume this is gcc and not c89 (= MSVC++)
|
||||
with_gnu_ld=yes
|
||||
;;
|
||||
openbsd*)
|
||||
with_gnu_ld=no
|
||||
;;
|
||||
@@ -127,6 +148,12 @@ esac
|
||||
|
||||
ld_shlibs=yes
|
||||
if test "$with_gnu_ld" = yes; then
|
||||
# Set some defaults for GNU ld with shared library support. These
|
||||
# are reset later if shared libraries are not supported. Putting them
|
||||
# here allows them to be overridden if necessary.
|
||||
# Unlike libtool, we use -rpath here, not --rpath, since the documented
|
||||
# option of GNU ld is called -rpath, not --rpath.
|
||||
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
|
||||
case "$host_os" in
|
||||
aix3* | aix4* | aix5*)
|
||||
# On AIX/PPC, the GNU linker is very broken
|
||||
@@ -162,9 +189,20 @@ if test "$with_gnu_ld" = yes; then
|
||||
ld_shlibs=no
|
||||
fi
|
||||
;;
|
||||
interix3*)
|
||||
hardcode_direct=no
|
||||
hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
|
||||
;;
|
||||
linux*)
|
||||
if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
|
||||
:
|
||||
else
|
||||
ld_shlibs=no
|
||||
fi
|
||||
;;
|
||||
netbsd*)
|
||||
;;
|
||||
solaris* | sysv5*)
|
||||
solaris*)
|
||||
if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
|
||||
ld_shlibs=no
|
||||
elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
|
||||
@@ -173,16 +211,23 @@ if test "$with_gnu_ld" = yes; then
|
||||
ld_shlibs=no
|
||||
fi
|
||||
;;
|
||||
sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
|
||||
case `$LD -v 2>&1` in
|
||||
*\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
|
||||
ld_shlibs=no
|
||||
;;
|
||||
*)
|
||||
if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
|
||||
hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
|
||||
else
|
||||
ld_shlibs=no
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
sunos4*)
|
||||
hardcode_direct=yes
|
||||
;;
|
||||
linux*)
|
||||
if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
|
||||
:
|
||||
else
|
||||
ld_shlibs=no
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
|
||||
:
|
||||
@@ -191,10 +236,8 @@ if test "$with_gnu_ld" = yes; then
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
if test "$ld_shlibs" = yes; then
|
||||
# Unlike libtool, we use -rpath here, not --rpath, since the documented
|
||||
# option of GNU ld is called -rpath, not --rpath.
|
||||
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
|
||||
if test "$ld_shlibs" = no; then
|
||||
hardcode_libdir_flag_spec=
|
||||
fi
|
||||
else
|
||||
case "$host_os" in
|
||||
@@ -225,6 +268,7 @@ else
|
||||
break
|
||||
fi
|
||||
done
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
hardcode_direct=yes
|
||||
@@ -244,6 +288,7 @@ else
|
||||
hardcode_libdir_flag_spec='-L$libdir'
|
||||
hardcode_libdir_separator=
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
# Begin _LT_AC_SYS_LIBPATH_AIX.
|
||||
@@ -291,7 +336,7 @@ else
|
||||
if test "$GCC" = yes ; then
|
||||
:
|
||||
else
|
||||
case "$cc_basename" in
|
||||
case $cc_basename in
|
||||
xlc*)
|
||||
;;
|
||||
*)
|
||||
@@ -326,24 +371,25 @@ else
|
||||
# but as the default location of the library.
|
||||
hardcode_minus_L=yes
|
||||
;;
|
||||
hpux10* | hpux11*)
|
||||
hpux10*)
|
||||
if test "$with_gnu_ld" = no; then
|
||||
case "$host_cpu" in
|
||||
hppa*64*)
|
||||
hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
|
||||
hardcode_libdir_separator=:
|
||||
hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
|
||||
hardcode_libdir_separator=:
|
||||
hardcode_direct=yes
|
||||
# hardcode_minus_L: Not really in the search PATH,
|
||||
# but as the default location of the library.
|
||||
hardcode_minus_L=yes
|
||||
fi
|
||||
;;
|
||||
hpux11*)
|
||||
if test "$with_gnu_ld" = no; then
|
||||
hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
|
||||
hardcode_libdir_separator=:
|
||||
case $host_cpu in
|
||||
hppa*64*|ia64*)
|
||||
hardcode_direct=no
|
||||
;;
|
||||
ia64*)
|
||||
hardcode_libdir_flag_spec='-L$libdir'
|
||||
hardcode_direct=no
|
||||
# hardcode_minus_L: Not really in the search PATH,
|
||||
# but as the default location of the library.
|
||||
hardcode_minus_L=yes
|
||||
;;
|
||||
*)
|
||||
hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
|
||||
hardcode_libdir_separator=:
|
||||
hardcode_direct=yes
|
||||
# hardcode_minus_L: Not really in the search PATH,
|
||||
# but as the default location of the library.
|
||||
@@ -397,8 +443,6 @@ else
|
||||
fi
|
||||
hardcode_libdir_separator=:
|
||||
;;
|
||||
sco3.2v5*)
|
||||
;;
|
||||
solaris*)
|
||||
hardcode_libdir_flag_spec='-R$libdir'
|
||||
;;
|
||||
@@ -427,14 +471,11 @@ else
|
||||
ld_shlibs=yes
|
||||
fi
|
||||
;;
|
||||
sysv4.2uw2*)
|
||||
hardcode_direct=yes
|
||||
hardcode_minus_L=no
|
||||
sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*)
|
||||
;;
|
||||
sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*)
|
||||
;;
|
||||
sysv5*)
|
||||
hardcode_libdir_flag_spec=
|
||||
sysv5* | sco3.2v5* | sco5v6*)
|
||||
hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
|
||||
hardcode_libdir_separator=':'
|
||||
;;
|
||||
uts4*)
|
||||
hardcode_libdir_flag_spec='-L$libdir'
|
||||
@@ -471,12 +512,12 @@ case "$host_os" in
|
||||
;;
|
||||
kfreebsd*-gnu)
|
||||
;;
|
||||
freebsd*)
|
||||
freebsd* | dragonfly*)
|
||||
;;
|
||||
gnu*)
|
||||
;;
|
||||
hpux9* | hpux10* | hpux11*)
|
||||
case "$host_cpu" in
|
||||
case $host_cpu in
|
||||
ia64*)
|
||||
shrext=.so
|
||||
;;
|
||||
@@ -488,6 +529,8 @@ case "$host_os" in
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
interix3*)
|
||||
;;
|
||||
irix5* | irix6* | nonstopux*)
|
||||
case "$host_os" in
|
||||
irix5* | nonstopux*)
|
||||
@@ -523,16 +566,16 @@ case "$host_os" in
|
||||
;;
|
||||
osf3* | osf4* | osf5*)
|
||||
;;
|
||||
sco3.2v5*)
|
||||
;;
|
||||
solaris*)
|
||||
;;
|
||||
sunos4*)
|
||||
;;
|
||||
sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
|
||||
sysv4 | sysv4.3*)
|
||||
;;
|
||||
sysv4*MP*)
|
||||
;;
|
||||
sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
|
||||
;;
|
||||
uts4*)
|
||||
;;
|
||||
esac
|
||||
|
||||
95
build-aux/config.sub
vendored
95
build-aux/config.sub
vendored
@@ -1,9 +1,10 @@
|
||||
#! /bin/sh
|
||||
# Configuration validation subroutine script.
|
||||
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
|
||||
# 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||
# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
|
||||
# Inc.
|
||||
|
||||
timestamp='2005-07-08'
|
||||
timestamp='2006-08-14'
|
||||
|
||||
# This file is (in principle) common to ALL GNU software.
|
||||
# The presence of a machine in this file suggests that SOME GNU software
|
||||
@@ -119,8 +120,9 @@ esac
|
||||
# Here we must recognize all the valid KERNEL-OS combinations.
|
||||
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
|
||||
case $maybe_os in
|
||||
nto-qnx* | linux-gnu* | linux-dietlibc | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | \
|
||||
kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*)
|
||||
nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
|
||||
uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
|
||||
storm-chaos* | os2-emx* | rtmk-nova*)
|
||||
os=-$maybe_os
|
||||
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
|
||||
;;
|
||||
@@ -171,6 +173,10 @@ case $os in
|
||||
-hiux*)
|
||||
os=-hiuxwe2
|
||||
;;
|
||||
-sco6)
|
||||
os=-sco5v6
|
||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||
;;
|
||||
-sco5)
|
||||
os=-sco3.2v5
|
||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||
@@ -187,6 +193,10 @@ case $os in
|
||||
# Don't forget version if it is 3.2v4 or newer.
|
||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||
;;
|
||||
-sco5v6*)
|
||||
# Don't forget version if it is 3.2v4 or newer.
|
||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||
;;
|
||||
-sco*)
|
||||
os=-sco3.2v2
|
||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||
@@ -231,7 +241,7 @@ case $basic_machine in
|
||||
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
|
||||
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
|
||||
| am33_2.0 \
|
||||
| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
|
||||
| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
|
||||
| bfin \
|
||||
| c4x | clipper \
|
||||
| d10v | d30v | dlx | dsp16xx \
|
||||
@@ -239,7 +249,8 @@ case $basic_machine in
|
||||
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
|
||||
| i370 | i860 | i960 | ia64 \
|
||||
| ip2k | iq2000 \
|
||||
| m32r | m32rle | m68000 | m68k | m88k | maxq | mcore \
|
||||
| m32c | m32r | m32rle | m68000 | m68k | m88k \
|
||||
| maxq | mb | microblaze | mcore \
|
||||
| mips | mipsbe | mipseb | mipsel | mipsle \
|
||||
| mips16 \
|
||||
| mips64 | mips64el \
|
||||
@@ -257,28 +268,26 @@ case $basic_machine in
|
||||
| mipsisa64sr71k | mipsisa64sr71kel \
|
||||
| mipstx39 | mipstx39el \
|
||||
| mn10200 | mn10300 \
|
||||
| ms1 \
|
||||
| mt \
|
||||
| msp430 \
|
||||
| nios | nios2 \
|
||||
| ns16k | ns32k \
|
||||
| or32 \
|
||||
| pdp10 | pdp11 | pj | pjl \
|
||||
| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
|
||||
| pyramid \
|
||||
| sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
|
||||
| sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
|
||||
| sh64 | sh64le \
|
||||
| sparc | sparc64 | sparc64b | sparc86x | sparclet | sparclite \
|
||||
| sparcv8 | sparcv9 | sparcv9b \
|
||||
| strongarm \
|
||||
| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
|
||||
| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
|
||||
| spu | strongarm \
|
||||
| tahoe | thumb | tic4x | tic80 | tron \
|
||||
| v850 | v850e \
|
||||
| we32k \
|
||||
| x86 | xscale | xscalee[bl] | xstormy16 | xtensa \
|
||||
| x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
|
||||
| z8k)
|
||||
basic_machine=$basic_machine-unknown
|
||||
;;
|
||||
m32c)
|
||||
basic_machine=$basic_machine-unknown
|
||||
;;
|
||||
m6811 | m68hc11 | m6812 | m68hc12)
|
||||
# Motorola 68HC11/12.
|
||||
basic_machine=$basic_machine-unknown
|
||||
@@ -286,6 +295,9 @@ case $basic_machine in
|
||||
;;
|
||||
m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
|
||||
;;
|
||||
ms1)
|
||||
basic_machine=mt-unknown
|
||||
;;
|
||||
|
||||
# We use `pc' rather than `unknown'
|
||||
# because (1) that's what they normally are, and
|
||||
@@ -305,7 +317,7 @@ case $basic_machine in
|
||||
| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
|
||||
| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
|
||||
| arm-* | armbe-* | armle-* | armeb-* | armv*-* \
|
||||
| avr-* \
|
||||
| avr-* | avr32-* \
|
||||
| bfin-* | bs2000-* \
|
||||
| c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
|
||||
| clipper-* | craynv-* | cydra-* \
|
||||
@@ -316,7 +328,7 @@ case $basic_machine in
|
||||
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
|
||||
| i*86-* | i860-* | i960-* | ia64-* \
|
||||
| ip2k-* | iq2000-* \
|
||||
| m32r-* | m32rle-* \
|
||||
| m32c-* | m32r-* | m32rle-* \
|
||||
| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
|
||||
| m88110-* | m88k-* | maxq-* | mcore-* \
|
||||
| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
|
||||
@@ -336,31 +348,30 @@ case $basic_machine in
|
||||
| mipsisa64sr71k-* | mipsisa64sr71kel-* \
|
||||
| mipstx39-* | mipstx39el-* \
|
||||
| mmix-* \
|
||||
| ms1-* \
|
||||
| mt-* \
|
||||
| msp430-* \
|
||||
| nios-* | nios2-* \
|
||||
| none-* | np1-* | ns16k-* | ns32k-* \
|
||||
| orion-* \
|
||||
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
|
||||
| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
|
||||
| pyramid-* \
|
||||
| romp-* | rs6000-* \
|
||||
| sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | shbe-* \
|
||||
| sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
|
||||
| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
|
||||
| sparc-* | sparc64-* | sparc64b-* | sparc86x-* | sparclet-* \
|
||||
| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
|
||||
| sparclite-* \
|
||||
| sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
|
||||
| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
|
||||
| tahoe-* | thumb-* \
|
||||
| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
|
||||
| tron-* \
|
||||
| v850-* | v850e-* | vax-* \
|
||||
| we32k-* \
|
||||
| x86-* | x86_64-* | xps100-* | xscale-* | xscalee[bl]-* \
|
||||
| x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
|
||||
| xstormy16-* | xtensa-* \
|
||||
| ymp-* \
|
||||
| z8k-*)
|
||||
;;
|
||||
m32c-*)
|
||||
;;
|
||||
# Recognize the various machine names and aliases which stand
|
||||
# for a CPU type and a company and sometimes even an OS.
|
||||
386bsd)
|
||||
@@ -696,6 +707,9 @@ case $basic_machine in
|
||||
basic_machine=i386-pc
|
||||
os=-msdos
|
||||
;;
|
||||
ms1-*)
|
||||
basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
|
||||
;;
|
||||
mvs)
|
||||
basic_machine=i370-ibm
|
||||
os=-mvs
|
||||
@@ -803,6 +817,12 @@ case $basic_machine in
|
||||
pc532 | pc532-*)
|
||||
basic_machine=ns32k-pc532
|
||||
;;
|
||||
pc98)
|
||||
basic_machine=i386-pc
|
||||
;;
|
||||
pc98-*)
|
||||
basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
pentium | p5 | k5 | k6 | nexgen | viac3)
|
||||
basic_machine=i586-pc
|
||||
;;
|
||||
@@ -859,6 +879,10 @@ case $basic_machine in
|
||||
basic_machine=i586-unknown
|
||||
os=-pw32
|
||||
;;
|
||||
rdos)
|
||||
basic_machine=i386-pc
|
||||
os=-rdos
|
||||
;;
|
||||
rom68k)
|
||||
basic_machine=m68k-rom68k
|
||||
os=-coff
|
||||
@@ -885,6 +909,10 @@ case $basic_machine in
|
||||
sb1el)
|
||||
basic_machine=mipsisa64sb1el-unknown
|
||||
;;
|
||||
sde)
|
||||
basic_machine=mipsisa32-sde
|
||||
os=-elf
|
||||
;;
|
||||
sei)
|
||||
basic_machine=mips-sei
|
||||
os=-seiux
|
||||
@@ -1101,7 +1129,7 @@ case $basic_machine in
|
||||
sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele)
|
||||
basic_machine=sh-unknown
|
||||
;;
|
||||
sparc | sparcv8 | sparcv9 | sparcv9b)
|
||||
sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
|
||||
basic_machine=sparc-sun
|
||||
;;
|
||||
cydra)
|
||||
@@ -1174,21 +1202,23 @@ case $os in
|
||||
| -aos* \
|
||||
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
|
||||
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
|
||||
| -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* | -openbsd* \
|
||||
| -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
|
||||
| -openbsd* | -solidbsd* \
|
||||
| -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
|
||||
| -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
|
||||
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
|
||||
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
|
||||
| -chorusos* | -chorusrdb* \
|
||||
| -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
|
||||
| -mingw32* | -linux-gnu* | -linux-uclibc* | -uxpv* | -beos* | -mpeix* | -udk* \
|
||||
| -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
|
||||
| -uxpv* | -beos* | -mpeix* | -udk* \
|
||||
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
|
||||
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
|
||||
| -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
|
||||
| -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
|
||||
| -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
|
||||
| -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
|
||||
| -skyos* | -haiku*)
|
||||
| -skyos* | -haiku* | -rdos* | -toppers*)
|
||||
# Remember, each alternative MUST END IN *, to match a version number.
|
||||
;;
|
||||
-qnx*)
|
||||
@@ -1340,6 +1370,9 @@ else
|
||||
# system, and we'll never get to this point.
|
||||
|
||||
case $basic_machine in
|
||||
spu-*)
|
||||
os=-elf
|
||||
;;
|
||||
*-acorn)
|
||||
os=-riscix1.2
|
||||
;;
|
||||
@@ -1349,9 +1382,9 @@ case $basic_machine in
|
||||
arm*-semi)
|
||||
os=-aout
|
||||
;;
|
||||
c4x-* | tic4x-*)
|
||||
os=-coff
|
||||
;;
|
||||
c4x-* | tic4x-*)
|
||||
os=-coff
|
||||
;;
|
||||
# This must come before the *-dec entry.
|
||||
pdp10-*)
|
||||
os=-tops20
|
||||
|
||||
514
build-aux/cvsu
Executable file
514
build-aux/cvsu
Executable file
@@ -0,0 +1,514 @@
|
||||
#! /usr/bin/perl -w
|
||||
|
||||
# cvsu - do a quick check to see what files are out of date.
|
||||
#
|
||||
# Copyright (C) 2000-2005 Pavel Roskin <proski@gnu.org>
|
||||
# Initially written by Tom Tromey <tromey@cygnus.com>
|
||||
# Completely rewritten by Pavel Roskin <proski@gnu.org>
|
||||
#
|
||||
# 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.
|
||||
|
||||
|
||||
require 5.004;
|
||||
use Getopt::Long;
|
||||
use File::Basename;
|
||||
use Time::Local;
|
||||
use strict;
|
||||
|
||||
use vars qw($list_types %messages %options @batch_list $batch_cmd
|
||||
$no_recurse $explain_type $find_mode $short_print
|
||||
$no_cvsignore $nolinks $file $single_filename $curr_dir
|
||||
@common_ignores $ignore_rx %entries %subdirs %removed);
|
||||
|
||||
use constant SUBDIR_FOUND => 1;
|
||||
use constant SUBDIR_CVS => 2;
|
||||
|
||||
# This list comes from the CVS manual.
|
||||
use constant STANDARD_IGNORES =>
|
||||
('RCS', 'SCCS', 'CVS', 'CVS.adm', 'RCSLOG', 'cvslog.*', 'tags',
|
||||
'TAGS', '.make.state', '.nse_depinfo', '*~', '#*', '.#*', ',*',
|
||||
"_\$*", "*\$", '*.old', '*.bak', '*.BAK', '*.orig', '*.rej',
|
||||
'.del-*', '*.a', '*.olb', '*.o', '*.obj', '*.so', '*.exe',
|
||||
'*.Z', '*.elc', '*.ln', 'core');
|
||||
|
||||
# 3-letter month names in POSIX locale, for fast date decoding
|
||||
my %months = (
|
||||
"Jan" => 0,
|
||||
"Feb" => 1,
|
||||
"Mar" => 2,
|
||||
"Apr" => 3,
|
||||
"May" => 4,
|
||||
"Jun" => 5,
|
||||
"Jul" => 6,
|
||||
"Aug" => 7,
|
||||
"Sep" => 8,
|
||||
"Oct" => 9,
|
||||
"Nov" => 10,
|
||||
"Dec" => 11
|
||||
);
|
||||
|
||||
# print usage information and exit
|
||||
sub usage ()
|
||||
{
|
||||
print "Usage:\n" .
|
||||
" cvsu [OPTIONS] [FILE] ...\n" .
|
||||
"Options:\n" .
|
||||
" --local Disable recursion\n" .
|
||||
" --explain Verbosely print status of files\n" .
|
||||
" --find Emulate find - filenames only\n" .
|
||||
" --short Don't print paths\n" .
|
||||
" --ignore Don't read .cvsignore\n" .
|
||||
" --messages List known file types and long messages\n" .
|
||||
" --nolinks Disable recognizing hard and soft links\n" .
|
||||
" --types=[^]LIST Print only file types [not] from LIST\n" .
|
||||
" --batch=COMMAND Execute this command on files\n" .
|
||||
" --help Print this usage information\n" .
|
||||
" --version Print version number\n" .
|
||||
"Abbreviations and short options are supported\n";
|
||||
exit 0;
|
||||
}
|
||||
|
||||
# print version information and exit
|
||||
sub version ()
|
||||
{
|
||||
print "cvsu - CVS offline examiner, version 0.2.3\n";
|
||||
exit 0;
|
||||
}
|
||||
|
||||
# If types begin with '^', make inversion
|
||||
sub adjust_types ()
|
||||
{
|
||||
if ($list_types =~ m{^\^(.*)$}) {
|
||||
$list_types = "";
|
||||
foreach (keys %messages) {
|
||||
$list_types .= $_
|
||||
if (index ($1, $_) < 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# list known messages and exit
|
||||
sub list_messages ()
|
||||
{
|
||||
my $default_mark;
|
||||
print "Recognizable file types are:\n";
|
||||
foreach (sort keys %messages) {
|
||||
if (index($list_types, $_) >= 0) {
|
||||
$default_mark = "*";
|
||||
} else {
|
||||
$default_mark = " ";
|
||||
}
|
||||
print " $default_mark $_ $messages{$_}\n";
|
||||
}
|
||||
print "* indicates file types listed by default\n";
|
||||
exit 0;
|
||||
}
|
||||
|
||||
# Initialize @common_ignores
|
||||
# Also read $HOME/.cvsignore and append it to @common_ignores
|
||||
sub init_ignores ()
|
||||
{
|
||||
my $HOME = $ENV{"HOME"};
|
||||
|
||||
push @common_ignores, STANDARD_IGNORES;
|
||||
|
||||
unless (defined($HOME)) {
|
||||
return;
|
||||
}
|
||||
|
||||
my $home_cvsignore = "${HOME}/.cvsignore";
|
||||
|
||||
if (-f "$home_cvsignore") {
|
||||
|
||||
unless (open (CVSIGNORE, "< $home_cvsignore")) {
|
||||
error ("couldn't open $home_cvsignore: $!");
|
||||
}
|
||||
|
||||
while (<CVSIGNORE>) {
|
||||
push (@common_ignores, split);
|
||||
}
|
||||
|
||||
close (CVSIGNORE);
|
||||
}
|
||||
|
||||
my $CVSIGNOREENV = $ENV{"CVSIGNORE"};
|
||||
|
||||
unless (defined($CVSIGNOREENV)) {
|
||||
return;
|
||||
}
|
||||
|
||||
my @ignores_var = split (/ /, $CVSIGNOREENV);
|
||||
push (@common_ignores, @ignores_var);
|
||||
|
||||
}
|
||||
|
||||
# Print message and exit (like "die", but without raising an exception).
|
||||
# Newline is added at the end.
|
||||
sub error ($)
|
||||
{
|
||||
print STDERR "cvsu: ERROR: " . shift(@_) . "\n";
|
||||
exit 1;
|
||||
}
|
||||
|
||||
# execute commands from @exec_list with $exec_cmd
|
||||
sub do_batch ()
|
||||
{
|
||||
my @cmd_list = split (' ', $batch_cmd);
|
||||
system (@cmd_list, @batch_list);
|
||||
}
|
||||
|
||||
# print files status
|
||||
# Parameter 1: status in one-letter representation
|
||||
sub file_status ($)
|
||||
{
|
||||
my $type = shift (@_);
|
||||
my $item;
|
||||
my $pathfile;
|
||||
|
||||
return
|
||||
if $ignore_rx ne '' && $type =~ /[?SLD]/ && $file =~ /$ignore_rx/;
|
||||
|
||||
return
|
||||
if (index($list_types, $type) < 0);
|
||||
|
||||
$pathfile = $curr_dir . $file;
|
||||
|
||||
if (defined($batch_cmd)) {
|
||||
push (@batch_list, $pathfile);
|
||||
# 1000 items in the command line might be too much for HP-UX
|
||||
if ($#batch_list > 1000) {
|
||||
do_batch();
|
||||
undef @batch_list;
|
||||
}
|
||||
}
|
||||
|
||||
if ($short_print) {
|
||||
$item = $file;
|
||||
} else {
|
||||
$item = $pathfile;
|
||||
}
|
||||
|
||||
if ($find_mode) {
|
||||
print "$item\n";
|
||||
} else {
|
||||
$type = $messages{$type}
|
||||
if ($explain_type);
|
||||
print "$type $item\n";
|
||||
}
|
||||
}
|
||||
|
||||
# load entries from CVS/Entries and CVS/Entries.Log
|
||||
# Parameter 1: file name for CVS/Entries
|
||||
# Return: list of entries in the format used in CVS/Entries
|
||||
sub load_entries ($);
|
||||
sub load_entries ($)
|
||||
{
|
||||
my $entries_file = shift (@_);
|
||||
my $entries_log_file = "$entries_file.Log";
|
||||
my %ent = ();
|
||||
|
||||
unless (open (ENTRIES, "< $entries_file")) {
|
||||
error ("couldn't open $entries_file: $!");
|
||||
}
|
||||
while (<ENTRIES>) {
|
||||
chomp;
|
||||
$ent{$_} = 1;
|
||||
}
|
||||
close (ENTRIES);
|
||||
|
||||
if (open (ENTRIES, "< $entries_log_file")) {
|
||||
while (<ENTRIES>) {
|
||||
chomp;
|
||||
if ( m{^A (.+)} ) {
|
||||
$ent{$1} = 1;
|
||||
} elsif ( m{^R (.+)} ) {
|
||||
delete $ent{$1};
|
||||
} else {
|
||||
# Note: "cvs commit" helps even when you are offline
|
||||
error ("$entries_log_file:$.: unrecognizable line, " .
|
||||
"try \"cvs commit\"");
|
||||
}
|
||||
}
|
||||
close (ENTRIES);
|
||||
}
|
||||
|
||||
return keys %ent;
|
||||
}
|
||||
|
||||
# process one directory
|
||||
# Parameter 1: directory name
|
||||
sub process_arg ($);
|
||||
sub process_arg ($)
|
||||
{
|
||||
my $arg = shift (@_);
|
||||
my %found_files = ();
|
||||
|
||||
# $file, $curr_dir, and $ignore_rx must be seen in file_status
|
||||
local $file = "";
|
||||
local $ignore_rx = "";
|
||||
local $single_filename = 0;
|
||||
|
||||
if ( $arg eq "" or -d $arg ) {
|
||||
$curr_dir = $arg;
|
||||
my $real_curr_dir = $curr_dir eq "" ? "." : $curr_dir;
|
||||
|
||||
error ("$real_curr_dir is not a directory")
|
||||
unless ( -d $real_curr_dir );
|
||||
|
||||
# Scan present files.
|
||||
file_status (".");
|
||||
opendir (DIR, $real_curr_dir) ||
|
||||
error ("couldn't open directory $real_curr_dir: $!");
|
||||
foreach (readdir (DIR)) {
|
||||
$found_files {$_} = 1;
|
||||
}
|
||||
closedir (DIR);
|
||||
} else {
|
||||
$single_filename = basename $arg;
|
||||
$curr_dir = dirname $arg;
|
||||
$found_files{$single_filename} = 1 if lstat $arg;
|
||||
}
|
||||
|
||||
$curr_dir .= "/"
|
||||
unless ( $curr_dir eq "" || $curr_dir =~ m{/$} );
|
||||
|
||||
# Scan CVS/Entries.
|
||||
my %entries = ();
|
||||
my %subdirs = ();
|
||||
my %removed = ();
|
||||
|
||||
foreach ( load_entries ("${curr_dir}CVS/Entries") ) {
|
||||
if ( m{^D/([^/]+)/} ) {
|
||||
$subdirs{$1} = SUBDIR_FOUND if !$single_filename;
|
||||
} elsif ( m{^/([^/]+)/([^/])[^/]*/([^/]*)/} ) {
|
||||
if ( !$single_filename or $single_filename eq $1 ) {
|
||||
$entries{$1} = $3;
|
||||
$removed{$1} = 1
|
||||
if $2 eq '-';
|
||||
}
|
||||
} elsif ( m{^D$} ) {
|
||||
next;
|
||||
} else {
|
||||
error ("${curr_dir}CVS/Entries: unrecognizable line");
|
||||
}
|
||||
}
|
||||
|
||||
if ( $single_filename && !$entries{$single_filename} &&
|
||||
!$found_files{$single_filename} ) {
|
||||
error ("nothing known about $arg");
|
||||
}
|
||||
|
||||
# Scan .cvsignore if any
|
||||
unless ($no_cvsignore) {
|
||||
my (@ignore_list) = ();
|
||||
|
||||
if (-f "${curr_dir}.cvsignore") {
|
||||
open (CVSIGNORE, "< ${curr_dir}.cvsignore")
|
||||
|| error ("couldn't open ${curr_dir}.cvsignore: $!");
|
||||
while (<CVSIGNORE>) {
|
||||
push (@ignore_list, split);
|
||||
}
|
||||
close (CVSIGNORE);
|
||||
}
|
||||
|
||||
my ($iter);
|
||||
foreach $iter (@ignore_list, @common_ignores) {
|
||||
if ($iter eq '!') {
|
||||
$ignore_rx = ''
|
||||
} else {
|
||||
if ($ignore_rx eq '') {
|
||||
$ignore_rx = '^(';
|
||||
} else {
|
||||
$ignore_rx .= '|';
|
||||
}
|
||||
$ignore_rx .= glob_to_rx ($iter);
|
||||
}
|
||||
}
|
||||
$ignore_rx .= ')$'
|
||||
if $ignore_rx ne '';
|
||||
}
|
||||
|
||||
# File is missing
|
||||
foreach $file (sort keys %entries) {
|
||||
unless ($found_files{$file}) {
|
||||
if ($removed{$file}) {
|
||||
file_status("R");
|
||||
} else {
|
||||
file_status("U");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
foreach $file (sort keys %found_files) {
|
||||
next if ($file eq '.' || $file eq '..');
|
||||
lstat ($curr_dir . $file) ||
|
||||
error ("lstat() failed on $curr_dir . $file");
|
||||
if (! $nolinks && -l _) {
|
||||
file_status ("L");
|
||||
} elsif (-d _) {
|
||||
if ($file eq 'CVS') {
|
||||
file_status ("C");
|
||||
} elsif ($subdirs{$file}) {
|
||||
$subdirs{$file} = SUBDIR_CVS;
|
||||
} else {
|
||||
file_status ("D"); # Unknown directory
|
||||
}
|
||||
} elsif (! (-f _) && ! (-l _)) {
|
||||
file_status ("S"); # This must be something very special
|
||||
} elsif (! $nolinks && (stat _) [3] > 1 ) {
|
||||
file_status ("H"); # Hard link
|
||||
} elsif (! $entries{$file}) {
|
||||
file_status ("?");
|
||||
} elsif ($entries{$file} =~ /^Initial |^dummy /) {
|
||||
file_status ("A");
|
||||
} elsif ($entries{$file} =~ /^Result of merge/) {
|
||||
file_status ("G");
|
||||
} elsif ($entries{$file} !~
|
||||
/^(...) (...) (..) (..):(..):(..) (....)$/) {
|
||||
error ("Invalid timestamp for $curr_dir$file: $entries{$file}");
|
||||
} else {
|
||||
my $cvtime = timegm($6, $5, $4, $3, $months{$2}, $7 - 1900);
|
||||
my $mtime = (stat _) [9];
|
||||
if ($cvtime == $mtime) {
|
||||
file_status ("F");
|
||||
} elsif ($cvtime < $mtime) {
|
||||
file_status ("M");
|
||||
} else {
|
||||
file_status ("O");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Now do directories.
|
||||
unless ($no_recurse) {
|
||||
my $save_curr_dir = $curr_dir;
|
||||
foreach $file (sort keys %subdirs) {
|
||||
if ($subdirs{$file} == SUBDIR_FOUND) {
|
||||
$curr_dir = $save_curr_dir;
|
||||
file_status ("X");
|
||||
} elsif ($subdirs{$file} == SUBDIR_CVS) {
|
||||
process_arg ($save_curr_dir . $file)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Turn a glob into a regexp without recognizing square brackets.
|
||||
sub glob_to_rx_simple ($)
|
||||
{
|
||||
my ($expr) = @_;
|
||||
# Quote all non-word characters, convert ? to . and * to .*
|
||||
$expr =~ s/(\W)/\\$1/g;
|
||||
$expr =~ s/\\\*/.*/g;
|
||||
$expr =~ s/\\\?/./g;
|
||||
return $expr;
|
||||
}
|
||||
|
||||
# Turn a glob into a regexp
|
||||
sub glob_to_rx ($)
|
||||
{
|
||||
my $result = '';
|
||||
my ($expr) = @_;
|
||||
# Find parts in square brackets and copy them literally
|
||||
# Text outside brackets is processed by glob_to_rx_simple()
|
||||
while ($expr ne '') {
|
||||
if ($expr =~ /^(.*?)(\[.*?\])(.*)/) {
|
||||
$expr = $3;
|
||||
$result .= glob_to_rx_simple ($1) . $2;
|
||||
} else {
|
||||
$result .= glob_to_rx_simple ($expr);
|
||||
last;
|
||||
}
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
sub Main ()
|
||||
{
|
||||
# types of files to be listed
|
||||
$list_types = "^.FCL";
|
||||
|
||||
# long status messages
|
||||
%messages = (
|
||||
"?" => "Unlisted file",
|
||||
"." => "Known directory",
|
||||
"F" => "Up-to-date file",
|
||||
"C" => "CVS admin directory",
|
||||
"M" => "Modified file",
|
||||
"S" => "Special file",
|
||||
"D" => "Unlisted directory",
|
||||
"L" => "Symbolic link",
|
||||
"H" => "Hard link",
|
||||
"U" => "Lost file",
|
||||
"X" => "Lost directory",
|
||||
"A" => "Newly added",
|
||||
"O" => "Older copy",
|
||||
"G" => "Result of merge",
|
||||
"R" => "Removed file"
|
||||
);
|
||||
|
||||
undef @batch_list; # List of files for batch processing
|
||||
undef $batch_cmd; # Command to be executed on files
|
||||
$no_recurse = 0; # If this is set, do only local files
|
||||
$explain_type = 0; # Verbosely print status of files
|
||||
$find_mode = 0; # Don't print status at all
|
||||
$short_print = 0; # Print only filenames without path
|
||||
$no_cvsignore = 0; # Ignore .cvsignore
|
||||
$nolinks = 0; # Do not test for soft- or hard-links
|
||||
my $want_msg = 0; # List possible filetypes and exit
|
||||
my $want_help = 0; # Print help and exit
|
||||
my $want_ver = 0; # Print version and exit
|
||||
|
||||
my %options = (
|
||||
"types=s" => \$list_types,
|
||||
"batch=s" => \$batch_cmd,
|
||||
"local" => \$no_recurse,
|
||||
"explain" => \$explain_type,
|
||||
"find" => \$find_mode,
|
||||
"short" => \$short_print,
|
||||
"ignore" => \$no_cvsignore,
|
||||
"messages" => \$want_msg,
|
||||
"nolinks" => \$nolinks,
|
||||
"help" => \$want_help,
|
||||
"version" => \$want_ver
|
||||
);
|
||||
|
||||
GetOptions(%options);
|
||||
|
||||
adjust_types();
|
||||
|
||||
list_messages() if $want_msg;
|
||||
usage() if $want_help;
|
||||
version() if $want_ver;
|
||||
|
||||
unless ($no_cvsignore) {
|
||||
init_ignores();
|
||||
}
|
||||
|
||||
if ($#ARGV < 0) {
|
||||
@ARGV = ("");
|
||||
}
|
||||
|
||||
foreach (@ARGV) {
|
||||
process_arg ($_);
|
||||
}
|
||||
|
||||
if ($#batch_list >= 0) {
|
||||
do_batch();
|
||||
}
|
||||
}
|
||||
|
||||
Main();
|
||||
@@ -1,9 +1,10 @@
|
||||
#! /bin/sh
|
||||
# depcomp - compile a program generating dependencies as side-effects
|
||||
|
||||
scriptversion=2005-07-09.11
|
||||
scriptversion=2006-07-09.11
|
||||
|
||||
# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006 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
|
||||
@@ -276,6 +277,46 @@ icc)
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
hp2)
|
||||
# The "hp" stanza above does not work with aCC (C++) and HP's ia64
|
||||
# compilers, which have integrated preprocessors. The correct option
|
||||
# to use with these is +Maked; it writes dependencies to a file named
|
||||
# 'foo.d', which lands next to the object file, wherever that
|
||||
# happens to be.
|
||||
# Much of this is similar to the tru64 case; see comments there.
|
||||
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
|
||||
test "x$dir" = "x$object" && dir=
|
||||
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
|
||||
if test "$libtool" = yes; then
|
||||
tmpdepfile1=$dir$base.d
|
||||
tmpdepfile2=$dir.libs/$base.d
|
||||
"$@" -Wc,+Maked
|
||||
else
|
||||
tmpdepfile1=$dir$base.d
|
||||
tmpdepfile2=$dir$base.d
|
||||
"$@" +Maked
|
||||
fi
|
||||
stat=$?
|
||||
if test $stat -eq 0; then :
|
||||
else
|
||||
rm -f "$tmpdepfile1" "$tmpdepfile2"
|
||||
exit $stat
|
||||
fi
|
||||
|
||||
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
|
||||
do
|
||||
test -f "$tmpdepfile" && break
|
||||
done
|
||||
if test -f "$tmpdepfile"; then
|
||||
sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
|
||||
# Add `dependent.h:' lines.
|
||||
sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile"
|
||||
else
|
||||
echo "#dummy" > "$depfile"
|
||||
fi
|
||||
rm -f "$tmpdepfile" "$tmpdepfile2"
|
||||
;;
|
||||
|
||||
tru64)
|
||||
# The Tru64 compiler uses -MD to generate dependencies as a side
|
||||
# effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
|
||||
@@ -288,13 +329,13 @@ tru64)
|
||||
|
||||
if test "$libtool" = yes; then
|
||||
# With Tru64 cc, shared objects can also be used to make a
|
||||
# static library. This mecanism is used in libtool 1.4 series to
|
||||
# static library. This mechanism is used in libtool 1.4 series to
|
||||
# handle both shared and static libraries in a single compilation.
|
||||
# With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
|
||||
#
|
||||
# With libtool 1.5 this exception was removed, and libtool now
|
||||
# generates 2 separate objects for the 2 libraries. These two
|
||||
# compilations output dependencies in in $dir.libs/$base.o.d and
|
||||
# compilations output dependencies in $dir.libs/$base.o.d and
|
||||
# in $dir$base.o.d. We have to check for both files, because
|
||||
# one of the two compilations can be disabled. We should prefer
|
||||
# $dir$base.o.d over $dir.libs/$base.o.d because the latter is
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/bin/sh
|
||||
# install - install a program, script, or datafile
|
||||
|
||||
scriptversion=2005-09-13.16
|
||||
scriptversion=2006-05-11.20
|
||||
|
||||
# This originates from X11R5 (mit/util/scripts/install.sh), which was
|
||||
# later released in X11R6 (xc/config/util/install.sh) with the
|
||||
@@ -39,15 +39,24 @@ scriptversion=2005-09-13.16
|
||||
# when there is no Makefile.
|
||||
#
|
||||
# This script is compatible with the BSD install script, but was written
|
||||
# from scratch. It can only install one file at a time, a restriction
|
||||
# shared with many OS's install programs.
|
||||
# from scratch.
|
||||
|
||||
nl='
|
||||
'
|
||||
IFS=" "" $nl"
|
||||
|
||||
# set DOITPROG to echo to test this script
|
||||
|
||||
# Don't use :- since 4.3BSD and earlier shells don't like it.
|
||||
doit="${DOITPROG-}"
|
||||
if test -z "$doit"; then
|
||||
doit_exec=exec
|
||||
else
|
||||
doit_exec=$doit
|
||||
fi
|
||||
|
||||
# put in absolute paths if you don't have them in your path; or use env. vars.
|
||||
# Put in absolute file names if you don't have them in your path;
|
||||
# or use environment vars.
|
||||
|
||||
mvprog="${MVPROG-mv}"
|
||||
cpprog="${CPPROG-cp}"
|
||||
@@ -61,17 +70,9 @@ mkdirprog="${MKDIRPROG-mkdir}"
|
||||
posix_glob=
|
||||
posix_mkdir=
|
||||
|
||||
# Symbolic mode for testing mkdir with directories.
|
||||
# It is the same as 755, but also tests that "u+" works.
|
||||
test_mode=u=rwx,g=rx,o=rx,u+wx
|
||||
|
||||
# Desired mode of installed file.
|
||||
mode=0755
|
||||
|
||||
# Desired mode of newly created intermediate directories.
|
||||
# It is empty if not known yet.
|
||||
intermediate_mode=
|
||||
|
||||
chmodcmd=$chmodprog
|
||||
chowncmd=
|
||||
chgrpcmd=
|
||||
@@ -109,7 +110,7 @@ Environment variables override the default commands:
|
||||
CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG
|
||||
"
|
||||
|
||||
while test -n "$1"; do
|
||||
while test $# -ne 0; do
|
||||
case $1 in
|
||||
-c) shift
|
||||
continue;;
|
||||
@@ -128,6 +129,12 @@ while test -n "$1"; do
|
||||
-m) mode=$2
|
||||
shift
|
||||
shift
|
||||
case $mode in
|
||||
*' '* | *' '* | *'
|
||||
'* | *'*'* | *'?'* | *'['*)
|
||||
echo "$0: invalid mode: $mode" >&2
|
||||
exit 1;;
|
||||
esac
|
||||
continue;;
|
||||
|
||||
-o) chowncmd="$chownprog $2"
|
||||
@@ -150,25 +157,33 @@ while test -n "$1"; do
|
||||
|
||||
--version) echo "$0 $scriptversion"; exit $?;;
|
||||
|
||||
*) # When -d is used, all remaining arguments are directories to create.
|
||||
# When -t is used, the destination is already specified.
|
||||
test -n "$dir_arg$dstarg" && break
|
||||
# Otherwise, the last argument is the destination. Remove it from $@.
|
||||
for arg
|
||||
do
|
||||
if test -n "$dstarg"; then
|
||||
# $@ is not empty: it contains at least $arg.
|
||||
set fnord "$@" "$dstarg"
|
||||
shift # fnord
|
||||
fi
|
||||
shift # arg
|
||||
dstarg=$arg
|
||||
done
|
||||
--) shift
|
||||
break;;
|
||||
|
||||
-*) echo "$0: invalid option: $1" >&2
|
||||
exit 1;;
|
||||
|
||||
*) break;;
|
||||
esac
|
||||
done
|
||||
|
||||
if test -z "$1"; then
|
||||
if test $# -ne 0 && test -z "$dir_arg$dstarg"; then
|
||||
# When -d is used, all remaining arguments are directories to create.
|
||||
# When -t is used, the destination is already specified.
|
||||
# Otherwise, the last argument is the destination. Remove it from $@.
|
||||
for arg
|
||||
do
|
||||
if test -n "$dstarg"; then
|
||||
# $@ is not empty: it contains at least $arg.
|
||||
set fnord "$@" "$dstarg"
|
||||
shift # fnord
|
||||
fi
|
||||
shift # arg
|
||||
dstarg=$arg
|
||||
done
|
||||
fi
|
||||
|
||||
if test $# -eq 0; then
|
||||
if test -z "$dir_arg"; then
|
||||
echo "$0: no input file specified." >&2
|
||||
exit 1
|
||||
@@ -178,7 +193,32 @@ if test -z "$1"; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
test -n "$dir_arg" || trap '(exit $?); exit' 1 2 13 15
|
||||
if test -z "$dir_arg"; then
|
||||
trap '(exit $?); exit' 1 2 13 15
|
||||
|
||||
# Set umask so as not to create temps with too-generous modes.
|
||||
# However, 'strip' requires both read and write access to temps.
|
||||
case $mode in
|
||||
# Optimize common cases.
|
||||
*644) cp_umask=133;;
|
||||
*755) cp_umask=22;;
|
||||
|
||||
*[0-7])
|
||||
if test -z "$stripcmd"; then
|
||||
u_plus_rw=
|
||||
else
|
||||
u_plus_rw='% 200'
|
||||
fi
|
||||
cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
|
||||
*)
|
||||
if test -z "$stripcmd"; then
|
||||
u_plus_rw=
|
||||
else
|
||||
u_plus_rw=,u+rw
|
||||
fi
|
||||
cp_umask=$mode$u_plus_rw;;
|
||||
esac
|
||||
fi
|
||||
|
||||
for src
|
||||
do
|
||||
@@ -230,14 +270,25 @@ do
|
||||
expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
|
||||
X"$dst" : 'X\(//\)[^/]' \| \
|
||||
X"$dst" : 'X\(//\)$' \| \
|
||||
X"$dst" : 'X\(/\)' \| \
|
||||
. : '\(.\)' 2>/dev/null ||
|
||||
X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
|
||||
echo X"$dst" |
|
||||
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
|
||||
/^X\(\/\/\)[^/].*/{ s//\1/; q; }
|
||||
/^X\(\/\/\)$/{ s//\1/; q; }
|
||||
/^X\(\/\).*/{ s//\1/; q; }
|
||||
s/.*/./; q'
|
||||
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
|
||||
s//\1/
|
||||
q
|
||||
}
|
||||
/^X\(\/\/\)[^/].*/{
|
||||
s//\1/
|
||||
q
|
||||
}
|
||||
/^X\(\/\/\)$/{
|
||||
s//\1/
|
||||
q
|
||||
}
|
||||
/^X\(\/\).*/{
|
||||
s//\1/
|
||||
q
|
||||
}
|
||||
s/.*/./; q'
|
||||
`
|
||||
|
||||
test -d "$dstdir"
|
||||
@@ -250,51 +301,72 @@ do
|
||||
if test $dstdir_status != 0; then
|
||||
case $posix_mkdir in
|
||||
'')
|
||||
posix_mkdir=false
|
||||
if $mkdirprog -m $test_mode -p -- / >/dev/null 2>&1; then
|
||||
posix_mkdir=true
|
||||
# Create intermediate dirs using mode 755 as modified by the umask.
|
||||
# This is like FreeBSD 'install' as of 1997-10-28.
|
||||
umask=`umask`
|
||||
case $stripcmd.$umask in
|
||||
# Optimize common cases.
|
||||
*[2367][2367]) mkdir_umask=$umask;;
|
||||
.*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
|
||||
|
||||
*[0-7])
|
||||
mkdir_umask=`expr $umask + 22 \
|
||||
- $umask % 100 % 40 + $umask % 20 \
|
||||
- $umask % 10 % 4 + $umask % 2
|
||||
`;;
|
||||
*) mkdir_umask=$umask,go-w;;
|
||||
esac
|
||||
|
||||
# With -d, create the new directory with the user-specified mode.
|
||||
# Otherwise, rely on $mkdir_umask.
|
||||
if test -n "$dir_arg"; then
|
||||
mkdir_mode=-m$mode
|
||||
else
|
||||
# Remove any dirs left behind by ancient mkdir implementations.
|
||||
rmdir ./-m "$test_mode" ./-p ./-- 2>/dev/null
|
||||
fi ;;
|
||||
mkdir_mode=
|
||||
fi
|
||||
|
||||
posix_mkdir=false
|
||||
case $umask in
|
||||
*[123567][0-7][0-7])
|
||||
# POSIX mkdir -p sets u+wx bits regardless of umask, which
|
||||
# is incompatible with FreeBSD 'install' when (umask & 300) != 0.
|
||||
;;
|
||||
*)
|
||||
tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
|
||||
trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
|
||||
|
||||
if (umask $mkdir_umask &&
|
||||
exec $mkdirprog $mkdir_mode -p -- / "$tmpdir/d") >/dev/null 2>&1
|
||||
then
|
||||
# Check for bugs in HP-UX 11.23 and IRIX 6.5 mkdir.
|
||||
case `ls -ld "$tmpdir"` in
|
||||
d????-??-* ) posix_mkdir=:;;
|
||||
esac
|
||||
rmdir "$tmpdir/d" "$tmpdir"
|
||||
else
|
||||
# Remove any dirs left behind by ancient mkdir implementations.
|
||||
rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
|
||||
fi
|
||||
trap '' 0;;
|
||||
esac;;
|
||||
esac
|
||||
|
||||
if
|
||||
$posix_mkdir && {
|
||||
|
||||
# With -d, create the new directory with the user-specified mode.
|
||||
# Otherwise, create it using the same intermediate mode that
|
||||
# mkdir -p would use when creating intermediate directories.
|
||||
# POSIX says that this mode is "$(umask -S),u+wx", so use that
|
||||
# if umask -S works.
|
||||
|
||||
if test -n "$dir_arg"; then
|
||||
mkdir_mode=$mode
|
||||
else
|
||||
case $intermediate_mode in
|
||||
'')
|
||||
if umask_S=`(umask -S) 2>/dev/null`; then
|
||||
intermediate_mode=$umask_S,u+wx
|
||||
else
|
||||
intermediate_mode=$test_mode
|
||||
fi ;;
|
||||
esac
|
||||
mkdir_mode=$intermediate_mode
|
||||
fi
|
||||
|
||||
$mkdirprog -m "$mkdir_mode" -p -- "$dstdir"
|
||||
}
|
||||
$posix_mkdir && (
|
||||
umask $mkdir_umask &&
|
||||
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
|
||||
)
|
||||
then :
|
||||
else
|
||||
|
||||
# mkdir does not conform to POSIX, or it failed possibly due to
|
||||
# a race condition. Create the directory the slow way, step by
|
||||
# step, checking for races as we go.
|
||||
# The umask is ridiculous, or mkdir does not conform to POSIX,
|
||||
# or it failed possibly due to a race condition. Create the
|
||||
# directory the slow way, step by step, checking for races as we go.
|
||||
|
||||
case $dstdir in
|
||||
/*) pathcomp=/ ;;
|
||||
-*) pathcomp=./ ;;
|
||||
*) pathcomp= ;;
|
||||
/*) prefix=/ ;;
|
||||
-*) prefix=./ ;;
|
||||
*) prefix= ;;
|
||||
esac
|
||||
|
||||
case $posix_glob in
|
||||
@@ -314,19 +386,39 @@ do
|
||||
$posix_glob && set +f
|
||||
IFS=$oIFS
|
||||
|
||||
prefixes=
|
||||
|
||||
for d
|
||||
do
|
||||
test "x$d" = x && continue
|
||||
test -z "$d" && continue
|
||||
|
||||
pathcomp=$pathcomp$d
|
||||
if test ! -d "$pathcomp"; then
|
||||
$mkdirprog "$pathcomp"
|
||||
# Don't fail if two instances are running concurrently.
|
||||
test -d "$pathcomp" || exit 1
|
||||
prefix=$prefix$d
|
||||
if test -d "$prefix"; then
|
||||
prefixes=
|
||||
else
|
||||
if $posix_mkdir; then
|
||||
(umask=$mkdir_umask &&
|
||||
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
|
||||
# Don't fail if two instances are running concurrently.
|
||||
test -d "$prefix" || exit 1
|
||||
else
|
||||
case $prefix in
|
||||
*\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
|
||||
*) qprefix=$prefix;;
|
||||
esac
|
||||
prefixes="$prefixes '$qprefix'"
|
||||
fi
|
||||
fi
|
||||
pathcomp=$pathcomp/
|
||||
prefix=$prefix/
|
||||
done
|
||||
obsolete_mkdir_used=true
|
||||
|
||||
if test -n "$prefixes"; then
|
||||
# Don't fail if two instances are running concurrently.
|
||||
(umask $mkdir_umask &&
|
||||
eval "\$doit_exec \$mkdirprog $prefixes") ||
|
||||
test -d "$dstdir" || exit 1
|
||||
obsolete_mkdir_used=true
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -334,7 +426,7 @@ do
|
||||
{ test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
|
||||
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
|
||||
{ test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
|
||||
test -z "$chmodcmd" || $doit $chmodcmd "$mode" "$dst"; } || exit 1
|
||||
test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
|
||||
else
|
||||
|
||||
# Make a couple of temp file names in the proper directory.
|
||||
@@ -345,7 +437,7 @@ do
|
||||
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
|
||||
|
||||
# Copy the file name to the temp name.
|
||||
$doit $cpprog "$src" "$dsttmp" &&
|
||||
(umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
|
||||
|
||||
# and set any options; do chmod last to preserve setuid bits.
|
||||
#
|
||||
@@ -356,7 +448,7 @@ do
|
||||
{ test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \
|
||||
&& { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \
|
||||
&& { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \
|
||||
&& { test -z "$chmodcmd" || $doit $chmodcmd "$mode" "$dsttmp"; } &&
|
||||
&& { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
|
||||
|
||||
# Now rename the file to the real destination.
|
||||
{ $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null \
|
||||
@@ -389,7 +481,7 @@ do
|
||||
}
|
||||
} || exit 1
|
||||
|
||||
trap - 0
|
||||
trap '' 0
|
||||
fi
|
||||
done
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
#! /bin/sh
|
||||
# Common stub for a few missing GNU programs while installing.
|
||||
|
||||
scriptversion=2005-06-08.21
|
||||
scriptversion=2006-05-10.23
|
||||
|
||||
# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005
|
||||
# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006
|
||||
# Free Software Foundation, Inc.
|
||||
# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
|
||||
|
||||
@@ -33,6 +33,8 @@ if test $# -eq 0; then
|
||||
fi
|
||||
|
||||
run=:
|
||||
sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
|
||||
sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
|
||||
|
||||
# In the cases where this matters, `missing' is being run in the
|
||||
# srcdir already.
|
||||
@@ -44,7 +46,7 @@ fi
|
||||
|
||||
msg="missing on your system"
|
||||
|
||||
case "$1" in
|
||||
case $1 in
|
||||
--run)
|
||||
# Try to run requested program, and just exit if it succeeds.
|
||||
run=
|
||||
@@ -77,6 +79,7 @@ Supported PROGRAM values:
|
||||
aclocal touch file \`aclocal.m4'
|
||||
autoconf touch file \`configure'
|
||||
autoheader touch file \`config.h.in'
|
||||
autom4te touch the output file, or create a stub one
|
||||
automake touch all \`Makefile.in' files
|
||||
bison create \`y.tab.[ch]', if possible, from existing .[ch]
|
||||
flex create \`lex.yy.c', if possible, from existing .c
|
||||
@@ -106,7 +109,7 @@ esac
|
||||
# Now exit if we have it, but it failed. Also exit now if we
|
||||
# don't have it and --version was passed (most likely to detect
|
||||
# the program).
|
||||
case "$1" in
|
||||
case $1 in
|
||||
lex|yacc)
|
||||
# Not GNU programs, they don't have --version.
|
||||
;;
|
||||
@@ -135,7 +138,7 @@ esac
|
||||
|
||||
# If it does not exist, or fails to run (possibly an outdated version),
|
||||
# try to emulate it.
|
||||
case "$1" in
|
||||
case $1 in
|
||||
aclocal*)
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is $msg. You should only need it if
|
||||
@@ -164,7 +167,7 @@ WARNING: \`$1' is $msg. You should only need it if
|
||||
test -z "$files" && files="config.h"
|
||||
touch_files=
|
||||
for f in $files; do
|
||||
case "$f" in
|
||||
case $f in
|
||||
*:*) touch_files="$touch_files "`echo "$f" |
|
||||
sed -e 's/^[^:]*://' -e 's/:.*//'`;;
|
||||
*) touch_files="$touch_files $f.in";;
|
||||
@@ -192,8 +195,8 @@ WARNING: \`$1' is needed, but is $msg.
|
||||
You can get \`$1' as part of \`Autoconf' from any GNU
|
||||
archive site."
|
||||
|
||||
file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'`
|
||||
test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'`
|
||||
file=`echo "$*" | sed -n "$sed_output"`
|
||||
test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
|
||||
if test -f "$file"; then
|
||||
touch $file
|
||||
else
|
||||
@@ -214,25 +217,25 @@ WARNING: \`$1' $msg. You should only need it if
|
||||
in order for those modifications to take effect. You can get
|
||||
\`Bison' from any GNU archive site."
|
||||
rm -f y.tab.c y.tab.h
|
||||
if [ $# -ne 1 ]; then
|
||||
if test $# -ne 1; then
|
||||
eval LASTARG="\${$#}"
|
||||
case "$LASTARG" in
|
||||
case $LASTARG in
|
||||
*.y)
|
||||
SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
|
||||
if [ -f "$SRCFILE" ]; then
|
||||
if test -f "$SRCFILE"; then
|
||||
cp "$SRCFILE" y.tab.c
|
||||
fi
|
||||
SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
|
||||
if [ -f "$SRCFILE" ]; then
|
||||
if test -f "$SRCFILE"; then
|
||||
cp "$SRCFILE" y.tab.h
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
if [ ! -f y.tab.h ]; then
|
||||
if test ! -f y.tab.h; then
|
||||
echo >y.tab.h
|
||||
fi
|
||||
if [ ! -f y.tab.c ]; then
|
||||
if test ! -f y.tab.c; then
|
||||
echo 'main() { return 0; }' >y.tab.c
|
||||
fi
|
||||
;;
|
||||
@@ -244,18 +247,18 @@ WARNING: \`$1' is $msg. You should only need it if
|
||||
in order for those modifications to take effect. You can get
|
||||
\`Flex' from any GNU archive site."
|
||||
rm -f lex.yy.c
|
||||
if [ $# -ne 1 ]; then
|
||||
if test $# -ne 1; then
|
||||
eval LASTARG="\${$#}"
|
||||
case "$LASTARG" in
|
||||
case $LASTARG in
|
||||
*.l)
|
||||
SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
|
||||
if [ -f "$SRCFILE" ]; then
|
||||
if test -f "$SRCFILE"; then
|
||||
cp "$SRCFILE" lex.yy.c
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
if [ ! -f lex.yy.c ]; then
|
||||
if test ! -f lex.yy.c; then
|
||||
echo 'main() { return 0; }' >lex.yy.c
|
||||
fi
|
||||
;;
|
||||
@@ -267,11 +270,9 @@ WARNING: \`$1' is $msg. You should only need it if
|
||||
\`Help2man' package in order for those modifications to take
|
||||
effect. You can get \`Help2man' from any GNU archive site."
|
||||
|
||||
file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
|
||||
if test -z "$file"; then
|
||||
file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'`
|
||||
fi
|
||||
if [ -f "$file" ]; then
|
||||
file=`echo "$*" | sed -n "$sed_output"`
|
||||
test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
|
||||
if test -f "$file"; then
|
||||
touch $file
|
||||
else
|
||||
test -z "$file" || exec >$file
|
||||
@@ -289,11 +290,17 @@ WARNING: \`$1' is $msg. You should only need it if
|
||||
DU, IRIX). You might want to install the \`Texinfo' package or
|
||||
the \`GNU make' package. Grab either from any GNU archive site."
|
||||
# The file to touch is that specified with -o ...
|
||||
file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
|
||||
file=`echo "$*" | sed -n "$sed_output"`
|
||||
test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
|
||||
if test -z "$file"; then
|
||||
# ... or it is the one specified with @setfilename ...
|
||||
infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
|
||||
file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $infile`
|
||||
file=`sed -n '
|
||||
/^@setfilename/{
|
||||
s/.* \([^ ]*\) *$/\1/
|
||||
p
|
||||
q
|
||||
}' $infile`
|
||||
# ... or it is derived from the source name (dir/f.texi becomes f.info)
|
||||
test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
|
||||
fi
|
||||
@@ -317,13 +324,13 @@ WARNING: \`$1' is $msg. You should only need it if
|
||||
fi
|
||||
firstarg="$1"
|
||||
if shift; then
|
||||
case "$firstarg" in
|
||||
case $firstarg in
|
||||
*o*)
|
||||
firstarg=`echo "$firstarg" | sed s/o//`
|
||||
tar "$firstarg" "$@" && exit 0
|
||||
;;
|
||||
esac
|
||||
case "$firstarg" in
|
||||
case $firstarg in
|
||||
*h*)
|
||||
firstarg=`echo "$firstarg" | sed s/h//`
|
||||
tar "$firstarg" "$@" && exit 0
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#! /bin/sh
|
||||
# mkinstalldirs --- make directory hierarchy
|
||||
|
||||
scriptversion=2005-06-29.22
|
||||
scriptversion=2006-05-11.19
|
||||
|
||||
# Original author: Noah Friedman <friedman@prep.ai.mit.edu>
|
||||
# Created: 1993-05-16
|
||||
@@ -11,6 +11,9 @@ scriptversion=2005-06-29.22
|
||||
# bugs to <bug-automake@gnu.org> or send patches to
|
||||
# <automake-patches@gnu.org>.
|
||||
|
||||
nl='
|
||||
'
|
||||
IFS=" "" $nl"
|
||||
errstatus=0
|
||||
dirmode=
|
||||
|
||||
|
||||
@@ -3,11 +3,11 @@
|
||||
% Load plain if necessary, i.e., if running under initex.
|
||||
\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
|
||||
%
|
||||
\def\texinfoversion{2005-10-10.17}
|
||||
\def\texinfoversion{2006-07-17.16}
|
||||
%
|
||||
% Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
|
||||
% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software
|
||||
% Foundation, Inc.
|
||||
% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free
|
||||
% Software Foundation, Inc.
|
||||
%
|
||||
% This texinfo.tex file is free software; you can redistribute it and/or
|
||||
% modify it under the terms of the GNU General Public License as
|
||||
@@ -293,6 +293,13 @@
|
||||
% before the \shipout runs.
|
||||
%
|
||||
\indexdummies % don't expand commands in the output.
|
||||
\normalturnoffactive % \ in index entries must not stay \, e.g., if
|
||||
% the page break happens to be in the middle of an example.
|
||||
% We don't want .vr (or whatever) entries like this:
|
||||
% \entry{{\tt \indexbackslash }acronym}{32}{\code {\acronym}}
|
||||
% "\acronym" won't work when it's read back in;
|
||||
% it needs to be
|
||||
% {\code {{\tt \backslashcurfont }acronym}
|
||||
\shipout\vbox{%
|
||||
% Do this early so pdf references go to the beginning of the page.
|
||||
\ifpdfmakepagedest \pdfdest name{\the\pageno} xyz\fi
|
||||
@@ -320,9 +327,9 @@
|
||||
\pagebody{#1}%
|
||||
\ifdim\ht\footlinebox > 0pt
|
||||
% Only leave this space if the footline is nonempty.
|
||||
% (We lessened \vsize for it in \oddfootingxxx.)
|
||||
% (We lessened \vsize for it in \oddfootingyyy.)
|
||||
% The \baselineskip=24pt in plain's \makefootline has no effect.
|
||||
\vskip 2\baselineskip
|
||||
\vskip 24pt
|
||||
\unvbox\footlinebox
|
||||
\fi
|
||||
%
|
||||
@@ -378,7 +385,7 @@
|
||||
%
|
||||
\def\parsearg{\parseargusing{}}
|
||||
\def\parseargusing#1#2{%
|
||||
\def\next{#2}%
|
||||
\def\argtorun{#2}%
|
||||
\begingroup
|
||||
\obeylines
|
||||
\spaceisspace
|
||||
@@ -409,8 +416,7 @@
|
||||
\def\argcheckspacesY#1\^^M#2\^^M#3\ArgTerm{%
|
||||
\def\temp{#3}%
|
||||
\ifx\temp\empty
|
||||
% We cannot use \next here, as it holds the macro to run;
|
||||
% thus we reuse \temp.
|
||||
% Do not use \next, perhaps the caller of \parsearg uses it; reuse \temp:
|
||||
\let\temp\finishparsearg
|
||||
\else
|
||||
\let\temp\argcheckspaces
|
||||
@@ -422,14 +428,14 @@
|
||||
% If a _delimited_ argument is enclosed in braces, they get stripped; so
|
||||
% to get _exactly_ the rest of the line, we had to prevent such situation.
|
||||
% We prepended an \empty token at the very beginning and we expand it now,
|
||||
% just before passing the control to \next.
|
||||
% just before passing the control to \argtorun.
|
||||
% (Similarily, we have to think about #3 of \argcheckspacesY above: it is
|
||||
% either the null string, or it ends with \^^M---thus there is no danger
|
||||
% that a pair of braces would be stripped.
|
||||
%
|
||||
% But first, we have to remove the trailing space token.
|
||||
%
|
||||
\def\finishparsearg#1 \ArgTerm{\expandafter\next\expandafter{#1}}
|
||||
\def\finishparsearg#1 \ArgTerm{\expandafter\argtorun\expandafter{#1}}
|
||||
|
||||
% \parseargdef\foo{...}
|
||||
% is roughly equivalent to
|
||||
@@ -1078,15 +1084,24 @@ where each line of input produces a line of output.}
|
||||
\def\minus{$-$}
|
||||
|
||||
% @dots{} outputs an ellipsis using the current font.
|
||||
% We do .5em per period so that it has the same spacing in a typewriter
|
||||
% font as three actual period characters.
|
||||
% We do .5em per period so that it has the same spacing in the cm
|
||||
% typewriter fonts as three actual period characters; on the other hand,
|
||||
% in other typewriter fonts three periods are wider than 1.5em. So do
|
||||
% whichever is larger.
|
||||
%
|
||||
\def\dots{%
|
||||
\leavevmode
|
||||
\hbox to 1.5em{%
|
||||
\hskip 0pt plus 0.25fil
|
||||
.\hfil.\hfil.%
|
||||
\hskip 0pt plus 0.5fil
|
||||
\setbox0=\hbox{...}% get width of three periods
|
||||
\ifdim\wd0 > 1.5em
|
||||
\dimen0 = \wd0
|
||||
\else
|
||||
\dimen0 = 1.5em
|
||||
\fi
|
||||
\hbox to \dimen0{%
|
||||
\hskip 0pt plus.25fil
|
||||
.\hskip 0pt plus1fil
|
||||
.\hskip 0pt plus1fil
|
||||
.\hskip 0pt plus.5fil
|
||||
}%
|
||||
}
|
||||
|
||||
@@ -1231,9 +1246,10 @@ where each line of input produces a line of output.}
|
||||
\ifpdf
|
||||
\input pdfcolor
|
||||
\pdfcatalog{/PageMode /UseOutlines}%
|
||||
% #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto).
|
||||
\def\dopdfimage#1#2#3{%
|
||||
\def\imagewidth{#2}%
|
||||
\def\imageheight{#3}%
|
||||
\def\imagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}%
|
||||
\def\imageheight{#3}\setbox2 = \hbox{\ignorespaces #3}%
|
||||
% without \immediate, pdftex seg faults when the same image is
|
||||
% included twice. (Version 3.14159-pre-1.0-unofficial-20010704.)
|
||||
\ifnum\pdftexversion < 14
|
||||
@@ -1241,8 +1257,8 @@ where each line of input produces a line of output.}
|
||||
\else
|
||||
\immediate\pdfximage
|
||||
\fi
|
||||
\ifx\empty\imagewidth\else width \imagewidth \fi
|
||||
\ifx\empty\imageheight\else height \imageheight \fi
|
||||
\ifdim \wd0 >0pt width \imagewidth \fi
|
||||
\ifdim \wd2 >0pt height \imageheight \fi
|
||||
\ifnum\pdftexversion<13
|
||||
#1.pdf%
|
||||
\else
|
||||
@@ -1385,9 +1401,17 @@ where each line of input produces a line of output.}
|
||||
\else
|
||||
\let \startlink \pdfstartlink
|
||||
\fi
|
||||
% make a live url in pdf output.
|
||||
\def\pdfurl#1{%
|
||||
\begingroup
|
||||
\normalturnoffactive\def\@{@}%
|
||||
% it seems we really need yet another set of dummies; have not
|
||||
% tried to figure out what each command should do in the context
|
||||
% of @url. for now, just make @/ a no-op, that's the only one
|
||||
% people have actually reported a problem with.
|
||||
%
|
||||
\normalturnoffactive
|
||||
\def\@{@}%
|
||||
\let\/=\empty
|
||||
\makevalueexpandable
|
||||
\leavevmode\Red
|
||||
\startlink attr{/Border [0 0 0]}%
|
||||
@@ -1457,6 +1481,7 @@ where each line of input produces a line of output.}
|
||||
% We don't need math for this font style.
|
||||
\def\ttsl{\setfontstyle{ttsl}}
|
||||
|
||||
|
||||
% Default leading.
|
||||
\newdimen\textleading \textleading = 13.2pt
|
||||
|
||||
@@ -1478,11 +1503,13 @@ where each line of input produces a line of output.}
|
||||
}%
|
||||
}
|
||||
|
||||
|
||||
% Set the font macro #1 to the font named #2, adding on the
|
||||
% specified font prefix (normally `cm').
|
||||
% #3 is the font's design size, #4 is a scale factor
|
||||
\def\setfont#1#2#3#4{\font#1=\fontprefix#2#3 scaled #4}
|
||||
|
||||
|
||||
% Use cm as the default font prefix.
|
||||
% To specify the font prefix, you must define \fontprefix
|
||||
% before you read in texinfo.tex.
|
||||
@@ -1506,6 +1533,10 @@ where each line of input produces a line of output.}
|
||||
\def\scshape{csc}
|
||||
\def\scbshape{csc}
|
||||
|
||||
% Definitions for a main text size of 11pt. This is the default in
|
||||
% Texinfo.
|
||||
%
|
||||
\def\definetextfontsizexi{
|
||||
% Text fonts (11.2pt, magstep1).
|
||||
\def\textnominalsize{11pt}
|
||||
\edef\mainmagstep{\magstephalf}
|
||||
@@ -1619,6 +1650,165 @@ where each line of input produces a line of output.}
|
||||
\font\reducedi=cmmi10
|
||||
\font\reducedsy=cmsy10
|
||||
|
||||
% reset the current fonts
|
||||
\textfonts
|
||||
\rm
|
||||
} % end of 11pt text font size definitions
|
||||
|
||||
|
||||
% Definitions to make the main text be 10pt Computer Modern, with
|
||||
% section, chapter, etc., sizes following suit. This is for the GNU
|
||||
% Press printing of the Emacs 22 manual. Maybe other manuals in the
|
||||
% future. Used with @smallbook, which sets the leading to 12pt.
|
||||
%
|
||||
\def\definetextfontsizex{%
|
||||
% Text fonts (10pt).
|
||||
\def\textnominalsize{10pt}
|
||||
\edef\mainmagstep{1000}
|
||||
\setfont\textrm\rmshape{10}{\mainmagstep}
|
||||
\setfont\texttt\ttshape{10}{\mainmagstep}
|
||||
\setfont\textbf\bfshape{10}{\mainmagstep}
|
||||
\setfont\textit\itshape{10}{\mainmagstep}
|
||||
\setfont\textsl\slshape{10}{\mainmagstep}
|
||||
\setfont\textsf\sfshape{10}{\mainmagstep}
|
||||
\setfont\textsc\scshape{10}{\mainmagstep}
|
||||
\setfont\textttsl\ttslshape{10}{\mainmagstep}
|
||||
\font\texti=cmmi10 scaled \mainmagstep
|
||||
\font\textsy=cmsy10 scaled \mainmagstep
|
||||
|
||||
% A few fonts for @defun names and args.
|
||||
\setfont\defbf\bfshape{10}{\magstephalf}
|
||||
\setfont\deftt\ttshape{10}{\magstephalf}
|
||||
\setfont\defttsl\ttslshape{10}{\magstephalf}
|
||||
\def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf}
|
||||
|
||||
% Fonts for indices, footnotes, small examples (9pt).
|
||||
\def\smallnominalsize{9pt}
|
||||
\setfont\smallrm\rmshape{9}{1000}
|
||||
\setfont\smalltt\ttshape{9}{1000}
|
||||
\setfont\smallbf\bfshape{10}{900}
|
||||
\setfont\smallit\itshape{9}{1000}
|
||||
\setfont\smallsl\slshape{9}{1000}
|
||||
\setfont\smallsf\sfshape{9}{1000}
|
||||
\setfont\smallsc\scshape{10}{900}
|
||||
\setfont\smallttsl\ttslshape{10}{900}
|
||||
\font\smalli=cmmi9
|
||||
\font\smallsy=cmsy9
|
||||
|
||||
% Fonts for small examples (8pt).
|
||||
\def\smallernominalsize{8pt}
|
||||
\setfont\smallerrm\rmshape{8}{1000}
|
||||
\setfont\smallertt\ttshape{8}{1000}
|
||||
\setfont\smallerbf\bfshape{10}{800}
|
||||
\setfont\smallerit\itshape{8}{1000}
|
||||
\setfont\smallersl\slshape{8}{1000}
|
||||
\setfont\smallersf\sfshape{8}{1000}
|
||||
\setfont\smallersc\scshape{10}{800}
|
||||
\setfont\smallerttsl\ttslshape{10}{800}
|
||||
\font\smalleri=cmmi8
|
||||
\font\smallersy=cmsy8
|
||||
|
||||
% Fonts for title page (20.4pt):
|
||||
\def\titlenominalsize{20pt}
|
||||
\setfont\titlerm\rmbshape{12}{\magstep3}
|
||||
\setfont\titleit\itbshape{10}{\magstep4}
|
||||
\setfont\titlesl\slbshape{10}{\magstep4}
|
||||
\setfont\titlett\ttbshape{12}{\magstep3}
|
||||
\setfont\titlettsl\ttslshape{10}{\magstep4}
|
||||
\setfont\titlesf\sfbshape{17}{\magstep1}
|
||||
\let\titlebf=\titlerm
|
||||
\setfont\titlesc\scbshape{10}{\magstep4}
|
||||
\font\titlei=cmmi12 scaled \magstep3
|
||||
\font\titlesy=cmsy10 scaled \magstep4
|
||||
\def\authorrm{\secrm}
|
||||
\def\authortt{\sectt}
|
||||
|
||||
% Chapter fonts (14.4pt).
|
||||
\def\chapnominalsize{14pt}
|
||||
\setfont\chaprm\rmbshape{12}{\magstep1}
|
||||
\setfont\chapit\itbshape{10}{\magstep2}
|
||||
\setfont\chapsl\slbshape{10}{\magstep2}
|
||||
\setfont\chaptt\ttbshape{12}{\magstep1}
|
||||
\setfont\chapttsl\ttslshape{10}{\magstep2}
|
||||
\setfont\chapsf\sfbshape{12}{\magstep1}
|
||||
\let\chapbf\chaprm
|
||||
\setfont\chapsc\scbshape{10}{\magstep2}
|
||||
\font\chapi=cmmi12 scaled \magstep1
|
||||
\font\chapsy=cmsy10 scaled \magstep2
|
||||
|
||||
% Section fonts (12pt).
|
||||
\def\secnominalsize{12pt}
|
||||
\setfont\secrm\rmbshape{12}{1000}
|
||||
\setfont\secit\itbshape{10}{\magstep1}
|
||||
\setfont\secsl\slbshape{10}{\magstep1}
|
||||
\setfont\sectt\ttbshape{12}{1000}
|
||||
\setfont\secttsl\ttslshape{10}{\magstep1}
|
||||
\setfont\secsf\sfbshape{12}{1000}
|
||||
\let\secbf\secrm
|
||||
\setfont\secsc\scbshape{10}{\magstep1}
|
||||
\font\seci=cmmi12
|
||||
\font\secsy=cmsy10 scaled \magstep1
|
||||
|
||||
% Subsection fonts (10pt).
|
||||
\def\ssecnominalsize{10pt}
|
||||
\setfont\ssecrm\rmbshape{10}{1000}
|
||||
\setfont\ssecit\itbshape{10}{1000}
|
||||
\setfont\ssecsl\slbshape{10}{1000}
|
||||
\setfont\ssectt\ttbshape{10}{1000}
|
||||
\setfont\ssecttsl\ttslshape{10}{1000}
|
||||
\setfont\ssecsf\sfbshape{10}{1000}
|
||||
\let\ssecbf\ssecrm
|
||||
\setfont\ssecsc\scbshape{10}{1000}
|
||||
\font\sseci=cmmi10
|
||||
\font\ssecsy=cmsy10
|
||||
|
||||
% Reduced fonts for @acro in text (9pt).
|
||||
\def\reducednominalsize{9pt}
|
||||
\setfont\reducedrm\rmshape{9}{1000}
|
||||
\setfont\reducedtt\ttshape{9}{1000}
|
||||
\setfont\reducedbf\bfshape{10}{900}
|
||||
\setfont\reducedit\itshape{9}{1000}
|
||||
\setfont\reducedsl\slshape{9}{1000}
|
||||
\setfont\reducedsf\sfshape{9}{1000}
|
||||
\setfont\reducedsc\scshape{10}{900}
|
||||
\setfont\reducedttsl\ttslshape{10}{900}
|
||||
\font\reducedi=cmmi9
|
||||
\font\reducedsy=cmsy9
|
||||
|
||||
% reduce space between paragraphs
|
||||
\divide\parskip by 2
|
||||
|
||||
% reset the current fonts
|
||||
\textfonts
|
||||
\rm
|
||||
} % end of 10pt text font size definitions
|
||||
|
||||
|
||||
% We provide the user-level command
|
||||
% @fonttextsize 10
|
||||
% (or 11) to redefine the text font size. pt is assumed.
|
||||
%
|
||||
\def\xword{10}
|
||||
\def\xiword{11}
|
||||
%
|
||||
\parseargdef\fonttextsize{%
|
||||
\def\textsizearg{#1}%
|
||||
\wlog{doing @fonttextsize \textsizearg}%
|
||||
%
|
||||
% Set \globaldefs so that documents can use this inside @tex, since
|
||||
% makeinfo 4.8 does not support it, but we need it nonetheless.
|
||||
%
|
||||
\begingroup \globaldefs=1
|
||||
\ifx\textsizearg\xword \definetextfontsizex
|
||||
\else \ifx\textsizearg\xiword \definetextfontsizexi
|
||||
\else
|
||||
\errhelp=\EMsimple
|
||||
\errmessage{@fonttextsize only supports `10' or `11', not `\textsizearg'}
|
||||
\fi\fi
|
||||
\endgroup
|
||||
}
|
||||
|
||||
|
||||
% In order for the font changes to affect most math symbols and letters,
|
||||
% we have to define the \textfont of the standard families. Since
|
||||
% texinfo doesn't allow for producing subscripts and superscripts except
|
||||
@@ -1729,7 +1919,7 @@ where each line of input produces a line of output.}
|
||||
|
||||
% Set up the default fonts, so we can use them for creating boxes.
|
||||
%
|
||||
\textfonts \rm
|
||||
\definetextfontsizexi
|
||||
|
||||
% Define these so they can be easily changed for other fonts.
|
||||
\def\angleleft{$\langle$}
|
||||
@@ -1861,11 +2051,11 @@ where each line of input produces a line of output.}
|
||||
% and arrange explicitly to hyphenate at a dash.
|
||||
% -- rms.
|
||||
{
|
||||
\catcode`\-=\active
|
||||
\catcode`\_=\active
|
||||
\catcode`\-=\active \catcode`\_=\active \catcode`\'=\active
|
||||
%
|
||||
\global\def\code{\begingroup
|
||||
\catcode`\-=\active \catcode`\_=\active
|
||||
\catcode`\-=\active \catcode`\_=\active \catcode`\'=\active
|
||||
\let'\singlequotechar
|
||||
\ifallowcodebreaks
|
||||
\let-\codedash
|
||||
\let_\codeunder
|
||||
@@ -2282,8 +2472,8 @@ where each line of input produces a line of output.}
|
||||
%
|
||||
% Leave some space for the footline. Hopefully ok to assume
|
||||
% @evenfooting will not be used by itself.
|
||||
\global\advance\pageheight by -\baselineskip
|
||||
\global\advance\vsize by -\baselineskip
|
||||
\global\advance\pageheight by -12pt
|
||||
\global\advance\vsize by -12pt
|
||||
}
|
||||
|
||||
\parseargdef\everyfooting{\oddfootingxxx{#1}\evenfootingxxx{#1}}
|
||||
@@ -2942,6 +3132,7 @@ where each line of input produces a line of output.}
|
||||
|
||||
\def\doignore#1{\begingroup
|
||||
% Scan in ``verbatim'' mode:
|
||||
\obeylines
|
||||
\catcode`\@ = \other
|
||||
\catcode`\{ = \other
|
||||
\catcode`\} = \other
|
||||
@@ -2962,16 +3153,16 @@ where each line of input produces a line of output.}
|
||||
\gdef\dodoignore#1{%
|
||||
% #1 contains the command name as a string, e.g., `ifinfo'.
|
||||
%
|
||||
% Define a command to find the next `@end #1', which must be on a line
|
||||
% by itself.
|
||||
\long\def\doignoretext##1^^M@end #1{\doignoretextyyy##1^^M@#1\_STOP_}%
|
||||
% Define a command to find the next `@end #1'.
|
||||
\long\def\doignoretext##1^^M@end #1{%
|
||||
\doignoretextyyy##1^^M@#1\_STOP_}%
|
||||
%
|
||||
% And this command to find another #1 command, at the beginning of a
|
||||
% line. (Otherwise, we would consider a line `@c @ifset', for
|
||||
% example, to count as an @ifset for nesting.)
|
||||
\long\def\doignoretextyyy##1^^M@#1##2\_STOP_{\doignoreyyy{##2}\_STOP_}%
|
||||
%
|
||||
% And now expand that command.
|
||||
\obeylines %
|
||||
\doignoretext ^^M%
|
||||
}%
|
||||
}
|
||||
@@ -3001,7 +3192,12 @@ where each line of input produces a line of output.}
|
||||
}
|
||||
|
||||
% Finish off ignored text.
|
||||
\def\enddoignore{\endgroup\ignorespaces}
|
||||
{ \obeylines%
|
||||
% Ignore anything after the last `@end #1'; this matters in verbatim
|
||||
% environments, where otherwise the newline after an ignored conditional
|
||||
% would result in a blank line in the output.
|
||||
\gdef\enddoignore#1^^M{\endgroup\ignorespaces}%
|
||||
}
|
||||
|
||||
|
||||
% @set VAR sets the variable VAR to an empty value.
|
||||
@@ -3204,12 +3400,39 @@ where each line of input produces a line of output.}
|
||||
\escapechar = `\\ % use backslash in output files.
|
||||
\def\@{@}% change to @@ when we switch to @ as escape char in index files.
|
||||
\def\ {\realbackslash\space }%
|
||||
%
|
||||
% Need these in case \tex is in effect and \{ is a \delimiter again.
|
||||
% But can't use \lbracecmd and \rbracecmd because texindex assumes
|
||||
% braces and backslashes are used only as delimiters.
|
||||
\let\{ = \mylbrace
|
||||
\let\} = \myrbrace
|
||||
%
|
||||
% I don't entirely understand this, but when an index entry is
|
||||
% generated from a macro call, the \endinput which \scanmacro inserts
|
||||
% causes processing to be prematurely terminated. This is,
|
||||
% apparently, because \indexsorttmp is fully expanded, and \endinput
|
||||
% is an expandable command. The redefinition below makes \endinput
|
||||
% disappear altogether for that purpose -- although logging shows that
|
||||
% processing continues to some further point. On the other hand, it
|
||||
% seems \endinput does not hurt in the printed index arg, since that
|
||||
% is still getting written without apparent harm.
|
||||
%
|
||||
% Sample source (mac-idx3.tex, reported by Graham Percival to
|
||||
% help-texinfo, 22may06):
|
||||
% @macro funindex {WORD}
|
||||
% @findex xyz
|
||||
% @end macro
|
||||
% ...
|
||||
% @funindex commtest
|
||||
%
|
||||
% The above is not enough to reproduce the bug, but it gives the flavor.
|
||||
%
|
||||
% Sample whatsit resulting:
|
||||
% .@write3{\entry{xyz}{@folio }{@code {xyz@endinput }}}
|
||||
%
|
||||
% So:
|
||||
\let\endinput = \empty
|
||||
%
|
||||
% Do the redefinitions.
|
||||
\commondummies
|
||||
}
|
||||
@@ -3782,9 +4005,9 @@ where each line of input produces a line of output.}
|
||||
\endgroup
|
||||
}
|
||||
|
||||
% Like \dotfill except takes at least 1 em.
|
||||
% Like plain.tex's \dotfill, except uses up at least 1 em.
|
||||
\def\indexdotfill{\cleaders
|
||||
\hbox{$\mathsurround=0pt \mkern1.5mu ${\it .}$ \mkern1.5mu$}\hskip 1em plus 1fill}
|
||||
\hbox{$\mathsurround=0pt \mkern1.5mu.\mkern1.5mu$}\hskip 1em plus 1fill}
|
||||
|
||||
\def\primary #1{\line{#1\hfil}}
|
||||
|
||||
@@ -4358,14 +4581,17 @@ where each line of input produces a line of output.}
|
||||
\ifx\temptype\Ynothingkeyword
|
||||
\setbox0 = \hbox{}%
|
||||
\def\toctype{unnchap}%
|
||||
\gdef\thischapternum{}%
|
||||
\gdef\thischapter{#1}%
|
||||
\else\ifx\temptype\Yomitfromtockeyword
|
||||
\setbox0 = \hbox{}% contents like unnumbered, but no toc entry
|
||||
\def\toctype{omit}%
|
||||
\gdef\thischapternum{}%
|
||||
\gdef\thischapter{}%
|
||||
\else\ifx\temptype\Yappendixkeyword
|
||||
\setbox0 = \hbox{\putwordAppendix{} #3\enspace}%
|
||||
\def\toctype{app}%
|
||||
\xdef\thischapternum{\appendixletter}%
|
||||
% We don't substitute the actual chapter name into \thischapter
|
||||
% because we don't want its macros evaluated now. And we don't
|
||||
% use \thissection because that changes with each section.
|
||||
@@ -4375,6 +4601,7 @@ where each line of input produces a line of output.}
|
||||
\else
|
||||
\setbox0 = \hbox{#3\enspace}%
|
||||
\def\toctype{numchap}%
|
||||
\xdef\thischapternum{\the\chapno}%
|
||||
\xdef\thischapter{\putwordChapter{} \the\chapno:
|
||||
\noexpand\thischaptername}%
|
||||
\fi\fi\fi
|
||||
@@ -4486,13 +4713,21 @@ where each line of input produces a line of output.}
|
||||
\gdef\thissection{#1}%
|
||||
\fi\fi\fi
|
||||
%
|
||||
% Write the toc entry (before \donoderef). See comments in \chfplain.
|
||||
% Write the toc entry (before \donoderef). See comments in \chapmacro.
|
||||
\writetocentry{\toctype\sectionlevel}{#1}{#4}%
|
||||
%
|
||||
% Write the node reference (= pdf destination for pdftex).
|
||||
% Again, see comments in \chfplain.
|
||||
% Again, see comments in \chapmacro.
|
||||
\donoderef{#3}%
|
||||
%
|
||||
% Interline glue will be inserted when the vbox is completed.
|
||||
% That glue will be a valid breakpoint for the page, since it'll be
|
||||
% preceded by a whatsit (usually from the \donoderef, or from the
|
||||
% \writetocentry if there was no node). We don't want to allow that
|
||||
% break, since then the whatsits could end up on page n while the
|
||||
% section is on page n+1, thus toc/etc. are wrong. Debian bug 276000.
|
||||
\nobreak
|
||||
%
|
||||
% Output the actual section heading.
|
||||
\vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright
|
||||
\hangindent=\wd0 % zero if no section number
|
||||
@@ -4555,7 +4790,7 @@ where each line of input produces a line of output.}
|
||||
\edef\temp{%
|
||||
\write\tocfile{@#1entry{#2}{#3}{\lastnode}{\noexpand\folio}}}%
|
||||
\temp
|
||||
}
|
||||
}%
|
||||
\fi
|
||||
\fi
|
||||
%
|
||||
@@ -4807,7 +5042,7 @@ where each line of input produces a line of output.}
|
||||
{\tentt \global\dimen0 = 3em}% Width of the box.
|
||||
\dimen2 = .55pt % Thickness of rules
|
||||
% The text. (`r' is open on the right, `e' somewhat less so on the left.)
|
||||
\setbox0 = \hbox{\kern-.75pt \tensf error\kern-1.5pt}
|
||||
\setbox0 = \hbox{\kern-.75pt \reducedsf error\kern-1.5pt}
|
||||
%
|
||||
\setbox\errorbox=\hbox to \dimen0{\hfil
|
||||
\hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right.
|
||||
@@ -5030,11 +5265,10 @@ where each line of input produces a line of output.}
|
||||
%
|
||||
\maketwodispenvs {lisp}{example}{%
|
||||
\nonfillstart
|
||||
\tt
|
||||
\tt\quoteexpand
|
||||
\let\kbdfont = \kbdexamplefont % Allow @kbd to do something special.
|
||||
\gobble % eat return
|
||||
}
|
||||
|
||||
% @display/@smalldisplay: same as @lisp except keep current font.
|
||||
%
|
||||
\makedispenv {display}{%
|
||||
@@ -5162,6 +5396,22 @@ where each line of input produces a line of output.}
|
||||
\newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount
|
||||
%
|
||||
\def\starttabbox{\setbox0=\hbox\bgroup}
|
||||
|
||||
% Allow an option to not replace quotes with a regular directed right
|
||||
% quote/apostrophe (char 0x27), but instead use the undirected quote
|
||||
% from cmtt (char 0x0d). The undirected quote is ugly, so don't make it
|
||||
% the default, but it works for pasting with more pdf viewers (at least
|
||||
% evince), the lilypond developers report. xpdf does work with the
|
||||
% regular 0x27.
|
||||
%
|
||||
\def\singlequotechar{%
|
||||
\expandafter\ifx\csname SETcodequoteundirected\endcsname\relax
|
||||
'%
|
||||
\else
|
||||
\char'15
|
||||
\fi
|
||||
}
|
||||
%
|
||||
\begingroup
|
||||
\catcode`\^^I=\active
|
||||
\gdef\tabexpand{%
|
||||
@@ -5174,7 +5424,13 @@ where each line of input produces a line of output.}
|
||||
\wd0=\dimen0 \box0 \starttabbox
|
||||
}%
|
||||
}
|
||||
\catcode`\'=\active
|
||||
\gdef\quoteexpand{%
|
||||
\catcode`\'=\active
|
||||
\def'{\singlequotechar}
|
||||
}%
|
||||
\endgroup
|
||||
%
|
||||
\def\setupverbatim{%
|
||||
\let\nonarrowing = t%
|
||||
\nonfillstart
|
||||
@@ -5183,6 +5439,7 @@ where each line of input produces a line of output.}
|
||||
\def\par{\leavevmode\egroup\box0\endgraf}%
|
||||
\catcode`\`=\active
|
||||
\tabexpand
|
||||
\quoteexpand
|
||||
% Respect line breaks,
|
||||
% print special symbols as themselves, and
|
||||
% make each space count
|
||||
@@ -5632,7 +5889,6 @@ where each line of input produces a line of output.}
|
||||
\spaceisspace
|
||||
%
|
||||
% Append \endinput to make sure that TeX does not see the ending newline.
|
||||
%
|
||||
% I've verified that it is necessary both for e-TeX and for ordinary TeX
|
||||
% --kasal, 29nov03
|
||||
\scantokens{#1\endinput}%
|
||||
@@ -5899,11 +6155,11 @@ where each line of input produces a line of output.}
|
||||
% {. If so it reads up to the closing }, if not, it reads the whole
|
||||
% line. Whatever was read is then fed to the next control sequence
|
||||
% as an argument (by \parsebrace or \parsearg)
|
||||
\def\braceorline#1{\let\next=#1\futurelet\nchar\braceorlinexxx}
|
||||
\def\braceorline#1{\let\macnamexxx=#1\futurelet\nchar\braceorlinexxx}
|
||||
\def\braceorlinexxx{%
|
||||
\ifx\nchar\bgroup\else
|
||||
\expandafter\parsearg
|
||||
\fi \next}
|
||||
\fi \macnamexxx}
|
||||
|
||||
|
||||
% @alias.
|
||||
@@ -6498,7 +6754,7 @@ where each line of input produces a line of output.}
|
||||
% above and below.
|
||||
\nobreak\vskip\parskip
|
||||
\nobreak
|
||||
\line\bgroup\hss
|
||||
\line\bgroup
|
||||
\fi
|
||||
%
|
||||
% Output the image.
|
||||
@@ -6511,7 +6767,7 @@ where each line of input produces a line of output.}
|
||||
\epsfbox{#1.eps}%
|
||||
\fi
|
||||
%
|
||||
\ifimagevmode \hss \egroup \bigbreak \fi % space after the image
|
||||
\ifimagevmode \egroup \bigbreak \fi % space after the image
|
||||
\endgroup}
|
||||
|
||||
|
||||
@@ -7102,22 +7358,6 @@ should work if nowhere else does.}
|
||||
% \otherifyactive is called near the end of this file.
|
||||
\def\otherifyactive{\catcode`+=\other \catcode`\_=\other}
|
||||
|
||||
% Same as @turnoffactive below, but backslash retains it's normal definition.
|
||||
% (Before 2005-08-15, this macro explicitly assigned @let\=@normalbackslash,
|
||||
% but it doesn't seem to be necessary. --kasal)
|
||||
\def\normalturnoffactive{%
|
||||
\let"=\normaldoublequote
|
||||
\let~=\normaltilde
|
||||
\let^=\normalcaret
|
||||
\let_=\normalunderscore
|
||||
\let|=\normalverticalbar
|
||||
\let<=\normalless
|
||||
\let>=\normalgreater
|
||||
\let+=\normalplus
|
||||
\let$=\normaldollar %$ font-lock fix
|
||||
\unsepspaces
|
||||
}
|
||||
|
||||
% Used sometimes to turn off (effectively) the active characters even after
|
||||
% parsing them.
|
||||
\def\turnoffactive{%
|
||||
@@ -7149,6 +7389,23 @@ should work if nowhere else does.}
|
||||
@gdef@rawbackslash{@let\=@backslashcurfont}
|
||||
@gdef@otherbackslash{@let\=@realbackslash}
|
||||
|
||||
% Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of
|
||||
% the literal character `\'.
|
||||
%
|
||||
@def@normalturnoffactive{%
|
||||
@let\=@normalbackslash
|
||||
@let"=@normaldoublequote
|
||||
@let~=@normaltilde
|
||||
@let^=@normalcaret
|
||||
@let_=@normalunderscore
|
||||
@let|=@normalverticalbar
|
||||
@let<=@normalless
|
||||
@let>=@normalgreater
|
||||
@let+=@normalplus
|
||||
@let$=@normaldollar %$ font-lock fix
|
||||
@unsepspaces
|
||||
}
|
||||
|
||||
% Make _ and + \other characters, temporarily.
|
||||
% This is canceled by @fixbackslash.
|
||||
@otherifyactive
|
||||
|
||||
40
build-aux/vc-list-files
Executable file
40
build-aux/vc-list-files
Executable file
@@ -0,0 +1,40 @@
|
||||
#!/bin/sh
|
||||
# List the specified version-controlled files.
|
||||
# With no argument, list them all.
|
||||
# This script must be run solely from the top of a $srcdir build directory.
|
||||
|
||||
# If there's an argument, it must be a single, "."-relative directory name,
|
||||
# with no trailing slashes. In mercurial mode, it's used as part of a
|
||||
# "grep" pattern (prepend "^", append "/"), and in cvs mode, it's simply
|
||||
# used as an argument to the cvsu script.
|
||||
|
||||
include_prefix=
|
||||
case $# in
|
||||
0) ;;
|
||||
1) include_prefix=$1 ;;
|
||||
*) echo "$0: too many arguments" 1>&2; exit 1 ;;
|
||||
esac
|
||||
|
||||
if test -d .git; then
|
||||
if test "x$include_prefix" = x; then
|
||||
git-ls-files | cut -d ' ' -f 3
|
||||
else
|
||||
git-ls-files | cut -d ' ' -f 3 | grep "^$include_prefix/"
|
||||
fi
|
||||
elif test -d .hg; then
|
||||
if test "x$include_prefix" = x; then
|
||||
hg manifest | cut -d ' ' -f 3
|
||||
else
|
||||
hg manifest | cut -d ' ' -f 3 | grep "^$include_prefix/"
|
||||
fi
|
||||
elif test -x build-aux/cvsu; then
|
||||
build-aux/cvsu --find --types=AFGM $include_prefix
|
||||
else
|
||||
awk -F/ '{ \
|
||||
if (!$1 && $3 !~ /^-/) { \
|
||||
f=FILENAME; \
|
||||
sub(/CVS\/Entries/, "", f); \
|
||||
print f $2; \
|
||||
}}' \
|
||||
$(find ${*-*} -name Entries -print) /dev/null;
|
||||
fi
|
||||
224
config.hin
224
config.hin
@@ -1,7 +1,7 @@
|
||||
/* config.hin. Generated from configure.ac by autoheader. */
|
||||
|
||||
/* Define if you have the Andrew File System. */
|
||||
#undef AFS
|
||||
/* Define this to an absolute name of <stdint.h>. */
|
||||
#undef ABSOLUTE_STDINT_H
|
||||
|
||||
/* Define to the function xargmatch calls on failures. */
|
||||
#undef ARGMATCH_DIE
|
||||
@@ -9,6 +9,21 @@
|
||||
/* Define to the declaration of the xargmatch failure function. */
|
||||
#undef ARGMATCH_DIE_DECL
|
||||
|
||||
/* Define to the number of bits in type 'ptrdiff_t'. */
|
||||
#undef BITSIZEOF_PTRDIFF_T
|
||||
|
||||
/* Define to the number of bits in type 'sig_atomic_t'. */
|
||||
#undef BITSIZEOF_SIG_ATOMIC_T
|
||||
|
||||
/* Define to the number of bits in type 'size_t'. */
|
||||
#undef BITSIZEOF_SIZE_T
|
||||
|
||||
/* Define to the number of bits in type 'wchar_t'. */
|
||||
#undef BITSIZEOF_WCHAR_T
|
||||
|
||||
/* Define to the number of bits in type 'wint_t'. */
|
||||
#undef BITSIZEOF_WINT_T
|
||||
|
||||
/* Define if chown is not POSIX compliant regarding IDs of -1. */
|
||||
#undef CHOWN_FAILS_TO_HONOR_ID_OF_NEGATIVE_ONE
|
||||
|
||||
@@ -54,6 +69,9 @@
|
||||
#endif
|
||||
|
||||
|
||||
/* Define to 1 if // is a file system root distinct from /. */
|
||||
#undef DOUBLE_SLASH_IS_DISTINCT_ROOT
|
||||
|
||||
/* Define if there is a member named d_ino in the struct describing directory
|
||||
headers. */
|
||||
#undef D_INO_IN_DIRENT
|
||||
@@ -74,12 +92,9 @@
|
||||
separator. */
|
||||
#undef FILE_SYSTEM_BACKSLASH_IS_FILE_NAME_SEPARATOR
|
||||
|
||||
#if FILE_SYSTEM_ACCEPTS_DRIVE_LETTER_PREFIX
|
||||
# define FILE_SYSTEM_PREFIX_LEN(Filename) \
|
||||
((Filename)[0] && (Filename)[1] == ':' ? 2 : 0)
|
||||
#else
|
||||
# define FILE_SYSTEM_PREFIX_LEN(Filename) 0
|
||||
#endif
|
||||
/* Define if a drive letter prefix denotes a relative path if it is not
|
||||
followed by a file name component separator. */
|
||||
#undef FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE
|
||||
|
||||
/* Define to the type of elements in the array set by `getgroups'. Usually
|
||||
this is either `int' or `gid_t'. */
|
||||
@@ -101,6 +116,42 @@
|
||||
/* Define to 1 if you have the `acl' function. */
|
||||
#undef HAVE_ACL
|
||||
|
||||
/* Define to 1 if you have the `acl_delete_def_file' function. */
|
||||
#undef HAVE_ACL_DELETE_DEF_FILE
|
||||
|
||||
/* Define to 1 if you have the `acl_entries' function. */
|
||||
#undef HAVE_ACL_ENTRIES
|
||||
|
||||
/* Define to 1 if you have the `acl_extended_file' function. */
|
||||
#undef HAVE_ACL_EXTENDED_FILE
|
||||
|
||||
/* Define to 1 if you have the `acl_free' function. */
|
||||
#undef HAVE_ACL_FREE
|
||||
|
||||
/* Define to 1 if you have the `acl_from_mode' function. */
|
||||
#undef HAVE_ACL_FROM_MODE
|
||||
|
||||
/* Define to 1 if you have the `acl_from_text' function. */
|
||||
#undef HAVE_ACL_FROM_TEXT
|
||||
|
||||
/* Define to 1 if you have the `acl_get_fd' function. */
|
||||
#undef HAVE_ACL_GET_FD
|
||||
|
||||
/* Define to 1 if you have the `acl_get_file' function. */
|
||||
#undef HAVE_ACL_GET_FILE
|
||||
|
||||
/* Define to 1 if you have the <acl/libacl.h> header file. */
|
||||
#undef HAVE_ACL_LIBACL_H
|
||||
|
||||
/* Define to 1 if you have the `acl_set_fd' function. */
|
||||
#undef HAVE_ACL_SET_FD
|
||||
|
||||
/* Define to 1 if you have the `acl_set_file' function. */
|
||||
#undef HAVE_ACL_SET_FILE
|
||||
|
||||
/* Define to 1 if you have the `acl_to_text' function. */
|
||||
#undef HAVE_ACL_TO_TEXT
|
||||
|
||||
/* Define to 1 if you have the `alarm' function. */
|
||||
#undef HAVE_ALARM
|
||||
|
||||
@@ -115,6 +166,9 @@
|
||||
/* Define if you have an arithmetic hrtime_t type. */
|
||||
#undef HAVE_ARITHMETIC_HRTIME_T
|
||||
|
||||
/* Define to 1 if you have the <arpa/inet.h> header file. */
|
||||
#undef HAVE_ARPA_INET_H
|
||||
|
||||
/* Define to 1 if you have the `atexit' function. */
|
||||
#undef HAVE_ATEXIT
|
||||
|
||||
@@ -275,6 +329,10 @@
|
||||
don't. */
|
||||
#undef HAVE_DECL_GETLOGIN
|
||||
|
||||
/* Define to 1 if you have the declaration of `getnameinfo', and to 0 if you
|
||||
don't. */
|
||||
#undef HAVE_DECL_GETNAMEINFO
|
||||
|
||||
/* Define to 1 if you have the declaration of `getpass', and to 0 if you
|
||||
don't. */
|
||||
#undef HAVE_DECL_GETPASS
|
||||
@@ -291,6 +349,14 @@
|
||||
don't. */
|
||||
#undef HAVE_DECL_GETUTENT
|
||||
|
||||
/* Define to 1 if you have the declaration of `inet_ntop', and to 0 if you
|
||||
don't. */
|
||||
#undef HAVE_DECL_INET_NTOP
|
||||
|
||||
/* Define to 1 if you have the declaration of `isblank', and to 0 if you
|
||||
don't. */
|
||||
#undef HAVE_DECL_ISBLANK
|
||||
|
||||
/* Define to 1 if you have the declaration of `lseek', and to 0 if you don't.
|
||||
*/
|
||||
#undef HAVE_DECL_LSEEK
|
||||
@@ -331,6 +397,10 @@
|
||||
don't. */
|
||||
#undef HAVE_DECL_SETREGID
|
||||
|
||||
/* Define to 1 if you have the declaration of `snprintf', and to 0 if you
|
||||
don't. */
|
||||
#undef HAVE_DECL_SNPRINTF
|
||||
|
||||
/* Define to 1 if you have the declaration of `stpcpy', and to 0 if you don't.
|
||||
*/
|
||||
#undef HAVE_DECL_STPCPY
|
||||
@@ -343,6 +413,10 @@
|
||||
don't. */
|
||||
#undef HAVE_DECL_STRERROR_R
|
||||
|
||||
/* Define to 1 if you have the declaration of `strmode', and to 0 if you
|
||||
don't. */
|
||||
#undef HAVE_DECL_STRMODE
|
||||
|
||||
/* Define to 1 if you have the declaration of `strndup', and to 0 if you
|
||||
don't. */
|
||||
#undef HAVE_DECL_STRNDUP
|
||||
@@ -391,8 +465,8 @@
|
||||
*/
|
||||
#undef HAVE_DECL_TZNAME
|
||||
|
||||
/* Define to 1 if you have the declaration of wcwidth(), and to 0 otherwise.
|
||||
*/
|
||||
/* Define to 1 if you have the declaration of `wcwidth', and to 0 if you
|
||||
don't. */
|
||||
#undef HAVE_DECL_WCWIDTH
|
||||
|
||||
/* Define to 1 if you have the declaration of `_sys_siglist', and to 0 if you
|
||||
@@ -435,9 +509,6 @@
|
||||
/* Define if you have the declaration of environ. */
|
||||
#undef HAVE_ENVIRON_DECL
|
||||
|
||||
/* Define if you have the declaration of errno. */
|
||||
#undef HAVE_ERRNO_DECL
|
||||
|
||||
/* Define to 1 if you have the `euidaccess' function. */
|
||||
#undef HAVE_EUIDACCESS
|
||||
|
||||
@@ -459,9 +530,6 @@
|
||||
/* Define to 1 if you have the `flockfile' function. */
|
||||
#undef HAVE_FLOCKFILE
|
||||
|
||||
/* Define to 1 if you have the `floor' function. */
|
||||
#undef HAVE_FLOOR
|
||||
|
||||
/* Define to 1 if fseeko (and presumably ftello) exists and is declared. */
|
||||
#undef HAVE_FSEEKO
|
||||
|
||||
@@ -498,6 +566,9 @@
|
||||
/* Define to 1 if your system has a working `getgroups' function. */
|
||||
#undef HAVE_GETGROUPS
|
||||
|
||||
/* Define to 1 if you have the `gethostbyname' function. */
|
||||
#undef HAVE_GETHOSTBYNAME
|
||||
|
||||
/* Define to 1 if you have the `gethostid' function. */
|
||||
#undef HAVE_GETHOSTID
|
||||
|
||||
@@ -549,6 +620,9 @@
|
||||
/* Define if you have the iconv() function. */
|
||||
#undef HAVE_ICONV
|
||||
|
||||
/* Define to 1 if you have the `inet_ntop' function. */
|
||||
#undef HAVE_INET_NTOP
|
||||
|
||||
/* Define to 1 if you have the `initgroups' function. */
|
||||
#undef HAVE_INITGROUPS
|
||||
|
||||
@@ -571,9 +645,6 @@
|
||||
/* Define to 1 if you have the `isascii' function. */
|
||||
#undef HAVE_ISASCII
|
||||
|
||||
/* Define to 1 if you have the `isblank' function. */
|
||||
#undef HAVE_ISBLANK
|
||||
|
||||
/* Define to 1 if you have the `iswcntrl' function. */
|
||||
#undef HAVE_ISWCNTRL
|
||||
|
||||
@@ -586,6 +657,9 @@
|
||||
/* Define if you have <langinfo.h> and nl_langinfo(CODESET). */
|
||||
#undef HAVE_LANGINFO_CODESET
|
||||
|
||||
/* Define to 1 if you have the `lchmod' function. */
|
||||
#undef HAVE_LCHMOD
|
||||
|
||||
/* Define to 1 if you have the `lchown' function. */
|
||||
#undef HAVE_LCHOWN
|
||||
|
||||
@@ -616,12 +690,19 @@
|
||||
/* Define if you have the 'long double' type. */
|
||||
#undef HAVE_LONG_DOUBLE
|
||||
|
||||
/* Define to 1 if the type `long double' works and has more range or precision
|
||||
than `double'. */
|
||||
#undef HAVE_LONG_DOUBLE_WIDER
|
||||
|
||||
/* Define to 1 if you support file names longer than 14 characters. */
|
||||
#undef HAVE_LONG_FILE_NAMES
|
||||
|
||||
/* Define if you have the 'long long' type. */
|
||||
#undef HAVE_LONG_LONG
|
||||
|
||||
/* Define to 1 if the system has the type `long long int'. */
|
||||
#undef HAVE_LONG_LONG_INT
|
||||
|
||||
/* Define to 1 if `lstat' has the bug that it succeeds when given the
|
||||
zero-length file name argument. */
|
||||
#undef HAVE_LSTAT_EMPTY_STRING_BUG
|
||||
@@ -642,7 +723,7 @@
|
||||
/* Define to 1 if you have the `mbrlen' function. */
|
||||
#undef HAVE_MBRLEN
|
||||
|
||||
/* Define to 1 if mbrtowc and mbstate_t are properly declared. */
|
||||
/* Define to 1 if you have the `mbrtowc' function. */
|
||||
#undef HAVE_MBRTOWC
|
||||
|
||||
/* Define to 1 if you have the `mbsinit' function. */
|
||||
@@ -687,9 +768,6 @@
|
||||
/* Define to 1 if you have the <mntent.h> header file. */
|
||||
#undef HAVE_MNTENT_H
|
||||
|
||||
/* Define to 1 if you have the `modf' function. */
|
||||
#undef HAVE_MODF
|
||||
|
||||
/* Define to 1 if you have the `nanotime' function. */
|
||||
#undef HAVE_NANOTIME
|
||||
|
||||
@@ -741,6 +819,9 @@
|
||||
/* Define to 1 if you have the <paths.h> header file. */
|
||||
#undef HAVE_PATHS_H
|
||||
|
||||
/* Define to 1 if you have the `pipe' function. */
|
||||
#undef HAVE_PIPE
|
||||
|
||||
/* Define to 1 if you have the <priv.h> header file. */
|
||||
#undef HAVE_PRIV_H
|
||||
|
||||
@@ -775,9 +856,6 @@
|
||||
/* Define to 1 if you have the `resolvepath' function. */
|
||||
#undef HAVE_RESOLVEPATH
|
||||
|
||||
/* Define to 1 if you have the `rint' function. */
|
||||
#undef HAVE_RINT
|
||||
|
||||
/* Define to 1 if you have the `rmdir' function. */
|
||||
#undef HAVE_RMDIR
|
||||
|
||||
@@ -793,6 +871,9 @@
|
||||
/* Define to 1 if you have the `setenv' function. */
|
||||
#undef HAVE_SETENV
|
||||
|
||||
/* Define to 1 if you have the `setgroups' function. */
|
||||
#undef HAVE_SETGROUPS
|
||||
|
||||
/* Define to 1 if you have the `sethostname' function. */
|
||||
#undef HAVE_SETHOSTNAME
|
||||
|
||||
@@ -811,6 +892,15 @@
|
||||
/* Define to 1 if you have the `siginterrupt' function. */
|
||||
#undef HAVE_SIGINTERRUPT
|
||||
|
||||
/* Define to 1 if 'sig_atomic_t' is a signed integer type. */
|
||||
#undef HAVE_SIGNED_SIG_ATOMIC_T
|
||||
|
||||
/* Define to 1 if 'wchar_t' is a signed integer type. */
|
||||
#undef HAVE_SIGNED_WCHAR_T
|
||||
|
||||
/* Define to 1 if 'wint_t' is a signed integer type. */
|
||||
#undef HAVE_SIGNED_WINT_T
|
||||
|
||||
/* Define to 1 if you have the `snprintf' function. */
|
||||
#undef HAVE_SNPRINTF
|
||||
|
||||
@@ -820,9 +910,6 @@
|
||||
/* Define to 1 if stdbool.h conforms to C99. */
|
||||
#undef HAVE_STDBOOL_H
|
||||
|
||||
/* Define to 1 if you have the <stddef.h> header file. */
|
||||
#undef HAVE_STDDEF_H
|
||||
|
||||
/* Define to 1 if you have the <stdint.h> header file. */
|
||||
#undef HAVE_STDINT_H
|
||||
|
||||
@@ -855,9 +942,6 @@
|
||||
/* Define to 1 if you have the `strerror_r' function. */
|
||||
#undef HAVE_STRERROR_R
|
||||
|
||||
/* Define to 1 if you have the `strftime' function. */
|
||||
#undef HAVE_STRFTIME
|
||||
|
||||
/* Define to 1 if you have the <strings.h> header file. */
|
||||
#undef HAVE_STRINGS_H
|
||||
|
||||
@@ -867,7 +951,7 @@
|
||||
/* Define to 1 if you have the `strncasecmp' function. */
|
||||
#undef HAVE_STRNCASECMP
|
||||
|
||||
/* Define to 1 if you have the `strndup' function. */
|
||||
/* Define if you have the strndup() function and it works. */
|
||||
#undef HAVE_STRNDUP
|
||||
|
||||
/* Define to 1 if you have the <stropts.h> header file. */
|
||||
@@ -1040,6 +1124,9 @@
|
||||
/* Define to 1 if you have the `strverscmp' function. */
|
||||
#undef HAVE_STRVERSCMP
|
||||
|
||||
/* Define to 1 if you have the `strxfrm' function. */
|
||||
#undef HAVE_STRXFRM
|
||||
|
||||
/* Define to 1 if your `struct stat' has `st_blocks'. Deprecated, use
|
||||
`HAVE_STRUCT_STAT_ST_BLOCKS' instead. */
|
||||
#undef HAVE_ST_BLOCKS
|
||||
@@ -1047,6 +1134,9 @@
|
||||
/* Define if struct stat has an st_dm_mode member. */
|
||||
#undef HAVE_ST_DM_MODE
|
||||
|
||||
/* Define to 1 if you have the `sync' function. */
|
||||
#undef HAVE_SYNC
|
||||
|
||||
/* Define to 1 if you have the `sysctl' function. */
|
||||
#undef HAVE_SYSCTL
|
||||
|
||||
@@ -1065,6 +1155,9 @@
|
||||
/* Define to 1 if you have the <sys/acl.h> header file. */
|
||||
#undef HAVE_SYS_ACL_H
|
||||
|
||||
/* Define to 1 if you have the <sys/bitypes.h> header file. */
|
||||
#undef HAVE_SYS_BITYPES_H
|
||||
|
||||
/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
|
||||
*/
|
||||
#undef HAVE_SYS_DIR_H
|
||||
@@ -1078,6 +1171,9 @@
|
||||
/* Define to 1 if you have the <sys/fs_types.h> header file. */
|
||||
#undef HAVE_SYS_FS_TYPES_H
|
||||
|
||||
/* Define to 1 if you have the <sys/inttypes.h> header file. */
|
||||
#undef HAVE_SYS_INTTYPES_H
|
||||
|
||||
/* Define to 1 if you have the <sys/ioctl.h> header file. */
|
||||
#undef HAVE_SYS_IOCTL_H
|
||||
|
||||
@@ -1100,6 +1196,9 @@
|
||||
/* Define to 1 if you have the <sys/resource.h> header file. */
|
||||
#undef HAVE_SYS_RESOURCE_H
|
||||
|
||||
/* Define to 1 if you have the <sys/select.h> header file. */
|
||||
#undef HAVE_SYS_SELECT_H
|
||||
|
||||
/* Define to 1 if you have the <sys/socket.h> header file. */
|
||||
#undef HAVE_SYS_SOCKET_H
|
||||
|
||||
@@ -1163,6 +1262,10 @@
|
||||
/* Define to 1 if you have the <termios.h> header file. */
|
||||
#undef HAVE_TERMIOS_H
|
||||
|
||||
/* Define to 1 if localtime_r, etc. have the type signatures that POSIX
|
||||
requires. */
|
||||
#undef HAVE_TIME_R_POSIX
|
||||
|
||||
/* Define if struct tm has the tm_gmtoff member. */
|
||||
#undef HAVE_TM_GMTOFF
|
||||
|
||||
@@ -1195,6 +1298,9 @@
|
||||
/* Define if you have the 'unsigned long long' type. */
|
||||
#undef HAVE_UNSIGNED_LONG_LONG
|
||||
|
||||
/* Define to 1 if the system has the type `unsigned long long int'. */
|
||||
#undef HAVE_UNSIGNED_LONG_LONG_INT
|
||||
|
||||
/* Define if utimes accepts a null argument */
|
||||
#undef HAVE_UTIMES_NULL
|
||||
|
||||
@@ -1246,6 +1352,9 @@
|
||||
/* Define to 1 if you have the `wcwidth' function. */
|
||||
#undef HAVE_WCWIDTH
|
||||
|
||||
/* Define to 1 if you have the <winsock2.h> header file. */
|
||||
#undef HAVE_WINSOCK2_H
|
||||
|
||||
/* Define if you have the 'wint_t' type. */
|
||||
#undef HAVE_WINT_T
|
||||
|
||||
@@ -1261,6 +1370,9 @@
|
||||
/* Define if utimes works properly. */
|
||||
#undef HAVE_WORKING_UTIMES
|
||||
|
||||
/* Define to 1 if you have the <ws2tcpip.h> header file. */
|
||||
#undef HAVE_WS2TCPIP_H
|
||||
|
||||
/* Define to 1 if the system has the type `_Bool'. */
|
||||
#undef HAVE__BOOL
|
||||
|
||||
@@ -1360,6 +1472,9 @@
|
||||
on `HAVE_STRUCT_NLIST_N_UN_N_NAME */
|
||||
#undef NLIST_NAME_UNION
|
||||
|
||||
/* Define to 1 if your C compiler doesn't accept -c and -o together. */
|
||||
#undef NO_MINUS_C_MINUS_O
|
||||
|
||||
/* Name of package */
|
||||
#undef PACKAGE
|
||||
|
||||
@@ -1394,6 +1509,10 @@
|
||||
/* Define to 1 if the C compiler supports function prototypes. */
|
||||
#undef PROTOTYPES
|
||||
|
||||
/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
|
||||
'ptrdiff_t'. */
|
||||
#undef PTRDIFF_T_SUFFIX
|
||||
|
||||
/* Define if rename does not work for source file names with a trailing slash,
|
||||
like the one from SunOS 4.1.1_U1. */
|
||||
#undef RENAME_TRAILING_SLASH_BUG
|
||||
@@ -1406,9 +1525,17 @@
|
||||
release 3. */
|
||||
#undef SETVBUF_REVERSED
|
||||
|
||||
/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
|
||||
'sig_atomic_t'. */
|
||||
#undef SIG_ATOMIC_T_SUFFIX
|
||||
|
||||
/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
|
||||
'size_t'. */
|
||||
#undef SIZE_T_SUFFIX
|
||||
|
||||
/* If using the C implementation of alloca, define if you know the
|
||||
direction of stack growth for your system; otherwise it will be
|
||||
automatically deduced at run-time.
|
||||
automatically deduced at runtime.
|
||||
STACK_DIRECTION > 0 => grows toward higher addresses
|
||||
STACK_DIRECTION < 0 => grows toward lower addresses
|
||||
STACK_DIRECTION = 0 => direction of growth unknown */
|
||||
@@ -1466,6 +1593,10 @@
|
||||
/* Define to 1 if your <sys/time.h> declares `struct tm'. */
|
||||
#undef TM_IN_SYS_TIME
|
||||
|
||||
/* Define to 1 if the type of the st_atim member of a struct stat is struct
|
||||
timespec. */
|
||||
#undef TYPEOF_STRUCT_STAT_ST_ATIM_IS_STRUCT_TIMESPEC
|
||||
|
||||
/* Define if tzset clobbers localtime's static buffer. */
|
||||
#undef TZSET_CLOBBERS_LOCALTIME_BUFFER
|
||||
|
||||
@@ -1491,6 +1622,9 @@
|
||||
/* Define to 1 if unlink (dir) cannot possibly succeed. */
|
||||
#undef UNLINK_CANNOT_UNLINK_DIR
|
||||
|
||||
/* Define if you want access control list support. */
|
||||
#undef USE_ACL
|
||||
|
||||
/* Define to 1 if you want getc etc. to use unlocked I/O if available.
|
||||
Unlocked I/O can improve performance in unithreaded apps, but it is not
|
||||
safe for multithreaded apps. */
|
||||
@@ -1502,9 +1636,17 @@
|
||||
/* Define if unsetenv() returns void, not int. */
|
||||
#undef VOID_UNSETENV
|
||||
|
||||
/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
|
||||
'wchar_t'. */
|
||||
#undef WCHAR_T_SUFFIX
|
||||
|
||||
/* Define if sys/ptem.h is required for struct winsize. */
|
||||
#undef WINSIZE_IN_PTEM
|
||||
|
||||
/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
|
||||
'wint_t'. */
|
||||
#undef WINT_T_SUFFIX
|
||||
|
||||
/* Define to 1 if your processor stores words with the most significant byte
|
||||
first (like Motorola and SPARC, unlike Intel and VAX). */
|
||||
#undef WORDS_BIGENDIAN
|
||||
@@ -1575,9 +1717,6 @@
|
||||
/* Define to rpl_chown if the replacement function should be used. */
|
||||
#undef chown
|
||||
|
||||
/* Define to empty if `const' does not conform to ANSI C. */
|
||||
#undef const
|
||||
|
||||
/* Define to a replacement function name for fnmatch(). */
|
||||
#undef fnmatch
|
||||
|
||||
@@ -1599,6 +1738,9 @@
|
||||
/* Define to `int' if <sys/types.h> doesn't define. */
|
||||
#undef gid_t
|
||||
|
||||
/* A replacement for va_copy, if needed. */
|
||||
#define gl_va_copy(a,b) ((a) = (b))
|
||||
|
||||
/* Define to rpl_gmtime if the replacement function should be used. */
|
||||
#undef gmtime
|
||||
|
||||
@@ -1720,7 +1862,7 @@
|
||||
/* Define to `unsigned int' if <sys/types.h> does not define. */
|
||||
#undef size_t
|
||||
|
||||
/* Map `socklen_t' to `int' if it is missing. */
|
||||
/* type to use in place of socklen_t if not defined */
|
||||
#undef socklen_t
|
||||
|
||||
/* Define as a signed type of the same size as size_t. */
|
||||
@@ -1729,6 +1871,9 @@
|
||||
/* Define to rpl_strcasecmp always. */
|
||||
#undef strcasecmp
|
||||
|
||||
/* Define to rpl_strndup if the replacement function should be used, */
|
||||
#undef strndup
|
||||
|
||||
/* Define to rpl_strnlen if the replacement function should be used. */
|
||||
#undef strnlen
|
||||
|
||||
@@ -1756,6 +1901,9 @@
|
||||
/* Define to rpl_utime if the replacement function should be used. */
|
||||
#undef utime
|
||||
|
||||
/* Define as a macro for copying va_list variables. */
|
||||
#undef va_copy
|
||||
|
||||
/* Define to empty if the keyword `volatile' does not work. Warning: valid
|
||||
code using `volatile' can become incorrect without. Disable with care. */
|
||||
#undef volatile
|
||||
|
||||
41
configure.ac
41
configure.ac
@@ -1,41 +1,43 @@
|
||||
dnl Process this file with autoconf to produce a configure script. -*-m4-*-
|
||||
# -*- autoconf -*-
|
||||
# Process this file with autoconf to produce a configure script.
|
||||
|
||||
dnl Copyright (C) 1991, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2005,
|
||||
dnl 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1991, 1993-2006 Free Software Foundation, Inc.
|
||||
|
||||
dnl This program is free software; you can redistribute it and/or modify
|
||||
dnl it under the terms of the GNU General Public License as published by
|
||||
dnl the Free Software Foundation; either version 2, or (at your option)
|
||||
dnl any later version.
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
dnl This program is distributed in the hope that it will be useful,
|
||||
dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
dnl GNU General Public License for more details.
|
||||
# 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.
|
||||
|
||||
dnl You should have received a copy of the GNU General Public License
|
||||
dnl along with this program; if not, write to the Free Software Foundation,
|
||||
dnl Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
# 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
dnl Written by Jim Meyering.
|
||||
|
||||
AC_INIT([GNU coreutils],[5.92],[bug-coreutils@gnu.org])
|
||||
AC_INIT([GNU coreutils],[6.0],[bug-coreutils@gnu.org])
|
||||
AC_CONFIG_SRCDIR(src/ls.c)
|
||||
|
||||
AC_CONFIG_AUX_DIR(build-aux)
|
||||
AC_CONFIG_HEADERS([config.h:config.hin])
|
||||
|
||||
AB_INIT()
|
||||
AM_INIT_AUTOMAKE([1.8.3 gnits dist-bzip2])
|
||||
AM_INIT_AUTOMAKE([1.9.6 gnits dist-bzip2])
|
||||
|
||||
gl_DEFAULT_POSIX2_VERSION
|
||||
gl_USE_SYSTEM_EXTENSIONS
|
||||
gl_PERL
|
||||
AC_PROG_CC
|
||||
AC_PROG_CC_STDC
|
||||
AM_PROG_CC_C_O
|
||||
AC_PROG_CPP
|
||||
AC_PROG_GCC_TRADITIONAL
|
||||
AC_PROG_RANLIB
|
||||
AC_PROG_LN_S
|
||||
gl_IGNORE_UNUSED_LIBRARIES
|
||||
|
||||
|
||||
AC_CHECK_FUNCS(uname,
|
||||
@@ -248,8 +250,8 @@ AC_CHECK_DECLS([strtoimax, strtoumax])
|
||||
|
||||
cu_LIB_CHECK
|
||||
|
||||
AM_GNU_GETTEXT([external], [need-ngettext])
|
||||
AM_GNU_GETTEXT_VERSION(0.13.1)
|
||||
AM_GNU_GETTEXT([external], [need-formatstring-macros])
|
||||
AM_GNU_GETTEXT_VERSION([0.15])
|
||||
|
||||
AC_CONFIG_FILES(
|
||||
Makefile
|
||||
@@ -259,7 +261,6 @@ AC_CONFIG_FILES(
|
||||
po/Makefile.in
|
||||
src/Makefile
|
||||
tests/Makefile
|
||||
tests/basename/Makefile
|
||||
tests/chgrp/Makefile
|
||||
tests/chmod/Makefile
|
||||
tests/chown/Makefile
|
||||
|
||||
321
doc/ChangeLog
321
doc/ChangeLog
@@ -1,3 +1,324 @@
|
||||
2006-08-09 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* coreutils.texi (dd invocation): Warn about oflag=append without
|
||||
conv=notrunc. See Debian bug 373736.
|
||||
|
||||
2006-08-08 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* coreutils.texi (shuf invocation, Random sources): New sections.
|
||||
(Operating on sorted files): Add shuf.
|
||||
(sort invocation, shred invocation): New option --random-source.
|
||||
(sort invocation): Fix typo: -R -> -r.
|
||||
|
||||
2006-07-28 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* coreutils.texi (install invocation, mkdir invocation):
|
||||
Add cross-references to Directory Setuid and Setgid.
|
||||
(install-invocation): The default mode is no longer equivalent to 755.
|
||||
* perm.texi (Changing Special Mode Bits): Clarify u+s versus
|
||||
a+s versus +s, and likewise for g+s.
|
||||
(Numeric Modes): Bring back example of 0055 == 55. 4755 no
|
||||
longer clears setgid bit on directories.
|
||||
(Directory Setuid and Setgid): Numeric modes now affect setuid
|
||||
and setgid on directories only if they set these bits. This
|
||||
is so that leading 0 has no effect on numeric modes.
|
||||
|
||||
2006-07-26 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* coreutils.texi (What information is listed): Mention that missing
|
||||
pieces of information are marked with "?". From Paul Eggert.
|
||||
|
||||
2006-07-25 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* perm.texi (Directory Setuid and Setgid): Explain that this is a
|
||||
GNU extension, and that other systems behave differently here.
|
||||
|
||||
2006-07-22 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* coreutils.texi (What information is listed): Clarify that the
|
||||
restricted deletion flag is another name for the sticky bit.
|
||||
* perm.texi (Mode Structure): The restricted deletion flag
|
||||
restricts only unprivileged users.
|
||||
(Mode Structure, Symbolic Modes, Numeric Modes): Be more careful
|
||||
about distinguishing file mode bits from permissions bits,
|
||||
and about execute versus search permission. The FreeBSD command
|
||||
is chflags, not chrflags.
|
||||
|
||||
2006-07-16 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* coreutils.texi: Change GNU to @acronym{GNU} in a few places.
|
||||
Use "set-user-ID" and "set-group-ID" a bit more consistently.
|
||||
Use "appropriate privileges" rather than "super-user" a bit
|
||||
more consistently.
|
||||
(install invocation): Parent directories are now 755 without uid
|
||||
or gid changing. The default mode is now 0755, not 755.
|
||||
(mkdir invocation): Rewrite the top-level usage description, since
|
||||
I couldn't easily follow the old one. It's now 3 lines not 8.
|
||||
For -m, describe file permission bits versus other bits, and note
|
||||
that mkdir is atomic if you don't mention special bits.
|
||||
(chmod invocation): Mention what chmod does to setgid and setuid bits.
|
||||
* perm.texi (Mode Structure): Modernize the explanation of the
|
||||
setuid and setgid bits on directories.
|
||||
(Changing Special Mode Bits): Mention that a implies both u and g
|
||||
for s. Cross reference to new node.
|
||||
(Numeric Modes): Don't claim that 0055 is the same as 55; this isn't
|
||||
true any more. Mention new node.
|
||||
4755 is now like u=rwxs,go=rx,g-s, not like u=rwxs,go=rx.
|
||||
(Directory Setuid and Setgid): New node.
|
||||
|
||||
2006-07-08 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* coreutils.texi (Squeezing): Separate doubled "the", so typo-checkers
|
||||
don't complain.
|
||||
|
||||
* Makefile.am (check-texinfo): Enforce the zeros vs. zeroes consistency.
|
||||
|
||||
2006-07-08 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
|
||||
|
||||
* coreutils.texi: Fix some typos. Use `zeros' consistently (both
|
||||
`zeros' and `zeroes' are correct).
|
||||
|
||||
2006-07-01 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* coreutils.texi (tail invocation): With no operand, 'tail -f' now
|
||||
silently ignores the '-f' only if standard input is a FIFO or pipe
|
||||
and POSIXLY_CORRECT is set.
|
||||
|
||||
2006-06-30 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* coreutils.texi (seq invocation): seq now uses long double
|
||||
internally rather than double. It now defaults to a minimal fixed
|
||||
point format if possible. It lets you use %a, %A, %E, %F, %G.
|
||||
Don't assume printf doesn't work for numbers that fit in 64 but
|
||||
not 32 bits; typically they work these days. Improve discussion
|
||||
of large integers and update the rounding-error numbers.
|
||||
|
||||
2006-06-28 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* coreutils.texi (sort invocation): 'sort +1 -2' is now supported
|
||||
even when conforming to POSIX 1003.1-2001, since this is a pure
|
||||
extension to POSIX.
|
||||
|
||||
2006-06-27 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* coreutils.texi (wc invocation): Remove ./ prefix from example.
|
||||
From Padraig Brady.
|
||||
|
||||
2006-06-26 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* coreutils.texi (wc invocation): Spell out `--files0-from' in
|
||||
the example. Suggestion from Bob Proulx.
|
||||
|
||||
* coreutils.texi (wc invocation): Document new --files0-from option.
|
||||
|
||||
2006-06-20 Eric Blake <ebb9@byu.net>
|
||||
|
||||
* coreutils.texi (sleep invocation): Document that accepting
|
||||
multiple arguments and suffixes are extensions.
|
||||
Reported by Dan Jacobson.
|
||||
|
||||
2006-06-12 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* Makefile.am (check-texinfo): Use $(_W) and $(W_) instead of
|
||||
assuming grep -w (which is not portable).
|
||||
|
||||
2006-05-27 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
|
||||
|
||||
* Makefile.am: Use `AM_MAKEINFOFLAGS' rather than
|
||||
overwriting `MAKEINFO', so that `missing' can do its job.
|
||||
|
||||
* Makefile.am (check-texinfo): Use `$(EGREP)' instead of `grep -E'.
|
||||
(check-texinfo): Use literal `{' only in brackets, i.e., [{] or [}],
|
||||
to avoid triggering an error from Solaris 2.6's grep.
|
||||
|
||||
2006-05-25 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* coreutils.texi (sort invocation): Remove mention of --seed, since
|
||||
it's going away.
|
||||
|
||||
2006-05-04 Eric Blake <ebb9@byu.net>
|
||||
|
||||
* coreutils.texi (Examples of date): Give example of @seconds.
|
||||
|
||||
2006-05-03 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* coreutils.texi (head invocation, tail invocation, sort invocation):
|
||||
Give advice about porting to hosts that support only obsolete syntax.
|
||||
Problem reported by Zack Weinberg.
|
||||
|
||||
2006-04-23 Francesco Montorsi <fr_m@hotmail.com>
|
||||
|
||||
* coreutils.texi (Which files are listed): Describe new option:
|
||||
--group-directories-first.
|
||||
|
||||
2006-04-17 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* coreutils.texi (What information is listed): Add P for Solaris
|
||||
10 ports. Add commented-out entries for other types that POSIX
|
||||
says are possible, or that I observed in FreeBSD documentation.
|
||||
|
||||
2006-04-18 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* coreutils.texi (Input processing in ptx): Remove mention of the
|
||||
default --ignore file, /usr/local/lib/eign. That file has never
|
||||
been used. Reported by Eric Blake.
|
||||
|
||||
2006-04-12 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* coreutils.texi (expr invocation): expr exit status is 3 only for
|
||||
internal errors now; 2 is also for invalid values in expressions.
|
||||
|
||||
(What information is listed): Document 'ls' type letters.
|
||||
Problem reported by Lincoln Martin.
|
||||
|
||||
2006-04-09 Ori Avtalion <oavtal@bezeqint.net>
|
||||
|
||||
* coreutils.texi (Top): Add 'hostid' to System context menu line.
|
||||
(trivial change)
|
||||
|
||||
2006-03-22 Eric Blake <ebb9@byu.net>
|
||||
|
||||
* coreutils.texi (General options in ptx): Undocument --copyright.
|
||||
|
||||
2006-03-27 Eric Blake <ebb9@byu.net>
|
||||
|
||||
* coreutils.texi (dirname invocation): Macro in previous patch
|
||||
was too broad.
|
||||
|
||||
2006-03-11 Eric Blake <ebb9@byu.net>
|
||||
|
||||
* coreutils.texi (basename invocation, dirname invocation):
|
||||
Improve documentation to match recent // patches.
|
||||
|
||||
2006-03-23 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* coreutils.texi (nohup invocation): nohup now redirects stderr to
|
||||
nohup.out if stdout is closed and stderr is a tty.
|
||||
|
||||
2006-03-05 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* coreutils.texi (dd invocation): New flags directory, nolinks.
|
||||
Alphabetize nofollow.
|
||||
|
||||
2006-02-17 Simon Josefsson <jas@extundo.com>
|
||||
|
||||
* coreutils.texi: Add base64 section.
|
||||
|
||||
2006-02-20 Eric Blake <ebb9@byu.net>
|
||||
|
||||
* coreutils.texi (rm invocation): Fix typo in last patch.
|
||||
(paste invocation): Fix whitespace.
|
||||
|
||||
2006-02-18 Eric Blake <ebb9@byu.net>
|
||||
|
||||
* coreutils.texi (rm invocation): Document new -I option, and new
|
||||
--interactive behavior.
|
||||
|
||||
2006-02-12 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* coreutils.texi (Character sets): Don't say that an unknown
|
||||
backslash-escape causes an error message -- it doesn't.
|
||||
Mention that `\' also removes any special significance, so
|
||||
is useful for [, ], *, -. Prompted by Richard Neill in
|
||||
http://savannah.gnu.org/bugs/index.php?func=detailitem&item_id=14937
|
||||
|
||||
2006-02-01 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* coreutils.texi (od invocation): Warn that -t a ignores the high
|
||||
order bit.
|
||||
|
||||
2006-01-30 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* coreutils.texi (tail invocation): In the obsolete usage, the
|
||||
count is optional, so put square brackets around it.
|
||||
|
||||
2006-01-02 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* getdate.texi (General date syntax): Invalid dates are rejected.
|
||||
(Time of day items): Mention the possibility of leap seconds.
|
||||
Problem reported by Dr. David Alan Gilbert.
|
||||
|
||||
* coreutils.texi: Use @acronym around "ISO" uniformly.
|
||||
(Date conversion specifiers): Explain %g, %G, and %V a bit better.
|
||||
|
||||
2006-01-02 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* coreutils.texi (tail invocation): Say that --retry
|
||||
is useful `mainly' (not `only') when following by name.
|
||||
|
||||
2006-01-01 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* coreutils.texi, perm.texi: Clarify file mode bits versus
|
||||
file permission bits.
|
||||
* coreutils.texi (mkfifo invocation, mknod invocation): -m
|
||||
affects only file permission bits.
|
||||
|
||||
2005-12-29 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* coreutils.texi (sort invocation): Clarify that a blank is a space
|
||||
or a tab.
|
||||
|
||||
2005-12-15 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* coreutils.texi (stat invocation) [--printf]: Describe new option.
|
||||
[--format]: Add example. Distinguish from --printf.
|
||||
Sort option descriptions.
|
||||
|
||||
2005-12-05 Andreas Gruenbacher <agruen@suse.de>
|
||||
|
||||
* coreutils.texi (ls): Clarify the Alternate Access Method description.
|
||||
(cp): Clarify that --preserve=mode also preserves acls.
|
||||
|
||||
2005-12-12 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* coreutils.texi (sort invocation): Clarify explanation of
|
||||
--random-sort, and use a simpler example.
|
||||
|
||||
2005-12-10 Frederik Eaton <frederik@ofb.net>
|
||||
|
||||
* coreutils.texi (sort invocation): Add --random-sort (-R) and --seed.
|
||||
|
||||
2005-12-07 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* coreutils.texi (dd invocation): New noatime flag.
|
||||
|
||||
2005-11-25 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* coreutils.texi (df invocation): Document treatment of dummy file
|
||||
systems better.
|
||||
|
||||
2005-11-16 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* coreutils.texi (ln invocation): ln -v now outputs lines only for
|
||||
successful links.
|
||||
(tail invocation): Say that the obsolete form uses exactly one
|
||||
option and at most one file.
|
||||
|
||||
2005-11-13 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* perm.texi (Mode Structure): Capitalize two sentences in an
|
||||
enumerated list and fix a typo. From Aaron Hawley.
|
||||
|
||||
2005-11-08 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* coreutils.texi (Formatting file timestamps): ls now defaults to
|
||||
--time-style='locale', which in turn acts like
|
||||
--time-style='posix-long-iso' if the locale settings are messed up.
|
||||
|
||||
2005-11-02 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* coreutils.texi (rm invocation): Don't mention --directory (-d).
|
||||
|
||||
2005-11-01 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* coreutils.texi (tail invocation): Describe obsolete usages
|
||||
like "tail -2" more precisely.
|
||||
(touch invocation): The old usage works only for 1969-1999 now.
|
||||
|
||||
2005-08-28 David Madore <david.madore@ens.fr>
|
||||
|
||||
* coreutils.texi: Document SHA-1 and SHA-2 utilities.
|
||||
|
||||
2005-10-15 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* doc/coreutils.texi (Top, General output formatting, dir invocation):
|
||||
|
||||
@@ -11,7 +11,7 @@ EXTRA_DIST = perm.texi getdate.texi constants.texi doclicense.texi
|
||||
# Otherwise, it would also generate files with names like <package>.info-[123],
|
||||
# and those names all map to one 14-byte name (<package>.info-) on some crufty
|
||||
# old systems.
|
||||
MAKEINFO = makeinfo --no-split
|
||||
AM_MAKEINFOFLAGS = --no-split
|
||||
|
||||
constants.texi: $(top_srcdir)/src/tail.c
|
||||
LC_ALL=C \
|
||||
@@ -30,7 +30,8 @@ W_ = ([^A-Za-z0-9_]|$$)
|
||||
|
||||
# List words/regexps here that should not appear in the texinfo documentation.
|
||||
# E.g., use @sc{nul}, not `NUL'
|
||||
# and use `time zone', not `timezone'.
|
||||
# Use `time zone', not `timezone'.
|
||||
# Use `zeros', not `zeroes' (nothing wrong with `zeroes'. just be consistent).
|
||||
check-texinfo:
|
||||
fail=0; \
|
||||
grep timezone $(srcdir)/*.texi && fail=1; \
|
||||
@@ -40,14 +41,15 @@ check-texinfo:
|
||||
$(EGREP) '$(_W)NUL$(W_)' $(srcdir)/*.texi && fail=1; \
|
||||
grep '\$$@"' $(srcdir)/*.texi && fail=1; \
|
||||
grep -n '[^[:punct:]]@footnote' $(srcdir)/*.texi && fail=1; \
|
||||
grep -n filename $(srcdir)/*.texi|grep -vE 'setfilename|{filename}' \
|
||||
grep -n filename $(srcdir)/*.texi|$(EGREP) -v 'setfilename|[{]filename[}]' \
|
||||
&& 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; }; \
|
||||
grep -iwE 'builtins?' $(srcdir)/*.texi && fail=1; \
|
||||
grep -iwE 'path(name)?s?' $(srcdir)/*.texi \
|
||||
| grep -vE '@vindex PATH$$|@env{PATH}' && fail=1; \
|
||||
$(EGREP) -i '$(_W)zeroes$(W_)' $(srcdir)/*.texi && fail=1; \
|
||||
$(EGREP) -i '$(_W)builtins?$(W_)' $(srcdir)/*.texi && fail=1; \
|
||||
$(EGREP) -i '$(_W)path(name)?s?$(W_)' $(srcdir)/*.texi \
|
||||
| $(EGREP) -v '@vindex PATH$$|@env[{]PATH[}]' && fail=1; \
|
||||
exit $$fail
|
||||
|
||||
check: check-texinfo
|
||||
|
||||
158
doc/Makefile.in
158
doc/Makefile.in
@@ -39,33 +39,39 @@ subdir = doc
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
|
||||
$(srcdir)/stamp-vti $(srcdir)/version.texi ChangeLog
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/afs.m4 \
|
||||
$(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/allocsa.m4 \
|
||||
$(top_srcdir)/m4/argmatch.m4 $(top_srcdir)/m4/assert.m4 \
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/absolute-header.m4 \
|
||||
$(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/alloca.m4 \
|
||||
$(top_srcdir)/m4/allocsa.m4 $(top_srcdir)/m4/argmatch.m4 \
|
||||
$(top_srcdir)/m4/arpa_inet_h.m4 $(top_srcdir)/m4/assert.m4 \
|
||||
$(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/autobuild.m4 \
|
||||
$(top_srcdir)/m4/backupfile.m4 $(top_srcdir)/m4/basename.m4 \
|
||||
$(top_srcdir)/m4/bison.m4 $(top_srcdir)/m4/boottime.m4 \
|
||||
$(top_srcdir)/m4/c-strtod.m4 $(top_srcdir)/m4/calloc.m4 \
|
||||
$(top_srcdir)/m4/canon-host.m4 \
|
||||
$(top_srcdir)/m4/canonicalize.m4 \
|
||||
$(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/check-decl.m4 \
|
||||
$(top_srcdir)/m4/chown.m4 $(top_srcdir)/m4/clock_time.m4 \
|
||||
$(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/closeout.m4 \
|
||||
$(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/chdir-safer.m4 \
|
||||
$(top_srcdir)/m4/check-decl.m4 $(top_srcdir)/m4/chown.m4 \
|
||||
$(top_srcdir)/m4/clock_time.m4 $(top_srcdir)/m4/cloexec.m4 \
|
||||
$(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/closeout.m4 \
|
||||
$(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/cycle-check.m4 \
|
||||
$(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \
|
||||
$(top_srcdir)/m4/diacrit.m4 $(top_srcdir)/m4/dirfd.m4 \
|
||||
$(top_srcdir)/m4/dirname.m4 $(top_srcdir)/m4/dos.m4 \
|
||||
$(top_srcdir)/m4/dev-ino.m4 $(top_srcdir)/m4/diacrit.m4 \
|
||||
$(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \
|
||||
$(top_srcdir)/m4/dos.m4 $(top_srcdir)/m4/double-slash-root.m4 \
|
||||
$(top_srcdir)/m4/dup2.m4 $(top_srcdir)/m4/eealloc.m4 \
|
||||
$(top_srcdir)/m4/eoverflow.m4 $(top_srcdir)/m4/error.m4 \
|
||||
$(top_srcdir)/m4/euidaccess-stat.m4 \
|
||||
$(top_srcdir)/m4/euidaccess.m4 $(top_srcdir)/m4/exclude.m4 \
|
||||
$(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \
|
||||
$(top_srcdir)/m4/fcntl-safer.m4 $(top_srcdir)/m4/fd-reopen.m4 \
|
||||
$(top_srcdir)/m4/file-type.m4 $(top_srcdir)/m4/fileblocks.m4 \
|
||||
$(top_srcdir)/m4/filemode.m4 $(top_srcdir)/m4/filenamecat.m4 \
|
||||
$(top_srcdir)/m4/fnmatch.m4 $(top_srcdir)/m4/fpending.m4 \
|
||||
$(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/fstypename.m4 \
|
||||
$(top_srcdir)/m4/fsusage.m4 $(top_srcdir)/m4/ftruncate.m4 \
|
||||
$(top_srcdir)/m4/fts.m4 $(top_srcdir)/m4/getaddrinfo.m4 \
|
||||
$(top_srcdir)/m4/fprintftime.m4 $(top_srcdir)/m4/free.m4 \
|
||||
$(top_srcdir)/m4/fstypename.m4 $(top_srcdir)/m4/fsusage.m4 \
|
||||
$(top_srcdir)/m4/ftruncate.m4 $(top_srcdir)/m4/fts.m4 \
|
||||
$(top_srcdir)/m4/getaddrinfo.m4 \
|
||||
$(top_srcdir)/m4/getcwd-abort-bug.m4 \
|
||||
$(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \
|
||||
$(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \
|
||||
$(top_srcdir)/m4/getgroups.m4 $(top_srcdir)/m4/gethostname.m4 \
|
||||
@@ -80,14 +86,17 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/afs.m4 \
|
||||
$(top_srcdir)/m4/hard-locale.m4 $(top_srcdir)/m4/hash-pjw.m4 \
|
||||
$(top_srcdir)/m4/hash.m4 $(top_srcdir)/m4/host-os.m4 \
|
||||
$(top_srcdir)/m4/human.m4 $(top_srcdir)/m4/iconv.m4 \
|
||||
$(top_srcdir)/m4/idcache.m4 $(top_srcdir)/m4/intmax_t.m4 \
|
||||
$(top_srcdir)/m4/inttostr.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
|
||||
$(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \
|
||||
$(top_srcdir)/m4/jm-macros.m4 $(top_srcdir)/m4/jm-winsz1.m4 \
|
||||
$(top_srcdir)/m4/jm-winsz2.m4 $(top_srcdir)/m4/lchown.m4 \
|
||||
$(top_srcdir)/m4/lib-check.m4 $(top_srcdir)/m4/lib-ld.m4 \
|
||||
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
|
||||
$(top_srcdir)/m4/linebuffer.m4 $(top_srcdir)/m4/link-follow.m4 \
|
||||
$(top_srcdir)/m4/idcache.m4 $(top_srcdir)/m4/inet_ntop.m4 \
|
||||
$(top_srcdir)/m4/intmax_t.m4 $(top_srcdir)/m4/inttostr.m4 \
|
||||
$(top_srcdir)/m4/inttypes-h.m4 \
|
||||
$(top_srcdir)/m4/inttypes-pri.m4 $(top_srcdir)/m4/inttypes.m4 \
|
||||
$(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/jm-macros.m4 \
|
||||
$(top_srcdir)/m4/jm-winsz1.m4 $(top_srcdir)/m4/jm-winsz2.m4 \
|
||||
$(top_srcdir)/m4/lchmod.m4 $(top_srcdir)/m4/lchown.m4 \
|
||||
$(top_srcdir)/m4/lib-check.m4 $(top_srcdir)/m4/lib-ignore.m4 \
|
||||
$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
|
||||
$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/linebuffer.m4 \
|
||||
$(top_srcdir)/m4/link-follow.m4 \
|
||||
$(top_srcdir)/m4/localcharset.m4 \
|
||||
$(top_srcdir)/m4/long-options.m4 \
|
||||
$(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \
|
||||
@@ -99,32 +108,37 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/afs.m4 \
|
||||
$(top_srcdir)/m4/memcmp.m4 $(top_srcdir)/m4/memcoll.m4 \
|
||||
$(top_srcdir)/m4/memcpy.m4 $(top_srcdir)/m4/memmove.m4 \
|
||||
$(top_srcdir)/m4/mempcpy.m4 $(top_srcdir)/m4/memrchr.m4 \
|
||||
$(top_srcdir)/m4/memset.m4 $(top_srcdir)/m4/mkdir-p.m4 \
|
||||
$(top_srcdir)/m4/memset.m4 $(top_srcdir)/m4/memxfrm.m4 \
|
||||
$(top_srcdir)/m4/mkancesdirs.m4 $(top_srcdir)/m4/mkdir-p.m4 \
|
||||
$(top_srcdir)/m4/mkdir-slash.m4 $(top_srcdir)/m4/mkstemp.m4 \
|
||||
$(top_srcdir)/m4/mktime.m4 $(top_srcdir)/m4/modechange.m4 \
|
||||
$(top_srcdir)/m4/mountlist.m4 $(top_srcdir)/m4/nanosleep.m4 \
|
||||
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/obstack.m4 \
|
||||
$(top_srcdir)/m4/onceonly_2_57.m4 $(top_srcdir)/m4/openat.m4 \
|
||||
$(top_srcdir)/m4/netinet_in_h.m4 $(top_srcdir)/m4/nls.m4 \
|
||||
$(top_srcdir)/m4/obstack.m4 $(top_srcdir)/m4/openat.m4 \
|
||||
$(top_srcdir)/m4/pathmax.m4 $(top_srcdir)/m4/perl.m4 \
|
||||
$(top_srcdir)/m4/physmem.m4 $(top_srcdir)/m4/po.m4 \
|
||||
$(top_srcdir)/m4/posixtm.m4 $(top_srcdir)/m4/posixver.m4 \
|
||||
$(top_srcdir)/m4/prereq.m4 $(top_srcdir)/m4/progtest.m4 \
|
||||
$(top_srcdir)/m4/putenv.m4 $(top_srcdir)/m4/quote.m4 \
|
||||
$(top_srcdir)/m4/quotearg.m4 $(top_srcdir)/m4/readlink.m4 \
|
||||
$(top_srcdir)/m4/readtokens.m4 $(top_srcdir)/m4/readutmp.m4 \
|
||||
$(top_srcdir)/m4/regex.m4 $(top_srcdir)/m4/rename.m4 \
|
||||
$(top_srcdir)/m4/restrict.m4 $(top_srcdir)/m4/rmdir-errno.m4 \
|
||||
$(top_srcdir)/m4/quotearg.m4 $(top_srcdir)/m4/randint.m4 \
|
||||
$(top_srcdir)/m4/randperm.m4 $(top_srcdir)/m4/randread.m4 \
|
||||
$(top_srcdir)/m4/readlink.m4 $(top_srcdir)/m4/readtokens.m4 \
|
||||
$(top_srcdir)/m4/readutmp.m4 $(top_srcdir)/m4/regex.m4 \
|
||||
$(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rmdir-errno.m4 \
|
||||
$(top_srcdir)/m4/rmdir.m4 $(top_srcdir)/m4/root-dev-ino.m4 \
|
||||
$(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
|
||||
$(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/same.m4 \
|
||||
$(top_srcdir)/m4/save-cwd.m4 $(top_srcdir)/m4/savedir.m4 \
|
||||
$(top_srcdir)/m4/setenv.m4 $(top_srcdir)/m4/settime.m4 \
|
||||
$(top_srcdir)/m4/sha1.m4 $(top_srcdir)/m4/sig2str.m4 \
|
||||
$(top_srcdir)/m4/signed.m4 $(top_srcdir)/m4/socklen.m4 \
|
||||
$(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/same-inode.m4 \
|
||||
$(top_srcdir)/m4/same.m4 $(top_srcdir)/m4/save-cwd.m4 \
|
||||
$(top_srcdir)/m4/savedir.m4 $(top_srcdir)/m4/setenv.m4 \
|
||||
$(top_srcdir)/m4/settime.m4 $(top_srcdir)/m4/sha1.m4 \
|
||||
$(top_srcdir)/m4/sha256.m4 $(top_srcdir)/m4/sha512.m4 \
|
||||
$(top_srcdir)/m4/sig2str.m4 $(top_srcdir)/m4/signed.m4 \
|
||||
$(top_srcdir)/m4/snprintf.m4 $(top_srcdir)/m4/socklen.m4 \
|
||||
$(top_srcdir)/m4/sockpfaf.m4 $(top_srcdir)/m4/ssize_t.m4 \
|
||||
$(top_srcdir)/m4/st_dm_mode.m4 $(top_srcdir)/m4/stat-macros.m4 \
|
||||
$(top_srcdir)/m4/stat-prog.m4 $(top_srcdir)/m4/stat-time.m4 \
|
||||
$(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stdint_h.m4 \
|
||||
$(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
|
||||
$(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \
|
||||
$(top_srcdir)/m4/stdio-safer.m4 \
|
||||
$(top_srcdir)/m4/stdlib-safer.m4 $(top_srcdir)/m4/stpcpy.m4 \
|
||||
$(top_srcdir)/m4/strcase.m4 $(top_srcdir)/m4/strcspn.m4 \
|
||||
@@ -136,6 +150,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/afs.m4 \
|
||||
$(top_srcdir)/m4/strtol.m4 $(top_srcdir)/m4/strtoll.m4 \
|
||||
$(top_srcdir)/m4/strtoul.m4 $(top_srcdir)/m4/strtoull.m4 \
|
||||
$(top_srcdir)/m4/strtoumax.m4 $(top_srcdir)/m4/strverscmp.m4 \
|
||||
$(top_srcdir)/m4/sys_socket_h.m4 $(top_srcdir)/m4/time_r.m4 \
|
||||
$(top_srcdir)/m4/timespec.m4 $(top_srcdir)/m4/tm_gmtoff.m4 \
|
||||
$(top_srcdir)/m4/tzset.m4 $(top_srcdir)/m4/uint32_t.m4 \
|
||||
$(top_srcdir)/m4/uintmax_t.m4 $(top_srcdir)/m4/uintptr_t.m4 \
|
||||
@@ -148,13 +163,13 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/afs.m4 \
|
||||
$(top_srcdir)/m4/utimens.m4 $(top_srcdir)/m4/utimes-null.m4 \
|
||||
$(top_srcdir)/m4/utimes.m4 $(top_srcdir)/m4/vasnprintf.m4 \
|
||||
$(top_srcdir)/m4/vasprintf.m4 $(top_srcdir)/m4/version-etc.m4 \
|
||||
$(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \
|
||||
$(top_srcdir)/m4/xalloc.m4 $(top_srcdir)/m4/xfts.m4 \
|
||||
$(top_srcdir)/m4/xgetcwd.m4 $(top_srcdir)/m4/xnanosleep.m4 \
|
||||
$(top_srcdir)/m4/xreadlink.m4 $(top_srcdir)/m4/xstrtod.m4 \
|
||||
$(top_srcdir)/m4/xstrtoimax.m4 $(top_srcdir)/m4/xstrtol.m4 \
|
||||
$(top_srcdir)/m4/xstrtoumax.m4 $(top_srcdir)/m4/yesno.m4 \
|
||||
$(top_srcdir)/configure.ac
|
||||
$(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wcwidth.m4 \
|
||||
$(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
|
||||
$(top_srcdir)/m4/xfts.m4 $(top_srcdir)/m4/xgetcwd.m4 \
|
||||
$(top_srcdir)/m4/xnanosleep.m4 $(top_srcdir)/m4/xreadlink.m4 \
|
||||
$(top_srcdir)/m4/xstrtod.m4 $(top_srcdir)/m4/xstrtoimax.m4 \
|
||||
$(top_srcdir)/m4/xstrtol.m4 $(top_srcdir)/m4/xstrtoumax.m4 \
|
||||
$(top_srcdir)/m4/yesno.m4 $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/build-aux/mkinstalldirs
|
||||
@@ -177,16 +192,23 @@ AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS)
|
||||
DVIPS = dvips
|
||||
am__installdirs = "$(DESTDIR)$(infodir)"
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
|
||||
ACLOCAL = @ACLOCAL@
|
||||
ALLOCA = @ALLOCA@
|
||||
ALLOCA_H = @ALLOCA_H@
|
||||
AMDEP_FALSE = @AMDEP_FALSE@
|
||||
AMDEP_TRUE = @AMDEP_TRUE@
|
||||
AMTAR = @AMTAR@
|
||||
ARPA_INET_H = @ARPA_INET_H@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
|
||||
BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
|
||||
BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
|
||||
BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
|
||||
BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
@@ -208,8 +230,19 @@ GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
|
||||
GETOPT_H = @GETOPT_H@
|
||||
GLIBC21 = @GLIBC21@
|
||||
GMSGFMT = @GMSGFMT@
|
||||
GMSGFMT_015 = @GMSGFMT_015@
|
||||
GNU_PACKAGE = @GNU_PACKAGE@
|
||||
GREP = @GREP@
|
||||
HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
|
||||
HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
|
||||
HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
|
||||
HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
|
||||
HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
|
||||
HAVE_STDINT_H = @HAVE_STDINT_H@
|
||||
HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
|
||||
HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
|
||||
HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
|
||||
HAVE_WCHAR_H = @HAVE_WCHAR_H@
|
||||
HAVE__BOOL = @HAVE__BOOL@
|
||||
HELP2MAN = @HELP2MAN@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
@@ -224,6 +257,7 @@ LIBICONV = @LIBICONV@
|
||||
LIBINTL = @LIBINTL@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LIB_ACL = @LIB_ACL@
|
||||
LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
|
||||
LIB_CRYPT = @LIB_CRYPT@
|
||||
LIB_EACCESS = @LIB_EACCESS@
|
||||
@@ -234,21 +268,13 @@ LN_S = @LN_S@
|
||||
LTLIBICONV = @LTLIBICONV@
|
||||
LTLIBINTL = @LTLIBINTL@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
|
||||
# The following is necessary if the package name is 8 characters or longer.
|
||||
# If the info documentation would be split into 10 or more separate files,
|
||||
# then this is necessary even if the package name is 7 characters long.
|
||||
#
|
||||
# Tell makeinfo to put everything in a single info file: <package>.info.
|
||||
# Otherwise, it would also generate files with names like <package>.info-[123],
|
||||
# and those names all map to one 14-byte name (<package>.info-) on some crufty
|
||||
# old systems.
|
||||
MAKEINFO = makeinfo --no-split
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MAN = @MAN@
|
||||
MKINSTALLDIRS = @MKINSTALLDIRS@
|
||||
MSGFMT = @MSGFMT@
|
||||
MSGFMT_015 = @MSGFMT_015@
|
||||
MSGMERGE = @MSGMERGE@
|
||||
NEED_SETGID = @NEED_SETGID@
|
||||
NETINET_IN_H = @NETINET_IN_H@
|
||||
OBJEXT = @OBJEXT@
|
||||
OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
|
||||
PACKAGE = @PACKAGE@
|
||||
@@ -261,21 +287,27 @@ PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PERL = @PERL@
|
||||
POSUB = @POSUB@
|
||||
POW_LIB = @POW_LIB@
|
||||
PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
|
||||
RANLIB = @RANLIB@
|
||||
SEQ_LIBM = @SEQ_LIBM@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
|
||||
SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
|
||||
STDBOOL_H = @STDBOOL_H@
|
||||
STDINT_H = @STDINT_H@
|
||||
STRIP = @STRIP@
|
||||
SYS_SOCKET_H = @SYS_SOCKET_H@
|
||||
U = @U@
|
||||
USE_NLS = @USE_NLS@
|
||||
VERSION = @VERSION@
|
||||
WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
|
||||
WINT_T_SUFFIX = @WINT_T_SUFFIX@
|
||||
XGETTEXT = @XGETTEXT@
|
||||
XGETTEXT_015 = @XGETTEXT_015@
|
||||
YACC = @YACC@
|
||||
YFLAGS = @YFLAGS@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_RANLIB = @ac_ct_RANLIB@
|
||||
ac_ct_STRIP = @ac_ct_STRIP@
|
||||
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
|
||||
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
|
||||
am__include = @am__include@
|
||||
@@ -320,6 +352,16 @@ sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
info_TEXINFOS = coreutils.texi
|
||||
EXTRA_DIST = perm.texi getdate.texi constants.texi doclicense.texi
|
||||
|
||||
# The following is necessary if the package name is 8 characters or longer.
|
||||
# If the info documentation would be split into 10 or more separate files,
|
||||
# then this is necessary even if the package name is 7 characters long.
|
||||
#
|
||||
# Tell makeinfo to put everything in a single info file: <package>.info.
|
||||
# Otherwise, it would also generate files with names like <package>.info-[123],
|
||||
# and those names all map to one 14-byte name (<package>.info-) on some crufty
|
||||
# old systems.
|
||||
AM_MAKEINFOFLAGS = --no-split
|
||||
MAINTAINERCLEANFILES = constants.texi
|
||||
|
||||
# Extended regular expressions to match word starts and ends.
|
||||
@@ -651,7 +693,8 @@ $(INFO_DEPS): $(EXTRA_DIST)
|
||||
|
||||
# List words/regexps here that should not appear in the texinfo documentation.
|
||||
# E.g., use @sc{nul}, not `NUL'
|
||||
# and use `time zone', not `timezone'.
|
||||
# Use `time zone', not `timezone'.
|
||||
# Use `zeros', not `zeroes' (nothing wrong with `zeroes'. just be consistent).
|
||||
check-texinfo:
|
||||
fail=0; \
|
||||
grep timezone $(srcdir)/*.texi && fail=1; \
|
||||
@@ -661,14 +704,15 @@ check-texinfo:
|
||||
$(EGREP) '$(_W)NUL$(W_)' $(srcdir)/*.texi && fail=1; \
|
||||
grep '\$$@"' $(srcdir)/*.texi && fail=1; \
|
||||
grep -n '[^[:punct:]]@footnote' $(srcdir)/*.texi && fail=1; \
|
||||
grep -n filename $(srcdir)/*.texi|grep -vE 'setfilename|{filename}' \
|
||||
grep -n filename $(srcdir)/*.texi|$(EGREP) -v 'setfilename|[{]filename[}]' \
|
||||
&& 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; }; \
|
||||
grep -iwE 'builtins?' $(srcdir)/*.texi && fail=1; \
|
||||
grep -iwE 'path(name)?s?' $(srcdir)/*.texi \
|
||||
| grep -vE '@vindex PATH$$|@env{PATH}' && fail=1; \
|
||||
$(EGREP) -i '$(_W)zeroes$(W_)' $(srcdir)/*.texi && fail=1; \
|
||||
$(EGREP) -i '$(_W)builtins?$(W_)' $(srcdir)/*.texi && fail=1; \
|
||||
$(EGREP) -i '$(_W)path(name)?s?$(W_)' $(srcdir)/*.texi \
|
||||
| $(EGREP) -v '@vindex PATH$$|@env[{]PATH[}]' && fail=1; \
|
||||
exit $$fail
|
||||
|
||||
check: check-texinfo
|
||||
|
||||
1073
doc/coreutils.texi
1073
doc/coreutils.texi
File diff suppressed because it is too large
Load Diff
@@ -1,7 +1,7 @@
|
||||
@c GNU date syntax documentation
|
||||
|
||||
@c Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
@c 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||
@c 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
|
||||
|
||||
@c Permission is granted to copy, distribute and/or modify this document
|
||||
@c under the terms of the GNU Free Documentation License, Version 1.1 or
|
||||
@@ -144,6 +144,11 @@ between round parentheses, as long as included parentheses are properly
|
||||
nested. Hyphens not followed by a digit are currently ignored. Leading
|
||||
zeros on numbers are ignored.
|
||||
|
||||
Invalid dates like @samp{2005-02-29} or times like @samp{24:00} are
|
||||
rejected. In the typical case of a host that does not support leap
|
||||
seconds, a time like @samp{23:59:60} is rejected even if it
|
||||
corresponds to a valid leap second.
|
||||
|
||||
|
||||
@node Calendar date items
|
||||
@section Calendar date items
|
||||
@@ -238,7 +243,8 @@ a number between 0 and 23, @var{minute} is a number between 0 and
|
||||
@samp{.} or @samp{,} and a fraction containing one or more digits.
|
||||
Alternatively,
|
||||
@samp{:@var{second}} can be omitted, in which case it is taken to
|
||||
be zero.
|
||||
be zero. On the rare hosts that support leap seconds, @var{second}
|
||||
may be 60.
|
||||
|
||||
@findex am @r{in date strings}
|
||||
@findex pm @r{in date strings}
|
||||
@@ -464,8 +470,8 @@ integers and can represent times from 1901-12-13 20:45:52 through
|
||||
of seconds with nanosecond subcounts, and can represent all the times
|
||||
in the known lifetime of the universe to a resolution of 1 nanosecond.
|
||||
|
||||
On most systems, these counts ignore the presence of leap seconds.
|
||||
For example, on most systems @samp{@@915148799} represents 1998-12-31
|
||||
On most hosts, these counts ignore the presence of leap seconds.
|
||||
For example, on most hosts @samp{@@915148799} represents 1998-12-31
|
||||
23:59:59 @sc{utc}, @samp{@@915148800} represents 1999-01-01 00:00:00
|
||||
@sc{utc}, and there is no way to represent the intervening leap second
|
||||
1998-12-31 23:59:60 @sc{utc}.
|
||||
|
||||
228
doc/perm.texi
228
doc/perm.texi
@@ -1,16 +1,20 @@
|
||||
Each file has a set of @dfn{permissions} that control the kinds of
|
||||
access that users have to that file. The permissions for a file are
|
||||
also called its @dfn{access mode}. They can be represented either in
|
||||
Each file has a set of @dfn{file mode bits} that control the kinds of
|
||||
access that users have to that file. They can be represented either in
|
||||
symbolic form or as an octal number.
|
||||
|
||||
@menu
|
||||
* Mode Structure:: Structure of file permissions.
|
||||
* Symbolic Modes:: Mnemonic permissions representation.
|
||||
* Numeric Modes:: Permissions as octal numbers.
|
||||
* Mode Structure:: Structure of file mode bits.
|
||||
* Symbolic Modes:: Mnemonic representation of file mode bits.
|
||||
* Numeric Modes:: File mode bits as octal numbers.
|
||||
* Directory Setuid and Setgid:: Set-user-ID and set-group-ID on directories.
|
||||
@end menu
|
||||
|
||||
@node Mode Structure
|
||||
@section Structure of File Permissions
|
||||
@section Structure of File Mode Bits
|
||||
|
||||
The file mode bits have two parts: the @dfn{file permission bits},
|
||||
which control ordinary access to the file, and @dfn{special mode
|
||||
bits}, which affect only some files.
|
||||
|
||||
There are three kinds of permissions that a user can have for a file:
|
||||
|
||||
@@ -24,7 +28,7 @@ list the contents of the directory.
|
||||
permission to write to (change) the file. For directories, this means
|
||||
permission to create and remove files in the directory.
|
||||
@item
|
||||
@cindex execute permission
|
||||
@cindex execute/search permission
|
||||
permission to execute the file (run it as a program). For directories,
|
||||
this means permission to access files in the directory.
|
||||
@end enumerate
|
||||
@@ -50,58 +54,66 @@ file system 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 @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
|
||||
executable files (programs) and, on some systems, directories:
|
||||
In addition to the three sets of three permissions listed above, the
|
||||
file mode bits have three special components, which affect only
|
||||
executable files (programs) and, on most systems, directories:
|
||||
|
||||
@enumerate
|
||||
@item
|
||||
@cindex set-user-ID
|
||||
@cindex setuid
|
||||
set the process's effective user ID to that of the file upon execution
|
||||
(called the @dfn{setuid bit}). No effect on directories.
|
||||
Set the process's effective user ID to that of the file upon execution
|
||||
(called the @dfn{set-user-ID bit}, or sometimes the @dfn{setgid bit}).
|
||||
For directories on a few systems, give files created in the directory
|
||||
the same owner as the directory, no matter who creates them, and set
|
||||
the set-user-ID bit of newly-created subdirectories.
|
||||
@item
|
||||
@cindex set-group-ID
|
||||
@cindex setgid
|
||||
set the process's effective group ID to that of the file upon execution
|
||||
(called the @dfn{setgid bit}). For directories on some systems, put
|
||||
files created in the directory into the same group as the directory, no
|
||||
matter what group the user who creates them is in.
|
||||
Set the process's effective group ID to that of the file upon execution
|
||||
(called the @dfn{set-group-ID bit}, or sometimes the @dfn{setgid bit}).
|
||||
For directories on most systems, give files created in the directory
|
||||
the same group as the directory, no matter what group the user who
|
||||
creates them is in, and set the set-group-ID bit of newly-created
|
||||
subdirectories.
|
||||
@item
|
||||
@cindex sticky
|
||||
@cindex swap space, saving text image in
|
||||
@cindex text image, saving in swap space
|
||||
@cindex restricted deletion flag
|
||||
prevent users from removing or renaming a file in a directory
|
||||
Prevent unprivileged users from removing or renaming a file in a directory
|
||||
unless they own the file or the directory; this is called the
|
||||
@dfn{restricted deletion flag} for the directory.
|
||||
For regular files on some systems, save the program's text image on the
|
||||
@dfn{restricted deletion flag} for the directory, and is commonly
|
||||
found on world-writable directories like @file{/tmp}.
|
||||
|
||||
For regular files on some older systems, save the program's text image on the
|
||||
swap device so it will load more quickly when run; this is called the
|
||||
@dfn{sticky bit}.
|
||||
@end enumerate
|
||||
|
||||
In addition to the permissions listed above, there may be file attributes
|
||||
specific to the file system, e.g: access control lists (ACLs), whether a
|
||||
file is compressed, whether a file can be modified (immutability), whether
|
||||
In addition to the file mode bits listed above, there may be file attributes
|
||||
specific to the file system, e.g., access control lists (ACLs), whether a
|
||||
file is compressed, whether a file can be modified (immutability), and whether
|
||||
a file can be dumped. These are usually set using programs
|
||||
specific to the file system. For example:
|
||||
@c should probably say a lot more about ACLs... someday
|
||||
|
||||
@table @asis
|
||||
@item ext2
|
||||
On @acronym{GNU} and @acronym{GNU}/Linux the file permissions
|
||||
(``attributes'') specific to
|
||||
On @acronym{GNU} and @acronym{GNU}/Linux the file attributes specific to
|
||||
the ext2 file system are set using @command{chattr}.
|
||||
|
||||
@item FFS
|
||||
On FreeBSD the file permissions (``flags'') specific to the FFS
|
||||
file system are set using @command{chrflags}.
|
||||
On FreeBSD the file flags specific to the FFS
|
||||
file system are set using @command{chflags}.
|
||||
@end table
|
||||
|
||||
Although a file's permission ``bits'' allow an operation on that file,
|
||||
Even if a file's mode bits allow an operation on that file,
|
||||
that operation may still fail, because:
|
||||
|
||||
@itemize
|
||||
@item
|
||||
the file-system-specific permissions do not permit it;
|
||||
the file-system-specific attributes or flags do not permit it; or
|
||||
|
||||
@item
|
||||
the file system is mounted as read-only.
|
||||
@@ -115,9 +127,9 @@ may have just run @code{chmod a+w FILE}.
|
||||
@section Symbolic Modes
|
||||
|
||||
@cindex symbolic modes
|
||||
@dfn{Symbolic modes} represent changes to files' permissions as
|
||||
@dfn{Symbolic modes} represent changes to files' mode bits as
|
||||
operations on single-character symbols. They allow you to modify either
|
||||
all or selected parts of files' permissions, optionally based on
|
||||
all or selected parts of files' mode bits, optionally based on
|
||||
their previous values, and perhaps on the current @code{umask} as well
|
||||
(@pxref{Umask and Protection}).
|
||||
|
||||
@@ -137,7 +149,7 @@ symbolic modes.
|
||||
@menu
|
||||
* Setting Permissions:: Basic operations on permissions.
|
||||
* Copying Permissions:: Copying existing permissions.
|
||||
* Changing Special Permissions:: Special permissions.
|
||||
* Changing Special Mode Bits:: Special mode bits.
|
||||
* Conditional Executability:: Conditionally affecting executability.
|
||||
* Multiple Changes:: Making multiple changes.
|
||||
* Umask and Protection:: The effect of the umask.
|
||||
@@ -148,7 +160,7 @@ symbolic modes.
|
||||
|
||||
The basic symbolic operations on a file's permissions are adding,
|
||||
removing, and setting the permission that certain users have to read,
|
||||
write, and execute the file. These operations have the following
|
||||
write, and execute or search the file. These operations have the following
|
||||
format:
|
||||
|
||||
@example
|
||||
@@ -213,18 +225,19 @@ the permission the @var{users} have to read the file;
|
||||
@cindex write permission, symbolic
|
||||
the permission the @var{users} have to write to the file;
|
||||
@item x
|
||||
@cindex execute permission, symbolic
|
||||
the permission the @var{users} have to execute the file.
|
||||
@cindex execute/search permission, symbolic
|
||||
the permission the @var{users} have to execute the file,
|
||||
or search it if it is a directory.
|
||||
@end table
|
||||
|
||||
For example, to give everyone permission to read and write a file,
|
||||
For example, to give everyone permission to read and write a regular file,
|
||||
but not to execute it, use:
|
||||
|
||||
@example
|
||||
a=rw
|
||||
@end example
|
||||
|
||||
To remove write permission for from all users other than the file's
|
||||
To remove write permission for all users other than the file's
|
||||
owner, use:
|
||||
|
||||
@example
|
||||
@@ -275,38 +288,42 @@ it to mode 666 (@samp{rw-rw-rw-}). If the file had started out as mode
|
||||
(@samp{rwxr--r-x}). The @samp{-} and @samp{=} operations work
|
||||
analogously.
|
||||
|
||||
@node Changing Special Permissions
|
||||
@subsection Changing Special Permissions
|
||||
@node Changing Special Mode Bits
|
||||
@subsection Changing Special Mode Bits
|
||||
|
||||
@cindex changing special permissions
|
||||
In addition to changing a file's read, write, and execute permissions,
|
||||
you can change its special permissions. @xref{Mode Structure}, for a
|
||||
summary of these permissions.
|
||||
@cindex changing special mode bits
|
||||
In addition to changing a file's read, write, and execute/search permissions,
|
||||
you can change its special mode bits. @xref{Mode Structure}, for a
|
||||
summary of these special mode bits.
|
||||
|
||||
To change a file's permission to set the user ID on execution, use
|
||||
To change the file mode bits to set the user ID on execution, use
|
||||
@samp{u} in the @var{users} part of the symbolic mode and
|
||||
@samp{s} in the @var{permissions} part.
|
||||
|
||||
To change a file's permission to set the group ID on execution, use
|
||||
To change the file mode bits to set the group ID on execution, use
|
||||
@samp{g} in the @var{users} part of the symbolic mode and
|
||||
@samp{s} in the @var{permissions} part.
|
||||
|
||||
To change a file's permission to set the restricted deletion flag or sticky bit,
|
||||
omit the @var{users} part of the symbolic mode (or use @samp{a}) and put
|
||||
To set both user and group ID on execution, omit the @var{users} part
|
||||
of the symbolic mode (or use @samp{a}) and use @samp{s} in the
|
||||
@var{permissions} part.
|
||||
|
||||
To change the file mode bits to set the restricted deletion flag or sticky bit,
|
||||
omit the @var{users} part of the symbolic mode (or use @samp{a}) and use
|
||||
@samp{t} in the @var{permissions} part.
|
||||
|
||||
For example, to add set-user-ID permission to a program,
|
||||
For example, to set the set-user-ID mode bit of a program,
|
||||
you can use the mode:
|
||||
|
||||
@example
|
||||
u+s
|
||||
@end example
|
||||
|
||||
To remove both set-user-ID and set-group-ID permission from
|
||||
To remove both set-user-ID and set-group-ID mode bits from
|
||||
it, you can use the mode:
|
||||
|
||||
@example
|
||||
ug-s
|
||||
a-s
|
||||
@end example
|
||||
|
||||
To set the restricted deletion flag or sticky bit, you can use
|
||||
@@ -320,8 +337,8 @@ The combination @samp{o+s} has no effect. On @acronym{GNU} systems
|
||||
the combinations @samp{u+t} and @samp{g+t} have no effect, and
|
||||
@samp{o+t} acts like plain @samp{+t}.
|
||||
|
||||
The @samp{=} operator is not very useful with special permissions; for
|
||||
example, the mode:
|
||||
The @samp{=} operator is not very useful with special mode bits.
|
||||
For example, the mode:
|
||||
|
||||
@example
|
||||
o=t
|
||||
@@ -329,15 +346,18 @@ o=t
|
||||
|
||||
@noindent
|
||||
does set the restricted deletion flag or sticky bit, but it also
|
||||
removes all read, write, and execute permissions that users not in the
|
||||
removes all read, write, and execute/search permissions that users not in the
|
||||
file's group might have had for it.
|
||||
|
||||
@xref{Directory Setuid and Setgid}, for additional rules concerning
|
||||
set-user-ID and set-group-ID bits and directories.
|
||||
|
||||
@node Conditional Executability
|
||||
@subsection Conditional Executability
|
||||
|
||||
@cindex conditional executability
|
||||
There is one more special type of symbolic permission: if you use
|
||||
@samp{X} instead of @samp{x}, execute permission is affected only if the
|
||||
@samp{X} instead of @samp{x}, execute/search permission is affected only if the
|
||||
file is a directory or already had execute permission.
|
||||
|
||||
For example, this mode:
|
||||
@@ -356,7 +376,7 @@ anyone could execute them before.
|
||||
@cindex multiple changes to permissions
|
||||
The format of symbolic modes is actually more complex than described
|
||||
above (@pxref{Setting Permissions}). It provides two ways to make
|
||||
multiple changes to files' permissions.
|
||||
multiple changes to files' mode bits.
|
||||
|
||||
The first way is to specify multiple @var{operation} and
|
||||
@var{permissions} parts after a @var{users} part in the symbolic mode.
|
||||
@@ -370,7 +390,7 @@ og+rX-w
|
||||
@noindent
|
||||
gives users other than the owner of the file read permission and, if
|
||||
it is a directory or if someone already had execute permission
|
||||
to it, gives them execute permission; and it also denies them write
|
||||
to it, gives them execute/search permission; and it also denies them write
|
||||
permission to the file. It does not affect the permission that the
|
||||
owner of the file has for it. The above mode is equivalent to
|
||||
the two modes:
|
||||
@@ -396,7 +416,7 @@ u=rwx,g=rx,o=
|
||||
@end example
|
||||
|
||||
@noindent
|
||||
sets all of the non-special permissions for the file explicitly. (It
|
||||
sets all of the permission bits for the file explicitly. (It
|
||||
gives users who are not in the file's group no permission at all for
|
||||
it.)
|
||||
|
||||
@@ -408,7 +428,7 @@ a+r,g+x-w
|
||||
|
||||
@noindent
|
||||
gives all users permission to read the file, and gives users who are in
|
||||
the file's group permission to execute it, as well, but not permission
|
||||
the file's group permission to execute/search it as well, but not permission
|
||||
to write to it. The above mode could be written in several different
|
||||
ways; another is:
|
||||
|
||||
@@ -457,52 +477,116 @@ the file to all users.
|
||||
@section Numeric Modes
|
||||
|
||||
@cindex numeric modes
|
||||
@cindex file permissions, numeric
|
||||
@cindex file mode bits, numeric
|
||||
@cindex octal numbers for file modes
|
||||
As an
|
||||
alternative to giving a symbolic mode, you can give an octal (base 8)
|
||||
number that represents the new mode.
|
||||
number that represents the mode.
|
||||
This number is always interpreted in octal; you do not have to add a
|
||||
leading 0, as you do in C. Mode 0055 is the same as mode 55.
|
||||
leading @samp{0}, as you do in C. Mode @samp{0055} is the same as
|
||||
mode @samp{55}.
|
||||
|
||||
A numeric mode is usually shorter than the corresponding symbolic
|
||||
mode, but it is limited in that it cannot take into account a file's
|
||||
previous permissions; it can only set them absolutely.
|
||||
mode, but it is limited in that normally it cannot take into account the
|
||||
previous file mode bits; it can only set them absolutely.
|
||||
(As discussed in the next section, the set-user-ID and set-group-ID
|
||||
bits of directories are an exception to this general limitation.)
|
||||
|
||||
The permissions granted to the user,
|
||||
to other users in the file's group,
|
||||
and to other users not in the file's group each require three
|
||||
bits, which are represented as one octal digit. The three special
|
||||
permissions also require one bit each, and they are as a group
|
||||
mode bits also require one bit each, and they are as a group
|
||||
represented as another octal digit. Here is how the bits are arranged,
|
||||
starting with the lowest valued bit:
|
||||
|
||||
@example
|
||||
Value in Corresponding
|
||||
Mode Permission
|
||||
Mode Mode Bit
|
||||
|
||||
Other users not in the file's group:
|
||||
1 Execute
|
||||
1 Execute/search
|
||||
2 Write
|
||||
4 Read
|
||||
|
||||
Other users in the file's group:
|
||||
10 Execute
|
||||
10 Execute/search
|
||||
20 Write
|
||||
40 Read
|
||||
|
||||
The file's owner:
|
||||
100 Execute
|
||||
100 Execute/search
|
||||
200 Write
|
||||
400 Read
|
||||
|
||||
Special permissions:
|
||||
Special mode bits:
|
||||
1000 Restricted deletion flag or sticky bit
|
||||
2000 Set group ID on execution
|
||||
4000 Set user ID on execution
|
||||
@end example
|
||||
|
||||
For example, numeric mode 4755 corresponds to symbolic mode
|
||||
@samp{u=rwxs,go=rx}, and numeric mode 664 corresponds to symbolic mode
|
||||
@samp{ug=rw,o=r}. Numeric mode 0 corresponds to symbolic mode
|
||||
For example, numeric mode @samp{4755} corresponds to symbolic mode
|
||||
@samp{u=rwxs,go=rx}, and numeric mode @samp{664} corresponds to symbolic mode
|
||||
@samp{ug=rw,o=r}. Numeric mode @samp{0} corresponds to symbolic mode
|
||||
@samp{a=}.
|
||||
|
||||
@node Directory Setuid and Setgid
|
||||
@section Directories and the Set-User-ID and Set-Group-ID Bits
|
||||
|
||||
On most systems, if a directory's set-group-ID bit is set, newly
|
||||
created subfiles inherit the same group as the directory, and newly
|
||||
created subdirectories inherit the set-group-ID bit of the parent
|
||||
directory. On a few systems, a directory's set-user-ID bit has a
|
||||
similar effect on the ownership of new subfiles and the set-user-ID
|
||||
bits of new subdirectories. These mechanisms let users share files
|
||||
more easily, by lessening the need to use @command{chmod} or
|
||||
@command{chown} to share new files.
|
||||
|
||||
These convenience mechanisms rely on the set-user-ID and set-group-ID
|
||||
bits of directories. If commands like @command{chmod} and
|
||||
@command{mkdir} routinely cleared these bits on directories, the
|
||||
mechanisms would be less convenient and it would be harder to share
|
||||
files. Therefore, a command like @command{chmod} does not affect the
|
||||
set-user-ID or set-group-ID bits of a directory unless the user
|
||||
specifically mentions them in a symbolic mode, or sets them in
|
||||
a numeric mode. For example, on systems that support
|
||||
set-group-ID inheritance:
|
||||
|
||||
@example
|
||||
# These commands leave the set-user-ID and
|
||||
# set-group-ID bits of the subdirectories alone,
|
||||
# so that they retain their default values.
|
||||
mkdir A B C
|
||||
chmod 755 A
|
||||
chmod 0755 B
|
||||
chmod u=rwx,go=rx C
|
||||
mkdir -m 755 D
|
||||
mkdir -m 0755 E
|
||||
mkdir -m u=rwx,go=rx F
|
||||
@end example
|
||||
|
||||
If you want to try to set these bits, you must mention them
|
||||
explicitly in the symbolic or numeric modes, e.g.:
|
||||
|
||||
@example
|
||||
# These commands try to set the set-user-ID
|
||||
# and set-group-ID bits of the subdirectories.
|
||||
mkdir G H
|
||||
chmod 6755 G
|
||||
chmod u=rwx,go=rx,a+s H
|
||||
mkdir -m 6755 I
|
||||
mkdir -m u=rwx,go=rx,a+s J
|
||||
@end example
|
||||
|
||||
If you want to try to clear these bits, you must mention them
|
||||
explicitly in a symbolic mode, e.g.:
|
||||
|
||||
@example
|
||||
# This command tries to clear the set-user-ID
|
||||
# and set-group-ID bits of the directory D.
|
||||
chmod a-s D
|
||||
@end example
|
||||
|
||||
This behavior is a @acronym{GNU} extension. Portable scripts should
|
||||
not rely on requests to set or clear these bits on directories, as
|
||||
@acronym{POSIX} allows implementations to ignore these requests.
|
||||
|
||||
30
gnupload
30
gnupload
@@ -1,9 +1,9 @@
|
||||
#!/bin/sh
|
||||
# Sign files and upload them.
|
||||
|
||||
scriptversion=2004-01-28.17
|
||||
scriptversion=2006-05-20.00
|
||||
|
||||
# Copyright (C) 2004 Free Software Foundation
|
||||
# Copyright (C) 2004, 2005, 2006 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
|
||||
@@ -39,13 +39,16 @@ Options:
|
||||
--version output version information and exit
|
||||
|
||||
Recognized destinations are:
|
||||
alpha.gnu.org:DIRECTORY build directive files and upload files by FTP
|
||||
ftp.gnu.org:DIRECTORY build directive files and upload files by FTP
|
||||
alpha.gnu.org:DIRECTORY
|
||||
savannah.gnu.org:DIRECTORY
|
||||
savannah.nongnu.org:DIRECTORY
|
||||
ftp.gnu.org:DIRECTORY
|
||||
build directive files and upload files by FTP
|
||||
[user@]host:DIRECTORY upload files with scp
|
||||
|
||||
Example:
|
||||
gnupload --to sources.redhat.com:~ftp/automake \\
|
||||
--to alpha.gnu.org:automake \\
|
||||
gnupload --to sources.redhat.com:~ftp/pub/automake \\
|
||||
""--to alpha.gnu.org:automake \\
|
||||
automake-1.8.2b.tar.gz automake-1.8.2b.tar.bz2
|
||||
|
||||
Report bugs to <bug-automake@gnu.org>.
|
||||
@@ -55,7 +58,7 @@ while test -n "$1"; do
|
||||
case $1 in
|
||||
--help)
|
||||
echo "$usage"
|
||||
exit 0
|
||||
exit $?
|
||||
;;
|
||||
--to)
|
||||
if test -z "$2"; then
|
||||
@@ -77,7 +80,7 @@ while test -n "$1"; do
|
||||
;;
|
||||
--version)
|
||||
echo "gnupload $scriptversion"
|
||||
exit 0
|
||||
exit $?
|
||||
;;
|
||||
-*)
|
||||
echo "$0: Unknown option \`$1', try \`$0 --help'" 1>&2
|
||||
@@ -136,21 +139,28 @@ do
|
||||
do
|
||||
echo "Uploading $file to $dest..."
|
||||
files="$file $file.sig"
|
||||
destdir=`echo $dest | sed 's/[^:]*://'`
|
||||
case $dest in
|
||||
alpha.gnu.org:*)
|
||||
rm -f $file.directive $file.directive.asc
|
||||
echo directory: `echo $dest | sed 's/[^:]*://'` >$file.directive
|
||||
echo directory: $destdir >$file.directive
|
||||
echo "$passphrase" | $GPG --passphrase-fd 0 --clearsign $file.directive
|
||||
ncftpput ftp-upload.gnu.org /incoming/alpha $files $file.directive.asc
|
||||
rm -f $file.directive $file.directive.asc
|
||||
;;
|
||||
ftp.gnu.org:*)
|
||||
rm -f $file.directive $file.directive.asc
|
||||
echo directory: `echo $dest | sed 's/[^:]*://'` >$file.directive
|
||||
echo directory: $destdir >$file.directive
|
||||
echo "$passphrase" | $GPG --passphrase-fd 0 --clearsign $file.directive
|
||||
ncftpput ftp-upload.gnu.org /incoming/ftp $files $file.directive.asc
|
||||
rm -f $file.directive $file.directive.asc
|
||||
;;
|
||||
savannah.gnu.org:*)
|
||||
ncftpput savannah.gnu.org /incoming/savannah/$destdir $files
|
||||
;;
|
||||
savannah.nongnu.org:*)
|
||||
ncftpput savannah.nongnu.org /incoming/savannah/$destdir $files
|
||||
;;
|
||||
*)
|
||||
scp $files $dest
|
||||
;;
|
||||
|
||||
@@ -29,8 +29,11 @@ regex.c
|
||||
regex.h
|
||||
regex_internal.c
|
||||
regex_internal.h
|
||||
snprintf.h
|
||||
socket_.h
|
||||
stat-time.h
|
||||
stdbool_.h
|
||||
stdint_.h
|
||||
strcase.h
|
||||
strdup.h
|
||||
strndup.h
|
||||
@@ -41,3 +44,4 @@ time_r.h
|
||||
utimecmp.h
|
||||
vasnprintf.h
|
||||
vasprintf.h
|
||||
wcwidth.h
|
||||
|
||||
@@ -14,6 +14,7 @@ ref-del.sed
|
||||
search.h
|
||||
stat.c
|
||||
stdbool.h
|
||||
stdint.h
|
||||
sysexit.h
|
||||
t-fpending
|
||||
unlocked-io.h
|
||||
|
||||
1408
lib/ChangeLog
1408
lib/ChangeLog
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,6 @@
|
||||
## Makefile for gnulib/lib -*-Makefile-*-
|
||||
|
||||
# Copyright (C) 1995-2005 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1995-2006 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,8 @@
|
||||
## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
## 02110-1301, USA.
|
||||
|
||||
AM_CFLAGS = $(WARNING_CFLAGS) $(WERROR_CFLAGS)
|
||||
|
||||
noinst_LIBRARIES = libcoreutils.a
|
||||
|
||||
noinst_PROGRAMS = t-fpending
|
||||
@@ -27,27 +29,32 @@ DEFS += -DLIBDIR=\"$(libdir)\"
|
||||
|
||||
libcoreutils_a_SOURCES = \
|
||||
allocsa.c allocsa.h \
|
||||
base64.c base64.h \
|
||||
buffer-lcm.c buffer-lcm.h \
|
||||
euidaccess.h \
|
||||
exit.h \
|
||||
fprintftime.c fprintftime.h \
|
||||
full-read.c full-read.h \
|
||||
full-write.c full-write.h \
|
||||
getaddrinfo.h \
|
||||
gettext.h \
|
||||
inet_ntop.h \
|
||||
localcharset.c localcharset.h \
|
||||
mbchar.h \
|
||||
mbswidth.c mbswidth.h \
|
||||
mbuiter.h \
|
||||
readtokens0.c readtokens0.h \
|
||||
setenv.h \
|
||||
snprintf.h \
|
||||
strcase.h \
|
||||
strnlen1.c strnlen1.h \
|
||||
strstr.h \
|
||||
time_r.c time_r.h \
|
||||
unicodeio.c unicodeio.h \
|
||||
verify.h \
|
||||
wcwidth.h \
|
||||
xalloc-die.c \
|
||||
xgethostname.c xgethostname.h \
|
||||
xmemcoll.c xmemcoll.h \
|
||||
xmemxfrm.c xmemxfrm.h \
|
||||
xstrndup.c xstrndup.h \
|
||||
xstrtoimax.c \
|
||||
xstrtoumax.c
|
||||
@@ -66,6 +73,7 @@ lib_OBJECTS = $(libcoreutils_a_OBJECTS)
|
||||
BUILT_SOURCES = getdate.c
|
||||
CLEANFILES =
|
||||
MAINTAINERCLEANFILES = $(BUILT_SOURCES)
|
||||
MOSTLYCLEANDIRS =
|
||||
MOSTLYCLEANFILES =
|
||||
SUFFIXES =
|
||||
|
||||
@@ -122,11 +130,42 @@ CLEANFILES += charset.alias ref-add.sed ref-del.sed
|
||||
|
||||
BUILT_SOURCES += $(STDBOOL_H)
|
||||
EXTRA_DIST += stdbool_.h
|
||||
MOSTLYCLEANFILES += stdbool.h stdbool.ht
|
||||
MOSTLYCLEANFILES += stdbool.h stdbool.h-t
|
||||
# Create stdbool.h on systems that lack a working one.
|
||||
stdbool.h: stdbool_.h
|
||||
sed -e 's/@''HAVE__BOOL''@/$(HAVE__BOOL)/g' $(srcdir)/stdbool_.h > $@t
|
||||
mv $@t $@
|
||||
sed -e 's/@''HAVE__BOOL''@/$(HAVE__BOOL)/g' < $(srcdir)/stdbool_.h > $@-t
|
||||
mv $@-t $@
|
||||
|
||||
BUILT_SOURCES += $(STDINT_H)
|
||||
EXTRA_DIST += stdint_.h
|
||||
|
||||
# We need the following in order to create <stdint.h> when the system
|
||||
# doesn't have one that works with the given compiler.
|
||||
stdint.h: stdint_.h
|
||||
sed -e 's/@''HAVE_WCHAR_H''@/$(HAVE_WCHAR_H)/g' \
|
||||
-e 's/@''HAVE_STDINT_H''@/$(HAVE_STDINT_H)/g' \
|
||||
-e 's/@''HAVE_SYS_TYPES_H''@/$(HAVE_SYS_TYPES_H)/g' \
|
||||
-e 's|@''ABSOLUTE_STDINT_H''@|$(ABSOLUTE_STDINT_H)|g' \
|
||||
-e 's/@''HAVE_INTTYPES_H''@/$(HAVE_INTTYPES_H)/g' \
|
||||
-e 's/@''HAVE_SYS_INTTYPES_H''@/$(HAVE_SYS_INTTYPES_H)/g' \
|
||||
-e 's/@''HAVE_SYS_BITYPES_H''@/$(HAVE_SYS_BITYPES_H)/g' \
|
||||
-e 's/@''HAVE_LONG_LONG_INT''@/$(HAVE_LONG_LONG_INT)/g' \
|
||||
-e 's/@''BITSIZEOF_PTRDIFF_T''@/$(BITSIZEOF_PTRDIFF_T)/g' \
|
||||
-e 's/@''PTRDIFF_T_SUFFIX''@/$(PTRDIFF_T_SUFFIX)/g' \
|
||||
-e 's/@''BITSIZEOF_SIG_ATOMIC_T''@/$(BITSIZEOF_SIG_ATOMIC_T)/g' \
|
||||
-e 's/@''HAVE_SIGNED_SIG_ATOMIC_T''@/$(HAVE_SIGNED_SIG_ATOMIC_T)/g' \
|
||||
-e 's/@''SIG_ATOMIC_T_SUFFIX''@/$(SIG_ATOMIC_T_SUFFIX)/g' \
|
||||
-e 's/@''BITSIZEOF_SIZE_T''@/$(BITSIZEOF_SIZE_T)/g' \
|
||||
-e 's/@''SIZE_T_SUFFIX''@/$(SIZE_T_SUFFIX)/g' \
|
||||
-e 's/@''BITSIZEOF_WCHAR_T''@/$(BITSIZEOF_WCHAR_T)/g' \
|
||||
-e 's/@''HAVE_SIGNED_WCHAR_T''@/$(HAVE_SIGNED_WCHAR_T)/g' \
|
||||
-e 's/@''WCHAR_T_SUFFIX''@/$(WCHAR_T_SUFFIX)/g' \
|
||||
-e 's/@''BITSIZEOF_WINT_T''@/$(BITSIZEOF_WINT_T)/g' \
|
||||
-e 's/@''HAVE_SIGNED_WINT_T''@/$(HAVE_SIGNED_WINT_T)/g' \
|
||||
-e 's/@''WINT_T_SUFFIX''@/$(WINT_T_SUFFIX)/g' \
|
||||
< $(srcdir)/stdint_.h > $@-t
|
||||
mv $@-t $@
|
||||
MOSTLYCLEANFILES += stdint.h stdint.h-t
|
||||
|
||||
BUILT_SOURCES += $(ALLOCA_H)
|
||||
EXTRA_DIST += alloca_.h
|
||||
@@ -153,6 +192,40 @@ MOSTLYCLEANFILES += fnmatch.h fnmatch.h-t
|
||||
BUILT_SOURCES += $(GETOPT_H)
|
||||
EXTRA_DIST += getopt_.h getopt_int.h
|
||||
|
||||
BUILT_SOURCES += $(ARPA_INET_H)
|
||||
|
||||
# We need the following in order to create <arpa/inet.h> when the system
|
||||
# doesn't have one.
|
||||
arpa/inet.h:
|
||||
test -d arpa || mkdir arpa
|
||||
echo '#include <sys/socket.h>' >$@-t
|
||||
mv $@-t $@
|
||||
MOSTLYCLEANFILES += arpa/inet.h arpa/inet.h-t
|
||||
MOSTLYCLEANDIRS += arpa
|
||||
|
||||
BUILT_SOURCES += $(SYS_SOCKET_H)
|
||||
EXTRA_DIST += socket_.h
|
||||
|
||||
BUILT_SOURCES += $(NETINET_IN_H)
|
||||
|
||||
# We need the following in order to create <netinet/in.h> when the system
|
||||
# doesn't have one.
|
||||
netinet/in.h:
|
||||
test -d netinet || mkdir netinet
|
||||
echo '#include <sys/socket.h>' >$@-t
|
||||
mv $@-t $@
|
||||
MOSTLYCLEANFILES += netinet/in.h netinet/in.h-t
|
||||
MOSTLYCLEANDIRS += netinet
|
||||
|
||||
# We need the following in order to create <sys/socket.h> when the system
|
||||
# doesn't have one that works with the given compiler.
|
||||
sys/socket.h: socket_.h
|
||||
test -d sys || mkdir sys
|
||||
cp $(srcdir)/socket_.h $@-t
|
||||
mv $@-t $@
|
||||
MOSTLYCLEANFILES += sys/socket.h sys/socket.h-t
|
||||
MOSTLYCLEANDIRS += sys
|
||||
|
||||
check: unit-test
|
||||
|
||||
.PHONY: unit-test
|
||||
|
||||
340
lib/Makefile.in
340
lib/Makefile.in
@@ -14,7 +14,7 @@
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
# Copyright (C) 1995-2005 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1995-2006 Free Software Foundation, Inc.
|
||||
|
||||
|
||||
srcdir = @srcdir@
|
||||
@@ -46,15 +46,18 @@ DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
|
||||
argmatch.c argmatch.h asnprintf.c asprintf.c atexit.c \
|
||||
backupfile.c backupfile.h basename.c c-strtod.c c-strtod.h \
|
||||
c-strtold.c calloc.c canon-host.c canon-host.h canonicalize.c \
|
||||
canonicalize.h chdir-long.c chdir-long.h chown.c cloexec.c \
|
||||
cloexec.h closeout.c closeout.h creat-safer.c cycle-check.c \
|
||||
cycle-check.h dev-ino.h diacrit.c diacrit.h dirfd.c dirfd.h \
|
||||
dirname.c dirname.h dup-safer.c dup2.c error.c error.h \
|
||||
euidaccess.c exclude.c exclude.h exitfail.c exitfail.h \
|
||||
fchdir-stub.c fchown-stub.c fcntl--.h fcntl-safer.h \
|
||||
fd-reopen.c fd-reopen.h fd-safer.c file-type.c file-type.h \
|
||||
fileblocks.c filemode.c filemode.h filenamecat.c filenamecat.h \
|
||||
fnmatch.c fopen-safer.c free.c fsusage.c fsusage.h ftruncate.c \
|
||||
canonicalize.h chdir-long.c chdir-long.h chdir-safer.c \
|
||||
chdir-safer.h chown.c cloexec.c cloexec.h close-stream.c \
|
||||
close-stream.h closeout.c closeout.h creat-safer.c \
|
||||
cycle-check.c cycle-check.h dev-ino.h diacrit.c diacrit.h \
|
||||
dirchownmod.c dirchownmod.h dirfd.c dirfd.h dirname.c \
|
||||
dirname.h dup-safer.c dup2.c error.c error.h euidaccess-stat.c \
|
||||
euidaccess-stat.h euidaccess.c exclude.c exclude.h exitfail.c \
|
||||
exitfail.h fchdir-stub.c fchmodat.c fchown-stub.c fcntl--.h \
|
||||
fcntl-safer.h fd-reopen.c fd-reopen.h fd-safer.c file-type.c \
|
||||
file-type.h fileblocks.c filemode.c filemode.h filenamecat.c \
|
||||
filenamecat.h fnmatch.c fopen-safer.c fprintftime.c \
|
||||
fprintftime.h free.c fsusage.c fsusage.h ftruncate.c \
|
||||
fts-cycle.c fts.c fts_.h gai_strerror.c getaddrinfo.c getcwd.c \
|
||||
getcwd.h getdate.h getdate.y getdelim.c getdelim.h getgroups.c \
|
||||
gethostname.c gethrxtime.c gethrxtime.h getline.c getline.h \
|
||||
@@ -62,67 +65,77 @@ DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
|
||||
getpass.c getpass.h gettime.c gettimeofday.c getugroups.c \
|
||||
getusershell.c group-member.c group-member.h hard-locale.c \
|
||||
hard-locale.h hash-pjw.c hash-pjw.h hash.c hash.h human.c \
|
||||
human.h idcache.c imaxtostr.c intprops.h inttostr.c inttostr.h \
|
||||
lchown.c lchown.h linebuffer.c linebuffer.h long-options.c \
|
||||
long-options.h lstat.c lstat.h malloc.c mbchar.c md5.c md5.h \
|
||||
memcasecmp.c memcasecmp.h memchr.c memcmp.c memcoll.c \
|
||||
memcoll.h memcpy.c memmove.c mempcpy.c mempcpy.h memrchr.c \
|
||||
memrchr.h memset.c mkdir-p.c mkdir-p.h mkdir.c mkstemp-safer.c \
|
||||
mkstemp.c mktime.c modechange.c modechange.h mountlist.c \
|
||||
mountlist.h nanosleep.c obstack.c obstack.h offtostr.c \
|
||||
open-safer.c openat-die.c openat.c openat.h pathmax.h \
|
||||
physmem.c physmem.h pipe-safer.c posixtm.c posixtm.h \
|
||||
posixver.c posixver.h printf-args.c printf-parse.c putenv.c \
|
||||
quote.c quote.h quotearg.c quotearg.h raise.c readlink.c \
|
||||
readtokens.c readtokens.h readutmp.c readutmp.h realloc.c \
|
||||
regcomp.c regex.c regex.h regex_internal.c regex_internal.h \
|
||||
regexec.c rename.c rmdir.c root-dev-ino.c root-dev-ino.h \
|
||||
rpmatch.c safe-read.c safe-read.h safe-write.c safe-write.h \
|
||||
same.c same.h save-cwd.c save-cwd.h savedir.c savedir.h \
|
||||
setenv.c setenv.h settime.c sha1.c sha1.h sig2str.c sig2str.h \
|
||||
stat-macros.h stat-time.h stdio--.h stdio-safer.h stdlib--.h \
|
||||
stdlib-safer.h stpcpy.c strcasecmp.c strcspn.c strdup.c \
|
||||
strdup.h strftime.c strftime.h strintcmp.c stripslash.c \
|
||||
strncasecmp.c strndup.c strndup.h strnlen.c strnlen.h \
|
||||
strnumcmp-in.h strnumcmp.c strnumcmp.h strpbrk.c strstr.c \
|
||||
strtod.c strtoimax.c strtol.c strtoll.c strtoul.c strtoull.c \
|
||||
strtoumax.c strverscmp.c strverscmp.h tempname.c timespec.h \
|
||||
umaxtostr.c unistd--.h unistd-safer.h unlinkdir.c unlinkdir.h \
|
||||
unlocked-io.h unsetenv.c userspec.c userspec.h utime.c \
|
||||
utimecmp.c utimecmp.h utimens.c utimens.h vasnprintf.c \
|
||||
vasprintf.c version-etc-fsf.c version-etc.c version-etc.h \
|
||||
xalloc.h xfts.c xfts.h xgetcwd.c xgetcwd.h xmalloc.c \
|
||||
xnanosleep.c xnanosleep.h xreadlink.c xreadlink.h xstrtod.c \
|
||||
xstrtod.h xstrtol.c xstrtol.h xstrtoul.c xtime.h yesno.c \
|
||||
yesno.h
|
||||
human.h idcache.c imaxtostr.c inet_ntop.c intprops.h \
|
||||
inttostr.c inttostr.h lchmod.h lchown.c lchown.h linebuffer.c \
|
||||
linebuffer.h long-options.c long-options.h lstat.c lstat.h \
|
||||
malloc.c mbchar.c md5.c md5.h memcasecmp.c memcasecmp.h \
|
||||
memchr.c memcmp.c memcoll.c memcoll.h memcpy.c memmove.c \
|
||||
mempcpy.c mempcpy.h memrchr.c memrchr.h memset.c memxfrm.c \
|
||||
memxfrm.h mkancesdirs.c mkancesdirs.h mkdir-p.c mkdir-p.h \
|
||||
mkdir.c mkdirat.c mkstemp-safer.c mkstemp.c mktime.c \
|
||||
modechange.c modechange.h mountlist.c mountlist.h nanosleep.c \
|
||||
obstack.c obstack.h offtostr.c open-safer.c openat-die.c \
|
||||
openat-priv.h openat.c openat.h pathmax.h physmem.c physmem.h \
|
||||
pipe-safer.c posixtm.c posixtm.h posixver.c posixver.h \
|
||||
printf-args.c printf-parse.c putenv.c quote.c quote.h \
|
||||
quotearg.c quotearg.h raise.c rand-isaac.c rand-isaac.h \
|
||||
randint.c randint.h randperm.c randperm.h randread.c \
|
||||
randread.h readlink.c readtokens.c readtokens.h readutmp.c \
|
||||
readutmp.h realloc.c regcomp.c regex.c regex.h \
|
||||
regex_internal.c regex_internal.h regexec.c rename.c rmdir.c \
|
||||
root-dev-ino.c root-dev-ino.h rpmatch.c safe-read.c \
|
||||
safe-read.h safe-write.c safe-write.h same-inode.h same.c \
|
||||
same.h save-cwd.c save-cwd.h savedir.c savedir.h setenv.c \
|
||||
settime.c sha1.c sha1.h sha256.c sha256.h sha512.c sha512.h \
|
||||
sig2str.c sig2str.h snprintf.c stat-macros.h stat-time.h \
|
||||
stdio--.h stdio-safer.h stdlib--.h stdlib-safer.h stpcpy.c \
|
||||
strcasecmp.c strcspn.c strdup.c strdup.h strftime.c strftime.h \
|
||||
strintcmp.c stripslash.c strncasecmp.c strndup.c strndup.h \
|
||||
strnlen.c strnlen.h strnumcmp-in.h strnumcmp.c strnumcmp.h \
|
||||
strpbrk.c strstr.c strtod.c strtoimax.c strtol.c strtoll.c \
|
||||
strtoul.c strtoull.c strtoumax.c strverscmp.c strverscmp.h \
|
||||
tempname.c time_r.c time_r.h timespec.h umaxtostr.c unistd--.h \
|
||||
unistd-safer.h unlinkdir.c unlinkdir.h unlocked-io.h \
|
||||
unsetenv.c userspec.c userspec.h utime.c utimecmp.c utimecmp.h \
|
||||
utimens.c utimens.h vasnprintf.c vasprintf.c version-etc-fsf.c \
|
||||
version-etc.c version-etc.h xalloc.h xfts.c xfts.h xgetcwd.c \
|
||||
xgetcwd.h xmalloc.c xnanosleep.c xnanosleep.h xreadlink.c \
|
||||
xreadlink.h xstrtod.c xstrtod.h xstrtol.c xstrtol.h xstrtold.c \
|
||||
xstrtoul.c xtime.h yesno.c yesno.h
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/afs.m4 \
|
||||
$(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/allocsa.m4 \
|
||||
$(top_srcdir)/m4/argmatch.m4 $(top_srcdir)/m4/assert.m4 \
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/absolute-header.m4 \
|
||||
$(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/alloca.m4 \
|
||||
$(top_srcdir)/m4/allocsa.m4 $(top_srcdir)/m4/argmatch.m4 \
|
||||
$(top_srcdir)/m4/arpa_inet_h.m4 $(top_srcdir)/m4/assert.m4 \
|
||||
$(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/autobuild.m4 \
|
||||
$(top_srcdir)/m4/backupfile.m4 $(top_srcdir)/m4/basename.m4 \
|
||||
$(top_srcdir)/m4/bison.m4 $(top_srcdir)/m4/boottime.m4 \
|
||||
$(top_srcdir)/m4/c-strtod.m4 $(top_srcdir)/m4/calloc.m4 \
|
||||
$(top_srcdir)/m4/canon-host.m4 \
|
||||
$(top_srcdir)/m4/canonicalize.m4 \
|
||||
$(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/check-decl.m4 \
|
||||
$(top_srcdir)/m4/chown.m4 $(top_srcdir)/m4/clock_time.m4 \
|
||||
$(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/closeout.m4 \
|
||||
$(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/chdir-safer.m4 \
|
||||
$(top_srcdir)/m4/check-decl.m4 $(top_srcdir)/m4/chown.m4 \
|
||||
$(top_srcdir)/m4/clock_time.m4 $(top_srcdir)/m4/cloexec.m4 \
|
||||
$(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/closeout.m4 \
|
||||
$(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/cycle-check.m4 \
|
||||
$(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \
|
||||
$(top_srcdir)/m4/diacrit.m4 $(top_srcdir)/m4/dirfd.m4 \
|
||||
$(top_srcdir)/m4/dirname.m4 $(top_srcdir)/m4/dos.m4 \
|
||||
$(top_srcdir)/m4/dev-ino.m4 $(top_srcdir)/m4/diacrit.m4 \
|
||||
$(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \
|
||||
$(top_srcdir)/m4/dos.m4 $(top_srcdir)/m4/double-slash-root.m4 \
|
||||
$(top_srcdir)/m4/dup2.m4 $(top_srcdir)/m4/eealloc.m4 \
|
||||
$(top_srcdir)/m4/eoverflow.m4 $(top_srcdir)/m4/error.m4 \
|
||||
$(top_srcdir)/m4/euidaccess-stat.m4 \
|
||||
$(top_srcdir)/m4/euidaccess.m4 $(top_srcdir)/m4/exclude.m4 \
|
||||
$(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \
|
||||
$(top_srcdir)/m4/fcntl-safer.m4 $(top_srcdir)/m4/fd-reopen.m4 \
|
||||
$(top_srcdir)/m4/file-type.m4 $(top_srcdir)/m4/fileblocks.m4 \
|
||||
$(top_srcdir)/m4/filemode.m4 $(top_srcdir)/m4/filenamecat.m4 \
|
||||
$(top_srcdir)/m4/fnmatch.m4 $(top_srcdir)/m4/fpending.m4 \
|
||||
$(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/fstypename.m4 \
|
||||
$(top_srcdir)/m4/fsusage.m4 $(top_srcdir)/m4/ftruncate.m4 \
|
||||
$(top_srcdir)/m4/fts.m4 $(top_srcdir)/m4/getaddrinfo.m4 \
|
||||
$(top_srcdir)/m4/fprintftime.m4 $(top_srcdir)/m4/free.m4 \
|
||||
$(top_srcdir)/m4/fstypename.m4 $(top_srcdir)/m4/fsusage.m4 \
|
||||
$(top_srcdir)/m4/ftruncate.m4 $(top_srcdir)/m4/fts.m4 \
|
||||
$(top_srcdir)/m4/getaddrinfo.m4 \
|
||||
$(top_srcdir)/m4/getcwd-abort-bug.m4 \
|
||||
$(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \
|
||||
$(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \
|
||||
$(top_srcdir)/m4/getgroups.m4 $(top_srcdir)/m4/gethostname.m4 \
|
||||
@@ -137,14 +150,17 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/afs.m4 \
|
||||
$(top_srcdir)/m4/hard-locale.m4 $(top_srcdir)/m4/hash-pjw.m4 \
|
||||
$(top_srcdir)/m4/hash.m4 $(top_srcdir)/m4/host-os.m4 \
|
||||
$(top_srcdir)/m4/human.m4 $(top_srcdir)/m4/iconv.m4 \
|
||||
$(top_srcdir)/m4/idcache.m4 $(top_srcdir)/m4/intmax_t.m4 \
|
||||
$(top_srcdir)/m4/inttostr.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
|
||||
$(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \
|
||||
$(top_srcdir)/m4/jm-macros.m4 $(top_srcdir)/m4/jm-winsz1.m4 \
|
||||
$(top_srcdir)/m4/jm-winsz2.m4 $(top_srcdir)/m4/lchown.m4 \
|
||||
$(top_srcdir)/m4/lib-check.m4 $(top_srcdir)/m4/lib-ld.m4 \
|
||||
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
|
||||
$(top_srcdir)/m4/linebuffer.m4 $(top_srcdir)/m4/link-follow.m4 \
|
||||
$(top_srcdir)/m4/idcache.m4 $(top_srcdir)/m4/inet_ntop.m4 \
|
||||
$(top_srcdir)/m4/intmax_t.m4 $(top_srcdir)/m4/inttostr.m4 \
|
||||
$(top_srcdir)/m4/inttypes-h.m4 \
|
||||
$(top_srcdir)/m4/inttypes-pri.m4 $(top_srcdir)/m4/inttypes.m4 \
|
||||
$(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/jm-macros.m4 \
|
||||
$(top_srcdir)/m4/jm-winsz1.m4 $(top_srcdir)/m4/jm-winsz2.m4 \
|
||||
$(top_srcdir)/m4/lchmod.m4 $(top_srcdir)/m4/lchown.m4 \
|
||||
$(top_srcdir)/m4/lib-check.m4 $(top_srcdir)/m4/lib-ignore.m4 \
|
||||
$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
|
||||
$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/linebuffer.m4 \
|
||||
$(top_srcdir)/m4/link-follow.m4 \
|
||||
$(top_srcdir)/m4/localcharset.m4 \
|
||||
$(top_srcdir)/m4/long-options.m4 \
|
||||
$(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \
|
||||
@@ -156,32 +172,37 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/afs.m4 \
|
||||
$(top_srcdir)/m4/memcmp.m4 $(top_srcdir)/m4/memcoll.m4 \
|
||||
$(top_srcdir)/m4/memcpy.m4 $(top_srcdir)/m4/memmove.m4 \
|
||||
$(top_srcdir)/m4/mempcpy.m4 $(top_srcdir)/m4/memrchr.m4 \
|
||||
$(top_srcdir)/m4/memset.m4 $(top_srcdir)/m4/mkdir-p.m4 \
|
||||
$(top_srcdir)/m4/memset.m4 $(top_srcdir)/m4/memxfrm.m4 \
|
||||
$(top_srcdir)/m4/mkancesdirs.m4 $(top_srcdir)/m4/mkdir-p.m4 \
|
||||
$(top_srcdir)/m4/mkdir-slash.m4 $(top_srcdir)/m4/mkstemp.m4 \
|
||||
$(top_srcdir)/m4/mktime.m4 $(top_srcdir)/m4/modechange.m4 \
|
||||
$(top_srcdir)/m4/mountlist.m4 $(top_srcdir)/m4/nanosleep.m4 \
|
||||
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/obstack.m4 \
|
||||
$(top_srcdir)/m4/onceonly_2_57.m4 $(top_srcdir)/m4/openat.m4 \
|
||||
$(top_srcdir)/m4/netinet_in_h.m4 $(top_srcdir)/m4/nls.m4 \
|
||||
$(top_srcdir)/m4/obstack.m4 $(top_srcdir)/m4/openat.m4 \
|
||||
$(top_srcdir)/m4/pathmax.m4 $(top_srcdir)/m4/perl.m4 \
|
||||
$(top_srcdir)/m4/physmem.m4 $(top_srcdir)/m4/po.m4 \
|
||||
$(top_srcdir)/m4/posixtm.m4 $(top_srcdir)/m4/posixver.m4 \
|
||||
$(top_srcdir)/m4/prereq.m4 $(top_srcdir)/m4/progtest.m4 \
|
||||
$(top_srcdir)/m4/putenv.m4 $(top_srcdir)/m4/quote.m4 \
|
||||
$(top_srcdir)/m4/quotearg.m4 $(top_srcdir)/m4/readlink.m4 \
|
||||
$(top_srcdir)/m4/readtokens.m4 $(top_srcdir)/m4/readutmp.m4 \
|
||||
$(top_srcdir)/m4/regex.m4 $(top_srcdir)/m4/rename.m4 \
|
||||
$(top_srcdir)/m4/restrict.m4 $(top_srcdir)/m4/rmdir-errno.m4 \
|
||||
$(top_srcdir)/m4/quotearg.m4 $(top_srcdir)/m4/randint.m4 \
|
||||
$(top_srcdir)/m4/randperm.m4 $(top_srcdir)/m4/randread.m4 \
|
||||
$(top_srcdir)/m4/readlink.m4 $(top_srcdir)/m4/readtokens.m4 \
|
||||
$(top_srcdir)/m4/readutmp.m4 $(top_srcdir)/m4/regex.m4 \
|
||||
$(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rmdir-errno.m4 \
|
||||
$(top_srcdir)/m4/rmdir.m4 $(top_srcdir)/m4/root-dev-ino.m4 \
|
||||
$(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
|
||||
$(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/same.m4 \
|
||||
$(top_srcdir)/m4/save-cwd.m4 $(top_srcdir)/m4/savedir.m4 \
|
||||
$(top_srcdir)/m4/setenv.m4 $(top_srcdir)/m4/settime.m4 \
|
||||
$(top_srcdir)/m4/sha1.m4 $(top_srcdir)/m4/sig2str.m4 \
|
||||
$(top_srcdir)/m4/signed.m4 $(top_srcdir)/m4/socklen.m4 \
|
||||
$(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/same-inode.m4 \
|
||||
$(top_srcdir)/m4/same.m4 $(top_srcdir)/m4/save-cwd.m4 \
|
||||
$(top_srcdir)/m4/savedir.m4 $(top_srcdir)/m4/setenv.m4 \
|
||||
$(top_srcdir)/m4/settime.m4 $(top_srcdir)/m4/sha1.m4 \
|
||||
$(top_srcdir)/m4/sha256.m4 $(top_srcdir)/m4/sha512.m4 \
|
||||
$(top_srcdir)/m4/sig2str.m4 $(top_srcdir)/m4/signed.m4 \
|
||||
$(top_srcdir)/m4/snprintf.m4 $(top_srcdir)/m4/socklen.m4 \
|
||||
$(top_srcdir)/m4/sockpfaf.m4 $(top_srcdir)/m4/ssize_t.m4 \
|
||||
$(top_srcdir)/m4/st_dm_mode.m4 $(top_srcdir)/m4/stat-macros.m4 \
|
||||
$(top_srcdir)/m4/stat-prog.m4 $(top_srcdir)/m4/stat-time.m4 \
|
||||
$(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stdint_h.m4 \
|
||||
$(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
|
||||
$(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \
|
||||
$(top_srcdir)/m4/stdio-safer.m4 \
|
||||
$(top_srcdir)/m4/stdlib-safer.m4 $(top_srcdir)/m4/stpcpy.m4 \
|
||||
$(top_srcdir)/m4/strcase.m4 $(top_srcdir)/m4/strcspn.m4 \
|
||||
@@ -193,6 +214,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/afs.m4 \
|
||||
$(top_srcdir)/m4/strtol.m4 $(top_srcdir)/m4/strtoll.m4 \
|
||||
$(top_srcdir)/m4/strtoul.m4 $(top_srcdir)/m4/strtoull.m4 \
|
||||
$(top_srcdir)/m4/strtoumax.m4 $(top_srcdir)/m4/strverscmp.m4 \
|
||||
$(top_srcdir)/m4/sys_socket_h.m4 $(top_srcdir)/m4/time_r.m4 \
|
||||
$(top_srcdir)/m4/timespec.m4 $(top_srcdir)/m4/tm_gmtoff.m4 \
|
||||
$(top_srcdir)/m4/tzset.m4 $(top_srcdir)/m4/uint32_t.m4 \
|
||||
$(top_srcdir)/m4/uintmax_t.m4 $(top_srcdir)/m4/uintptr_t.m4 \
|
||||
@@ -205,13 +227,13 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/afs.m4 \
|
||||
$(top_srcdir)/m4/utimens.m4 $(top_srcdir)/m4/utimes-null.m4 \
|
||||
$(top_srcdir)/m4/utimes.m4 $(top_srcdir)/m4/vasnprintf.m4 \
|
||||
$(top_srcdir)/m4/vasprintf.m4 $(top_srcdir)/m4/version-etc.m4 \
|
||||
$(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \
|
||||
$(top_srcdir)/m4/xalloc.m4 $(top_srcdir)/m4/xfts.m4 \
|
||||
$(top_srcdir)/m4/xgetcwd.m4 $(top_srcdir)/m4/xnanosleep.m4 \
|
||||
$(top_srcdir)/m4/xreadlink.m4 $(top_srcdir)/m4/xstrtod.m4 \
|
||||
$(top_srcdir)/m4/xstrtoimax.m4 $(top_srcdir)/m4/xstrtol.m4 \
|
||||
$(top_srcdir)/m4/xstrtoumax.m4 $(top_srcdir)/m4/yesno.m4 \
|
||||
$(top_srcdir)/configure.ac
|
||||
$(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wcwidth.m4 \
|
||||
$(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
|
||||
$(top_srcdir)/m4/xfts.m4 $(top_srcdir)/m4/xgetcwd.m4 \
|
||||
$(top_srcdir)/m4/xnanosleep.m4 $(top_srcdir)/m4/xreadlink.m4 \
|
||||
$(top_srcdir)/m4/xstrtod.m4 $(top_srcdir)/m4/xstrtoimax.m4 \
|
||||
$(top_srcdir)/m4/xstrtol.m4 $(top_srcdir)/m4/xstrtoumax.m4 \
|
||||
$(top_srcdir)/m4/yesno.m4 $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/build-aux/mkinstalldirs
|
||||
@@ -225,13 +247,13 @@ am__DEPENDENCIES_1 = @LIBOBJS@
|
||||
am__DEPENDENCIES_2 = @ALLOCA@
|
||||
libcoreutils_a_DEPENDENCIES = $(am__DEPENDENCIES_1) \
|
||||
$(am__DEPENDENCIES_2)
|
||||
am_libcoreutils_a_OBJECTS = allocsa.$(OBJEXT) fprintftime.$(OBJEXT) \
|
||||
full-read.$(OBJEXT) full-write.$(OBJEXT) \
|
||||
am_libcoreutils_a_OBJECTS = allocsa.$(OBJEXT) base64.$(OBJEXT) \
|
||||
buffer-lcm.$(OBJEXT) full-read.$(OBJEXT) full-write.$(OBJEXT) \
|
||||
localcharset.$(OBJEXT) mbswidth.$(OBJEXT) \
|
||||
readtokens0.$(OBJEXT) strnlen1.$(OBJEXT) time_r.$(OBJEXT) \
|
||||
unicodeio.$(OBJEXT) xalloc-die.$(OBJEXT) \
|
||||
xgethostname.$(OBJEXT) xmemcoll.$(OBJEXT) xstrndup.$(OBJEXT) \
|
||||
xstrtoimax.$(OBJEXT) xstrtoumax.$(OBJEXT)
|
||||
readtokens0.$(OBJEXT) strnlen1.$(OBJEXT) unicodeio.$(OBJEXT) \
|
||||
xalloc-die.$(OBJEXT) xgethostname.$(OBJEXT) xmemcoll.$(OBJEXT) \
|
||||
xmemxfrm.$(OBJEXT) xstrndup.$(OBJEXT) xstrtoimax.$(OBJEXT) \
|
||||
xstrtoumax.$(OBJEXT)
|
||||
libcoreutils_a_OBJECTS = $(am_libcoreutils_a_OBJECTS)
|
||||
PROGRAMS = $(noinst_PROGRAMS)
|
||||
t_fpending_SOURCES = t-fpending.c
|
||||
@@ -252,16 +274,23 @@ DIST_SOURCES = $(libcoreutils_a_SOURCES) t-fpending.c
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
|
||||
ACLOCAL = @ACLOCAL@
|
||||
ALLOCA = @ALLOCA@
|
||||
ALLOCA_H = @ALLOCA_H@
|
||||
AMDEP_FALSE = @AMDEP_FALSE@
|
||||
AMDEP_TRUE = @AMDEP_TRUE@
|
||||
AMTAR = @AMTAR@
|
||||
ARPA_INET_H = @ARPA_INET_H@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
|
||||
BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
|
||||
BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
|
||||
BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
|
||||
BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
@@ -283,8 +312,19 @@ GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
|
||||
GETOPT_H = @GETOPT_H@
|
||||
GLIBC21 = @GLIBC21@
|
||||
GMSGFMT = @GMSGFMT@
|
||||
GMSGFMT_015 = @GMSGFMT_015@
|
||||
GNU_PACKAGE = @GNU_PACKAGE@
|
||||
GREP = @GREP@
|
||||
HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
|
||||
HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
|
||||
HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
|
||||
HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
|
||||
HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
|
||||
HAVE_STDINT_H = @HAVE_STDINT_H@
|
||||
HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
|
||||
HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
|
||||
HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
|
||||
HAVE_WCHAR_H = @HAVE_WCHAR_H@
|
||||
HAVE__BOOL = @HAVE__BOOL@
|
||||
HELP2MAN = @HELP2MAN@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
@@ -299,6 +339,7 @@ LIBICONV = @LIBICONV@
|
||||
LIBINTL = @LIBINTL@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LIB_ACL = @LIB_ACL@
|
||||
LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
|
||||
LIB_CRYPT = @LIB_CRYPT@
|
||||
LIB_EACCESS = @LIB_EACCESS@
|
||||
@@ -311,10 +352,11 @@ LTLIBINTL = @LTLIBINTL@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MAN = @MAN@
|
||||
MKINSTALLDIRS = @MKINSTALLDIRS@
|
||||
MSGFMT = @MSGFMT@
|
||||
MSGFMT_015 = @MSGFMT_015@
|
||||
MSGMERGE = @MSGMERGE@
|
||||
NEED_SETGID = @NEED_SETGID@
|
||||
NETINET_IN_H = @NETINET_IN_H@
|
||||
OBJEXT = @OBJEXT@
|
||||
OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
|
||||
PACKAGE = @PACKAGE@
|
||||
@@ -327,21 +369,27 @@ PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PERL = @PERL@
|
||||
POSUB = @POSUB@
|
||||
POW_LIB = @POW_LIB@
|
||||
PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
|
||||
RANLIB = @RANLIB@
|
||||
SEQ_LIBM = @SEQ_LIBM@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
|
||||
SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
|
||||
STDBOOL_H = @STDBOOL_H@
|
||||
STDINT_H = @STDINT_H@
|
||||
STRIP = @STRIP@
|
||||
SYS_SOCKET_H = @SYS_SOCKET_H@
|
||||
U = @U@
|
||||
USE_NLS = @USE_NLS@
|
||||
VERSION = @VERSION@
|
||||
WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
|
||||
WINT_T_SUFFIX = @WINT_T_SUFFIX@
|
||||
XGETTEXT = @XGETTEXT@
|
||||
XGETTEXT_015 = @XGETTEXT_015@
|
||||
YACC = @YACC@
|
||||
YFLAGS = @YFLAGS@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_RANLIB = @ac_ct_RANLIB@
|
||||
ac_ct_STRIP = @ac_ct_STRIP@
|
||||
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
|
||||
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
|
||||
am__include = @am__include@
|
||||
@@ -384,30 +432,36 @@ sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
AM_CFLAGS = $(WARNING_CFLAGS) $(WERROR_CFLAGS)
|
||||
noinst_LIBRARIES = libcoreutils.a
|
||||
LDADD = $(noinst_LIBRARIES)
|
||||
AM_CPPFLAGS = -I.. -I$(srcdir)
|
||||
libcoreutils_a_SOURCES = allocsa.c allocsa.h euidaccess.h exit.h \
|
||||
fprintftime.c fprintftime.h full-read.c full-read.h \
|
||||
full-write.c full-write.h getaddrinfo.h gettext.h \
|
||||
localcharset.c localcharset.h mbchar.h mbswidth.c mbswidth.h \
|
||||
mbuiter.h readtokens0.c readtokens0.h strcase.h strnlen1.c \
|
||||
strnlen1.h strstr.h time_r.c time_r.h unicodeio.c unicodeio.h \
|
||||
verify.h xalloc-die.c xgethostname.c xgethostname.h xmemcoll.c \
|
||||
xmemcoll.h xstrndup.c xstrndup.h xstrtoimax.c xstrtoumax.c \
|
||||
libcoreutils_a_SOURCES = allocsa.c allocsa.h base64.c base64.h \
|
||||
buffer-lcm.c buffer-lcm.h euidaccess.h exit.h full-read.c \
|
||||
full-read.h full-write.c full-write.h getaddrinfo.h gettext.h \
|
||||
inet_ntop.h localcharset.c localcharset.h mbchar.h mbswidth.c \
|
||||
mbswidth.h mbuiter.h readtokens0.c readtokens0.h setenv.h \
|
||||
snprintf.h strcase.h strnlen1.c strnlen1.h strstr.h \
|
||||
unicodeio.c unicodeio.h verify.h wcwidth.h xalloc-die.c \
|
||||
xgethostname.c xgethostname.h xmemcoll.c xmemcoll.h xmemxfrm.c \
|
||||
xmemxfrm.h xstrndup.c xstrndup.h xstrtoimax.c xstrtoumax.c \
|
||||
printf-args.h printf-parse.h vasprintf.h vasnprintf.h
|
||||
libcoreutils_a_LIBADD = $(LIBOBJS) $(ALLOCA)
|
||||
lib_OBJECTS = $(libcoreutils_a_OBJECTS)
|
||||
BUILT_SOURCES = getdate.c $(STDBOOL_H) $(ALLOCA_H) $(FNMATCH_H) \
|
||||
$(GETOPT_H)
|
||||
BUILT_SOURCES = getdate.c $(STDBOOL_H) $(STDINT_H) $(ALLOCA_H) \
|
||||
$(FNMATCH_H) $(GETOPT_H) $(ARPA_INET_H) $(SYS_SOCKET_H) \
|
||||
$(NETINET_IN_H)
|
||||
CLEANFILES = charset.alias ref-add.sed ref-del.sed
|
||||
MAINTAINERCLEANFILES = $(BUILT_SOURCES)
|
||||
MOSTLYCLEANFILES = stdbool.h stdbool.ht alloca.h alloca.h-t fnmatch.h \
|
||||
fnmatch.h-t getopt.h getopt.h-t
|
||||
MOSTLYCLEANDIRS = arpa netinet sys
|
||||
MOSTLYCLEANFILES = stdbool.h stdbool.h-t stdint.h stdint.h-t alloca.h \
|
||||
alloca.h-t fnmatch.h fnmatch.h-t arpa/inet.h arpa/inet.h-t \
|
||||
netinet/in.h netinet/in.h-t sys/socket.h sys/socket.h-t \
|
||||
getopt.h getopt.h-t
|
||||
SUFFIXES = .sed .sin
|
||||
EXTRA_DIST = getdate.c config.charset ref-add.sin ref-del.sin \
|
||||
getndelim2.c getndelim2.h stdbool_.h alloca_.h fnmatch_.h \
|
||||
fnmatch_loop.c getopt_.h getopt_int.h
|
||||
getndelim2.c getndelim2.h stdbool_.h stdint_.h alloca_.h \
|
||||
fnmatch_.h fnmatch_loop.c getopt_.h getopt_int.h socket_.h
|
||||
charset_alias = $(DESTDIR)$(libdir)/charset.alias
|
||||
charset_tmp = $(DESTDIR)$(libdir)/charset.tmp
|
||||
all: $(BUILT_SOURCES)
|
||||
@@ -479,21 +533,26 @@ distclean-compile:
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/canon-host.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/canonicalize.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/chdir-long.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/chdir-safer.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/chown.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/cloexec.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/close-stream.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/closeout.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/creat-safer.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)/dirchownmod.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/dirfd.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)/dup2.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/error.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/euidaccess-stat.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/euidaccess.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)/fchdir-stub.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/fchmodat.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/fchown-stub.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/fd-reopen.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/fd-safer.Po@am__quote@
|
||||
@@ -503,6 +562,7 @@ distclean-compile:
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/filenamecat.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/fnmatch.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/fopen-safer.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/fprintftime.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/free.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@
|
||||
@@ -534,6 +594,7 @@ distclean-compile:
|
||||
@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)/inet_ntop.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/inttostr.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/lchown.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/linebuffer.Po@am__quote@
|
||||
@@ -551,8 +612,11 @@ distclean-compile:
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/mempcpy.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/memrchr.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/memset.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/memxfrm.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/mkancesdirs.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/mkdir-p.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/mkdir.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/mkdirat.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/mkstemp-safer.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/mkstemp.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/mktime.Po@am__quote@
|
||||
@@ -574,6 +638,10 @@ distclean-compile:
|
||||
@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)/raise.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/rand-isaac.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/randint.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/randperm.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/randread.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/readlink.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/readtokens.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/readutmp.Po@am__quote@
|
||||
@@ -594,7 +662,10 @@ distclean-compile:
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/setenv.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/settime.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/sha1.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/sha256.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/sha512.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/sig2str.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/snprintf.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/stpcpy.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/strcasecmp.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/strcspn.Po@am__quote@
|
||||
@@ -617,6 +688,7 @@ distclean-compile:
|
||||
@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)/time_r.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/umaxtostr.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/unlinkdir.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/unsetenv.Po@am__quote@
|
||||
@@ -635,10 +707,12 @@ distclean-compile:
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/xreadlink.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/xstrtod.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/xstrtol.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/xstrtold.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/xstrtoul.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/yesno.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/allocsa.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fprintftime.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/base64.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/buffer-lcm.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)/localcharset.Po@am__quote@
|
||||
@@ -646,11 +720,11 @@ distclean-compile:
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/readtokens0.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strnlen1.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/t-fpending.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/time_r.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unicodeio.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xalloc-die.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xgethostname.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmemcoll.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmemxfrm.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xstrndup.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xstrtoimax.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xstrtoumax.Po@am__quote@
|
||||
@@ -905,8 +979,35 @@ charset.alias: config.charset
|
||||
mv t-$@ $@
|
||||
# Create stdbool.h on systems that lack a working one.
|
||||
stdbool.h: stdbool_.h
|
||||
sed -e 's/@''HAVE__BOOL''@/$(HAVE__BOOL)/g' $(srcdir)/stdbool_.h > $@t
|
||||
mv $@t $@
|
||||
sed -e 's/@''HAVE__BOOL''@/$(HAVE__BOOL)/g' < $(srcdir)/stdbool_.h > $@-t
|
||||
mv $@-t $@
|
||||
|
||||
# We need the following in order to create <stdint.h> when the system
|
||||
# doesn't have one that works with the given compiler.
|
||||
stdint.h: stdint_.h
|
||||
sed -e 's/@''HAVE_WCHAR_H''@/$(HAVE_WCHAR_H)/g' \
|
||||
-e 's/@''HAVE_STDINT_H''@/$(HAVE_STDINT_H)/g' \
|
||||
-e 's/@''HAVE_SYS_TYPES_H''@/$(HAVE_SYS_TYPES_H)/g' \
|
||||
-e 's|@''ABSOLUTE_STDINT_H''@|$(ABSOLUTE_STDINT_H)|g' \
|
||||
-e 's/@''HAVE_INTTYPES_H''@/$(HAVE_INTTYPES_H)/g' \
|
||||
-e 's/@''HAVE_SYS_INTTYPES_H''@/$(HAVE_SYS_INTTYPES_H)/g' \
|
||||
-e 's/@''HAVE_SYS_BITYPES_H''@/$(HAVE_SYS_BITYPES_H)/g' \
|
||||
-e 's/@''HAVE_LONG_LONG_INT''@/$(HAVE_LONG_LONG_INT)/g' \
|
||||
-e 's/@''BITSIZEOF_PTRDIFF_T''@/$(BITSIZEOF_PTRDIFF_T)/g' \
|
||||
-e 's/@''PTRDIFF_T_SUFFIX''@/$(PTRDIFF_T_SUFFIX)/g' \
|
||||
-e 's/@''BITSIZEOF_SIG_ATOMIC_T''@/$(BITSIZEOF_SIG_ATOMIC_T)/g' \
|
||||
-e 's/@''HAVE_SIGNED_SIG_ATOMIC_T''@/$(HAVE_SIGNED_SIG_ATOMIC_T)/g' \
|
||||
-e 's/@''SIG_ATOMIC_T_SUFFIX''@/$(SIG_ATOMIC_T_SUFFIX)/g' \
|
||||
-e 's/@''BITSIZEOF_SIZE_T''@/$(BITSIZEOF_SIZE_T)/g' \
|
||||
-e 's/@''SIZE_T_SUFFIX''@/$(SIZE_T_SUFFIX)/g' \
|
||||
-e 's/@''BITSIZEOF_WCHAR_T''@/$(BITSIZEOF_WCHAR_T)/g' \
|
||||
-e 's/@''HAVE_SIGNED_WCHAR_T''@/$(HAVE_SIGNED_WCHAR_T)/g' \
|
||||
-e 's/@''WCHAR_T_SUFFIX''@/$(WCHAR_T_SUFFIX)/g' \
|
||||
-e 's/@''BITSIZEOF_WINT_T''@/$(BITSIZEOF_WINT_T)/g' \
|
||||
-e 's/@''HAVE_SIGNED_WINT_T''@/$(HAVE_SIGNED_WINT_T)/g' \
|
||||
-e 's/@''WINT_T_SUFFIX''@/$(WINT_T_SUFFIX)/g' \
|
||||
< $(srcdir)/stdint_.h > $@-t
|
||||
mv $@-t $@
|
||||
|
||||
# We need the following in order to create an <alloca.h> when the system
|
||||
# doesn't have one that works with the given compiler.
|
||||
@@ -922,6 +1023,27 @@ fnmatch.h: fnmatch_.h
|
||||
cp $(srcdir)/fnmatch_.h $@-t
|
||||
mv $@-t $@
|
||||
|
||||
# We need the following in order to create <arpa/inet.h> when the system
|
||||
# doesn't have one.
|
||||
arpa/inet.h:
|
||||
test -d arpa || mkdir arpa
|
||||
echo '#include <sys/socket.h>' >$@-t
|
||||
mv $@-t $@
|
||||
|
||||
# We need the following in order to create <netinet/in.h> when the system
|
||||
# doesn't have one.
|
||||
netinet/in.h:
|
||||
test -d netinet || mkdir netinet
|
||||
echo '#include <sys/socket.h>' >$@-t
|
||||
mv $@-t $@
|
||||
|
||||
# We need the following in order to create <sys/socket.h> when the system
|
||||
# doesn't have one that works with the given compiler.
|
||||
sys/socket.h: socket_.h
|
||||
test -d sys || mkdir sys
|
||||
cp $(srcdir)/socket_.h $@-t
|
||||
mv $@-t $@
|
||||
|
||||
check: unit-test
|
||||
|
||||
.PHONY: unit-test
|
||||
|
||||
376
lib/acl.c
376
lib/acl.c
@@ -16,48 +16,394 @@
|
||||
along with this program; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
Written by Paul Eggert. */
|
||||
Written by Paul Eggert and Andreas Gruenbacher. */
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#ifndef S_ISLNK
|
||||
# define S_ISLNK(Mode) 0
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_ACL_LIBACL_H
|
||||
# include <acl/libacl.h>
|
||||
#endif
|
||||
|
||||
#include "acl.h"
|
||||
#include "error.h"
|
||||
#include "quote.h"
|
||||
|
||||
#include <errno.h>
|
||||
#ifndef ENOSYS
|
||||
# define ENOSYS (-1)
|
||||
#endif
|
||||
|
||||
#ifndef MIN_ACL_ENTRIES
|
||||
# define MIN_ACL_ENTRIES 4
|
||||
#ifndef ENOTSUP
|
||||
# define ENOTSUP (-1)
|
||||
#endif
|
||||
|
||||
/* Return 1 if FILE has a nontrivial access control list, 0 if not,
|
||||
and -1 (setting errno) if an error is encountered. */
|
||||
#if ENABLE_NLS
|
||||
# include <libintl.h>
|
||||
# define _(Text) gettext (Text)
|
||||
#else
|
||||
# define _(Text) Text
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_FCHMOD
|
||||
# define HAVE_FCHMOD false
|
||||
# define fchmod(fd, mode) (-1)
|
||||
#endif
|
||||
|
||||
/* POSIX 1003.1e (draft 17) */
|
||||
#ifndef HAVE_ACL_GET_FD
|
||||
# define HAVE_ACL_GET_FD false
|
||||
# define acl_get_fd(fd) (NULL)
|
||||
#endif
|
||||
|
||||
/* POSIX 1003.1e (draft 17) */
|
||||
#ifndef HAVE_ACL_SET_FD
|
||||
# define HAVE_ACL_SET_FD false
|
||||
# define acl_set_fd(fd, acl) (-1)
|
||||
#endif
|
||||
|
||||
/* Linux-specific */
|
||||
#ifndef HAVE_ACL_EXTENDED_FILE
|
||||
# define HAVE_ACL_EXTENDED_FILE false
|
||||
# define acl_extended_file(name) (-1)
|
||||
#endif
|
||||
|
||||
/* Linux-specific */
|
||||
#ifndef HAVE_ACL_FROM_MODE
|
||||
# define HAVE_ACL_FROM_MODE false
|
||||
# define acl_from_mode(mode) (NULL)
|
||||
#endif
|
||||
|
||||
/* We detect presence of POSIX 1003.1e (draft 17 -- abandoned) support
|
||||
by checking for HAVE_ACL_GET_FILE, HAVE_ACL_SET_FILE, and HAVE_ACL_FREE.
|
||||
Systems that have acl_get_file, acl_set_file, and acl_free must also
|
||||
have acl_to_text, acl_from_text, and acl_delete_def_file (all defined
|
||||
in the draft); systems that don't would hit #error statements here. */
|
||||
|
||||
#if USE_ACL && HAVE_ACL_GET_FILE && !HAVE_ACL_ENTRIES
|
||||
# ifndef HAVE_ACL_TO_TEXT
|
||||
# error Must have acl_to_text (see POSIX 1003.1e draft 17).
|
||||
# endif
|
||||
|
||||
/* Return the number of entries in ACL. Linux implements acl_entries
|
||||
as a more efficient extension than using this workaround. */
|
||||
|
||||
static int
|
||||
acl_entries (acl_t acl)
|
||||
{
|
||||
char *text = acl_to_text (acl, NULL), *t;
|
||||
int entries;
|
||||
if (text == NULL)
|
||||
return -1;
|
||||
for (entries = 0, t = text; ; t++, entries++) {
|
||||
t = strchr (t, '\n');
|
||||
if (t == NULL)
|
||||
break;
|
||||
}
|
||||
acl_free (text);
|
||||
return entries;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* If DESC is a valid file descriptor use fchmod to change the
|
||||
file's mode to MODE on systems that have fchown. On systems
|
||||
that don't have fchown and if DESC is invalid, use chown on
|
||||
NAME instead. */
|
||||
|
||||
int
|
||||
file_has_acl (char const *file, struct stat const *filestat)
|
||||
chmod_or_fchmod (const char *name, int desc, mode_t mode)
|
||||
{
|
||||
/* FIXME: This implementation should work on recent-enough versions
|
||||
of HP-UX, Solaris, and Unixware, but it simply returns 0 with
|
||||
POSIX 1003.1e (draft 17 -- abandoned), AIX, GNU/Linux, Irix, and
|
||||
Tru64. Please see Samba's source/lib/sysacls.c file for
|
||||
fix-related ideas. */
|
||||
if (HAVE_FCHMOD && desc != -1)
|
||||
return fchmod (desc, mode);
|
||||
else
|
||||
return chmod (name, mode);
|
||||
}
|
||||
|
||||
#if HAVE_ACL && defined GETACLCNT
|
||||
if (! S_ISLNK (filestat->st_mode))
|
||||
/* Return 1 if NAME has a nontrivial access control list, 0 if
|
||||
NAME only has no or a base access control list, and -1 on
|
||||
error. SB must be set to the stat buffer of FILE. */
|
||||
|
||||
int
|
||||
file_has_acl (char const *name, struct stat const *sb)
|
||||
{
|
||||
#if USE_ACL && HAVE_ACL && defined GETACLCNT
|
||||
/* This implementation should work on recent-enough versions of HP-UX,
|
||||
Solaris, and Unixware. */
|
||||
|
||||
# ifndef MIN_ACL_ENTRIES
|
||||
# define MIN_ACL_ENTRIES 4
|
||||
# endif
|
||||
|
||||
if (! S_ISLNK (sb->st_mode))
|
||||
{
|
||||
int n = acl (file, GETACLCNT, 0, NULL);
|
||||
int n = acl (name, GETACLCNT, 0, NULL);
|
||||
return n < 0 ? (errno == ENOSYS ? 0 : -1) : (MIN_ACL_ENTRIES < n);
|
||||
}
|
||||
#elif USE_ACL && HAVE_ACL_GET_FILE && HAVE_ACL_FREE
|
||||
/* POSIX 1003.1e (draft 17 -- abandoned) specific version. */
|
||||
|
||||
if (! S_ISLNK (sb->st_mode))
|
||||
{
|
||||
int ret;
|
||||
|
||||
if (HAVE_ACL_EXTENDED_FILE)
|
||||
ret = acl_extended_file (name);
|
||||
else
|
||||
{
|
||||
acl_t acl = acl_get_file (name, ACL_TYPE_ACCESS);
|
||||
if (acl)
|
||||
{
|
||||
ret = (3 < acl_entries (acl));
|
||||
acl_free (acl);
|
||||
if (ret == 0 && S_ISDIR (sb->st_mode))
|
||||
{
|
||||
acl = acl_get_file (name, ACL_TYPE_DEFAULT);
|
||||
if (acl)
|
||||
{
|
||||
ret = (0 < acl_entries (acl));
|
||||
acl_free (acl);
|
||||
}
|
||||
else
|
||||
ret = -1;
|
||||
}
|
||||
}
|
||||
else
|
||||
ret = -1;
|
||||
}
|
||||
if (ret < 0)
|
||||
return (errno == ENOSYS || errno == ENOTSUP) ? 0 : -1;
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* FIXME: Add support for AIX, Irix, and Tru64. Please see Samba's
|
||||
source/lib/sysacls.c file for fix-related ideas. */
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Copy access control lists from one file to another. If SOURCE_DESC is
|
||||
a valid file descriptor, use file descriptor operations, else use
|
||||
filename based operations on SRC_NAME. Likewise for DEST_DESC and
|
||||
DEST_NAME.
|
||||
If access control lists are not available, fchmod the target file to
|
||||
MODE. Also sets the non-permission bits of the destination file
|
||||
(S_ISUID, S_ISGID, S_ISVTX) to those from MODE if any are set.
|
||||
System call return value semantics. */
|
||||
|
||||
int
|
||||
copy_acl (const char *src_name, int source_desc, const char *dst_name,
|
||||
int dest_desc, mode_t mode)
|
||||
{
|
||||
int ret;
|
||||
|
||||
#if USE_ACL && HAVE_ACL_GET_FILE && HAVE_ACL_SET_FILE && HAVE_ACL_FREE
|
||||
/* POSIX 1003.1e (draft 17 -- abandoned) specific version. */
|
||||
|
||||
acl_t acl;
|
||||
if (HAVE_ACL_GET_FD && source_desc != -1)
|
||||
acl = acl_get_fd (source_desc);
|
||||
else
|
||||
acl = acl_get_file (src_name, ACL_TYPE_ACCESS);
|
||||
if (acl == NULL)
|
||||
{
|
||||
if (errno == ENOSYS || errno == ENOTSUP)
|
||||
return set_acl (dst_name, dest_desc, mode);
|
||||
else
|
||||
{
|
||||
error (0, errno, "%s", quote (src_name));
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
if (HAVE_ACL_SET_FD && dest_desc != -1)
|
||||
ret = acl_set_fd (dest_desc, acl);
|
||||
else
|
||||
ret = acl_set_file (dst_name, ACL_TYPE_ACCESS, acl);
|
||||
if (ret != 0)
|
||||
{
|
||||
int saved_errno = errno;
|
||||
|
||||
if (errno == ENOSYS || errno == ENOTSUP)
|
||||
{
|
||||
int n = acl_entries (acl);
|
||||
|
||||
acl_free (acl);
|
||||
if (n == 3)
|
||||
{
|
||||
if (chmod_or_fchmod (dst_name, dest_desc, mode) != 0)
|
||||
saved_errno = errno;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
chmod_or_fchmod (dst_name, dest_desc, mode);
|
||||
}
|
||||
else
|
||||
{
|
||||
acl_free (acl);
|
||||
chmod_or_fchmod (dst_name, dest_desc, mode);
|
||||
}
|
||||
error (0, saved_errno, _("preserving permissions for %s"),
|
||||
quote (dst_name));
|
||||
return -1;
|
||||
}
|
||||
else
|
||||
acl_free (acl);
|
||||
|
||||
if (mode & (S_ISUID | S_ISGID | S_ISVTX))
|
||||
{
|
||||
/* We did not call chmod so far, so the special bits have not yet
|
||||
been set. */
|
||||
|
||||
if (chmod_or_fchmod (dst_name, dest_desc, mode) != 0)
|
||||
{
|
||||
error (0, errno, _("preserving permissions for %s"),
|
||||
quote (dst_name));
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
if (S_ISDIR (mode))
|
||||
{
|
||||
acl = acl_get_file (src_name, ACL_TYPE_DEFAULT);
|
||||
if (acl == NULL)
|
||||
{
|
||||
error (0, errno, "%s", quote (src_name));
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (acl_set_file (dst_name, ACL_TYPE_DEFAULT, acl))
|
||||
{
|
||||
error (0, errno, _("preserving permissions for %s"),
|
||||
quote (dst_name));
|
||||
acl_free (acl);
|
||||
return -1;
|
||||
}
|
||||
else
|
||||
acl_free (acl);
|
||||
}
|
||||
return 0;
|
||||
#else
|
||||
ret = chmod_or_fchmod (dst_name, dest_desc, mode);
|
||||
if (ret != 0)
|
||||
error (0, errno, _("preserving permissions for %s"), quote (dst_name));
|
||||
return ret;
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Set the access control lists of a file. If DESC is a valid file
|
||||
descriptor, use file descriptor operations where available, else use
|
||||
filename based operations on NAME. If access control lists are not
|
||||
available, fchmod the target file to MODE. Also sets the
|
||||
non-permission bits of the destination file (S_ISUID, S_ISGID, S_ISVTX)
|
||||
to those from MODE if any are set. System call return value
|
||||
semantics. */
|
||||
|
||||
int
|
||||
set_acl (char const *name, int desc, mode_t mode)
|
||||
{
|
||||
#if USE_ACL && HAVE_ACL_SET_FILE && HAVE_ACL_FREE
|
||||
/* POSIX 1003.1e draft 17 (abandoned) specific version. */
|
||||
|
||||
/* We must also have have_acl_from_text and acl_delete_def_file.
|
||||
(acl_delete_def_file could be emulated with acl_init followed
|
||||
by acl_set_file, but acl_set_file with an empty acl is
|
||||
unspecified.) */
|
||||
|
||||
# ifndef HAVE_ACL_FROM_TEXT
|
||||
# error Must have acl_from_text (see POSIX 1003.1e draft 17).
|
||||
# endif
|
||||
# ifndef HAVE_ACL_DELETE_DEF_FILE
|
||||
# error Must have acl_delete_def_file (see POSIX 1003.1e draft 17).
|
||||
# endif
|
||||
|
||||
acl_t acl;
|
||||
int ret;
|
||||
|
||||
if (HAVE_ACL_FROM_MODE)
|
||||
{
|
||||
acl = acl_from_mode (mode);
|
||||
if (!acl)
|
||||
{
|
||||
error (0, errno, "%s", quote (name));
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
char acl_text[] = "u::---,g::---,o::---";
|
||||
|
||||
if (mode & S_IRUSR) acl_text[ 3] = 'r';
|
||||
if (mode & S_IWUSR) acl_text[ 4] = 'w';
|
||||
if (mode & S_IXUSR) acl_text[ 5] = 'x';
|
||||
if (mode & S_IRGRP) acl_text[10] = 'r';
|
||||
if (mode & S_IWGRP) acl_text[11] = 'w';
|
||||
if (mode & S_IXGRP) acl_text[12] = 'x';
|
||||
if (mode & S_IROTH) acl_text[17] = 'r';
|
||||
if (mode & S_IWOTH) acl_text[18] = 'w';
|
||||
if (mode & S_IXOTH) acl_text[19] = 'x';
|
||||
|
||||
acl = acl_from_text (acl_text);
|
||||
if (!acl)
|
||||
{
|
||||
error (0, errno, "%s", quote (name));
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
if (HAVE_ACL_SET_FD && desc != -1)
|
||||
ret = acl_set_fd (desc, acl);
|
||||
else
|
||||
ret = acl_set_file (name, ACL_TYPE_ACCESS, acl);
|
||||
if (ret != 0)
|
||||
{
|
||||
int saved_errno = errno;
|
||||
acl_free (acl);
|
||||
|
||||
if (errno == ENOTSUP || errno == ENOSYS)
|
||||
{
|
||||
if (chmod_or_fchmod (name, desc, mode) != 0)
|
||||
saved_errno = errno;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
error (0, saved_errno, _("setting permissions for %s"), quote (name));
|
||||
return -1;
|
||||
}
|
||||
else
|
||||
acl_free (acl);
|
||||
|
||||
if (S_ISDIR (mode) && acl_delete_def_file (name))
|
||||
{
|
||||
error (0, errno, _("setting permissions for %s"), quote (name));
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (mode & (S_ISUID | S_ISGID | S_ISVTX))
|
||||
{
|
||||
/* We did not call chmod so far, so the special bits have not yet
|
||||
been set. */
|
||||
|
||||
if (chmod_or_fchmod (name, desc, mode))
|
||||
{
|
||||
error (0, errno, _("preserving permissions for %s"), quote (name));
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
#else
|
||||
int ret = chmod_or_fchmod (name, desc, mode);
|
||||
if (ret)
|
||||
error (0, errno, _("setting permissions for %s"), quote (name));
|
||||
return ret;
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -18,11 +18,14 @@
|
||||
|
||||
Written by Paul Eggert. */
|
||||
|
||||
#if HAVE_SYS_ACL_H && HAVE_ACL
|
||||
#if HAVE_SYS_ACL_H
|
||||
# include <sys/acl.h>
|
||||
#endif
|
||||
#if ! defined GETACLCNT && defined ACL_CNT
|
||||
#if defined HAVE_ACL && ! defined GETACLCNT && defined ACL_CNT
|
||||
# define GETACLCNT ACL_CNT
|
||||
#endif
|
||||
|
||||
int file_has_acl (char const *, struct stat const *);
|
||||
int copy_acl (char const *, int, char const *, int, mode_t);
|
||||
int set_acl (char const *, int, mode_t);
|
||||
int chmod_or_fchmod (char const *, int, mode_t);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* Memory allocation on the stack.
|
||||
|
||||
Copyright (C) 1995, 1999, 2001, 2002, 2003, 2004 Free Software
|
||||
Copyright (C) 1995, 1999, 2001, 2002, 2003, 2004, 2006 Free Software
|
||||
Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it
|
||||
@@ -34,19 +34,21 @@
|
||||
request, the program just crashes.
|
||||
*/
|
||||
|
||||
#ifdef __GNUC__
|
||||
# define alloca __builtin_alloca
|
||||
#elif defined _AIX
|
||||
# define alloca __alloca
|
||||
#elif defined _MSC_VER
|
||||
# include <malloc.h>
|
||||
# define alloca _alloca
|
||||
#else
|
||||
# include <stddef.h>
|
||||
# ifdef __cplusplus
|
||||
#ifndef alloca
|
||||
# ifdef __GNUC__
|
||||
# define alloca __builtin_alloca
|
||||
# elif defined _AIX
|
||||
# define alloca __alloca
|
||||
# elif defined _MSC_VER
|
||||
# include <malloc.h>
|
||||
# define alloca _alloca
|
||||
# else
|
||||
# include <stddef.h>
|
||||
# ifdef __cplusplus
|
||||
extern "C"
|
||||
# endif
|
||||
# endif
|
||||
void *alloca (size_t);
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#endif /* _GNULIB_ALLOCA_H */
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* Safe automatic memory allocation.
|
||||
Copyright (C) 2003-2004 Free Software Foundation, Inc.
|
||||
Copyright (C) 2003-2006 Free Software Foundation, Inc.
|
||||
Written by Bruno Haible <bruno@clisp.org>, 2003.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
@@ -23,6 +23,12 @@
|
||||
#include <stddef.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
/* safe_alloca(N) is equivalent to alloca(N) when it is safe to call
|
||||
alloca(N); otherwise it returns NULL. It either returns N bytes of
|
||||
memory allocated on the stack, that lasts until the function returns,
|
||||
@@ -69,6 +75,11 @@ extern void freesa (void *p);
|
||||
If this would be useful in your application. please speak up. */
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
/* ------------------- Auxiliary, non-public definitions ------------------- */
|
||||
|
||||
/* Determine the alignment of a type at compile time. */
|
||||
@@ -81,6 +92,10 @@ extern void freesa (void *p);
|
||||
/* Work around a HP-UX 10.20 cc bug with enums constants defined as offsetof
|
||||
values. */
|
||||
# define sa_alignof(type) (sizeof (type) <= 4 ? 4 : 8)
|
||||
#elif defined _AIX
|
||||
/* Work around an AIX 3.2.5 xlc bug with enums constants defined as offsetof
|
||||
values. */
|
||||
# define sa_alignof(type) (sizeof (type) <= 4 ? 4 : 8)
|
||||
#else
|
||||
# define sa_alignof(type) offsetof (struct { char __slot1; type __slot2; }, __slot2)
|
||||
#endif
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
/* backupfile.c -- make Emacs style backup file names
|
||||
|
||||
Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
|
||||
1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||
1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 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
|
||||
@@ -40,29 +41,10 @@
|
||||
|
||||
#include <unistd.h>
|
||||
|
||||
#if HAVE_DIRENT_H
|
||||
# include <dirent.h>
|
||||
# define NLENGTH(direct) strlen ((direct)->d_name)
|
||||
#else
|
||||
# define dirent direct
|
||||
# define NLENGTH(direct) ((size_t) (direct)->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
|
||||
#include <dirent.h>
|
||||
#ifndef _D_EXACT_NAMLEN
|
||||
# define _D_EXACT_NAMLEN(dp) strlen ((dp)->d_name)
|
||||
#endif
|
||||
|
||||
#if HAVE_DIRENT_H || HAVE_NDIR_H || HAVE_SYS_DIR_H || HAVE_SYS_NDIR_H
|
||||
# define HAVE_DIR 1
|
||||
#else
|
||||
# define HAVE_DIR 0
|
||||
#endif
|
||||
|
||||
#if D_INO_IN_DIRENT
|
||||
# define REAL_DIR_ENTRY(dp) ((dp)->d_ino != 0)
|
||||
#else
|
||||
@@ -94,11 +76,11 @@
|
||||
#endif
|
||||
|
||||
/* ISDIGIT differs from isdigit, as follows:
|
||||
- Its arg may be any int or unsigned int; it need not be an unsigned char.
|
||||
- It's guaranteed to evaluate its argument exactly once.
|
||||
- Its arg may be any int or unsigned int; it need not be an unsigned char
|
||||
or EOF.
|
||||
- It's typically faster.
|
||||
POSIX says that only '0' through '9' are digits. Prefer ISDIGIT to
|
||||
ISDIGIT_LOCALE unless it's important to use the locale's definition
|
||||
ISDIGIT unless it's important to use the locale's definition
|
||||
of `digit' even when the host does not conform to POSIX. */
|
||||
#define ISDIGIT(c) ((unsigned int) (c) - '0' <= 9)
|
||||
|
||||
@@ -115,7 +97,7 @@ char const *simple_backup_suffix = "~";
|
||||
static void
|
||||
check_extension (char *file, size_t filelen, char e)
|
||||
{
|
||||
char *base = base_name (file);
|
||||
char *base = last_component (file);
|
||||
size_t baselen = base_len (base);
|
||||
size_t baselen_max = HAVE_LONG_FILE_NAMES ? 255 : NAME_MAX_MINIMUM;
|
||||
|
||||
@@ -165,8 +147,6 @@ check_extension (char *file, size_t filelen, char e)
|
||||
}
|
||||
}
|
||||
|
||||
#if HAVE_DIR
|
||||
|
||||
/* Returned values for NUMBERED_BACKUP. */
|
||||
|
||||
enum numbered_backup_result
|
||||
@@ -202,7 +182,7 @@ numbered_backup (char **buffer, size_t buffer_size, size_t filelen)
|
||||
struct dirent *dp;
|
||||
char *buf = *buffer;
|
||||
size_t versionlenmax = 1;
|
||||
char *base = base_name (buf);
|
||||
char *base = last_component (buf);
|
||||
size_t base_offset = base - buf;
|
||||
size_t baselen = base_len (base);
|
||||
|
||||
@@ -226,7 +206,7 @@ numbered_backup (char **buffer, size_t buffer_size, size_t filelen)
|
||||
size_t versionlen;
|
||||
size_t new_buflen;
|
||||
|
||||
if (! REAL_DIR_ENTRY (dp) || NLENGTH (dp) < baselen + 4)
|
||||
if (! REAL_DIR_ENTRY (dp) || _D_EXACT_NAMLEN (dp) < baselen + 4)
|
||||
continue;
|
||||
|
||||
if (memcmp (buf + base_offset, dp->d_name, baselen + 2) != 0)
|
||||
@@ -281,7 +261,6 @@ numbered_backup (char **buffer, size_t buffer_size, size_t filelen)
|
||||
*buffer = buf;
|
||||
return result;
|
||||
}
|
||||
#endif /* HAVE_DIR */
|
||||
|
||||
/* Return the name of the new backup file for the existing file FILE,
|
||||
allocated with malloc. Report an error and fail if out of memory.
|
||||
@@ -300,14 +279,13 @@ find_backup_file_name (char const *file, enum backup_type backup_type)
|
||||
size_t simple_backup_suffix_size = strlen (simple_backup_suffix) + 1;
|
||||
size_t backup_suffix_size_guess = simple_backup_suffix_size;
|
||||
enum { GUESS = sizeof ".~12345~" };
|
||||
if (HAVE_DIR && backup_suffix_size_guess < GUESS)
|
||||
if (backup_suffix_size_guess < GUESS)
|
||||
backup_suffix_size_guess = GUESS;
|
||||
|
||||
ssize = filelen + backup_suffix_size_guess + 1;
|
||||
s = xmalloc (ssize);
|
||||
memcpy (s, file, filelen + 1);
|
||||
|
||||
#if HAVE_DIR
|
||||
if (backup_type != simple_backups)
|
||||
switch (numbered_backup (&s, ssize, filelen))
|
||||
{
|
||||
@@ -322,7 +300,6 @@ find_backup_file_name (char const *file, enum backup_type backup_type)
|
||||
simple = (backup_type == numbered_existing_backups);
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (simple)
|
||||
memcpy (s + filelen, simple_backup_suffix, simple_backup_suffix_size);
|
||||
|
||||
427
lib/base64.c
Normal file
427
lib/base64.c
Normal file
@@ -0,0 +1,427 @@
|
||||
/* base64.c -- Encode binary data using printable characters.
|
||||
Copyright (C) 1999, 2000, 2001, 2004, 2005, 2006 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
|
||||
|
||||
/* Written by Simon Josefsson. Partially adapted from GNU MailUtils
|
||||
* (mailbox/filter_trans.c, as of 2004-11-28). Improved by review
|
||||
* from Paul Eggert, Bruno Haible, and Stepan Kasal.
|
||||
*
|
||||
* See also RFC 3548 <http://www.ietf.org/rfc/rfc3548.txt>.
|
||||
*
|
||||
* Be careful with error checking. Here is how you would typically
|
||||
* use these functions:
|
||||
*
|
||||
* bool ok = base64_decode_alloc (in, inlen, &out, &outlen);
|
||||
* if (!ok)
|
||||
* FAIL: input was not valid base64
|
||||
* if (out == NULL)
|
||||
* FAIL: memory allocation error
|
||||
* OK: data in OUT/OUTLEN
|
||||
*
|
||||
* size_t outlen = base64_encode_alloc (in, inlen, &out);
|
||||
* if (out == NULL && outlen == 0 && inlen != 0)
|
||||
* FAIL: input too long
|
||||
* if (out == NULL)
|
||||
* FAIL: memory allocation error
|
||||
* OK: data in OUT/OUTLEN.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
/* Get prototype. */
|
||||
#include "base64.h"
|
||||
|
||||
/* Get malloc. */
|
||||
#include <stdlib.h>
|
||||
|
||||
/* Get UCHAR_MAX. */
|
||||
#include <limits.h>
|
||||
|
||||
/* C89 compliant way to cast 'char' to 'unsigned char'. */
|
||||
static inline unsigned char
|
||||
to_uchar (char ch)
|
||||
{
|
||||
return ch;
|
||||
}
|
||||
|
||||
/* Base64 encode IN array of size INLEN into OUT array of size OUTLEN.
|
||||
If OUTLEN is less than BASE64_LENGTH(INLEN), write as many bytes as
|
||||
possible. If OUTLEN is larger than BASE64_LENGTH(INLEN), also zero
|
||||
terminate the output buffer. */
|
||||
void
|
||||
base64_encode (const char *restrict in, size_t inlen,
|
||||
char *restrict out, size_t outlen)
|
||||
{
|
||||
static const char b64str[64] =
|
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
|
||||
|
||||
while (inlen && outlen)
|
||||
{
|
||||
*out++ = b64str[(to_uchar (in[0]) >> 2) & 0x3f];
|
||||
if (!--outlen)
|
||||
break;
|
||||
*out++ = b64str[((to_uchar (in[0]) << 4)
|
||||
+ (--inlen ? to_uchar (in[1]) >> 4 : 0))
|
||||
& 0x3f];
|
||||
if (!--outlen)
|
||||
break;
|
||||
*out++ =
|
||||
(inlen
|
||||
? b64str[((to_uchar (in[1]) << 2)
|
||||
+ (--inlen ? to_uchar (in[2]) >> 6 : 0))
|
||||
& 0x3f]
|
||||
: '=');
|
||||
if (!--outlen)
|
||||
break;
|
||||
*out++ = inlen ? b64str[to_uchar (in[2]) & 0x3f] : '=';
|
||||
if (!--outlen)
|
||||
break;
|
||||
if (inlen)
|
||||
inlen--;
|
||||
if (inlen)
|
||||
in += 3;
|
||||
}
|
||||
|
||||
if (outlen)
|
||||
*out = '\0';
|
||||
}
|
||||
|
||||
/* Allocate a buffer and store zero terminated base64 encoded data
|
||||
from array IN of size INLEN, returning BASE64_LENGTH(INLEN), i.e.,
|
||||
the length of the encoded data, excluding the terminating zero. On
|
||||
return, the OUT variable will hold a pointer to newly allocated
|
||||
memory that must be deallocated by the caller. If output string
|
||||
length would overflow, 0 is returned and OUT is set to NULL. If
|
||||
memory allocation failed, OUT is set to NULL, and the return value
|
||||
indicates length of the requested memory block, i.e.,
|
||||
BASE64_LENGTH(inlen) + 1. */
|
||||
size_t
|
||||
base64_encode_alloc (const char *in, size_t inlen, char **out)
|
||||
{
|
||||
size_t outlen = 1 + BASE64_LENGTH (inlen);
|
||||
|
||||
/* Check for overflow in outlen computation.
|
||||
*
|
||||
* If there is no overflow, outlen >= inlen.
|
||||
*
|
||||
* If the operation (inlen + 2) overflows then it yields at most +1, so
|
||||
* outlen is 0.
|
||||
*
|
||||
* If the multiplication overflows, we lose at least half of the
|
||||
* correct value, so the result is < ((inlen + 2) / 3) * 2, which is
|
||||
* less than (inlen + 2) * 0.66667, which is less than inlen as soon as
|
||||
* (inlen > 4).
|
||||
*/
|
||||
if (inlen > outlen)
|
||||
{
|
||||
*out = NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
*out = malloc (outlen);
|
||||
if (!*out)
|
||||
return outlen;
|
||||
|
||||
base64_encode (in, inlen, *out, outlen);
|
||||
|
||||
return outlen - 1;
|
||||
}
|
||||
|
||||
/* With this approach this file works independent of the charset used
|
||||
(think EBCDIC). However, it does assume that the characters in the
|
||||
Base64 alphabet (A-Za-z0-9+/) are encoded in 0..255. POSIX
|
||||
1003.1-2001 require that char and unsigned char are 8-bit
|
||||
quantities, though, taking care of that problem. But this may be a
|
||||
potential problem on non-POSIX C99 platforms.
|
||||
|
||||
IBM C V6 for AIX mishandles "#define B64(x) ...'x'...", so use "_"
|
||||
as the formal parameter rather than "x". */
|
||||
#define B64(_) \
|
||||
((_) == 'A' ? 0 \
|
||||
: (_) == 'B' ? 1 \
|
||||
: (_) == 'C' ? 2 \
|
||||
: (_) == 'D' ? 3 \
|
||||
: (_) == 'E' ? 4 \
|
||||
: (_) == 'F' ? 5 \
|
||||
: (_) == 'G' ? 6 \
|
||||
: (_) == 'H' ? 7 \
|
||||
: (_) == 'I' ? 8 \
|
||||
: (_) == 'J' ? 9 \
|
||||
: (_) == 'K' ? 10 \
|
||||
: (_) == 'L' ? 11 \
|
||||
: (_) == 'M' ? 12 \
|
||||
: (_) == 'N' ? 13 \
|
||||
: (_) == 'O' ? 14 \
|
||||
: (_) == 'P' ? 15 \
|
||||
: (_) == 'Q' ? 16 \
|
||||
: (_) == 'R' ? 17 \
|
||||
: (_) == 'S' ? 18 \
|
||||
: (_) == 'T' ? 19 \
|
||||
: (_) == 'U' ? 20 \
|
||||
: (_) == 'V' ? 21 \
|
||||
: (_) == 'W' ? 22 \
|
||||
: (_) == 'X' ? 23 \
|
||||
: (_) == 'Y' ? 24 \
|
||||
: (_) == 'Z' ? 25 \
|
||||
: (_) == 'a' ? 26 \
|
||||
: (_) == 'b' ? 27 \
|
||||
: (_) == 'c' ? 28 \
|
||||
: (_) == 'd' ? 29 \
|
||||
: (_) == 'e' ? 30 \
|
||||
: (_) == 'f' ? 31 \
|
||||
: (_) == 'g' ? 32 \
|
||||
: (_) == 'h' ? 33 \
|
||||
: (_) == 'i' ? 34 \
|
||||
: (_) == 'j' ? 35 \
|
||||
: (_) == 'k' ? 36 \
|
||||
: (_) == 'l' ? 37 \
|
||||
: (_) == 'm' ? 38 \
|
||||
: (_) == 'n' ? 39 \
|
||||
: (_) == 'o' ? 40 \
|
||||
: (_) == 'p' ? 41 \
|
||||
: (_) == 'q' ? 42 \
|
||||
: (_) == 'r' ? 43 \
|
||||
: (_) == 's' ? 44 \
|
||||
: (_) == 't' ? 45 \
|
||||
: (_) == 'u' ? 46 \
|
||||
: (_) == 'v' ? 47 \
|
||||
: (_) == 'w' ? 48 \
|
||||
: (_) == 'x' ? 49 \
|
||||
: (_) == 'y' ? 50 \
|
||||
: (_) == 'z' ? 51 \
|
||||
: (_) == '0' ? 52 \
|
||||
: (_) == '1' ? 53 \
|
||||
: (_) == '2' ? 54 \
|
||||
: (_) == '3' ? 55 \
|
||||
: (_) == '4' ? 56 \
|
||||
: (_) == '5' ? 57 \
|
||||
: (_) == '6' ? 58 \
|
||||
: (_) == '7' ? 59 \
|
||||
: (_) == '8' ? 60 \
|
||||
: (_) == '9' ? 61 \
|
||||
: (_) == '+' ? 62 \
|
||||
: (_) == '/' ? 63 \
|
||||
: -1)
|
||||
|
||||
static const signed char b64[0x100] = {
|
||||
B64 (0), B64 (1), B64 (2), B64 (3),
|
||||
B64 (4), B64 (5), B64 (6), B64 (7),
|
||||
B64 (8), B64 (9), B64 (10), B64 (11),
|
||||
B64 (12), B64 (13), B64 (14), B64 (15),
|
||||
B64 (16), B64 (17), B64 (18), B64 (19),
|
||||
B64 (20), B64 (21), B64 (22), B64 (23),
|
||||
B64 (24), B64 (25), B64 (26), B64 (27),
|
||||
B64 (28), B64 (29), B64 (30), B64 (31),
|
||||
B64 (32), B64 (33), B64 (34), B64 (35),
|
||||
B64 (36), B64 (37), B64 (38), B64 (39),
|
||||
B64 (40), B64 (41), B64 (42), B64 (43),
|
||||
B64 (44), B64 (45), B64 (46), B64 (47),
|
||||
B64 (48), B64 (49), B64 (50), B64 (51),
|
||||
B64 (52), B64 (53), B64 (54), B64 (55),
|
||||
B64 (56), B64 (57), B64 (58), B64 (59),
|
||||
B64 (60), B64 (61), B64 (62), B64 (63),
|
||||
B64 (64), B64 (65), B64 (66), B64 (67),
|
||||
B64 (68), B64 (69), B64 (70), B64 (71),
|
||||
B64 (72), B64 (73), B64 (74), B64 (75),
|
||||
B64 (76), B64 (77), B64 (78), B64 (79),
|
||||
B64 (80), B64 (81), B64 (82), B64 (83),
|
||||
B64 (84), B64 (85), B64 (86), B64 (87),
|
||||
B64 (88), B64 (89), B64 (90), B64 (91),
|
||||
B64 (92), B64 (93), B64 (94), B64 (95),
|
||||
B64 (96), B64 (97), B64 (98), B64 (99),
|
||||
B64 (100), B64 (101), B64 (102), B64 (103),
|
||||
B64 (104), B64 (105), B64 (106), B64 (107),
|
||||
B64 (108), B64 (109), B64 (110), B64 (111),
|
||||
B64 (112), B64 (113), B64 (114), B64 (115),
|
||||
B64 (116), B64 (117), B64 (118), B64 (119),
|
||||
B64 (120), B64 (121), B64 (122), B64 (123),
|
||||
B64 (124), B64 (125), B64 (126), B64 (127),
|
||||
B64 (128), B64 (129), B64 (130), B64 (131),
|
||||
B64 (132), B64 (133), B64 (134), B64 (135),
|
||||
B64 (136), B64 (137), B64 (138), B64 (139),
|
||||
B64 (140), B64 (141), B64 (142), B64 (143),
|
||||
B64 (144), B64 (145), B64 (146), B64 (147),
|
||||
B64 (148), B64 (149), B64 (150), B64 (151),
|
||||
B64 (152), B64 (153), B64 (154), B64 (155),
|
||||
B64 (156), B64 (157), B64 (158), B64 (159),
|
||||
B64 (160), B64 (161), B64 (162), B64 (163),
|
||||
B64 (164), B64 (165), B64 (166), B64 (167),
|
||||
B64 (168), B64 (169), B64 (170), B64 (171),
|
||||
B64 (172), B64 (173), B64 (174), B64 (175),
|
||||
B64 (176), B64 (177), B64 (178), B64 (179),
|
||||
B64 (180), B64 (181), B64 (182), B64 (183),
|
||||
B64 (184), B64 (185), B64 (186), B64 (187),
|
||||
B64 (188), B64 (189), B64 (190), B64 (191),
|
||||
B64 (192), B64 (193), B64 (194), B64 (195),
|
||||
B64 (196), B64 (197), B64 (198), B64 (199),
|
||||
B64 (200), B64 (201), B64 (202), B64 (203),
|
||||
B64 (204), B64 (205), B64 (206), B64 (207),
|
||||
B64 (208), B64 (209), B64 (210), B64 (211),
|
||||
B64 (212), B64 (213), B64 (214), B64 (215),
|
||||
B64 (216), B64 (217), B64 (218), B64 (219),
|
||||
B64 (220), B64 (221), B64 (222), B64 (223),
|
||||
B64 (224), B64 (225), B64 (226), B64 (227),
|
||||
B64 (228), B64 (229), B64 (230), B64 (231),
|
||||
B64 (232), B64 (233), B64 (234), B64 (235),
|
||||
B64 (236), B64 (237), B64 (238), B64 (239),
|
||||
B64 (240), B64 (241), B64 (242), B64 (243),
|
||||
B64 (244), B64 (245), B64 (246), B64 (247),
|
||||
B64 (248), B64 (249), B64 (250), B64 (251),
|
||||
B64 (252), B64 (253), B64 (254), B64 (255)
|
||||
};
|
||||
|
||||
#if UCHAR_MAX == 255
|
||||
# define uchar_in_range(c) true
|
||||
#else
|
||||
# define uchar_in_range(c) ((c) <= 255)
|
||||
#endif
|
||||
|
||||
/* Return true if CH is a character from the Base64 alphabet, and
|
||||
false otherwise. Note that '=' is padding and not considered to be
|
||||
part of the alphabet. */
|
||||
bool
|
||||
isbase64 (char ch)
|
||||
{
|
||||
return uchar_in_range (to_uchar (ch)) && 0 <= b64[to_uchar (ch)];
|
||||
}
|
||||
|
||||
/* Decode base64 encoded input array IN of length INLEN to output
|
||||
array OUT that can hold *OUTLEN bytes. Return true if decoding was
|
||||
successful, i.e. if the input was valid base64 data, false
|
||||
otherwise. If *OUTLEN is too small, as many bytes as possible will
|
||||
be written to OUT. On return, *OUTLEN holds the length of decoded
|
||||
bytes in OUT. Note that as soon as any non-alphabet characters are
|
||||
encountered, decoding is stopped and false is returned. This means
|
||||
that, when applicable, you must remove any line terminators that is
|
||||
part of the data stream before calling this function. */
|
||||
bool
|
||||
base64_decode (const char *restrict in, size_t inlen,
|
||||
char *restrict out, size_t *outlen)
|
||||
{
|
||||
size_t outleft = *outlen;
|
||||
|
||||
while (inlen >= 2)
|
||||
{
|
||||
if (!isbase64 (in[0]) || !isbase64 (in[1]))
|
||||
break;
|
||||
|
||||
if (outleft)
|
||||
{
|
||||
*out++ = ((b64[to_uchar (in[0])] << 2)
|
||||
| (b64[to_uchar (in[1])] >> 4));
|
||||
outleft--;
|
||||
}
|
||||
|
||||
if (inlen == 2)
|
||||
break;
|
||||
|
||||
if (in[2] == '=')
|
||||
{
|
||||
if (inlen != 4)
|
||||
break;
|
||||
|
||||
if (in[3] != '=')
|
||||
break;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!isbase64 (in[2]))
|
||||
break;
|
||||
|
||||
if (outleft)
|
||||
{
|
||||
*out++ = (((b64[to_uchar (in[1])] << 4) & 0xf0)
|
||||
| (b64[to_uchar (in[2])] >> 2));
|
||||
outleft--;
|
||||
}
|
||||
|
||||
if (inlen == 3)
|
||||
break;
|
||||
|
||||
if (in[3] == '=')
|
||||
{
|
||||
if (inlen != 4)
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!isbase64 (in[3]))
|
||||
break;
|
||||
|
||||
if (outleft)
|
||||
{
|
||||
*out++ = (((b64[to_uchar (in[2])] << 6) & 0xc0)
|
||||
| b64[to_uchar (in[3])]);
|
||||
outleft--;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
in += 4;
|
||||
inlen -= 4;
|
||||
}
|
||||
|
||||
*outlen -= outleft;
|
||||
|
||||
if (inlen != 0)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/* Allocate an output buffer in *OUT, and decode the base64 encoded
|
||||
data stored in IN of size INLEN to the *OUT buffer. On return, the
|
||||
size of the decoded data is stored in *OUTLEN. OUTLEN may be NULL,
|
||||
if the caller is not interested in the decoded length. *OUT may be
|
||||
NULL to indicate an out of memory error, in which case *OUTLEN
|
||||
contains the size of the memory block needed. The function returns
|
||||
true on successful decoding and memory allocation errors. (Use the
|
||||
*OUT and *OUTLEN parameters to differentiate between successful
|
||||
decoding and memory error.) The function returns false if the
|
||||
input was invalid, in which case *OUT is NULL and *OUTLEN is
|
||||
undefined. */
|
||||
bool
|
||||
base64_decode_alloc (const char *in, size_t inlen, char **out,
|
||||
size_t *outlen)
|
||||
{
|
||||
/* This may allocate a few bytes too much, depending on input,
|
||||
but it's not worth the extra CPU time to compute the exact amount.
|
||||
The exact amount is 3 * inlen / 4, minus 1 if the input ends
|
||||
with "=" and minus another 1 if the input ends with "==".
|
||||
Dividing before multiplying avoids the possibility of overflow. */
|
||||
size_t needlen = 3 * (inlen / 4) + 2;
|
||||
|
||||
*out = malloc (needlen);
|
||||
if (!*out)
|
||||
return true;
|
||||
|
||||
if (!base64_decode (in, inlen, *out, &needlen))
|
||||
{
|
||||
free (*out);
|
||||
*out = NULL;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (outlen)
|
||||
*outlen = needlen;
|
||||
|
||||
return true;
|
||||
}
|
||||
45
lib/base64.h
Normal file
45
lib/base64.h
Normal file
@@ -0,0 +1,45 @@
|
||||
/* base64.h -- Encode binary data using printable characters.
|
||||
Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc.
|
||||
Written by Simon Josefsson.
|
||||
|
||||
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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
|
||||
|
||||
#ifndef BASE64_H
|
||||
# define BASE64_H
|
||||
|
||||
/* Get size_t. */
|
||||
# include <stddef.h>
|
||||
|
||||
/* Get bool. */
|
||||
# include <stdbool.h>
|
||||
|
||||
/* This uses that the expression (n+(k-1))/k means the smallest
|
||||
integer >= n/k, i.e., the ceiling of n/k. */
|
||||
# define BASE64_LENGTH(inlen) ((((inlen) + 2) / 3) * 4)
|
||||
|
||||
extern bool isbase64 (char ch);
|
||||
|
||||
extern void base64_encode (const char *restrict in, size_t inlen,
|
||||
char *restrict out, size_t outlen);
|
||||
|
||||
extern size_t base64_encode_alloc (const char *in, size_t inlen, char **out);
|
||||
|
||||
extern bool base64_decode (const char *restrict in, size_t inlen,
|
||||
char *restrict out, size_t *outlen);
|
||||
|
||||
extern bool base64_decode_alloc (const char *in, size_t inlen,
|
||||
char **out, size_t *outlen);
|
||||
|
||||
#endif /* BASE64_H */
|
||||
104
lib/basename.c
104
lib/basename.c
@@ -1,6 +1,6 @@
|
||||
/* basename.c -- return the last element in a file name
|
||||
|
||||
Copyright (C) 1990, 1998, 1999, 2000, 2001, 2003, 2004, 2005 Free
|
||||
Copyright (C) 1990, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006 Free
|
||||
Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
@@ -22,58 +22,110 @@
|
||||
#endif
|
||||
|
||||
#include "dirname.h"
|
||||
|
||||
#include <string.h>
|
||||
#include "xalloc.h"
|
||||
#include "xstrndup.h"
|
||||
|
||||
/* 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. */
|
||||
/* Return the address of the last file name component of NAME. If
|
||||
NAME has no relative file name components because it is a file
|
||||
system root, return the empty string. */
|
||||
|
||||
char *
|
||||
base_name (char const *name)
|
||||
last_component (char const *name)
|
||||
{
|
||||
char const *base = name + FILE_SYSTEM_PREFIX_LEN (name);
|
||||
char const *p;
|
||||
bool saw_slash = false;
|
||||
|
||||
while (ISSLASH (*base))
|
||||
base++;
|
||||
|
||||
for (p = base; *p; p++)
|
||||
{
|
||||
if (ISSLASH (*p))
|
||||
saw_slash = true;
|
||||
else if (saw_slash)
|
||||
{
|
||||
/* 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;
|
||||
saw_slash = false;
|
||||
}
|
||||
}
|
||||
|
||||
return (char *) base;
|
||||
}
|
||||
|
||||
/* Return the length of of the basename NAME. Typically NAME is the
|
||||
value returned by base_name. Act like strlen (NAME), except omit
|
||||
redundant trailing slashes. */
|
||||
|
||||
/* 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 last file name component of NAME, allocated with
|
||||
xmalloc. On systems with drive letters, a leading "./"
|
||||
distinguishes relative names that would otherwise look like a drive
|
||||
letter. Unlike POSIX basename(), NAME cannot be NULL,
|
||||
base_name("") returns "", and the first trailing slash is not
|
||||
stripped.
|
||||
|
||||
If lstat (NAME) would succeed, then { chdir (dir_name (NAME));
|
||||
lstat (base_name (NAME)); } will access the same file. Likewise,
|
||||
if the sequence { chdir (dir_name (NAME));
|
||||
rename (base_name (NAME), "foo"); } succeeds, you have renamed NAME
|
||||
to "foo" in the same directory NAME was in. */
|
||||
|
||||
char *
|
||||
base_name (char const *name)
|
||||
{
|
||||
char const *base = last_component (name);
|
||||
size_t length;
|
||||
|
||||
/* If there is no last component, then name is a file system root or the
|
||||
empty string. */
|
||||
if (! *base)
|
||||
return xstrndup (name, base_len (name));
|
||||
|
||||
/* Collapse a sequence of trailing slashes into one. */
|
||||
length = base_len (base);
|
||||
if (ISSLASH (base[length]))
|
||||
length++;
|
||||
|
||||
/* On systems with drive letters, `a/b:c' must return `./b:c' rather
|
||||
than `b:c' to avoid confusion with a drive letter. On systems
|
||||
with pure POSIX semantics, this is not an issue. */
|
||||
if (FILE_SYSTEM_PREFIX_LEN (base))
|
||||
{
|
||||
char *p = xmalloc (length + 3);
|
||||
p[0] = '.';
|
||||
p[1] = '/';
|
||||
memcpy (p + 2, base, length);
|
||||
p[length + 2] = '\0';
|
||||
return p;
|
||||
}
|
||||
|
||||
/* Finally, copy the basename. */
|
||||
return xstrndup (base, length);
|
||||
}
|
||||
|
||||
/* Return the length of the basename NAME. Typically NAME is the
|
||||
value returned by base_name or last_component. Act like strlen
|
||||
(NAME), except omit all trailing slashes. */
|
||||
|
||||
size_t
|
||||
base_len (char const *name)
|
||||
{
|
||||
size_t len;
|
||||
size_t prefix_len = FILE_SYSTEM_PREFIX_LEN (name);
|
||||
|
||||
for (len = strlen (name); 1 < len && ISSLASH (name[len - 1]); len--)
|
||||
continue;
|
||||
|
||||
if (DOUBLE_SLASH_IS_DISTINCT_ROOT && len == 1
|
||||
&& ISSLASH (name[0]) && ISSLASH (name[1]) && ! name[2])
|
||||
return 2;
|
||||
|
||||
if (FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE && prefix_len
|
||||
&& len == prefix_len && ISSLASH (name[prefix_len]))
|
||||
return prefix_len + 1;
|
||||
|
||||
return len;
|
||||
}
|
||||
|
||||
59
lib/buffer-lcm.c
Normal file
59
lib/buffer-lcm.c
Normal file
@@ -0,0 +1,59 @@
|
||||
/* buffer-lcm.c - compute a good buffer size for dealing with two files
|
||||
|
||||
Copyright (C) 2002, 2005 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
|
||||
|
||||
/* Written by Paul Eggert. */
|
||||
|
||||
#include "buffer-lcm.h"
|
||||
|
||||
/* Return a buffer size suitable for doing I/O with files whose block
|
||||
sizes are A and B. However, never return a value greater than
|
||||
LCM_MAX. */
|
||||
|
||||
size_t
|
||||
buffer_lcm (size_t a, size_t b, size_t lcm_max)
|
||||
{
|
||||
size_t size;
|
||||
|
||||
/* Use reasonable values if buffer sizes are zero. */
|
||||
if (!a)
|
||||
size = b ? b : 8 * 1024;
|
||||
else
|
||||
{
|
||||
if (b)
|
||||
{
|
||||
/* Return lcm (A, B) if it is in range; otherwise, fall back
|
||||
on A. */
|
||||
|
||||
size_t lcm, m, n, q, r;
|
||||
|
||||
/* N = gcd (A, B). */
|
||||
for (m = a, n = b; (r = m % n) != 0; m = n, n = r)
|
||||
continue;
|
||||
|
||||
/* LCM = lcm (A, B), if in range. */
|
||||
q = a / n;
|
||||
lcm = q * b;
|
||||
if (lcm <= lcm_max && lcm / b == q)
|
||||
return lcm;
|
||||
}
|
||||
|
||||
size = a;
|
||||
}
|
||||
|
||||
return size <= lcm_max ? size : lcm_max;
|
||||
}
|
||||
2
lib/buffer-lcm.h
Normal file
2
lib/buffer-lcm.h
Normal file
@@ -0,0 +1,2 @@
|
||||
#include <stddef.h>
|
||||
size_t buffer_lcm (size_t, size_t, size_t);
|
||||
@@ -77,13 +77,10 @@ cdb_free (struct cd_buf const *cdb)
|
||||
static int
|
||||
cdb_advance_fd (struct cd_buf *cdb, char const *dir)
|
||||
{
|
||||
int new_fd = openat (cdb->fd, dir, O_RDONLY | O_DIRECTORY);
|
||||
int new_fd = openat (cdb->fd, dir,
|
||||
O_RDONLY | O_DIRECTORY | O_NOCTTY | O_NONBLOCK);
|
||||
if (new_fd < 0)
|
||||
{
|
||||
new_fd = openat (cdb->fd, dir, O_WRONLY | O_DIRECTORY);
|
||||
if (new_fd < 0)
|
||||
return -1;
|
||||
}
|
||||
return -1;
|
||||
|
||||
cdb_free (cdb);
|
||||
cdb->fd = new_fd;
|
||||
|
||||
84
lib/chdir-safer.c
Normal file
84
lib/chdir-safer.c
Normal file
@@ -0,0 +1,84 @@
|
||||
/* much like chdir(2), but safer
|
||||
|
||||
Copyright (C) 2005, 2006 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
|
||||
|
||||
/* written by Jim Meyering */
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#include "chdir-safer.h"
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <fcntl.h>
|
||||
#include <errno.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include "same-inode.h"
|
||||
|
||||
#ifndef O_DIRECTORY
|
||||
# define O_DIRECTORY 0
|
||||
#endif
|
||||
|
||||
#ifndef O_NOFOLLOW
|
||||
# define O_NOFOLLOW 0
|
||||
#endif
|
||||
|
||||
/* Like chdir, but fail if DIR is a symbolic link to a directory (or
|
||||
similar funny business), or if DIR is not readable. This avoids a
|
||||
minor race condition between when a directory is created or statted
|
||||
and when the process chdirs into it. */
|
||||
int
|
||||
chdir_no_follow (char const *dir)
|
||||
{
|
||||
int result = 0;
|
||||
int saved_errno;
|
||||
int fd = open (dir,
|
||||
O_RDONLY | O_DIRECTORY | O_NOCTTY | O_NOFOLLOW | O_NONBLOCK);
|
||||
if (fd < 0)
|
||||
return -1;
|
||||
|
||||
/* If open follows symlinks, lstat DIR and fstat FD to ensure that
|
||||
they are the same file; if they are different files, set errno to
|
||||
ELOOP (the same value that open uses for symlinks with
|
||||
O_NOFOLLOW) so the caller can report a failure. */
|
||||
if (! O_NOFOLLOW)
|
||||
{
|
||||
struct stat sb1;
|
||||
result = lstat (dir, &sb1);
|
||||
if (result == 0)
|
||||
{
|
||||
struct stat sb2;
|
||||
result = fstat (fd, &sb2);
|
||||
if (result == 0 && ! SAME_INODE (sb1, sb2))
|
||||
{
|
||||
errno = ELOOP;
|
||||
result = -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (result == 0)
|
||||
result = fchdir (fd);
|
||||
|
||||
saved_errno = errno;
|
||||
close (fd);
|
||||
errno = saved_errno;
|
||||
return result;
|
||||
}
|
||||
21
lib/chdir-safer.h
Normal file
21
lib/chdir-safer.h
Normal file
@@ -0,0 +1,21 @@
|
||||
/* much like chdir(2), but safer
|
||||
|
||||
Copyright (C) 2005 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
|
||||
|
||||
/* Written by Jim Meyering. */
|
||||
|
||||
int chdir_no_follow (char const *file);
|
||||
37
lib/chown.c
37
lib/chown.c
@@ -27,12 +27,15 @@
|
||||
most systems. */
|
||||
#undef chown
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <unistd.h>
|
||||
#include <fcntl.h>
|
||||
#include <errno.h>
|
||||
|
||||
#include "stat-macros.h"
|
||||
|
||||
/* Provide a more-closely POSIX-conforming version of chown on
|
||||
systems with one or both of the following problems:
|
||||
- chown doesn't treat an ID of -1 as meaning
|
||||
@@ -66,20 +69,34 @@ rpl_chown (const char *file, uid_t uid, gid_t gid)
|
||||
on the symlink itself. To work around that, we open the
|
||||
file (but this can fail due to lack of read or write permission) and
|
||||
use fchown on the resulting descriptor. */
|
||||
int fd = open (file, O_RDONLY | O_NONBLOCK | O_NOCTTY);
|
||||
if (fd < 0
|
||||
&& (fd = open (file, O_WRONLY | O_NONBLOCK | O_NOCTTY)) < 0)
|
||||
return -1;
|
||||
if (fchown (fd, uid, gid))
|
||||
int open_flags = O_NONBLOCK | O_NOCTTY;
|
||||
int fd = open (file, O_RDONLY | open_flags);
|
||||
if (0 <= fd
|
||||
|| (errno == EACCES
|
||||
&& 0 <= (fd = open (file, O_WRONLY | open_flags))))
|
||||
{
|
||||
int result = fchown (fd, uid, gid);
|
||||
int saved_errno = errno;
|
||||
|
||||
/* POSIX says fchown can fail with errno == EINVAL on sockets,
|
||||
so fall back on chown in that case. */
|
||||
struct stat sb;
|
||||
bool fchown_socket_failure =
|
||||
(result != 0 && saved_errno == EINVAL
|
||||
&& fstat (fd, &sb) == 0 && S_ISFIFO (sb.st_mode));
|
||||
|
||||
close (fd);
|
||||
errno = saved_errno;
|
||||
return -1;
|
||||
|
||||
if (! fchown_socket_failure)
|
||||
{
|
||||
errno = saved_errno;
|
||||
return result;
|
||||
}
|
||||
}
|
||||
return close (fd);
|
||||
else if (errno != EACCES)
|
||||
return -1;
|
||||
}
|
||||
#else
|
||||
return chown (file, uid, gid);
|
||||
#endif
|
||||
|
||||
return chown (file, uid, gid);
|
||||
}
|
||||
|
||||
78
lib/close-stream.c
Normal file
78
lib/close-stream.c
Normal file
@@ -0,0 +1,78 @@
|
||||
/* Close a stream, with nicer error checking than fclose's.
|
||||
|
||||
Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004, 2006 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#include "close-stream.h"
|
||||
|
||||
#include <errno.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
#include "__fpending.h"
|
||||
|
||||
#if USE_UNLOCKED_IO
|
||||
# include "unlocked-io.h"
|
||||
#endif
|
||||
|
||||
/* Close STREAM. Return 0 if successful, EOF (setting errno)
|
||||
otherwise. A failure might set errno to 0 if the error number
|
||||
cannot be determined.
|
||||
|
||||
If a program writes *anything* to STREAM, that program should close
|
||||
STREAM and make sure that it succeeds before exiting. Otherwise,
|
||||
suppose that you go to the extreme of checking the return status
|
||||
of every function that does an explicit write to STREAM. The last
|
||||
printf can succeed in writing to the internal stream buffer, and yet
|
||||
the fclose(STREAM) could still fail (due e.g., to a disk full error)
|
||||
when it tries to write out that buffered data. Thus, you would be
|
||||
left with an incomplete output file and the offending program would
|
||||
exit successfully. Even calling fflush is not always sufficient,
|
||||
since some file systems (NFS and CODA) buffer written/flushed data
|
||||
until an actual close call.
|
||||
|
||||
Besides, it's wasteful to check the return value from every call
|
||||
that writes to STREAM -- just let the internal stream state record
|
||||
the failure. That's what the ferror test is checking below. */
|
||||
|
||||
int
|
||||
close_stream (FILE *stream)
|
||||
{
|
||||
bool some_pending = (__fpending (stream) != 0);
|
||||
bool prev_fail = (ferror (stream) != 0);
|
||||
bool fclose_fail = (fclose (stream) != 0);
|
||||
|
||||
/* Return an error indication if there was a previous failure or if
|
||||
fclose failed, with one exception: ignore an fclose failure if
|
||||
there was no previous error, no data remains to be flushed, and
|
||||
fclose failed with EBADF. That can happen when a program like cp
|
||||
is invoked like this `cp a b >&-' (i.e., with standard output
|
||||
closed) and doesn't generate any output (hence no previous error
|
||||
and nothing to be flushed). */
|
||||
|
||||
if (prev_fail || (fclose_fail && (some_pending || errno != EBADF)))
|
||||
{
|
||||
if (! fclose_fail)
|
||||
errno = 0;
|
||||
return EOF;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
2
lib/close-stream.h
Normal file
2
lib/close-stream.h
Normal file
@@ -0,0 +1,2 @@
|
||||
#include <stdio.h>
|
||||
int close_stream (FILE *stream);
|
||||
@@ -1,7 +1,7 @@
|
||||
/* closeout.c - close standard output
|
||||
/* Close standard output, exiting with a diagnostic on error.
|
||||
|
||||
Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004 Free Software
|
||||
Foundation, Inc.
|
||||
Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004, 2006 Free
|
||||
Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -23,21 +23,17 @@
|
||||
|
||||
#include "closeout.h"
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdbool.h>
|
||||
#include <errno.h>
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "gettext.h"
|
||||
#define _(msgid) gettext (msgid)
|
||||
|
||||
#include "close-stream.h"
|
||||
#include "error.h"
|
||||
#include "exitfail.h"
|
||||
#include "quotearg.h"
|
||||
#include "__fpending.h"
|
||||
|
||||
#if USE_UNLOCKED_IO
|
||||
# include "unlocked-io.h"
|
||||
#endif
|
||||
|
||||
static const char *file_name;
|
||||
|
||||
@@ -49,22 +45,22 @@ close_stdout_set_file_name (const char *file)
|
||||
file_name = file;
|
||||
}
|
||||
|
||||
/* Close standard output, exiting with status 'exit_failure' on failure.
|
||||
If a program writes *anything* to stdout, that program should close
|
||||
stdout and make sure that it succeeds before exiting. Otherwise,
|
||||
suppose that you go to the extreme of checking the return status
|
||||
of every function that does an explicit write to stdout. The last
|
||||
printf can succeed in writing to the internal stream buffer, and yet
|
||||
the fclose(stdout) could still fail (due e.g., to a disk full error)
|
||||
when it tries to write out that buffered data. Thus, you would be
|
||||
left with an incomplete output file and the offending program would
|
||||
exit successfully. Even calling fflush is not always sufficient,
|
||||
since some file systems (NFS and CODA) buffer written/flushed data
|
||||
until an actual close call.
|
||||
/* Close standard output. On error, issue a diagnostic and _exit
|
||||
with status 'exit_failure'.
|
||||
|
||||
Besides, it's wasteful to check the return value from every call
|
||||
that writes to stdout -- just let the internal stream state record
|
||||
the failure. That's what the ferror test is checking below.
|
||||
Since close_stdout is commonly registered via 'atexit', POSIX
|
||||
and the C standard both say that it should not call 'exit',
|
||||
because the behavior is undefined if 'exit' is called more than
|
||||
once. So it calls '_exit' instead of 'exit'. If close_stdout
|
||||
is registered via atexit before other functions are registered,
|
||||
the other functions can act before this _exit is invoked.
|
||||
|
||||
Applications that use close_stdout should flush any streams
|
||||
other than stdout and stderr before exiting, since the call to
|
||||
_exit will bypass other buffer flushing. Applications should
|
||||
be flushing and closing other streams anyway, to check for I/O
|
||||
errors. Also, applications should not use tmpfile, since _exit
|
||||
can bypass the removal of these files.
|
||||
|
||||
It's important to detect such failures and exit nonzero because many
|
||||
tools (most notably `make' and other build-management systems) depend
|
||||
@@ -73,29 +69,15 @@ close_stdout_set_file_name (const char *file)
|
||||
void
|
||||
close_stdout (void)
|
||||
{
|
||||
bool prev_fail = ferror (stdout);
|
||||
bool none_pending = (0 == __fpending (stdout));
|
||||
bool fclose_fail = fclose (stdout);
|
||||
|
||||
if (prev_fail || fclose_fail)
|
||||
if (close_stream (stdout) != 0)
|
||||
{
|
||||
int e = fclose_fail ? errno : 0;
|
||||
char const *write_error;
|
||||
|
||||
/* If ferror returned zero, no data remains to be flushed, and we'd
|
||||
otherwise fail with EBADF due to a failed fclose, then assume that
|
||||
it's ok to ignore the fclose failure. That can happen when a
|
||||
program like cp is invoked like this `cp a b >&-' (i.e., with
|
||||
stdout closed) and doesn't generate any output (hence no previous
|
||||
error and nothing to be flushed). */
|
||||
if (e == EBADF && !prev_fail && none_pending)
|
||||
return;
|
||||
|
||||
write_error = _("write error");
|
||||
char const *write_error = _("write error");
|
||||
if (file_name)
|
||||
error (exit_failure, e, "%s: %s", quotearg_colon (file_name),
|
||||
error (0, errno, "%s: %s", quotearg_colon (file_name),
|
||||
write_error);
|
||||
else
|
||||
error (exit_failure, e, "%s", write_error);
|
||||
error (0, errno, "%s", write_error);
|
||||
|
||||
_exit (exit_failure);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#! /bin/sh
|
||||
# Output a system dependent table of character encoding aliases.
|
||||
#
|
||||
# Copyright (C) 2000-2004 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2000-2004, 2006 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
|
||||
@@ -30,21 +30,21 @@
|
||||
# The current list of GNU canonical charset names is as follows.
|
||||
#
|
||||
# name MIME? used by which systems
|
||||
# ASCII, ANSI_X3.4-1968 glibc solaris freebsd darwin
|
||||
# ISO-8859-1 Y glibc aix hpux irix osf solaris freebsd darwin
|
||||
# ISO-8859-2 Y glibc aix hpux irix osf solaris freebsd darwin
|
||||
# ASCII, ANSI_X3.4-1968 glibc solaris freebsd netbsd darwin
|
||||
# ISO-8859-1 Y glibc aix hpux irix osf solaris freebsd netbsd darwin
|
||||
# ISO-8859-2 Y glibc aix hpux irix osf solaris freebsd netbsd darwin
|
||||
# ISO-8859-3 Y glibc solaris
|
||||
# ISO-8859-4 Y osf solaris freebsd darwin
|
||||
# ISO-8859-5 Y glibc aix hpux irix osf solaris freebsd darwin
|
||||
# ISO-8859-4 Y osf solaris freebsd netbsd darwin
|
||||
# ISO-8859-5 Y glibc aix hpux irix osf solaris freebsd netbsd darwin
|
||||
# ISO-8859-6 Y glibc aix hpux solaris
|
||||
# ISO-8859-7 Y glibc aix hpux irix osf solaris darwin
|
||||
# ISO-8859-7 Y glibc aix hpux irix osf solaris netbsd darwin
|
||||
# ISO-8859-8 Y glibc aix hpux osf solaris
|
||||
# ISO-8859-9 Y glibc aix hpux irix osf solaris darwin
|
||||
# ISO-8859-13 glibc darwin
|
||||
# ISO-8859-13 glibc netbsd darwin
|
||||
# ISO-8859-14 glibc
|
||||
# ISO-8859-15 glibc aix osf solaris freebsd darwin
|
||||
# KOI8-R Y glibc solaris freebsd darwin
|
||||
# KOI8-U Y glibc freebsd darwin
|
||||
# KOI8-R Y glibc solaris freebsd netbsd darwin
|
||||
# KOI8-U Y glibc freebsd netbsd darwin
|
||||
# KOI8-T glibc
|
||||
# CP437 dos
|
||||
# CP775 dos
|
||||
@@ -57,7 +57,7 @@
|
||||
# CP862 dos
|
||||
# CP864 dos
|
||||
# CP865 dos
|
||||
# CP866 freebsd darwin dos
|
||||
# CP866 freebsd netbsd darwin dos
|
||||
# CP869 dos
|
||||
# CP874 woe32 dos
|
||||
# CP922 aix
|
||||
@@ -70,22 +70,22 @@
|
||||
# CP1125 dos
|
||||
# CP1129 aix
|
||||
# CP1250 woe32
|
||||
# CP1251 glibc solaris darwin woe32
|
||||
# CP1251 glibc solaris netbsd darwin woe32
|
||||
# CP1252 aix woe32
|
||||
# CP1253 woe32
|
||||
# CP1254 woe32
|
||||
# CP1255 glibc woe32
|
||||
# CP1256 woe32
|
||||
# CP1257 woe32
|
||||
# GB2312 Y glibc aix hpux irix solaris freebsd darwin
|
||||
# EUC-JP Y glibc aix hpux irix osf solaris freebsd darwin
|
||||
# EUC-KR Y glibc aix hpux irix osf solaris freebsd darwin
|
||||
# EUC-TW glibc aix hpux irix osf solaris
|
||||
# BIG5 Y glibc aix hpux osf solaris freebsd darwin
|
||||
# GB2312 Y glibc aix hpux irix solaris freebsd netbsd darwin
|
||||
# EUC-JP Y glibc aix hpux irix osf solaris freebsd netbsd darwin
|
||||
# EUC-KR Y glibc aix hpux irix osf solaris freebsd netbsd darwin
|
||||
# EUC-TW glibc aix hpux irix osf solaris netbsd
|
||||
# BIG5 Y glibc aix hpux osf solaris freebsd netbsd darwin
|
||||
# BIG5-HKSCS glibc solaris
|
||||
# GBK glibc aix osf solaris woe32 dos
|
||||
# GB18030 glibc solaris
|
||||
# SHIFT_JIS Y hpux osf solaris freebsd darwin
|
||||
# GB18030 glibc solaris netbsd
|
||||
# SHIFT_JIS Y hpux osf solaris freebsd netbsd darwin
|
||||
# JOHAB glibc solaris woe32
|
||||
# TIS-620 glibc aix hpux osf solaris
|
||||
# VISCII Y glibc
|
||||
@@ -99,7 +99,7 @@
|
||||
# HP-KANA8 hpux
|
||||
# DEC-KANJI osf
|
||||
# DEC-HANYU osf
|
||||
# UTF-8 Y glibc aix hpux osf solaris darwin
|
||||
# UTF-8 Y glibc aix hpux osf solaris netbsd darwin
|
||||
#
|
||||
# Note: Names which are not marked as being a MIME name should not be used in
|
||||
# Internet protocols for information interchange (mail, news, etc.).
|
||||
@@ -387,6 +387,8 @@ case "$os" in
|
||||
echo "ISO8859-2 ISO-8859-2"
|
||||
echo "ISO8859-4 ISO-8859-4"
|
||||
echo "ISO8859-5 ISO-8859-5"
|
||||
echo "ISO8859-7 ISO-8859-7"
|
||||
echo "ISO8859-13 ISO-8859-13"
|
||||
echo "ISO8859-15 ISO-8859-15"
|
||||
echo "eucCN GB2312"
|
||||
echo "eucJP EUC-JP"
|
||||
@@ -479,7 +481,7 @@ case "$os" in
|
||||
echo "# If you find that the encoding given for your language and"
|
||||
echo "# country is not the one your DOS machine actually uses, just"
|
||||
echo "# correct it in this file, and send a mail to"
|
||||
echo "# Juan Manuel Guerrero <st001906@hrz1.hrz.tu-darmstadt.de>"
|
||||
echo "# Juan Manuel Guerrero <juan.guerrero@gmx.de>"
|
||||
echo "# and Bruno Haible <bruno@clisp.org>."
|
||||
echo "#"
|
||||
echo "C ASCII"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* help detect directory cycles efficiently
|
||||
|
||||
Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||
Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -33,10 +33,6 @@
|
||||
|
||||
#include "cycle-check.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
|
||||
|
||||
/* Return true if I is a power of 2, or is zero. */
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* help detect directory cycles efficiently
|
||||
|
||||
Copyright (C) 2003, 2004 Free Software Foundation, Inc.
|
||||
Copyright (C) 2003, 2004, 2006 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
|
||||
@@ -30,6 +30,7 @@
|
||||
# endif
|
||||
# include <stdbool.h>
|
||||
# include "dev-ino.h"
|
||||
# include "same-inode.h"
|
||||
|
||||
struct cycle_check_state
|
||||
{
|
||||
@@ -41,4 +42,18 @@ struct cycle_check_state
|
||||
void cycle_check_init (struct cycle_check_state *state);
|
||||
bool cycle_check (struct cycle_check_state *state, struct stat const *sb);
|
||||
|
||||
# define CYCLE_CHECK_REFLECT_CHDIR_UP(State, SB_dir, SB_subdir) \
|
||||
do \
|
||||
{ \
|
||||
/* You must call cycle_check at least once before using this macro. */ \
|
||||
if ((State)->chdir_counter == 0) \
|
||||
abort (); \
|
||||
if (SAME_INODE ((State)->dev_ino, SB_subdir)) \
|
||||
{ \
|
||||
(State)->dev_ino.st_dev = (SB_dir).st_dev; \
|
||||
(State)->dev_ino.st_ino = (SB_dir).st_ino; \
|
||||
} \
|
||||
} \
|
||||
while (0)
|
||||
|
||||
#endif
|
||||
|
||||
159
lib/dirchownmod.c
Normal file
159
lib/dirchownmod.c
Normal file
@@ -0,0 +1,159 @@
|
||||
/* Change the ownership and mode bits of a directory.
|
||||
|
||||
Copyright (C) 2006 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
|
||||
|
||||
/* Written by Paul Eggert. */
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#include "dirchownmod.h"
|
||||
|
||||
#include <errno.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "lchmod.h"
|
||||
#include "stat-macros.h"
|
||||
|
||||
#ifndef O_DIRECTORY
|
||||
# define O_DIRECTORY 0
|
||||
#endif
|
||||
#ifndef O_NOFOLLOW
|
||||
# define O_NOFOLLOW 0
|
||||
#endif
|
||||
|
||||
/* Change the ownership and mode bits of the directory DIR.
|
||||
|
||||
If MKDIR_MODE is not (mode_t) -1, mkdir (DIR, MKDIR_MODE) has just
|
||||
been executed successfully with umask zero, so DIR should be a
|
||||
directory (not a symbolic link).
|
||||
|
||||
First, set the file's owner to OWNER and group to GROUP, but leave
|
||||
the owner alone if OWNER is (uid_t) -1, and similarly for GROUP.
|
||||
|
||||
Then, set the file's mode bits to MODE, except preserve any of the
|
||||
bits that correspond to zero bits in MODE_BITS. In other words,
|
||||
MODE_BITS is a mask that specifies which of the file's mode bits
|
||||
should be set or cleared. MODE should be a subset of MODE_BITS,
|
||||
which in turn should be a subset of CHMOD_MODE_BITS.
|
||||
|
||||
This implementation assumes the current umask is zero.
|
||||
|
||||
Return 0 if successful, -1 (setting errno) otherwise. Unsuccessful
|
||||
calls may do the chown but not the chmod. */
|
||||
|
||||
int
|
||||
dirchownmod (char const *dir, mode_t mkdir_mode,
|
||||
uid_t owner, gid_t group,
|
||||
mode_t mode, mode_t mode_bits)
|
||||
{
|
||||
struct stat st;
|
||||
int result;
|
||||
|
||||
/* Manipulate DIR via a file descriptor if possible, to avoid some races. */
|
||||
int open_flags = O_RDONLY | O_DIRECTORY | O_NOCTTY | O_NOFOLLOW | O_NONBLOCK;
|
||||
int fd = open (dir, open_flags);
|
||||
|
||||
/* Fail if the directory is unreadable, the directory previously
|
||||
existed or was created without read permission. Otherwise, get
|
||||
the file's status. */
|
||||
if (0 <= fd)
|
||||
result = fstat (fd, &st);
|
||||
else if (errno != EACCES
|
||||
|| (mkdir_mode != (mode_t) -1 && mkdir_mode & S_IRUSR))
|
||||
return fd;
|
||||
else
|
||||
result = stat (dir, &st);
|
||||
|
||||
if (result == 0)
|
||||
{
|
||||
mode_t dir_mode = st.st_mode;
|
||||
|
||||
/* Check whether DIR is a directory. If FD is nonnegative, this
|
||||
check avoids changing the ownership and mode bits of the
|
||||
wrong file in many cases. This doesn't fix all the race
|
||||
conditions, but it is better than nothing. */
|
||||
if (! S_ISDIR (dir_mode))
|
||||
{
|
||||
errno = ENOTDIR;
|
||||
result = -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* If at least one of the S_IXUGO bits are set, chown might
|
||||
clear the S_ISUID and S_SGID bits. Keep track of any
|
||||
file mode bits whose values are indeterminate due to this
|
||||
issue. */
|
||||
mode_t indeterminate = 0;
|
||||
|
||||
/* On some systems, chown clears S_ISUID and S_ISGID, so do
|
||||
chown before chmod. On older System V hosts, ordinary
|
||||
users can give their files away via chown; don't worry
|
||||
about that here, since users shouldn't do that. */
|
||||
|
||||
if ((owner != (uid_t) -1 && owner != st.st_uid)
|
||||
|| (group != (gid_t) -1 && group != st.st_gid))
|
||||
{
|
||||
result = (0 <= fd
|
||||
? fchown (fd, owner, group)
|
||||
: mkdir_mode != (mode_t) -1
|
||||
? lchown (dir, owner, group)
|
||||
: chown (dir, owner, group));
|
||||
|
||||
/* Either the user cares about an indeterminate bit and
|
||||
it'll be set properly by chmod below, or the user
|
||||
doesn't care and it's OK to use the bit's pre-chown
|
||||
value. So there's no need to re-stat DIR here. */
|
||||
|
||||
if (result == 0 && (dir_mode & S_IXUGO))
|
||||
indeterminate = dir_mode & (S_ISUID | S_ISGID);
|
||||
}
|
||||
|
||||
/* If the file mode bits might not be right, use chmod to
|
||||
change them. Don't change bits the user doesn't care
|
||||
about. */
|
||||
if (result == 0 && (((dir_mode ^ mode) | indeterminate) & mode_bits))
|
||||
{
|
||||
mode_t chmod_mode =
|
||||
mode | (dir_mode & CHMOD_MODE_BITS & ~mode_bits);
|
||||
result = (0 <= fd
|
||||
? fchmod (fd, chmod_mode)
|
||||
: mkdir_mode != (mode_t) -1
|
||||
? lchmod (dir, chmod_mode)
|
||||
: chmod (dir, chmod_mode));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (0 <= fd)
|
||||
{
|
||||
if (result == 0)
|
||||
result = close (fd);
|
||||
else
|
||||
{
|
||||
int e = errno;
|
||||
close (fd);
|
||||
errno = e;
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
2
lib/dirchownmod.h
Normal file
2
lib/dirchownmod.h
Normal file
@@ -0,0 +1,2 @@
|
||||
#include <sys/types.h>
|
||||
int dirchownmod (char const *, mode_t, uid_t, gid_t, mode_t, mode_t);
|
||||
17
lib/dirfd.h
17
lib/dirfd.h
@@ -1,5 +1,5 @@
|
||||
/* Declare dirfd, if necessary.
|
||||
Copyright (C) 2001, 2002 Free Software Foundation, Inc.
|
||||
Copyright (C) 2001, 2002, 2006 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,20 +19,7 @@
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
#if HAVE_DIRENT_H
|
||||
# include <dirent.h>
|
||||
#else /* not HAVE_DIRENT_H */
|
||||
# define dirent direct
|
||||
# if HAVE_SYS_NDIR_H
|
||||
# include <sys/ndir.h>
|
||||
# endif /* HAVE_SYS_NDIR_H */
|
||||
# if HAVE_SYS_DIR_H
|
||||
# include <sys/dir.h>
|
||||
# endif /* HAVE_SYS_DIR_H */
|
||||
# if HAVE_NDIR_H
|
||||
# include <ndir.h>
|
||||
# endif /* HAVE_NDIR_H */
|
||||
#endif /* HAVE_DIRENT_H */
|
||||
#include <dirent.h>
|
||||
|
||||
#ifndef HAVE_DECL_DIRFD
|
||||
"this configure-time declaration test was not run"
|
||||
|
||||
114
lib/dirname.c
114
lib/dirname.c
@@ -1,6 +1,6 @@
|
||||
/* dirname.c -- return all but the last element in a file name
|
||||
|
||||
Copyright (C) 1990, 1998, 2000, 2001, 2003, 2004, 2005 Free Software
|
||||
Copyright (C) 1990, 1998, 2000, 2001, 2003, 2004, 2005, 2006 Free Software
|
||||
Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
@@ -26,96 +26,62 @@
|
||||
#include <string.h>
|
||||
#include "xalloc.h"
|
||||
|
||||
/* Return the length of `dirname (FILE)', or zero if FILE is
|
||||
in the working directory. Works properly even if
|
||||
there are trailing slashes (by effectively ignoring them). */
|
||||
/* Return the length of the prefix of FILE that will be used by
|
||||
dir_name. If FILE is in the working directory, this returns zero
|
||||
even though `dir_name (FILE)' will return ".". Works properly even
|
||||
if there are trailing slashes (by effectively ignoring them). */
|
||||
|
||||
size_t
|
||||
dir_len (char const *file)
|
||||
{
|
||||
size_t prefix_length = FILE_SYSTEM_PREFIX_LEN (file);
|
||||
size_t length;
|
||||
|
||||
/* Strip the basename and any redundant slashes before it. */
|
||||
for (length = base_name (file) - file; prefix_length < length; length--)
|
||||
if (! ISSLASH (file[length - 1]))
|
||||
return length;
|
||||
/* Advance prefix_length beyond important leading slashes. */
|
||||
prefix_length += (prefix_length != 0
|
||||
? (FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE
|
||||
&& ISSLASH (file[prefix_length]))
|
||||
: (ISSLASH (file[0])
|
||||
? ((DOUBLE_SLASH_IS_DISTINCT_ROOT
|
||||
&& ISSLASH (file[1]) && ! ISSLASH (file[2])
|
||||
? 2 : 1))
|
||||
: 0));
|
||||
|
||||
/* But don't strip the only slash from "/". */
|
||||
return prefix_length + ISSLASH (file[prefix_length]);
|
||||
/* Strip the basename and any redundant slashes before it. */
|
||||
for (length = last_component (file) - file;
|
||||
prefix_length < length; length--)
|
||||
if (! ISSLASH (file[length - 1]))
|
||||
break;
|
||||
return length;
|
||||
}
|
||||
|
||||
/* Return the leading directories part of FILE,
|
||||
allocated with xmalloc.
|
||||
Works properly even if there are trailing slashes
|
||||
(by effectively ignoring them). */
|
||||
|
||||
/* In general, we can't use the builtin `dirname' function if available,
|
||||
since it has different meanings in different environments.
|
||||
In some environments the builtin `dirname' modifies its argument.
|
||||
|
||||
Return the leading directories part of FILE, allocated with xmalloc.
|
||||
Works properly even if there are trailing slashes (by effectively
|
||||
ignoring them). Unlike POSIX dirname(), FILE cannot be NULL.
|
||||
|
||||
If lstat (FILE) would succeed, then { chdir (dir_name (FILE));
|
||||
lstat (base_name (FILE)); } will access the same file. Likewise,
|
||||
if the sequence { chdir (dir_name (FILE));
|
||||
rename (base_name (FILE), "foo"); } succeeds, you have renamed FILE
|
||||
to "foo" in the same directory FILE was in. */
|
||||
|
||||
char *
|
||||
dir_name (char const *file)
|
||||
{
|
||||
size_t length = dir_len (file);
|
||||
bool append_dot = (length == FILE_SYSTEM_PREFIX_LEN (file));
|
||||
bool append_dot = (length == 0
|
||||
|| (FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE
|
||||
&& length == FILE_SYSTEM_PREFIX_LEN (file)
|
||||
&& file[2] != '\0' && ! ISSLASH (file[2])));
|
||||
char *dir = xmalloc (length + append_dot + 1);
|
||||
memcpy (dir, file, length);
|
||||
if (append_dot)
|
||||
dir[length++] = '.';
|
||||
dir[length] = 0;
|
||||
dir[length] = '\0';
|
||||
return dir;
|
||||
}
|
||||
|
||||
#ifdef TEST_DIRNAME
|
||||
/*
|
||||
|
||||
Run the test like this (expect no output):
|
||||
gcc -DHAVE_CONFIG_H -DTEST_DIRNAME -I.. -O -Wall \
|
||||
basename.c dirname.c xmalloc.c error.c
|
||||
sed -n '/^BEGIN-DATA$/,/^END-DATA$/p' dirname.c|grep -v DATA|./a.out
|
||||
|
||||
If it's been built on a DOS or Windows platforms, run another test like
|
||||
this (again, expect no output):
|
||||
sed -n '/^BEGIN-DOS-DATA$/,/^END-DOS-DATA$/p' dirname.c|grep -v DATA|./a.out
|
||||
|
||||
BEGIN-DATA
|
||||
foo//// .
|
||||
bar/foo//// bar
|
||||
foo/ .
|
||||
/ /
|
||||
. .
|
||||
a .
|
||||
END-DATA
|
||||
|
||||
BEGIN-DOS-DATA
|
||||
c:///// c:/
|
||||
c:/ c:/
|
||||
c:/. c:/
|
||||
c:foo c:.
|
||||
c:foo/bar c:foo
|
||||
END-DOS-DATA
|
||||
|
||||
*/
|
||||
|
||||
# define MAX_BUFF_LEN 1024
|
||||
# include <stdio.h>
|
||||
|
||||
char *program_name;
|
||||
|
||||
int
|
||||
main (int argc, char *argv[])
|
||||
{
|
||||
char buff[MAX_BUFF_LEN + 1];
|
||||
|
||||
program_name = argv[0];
|
||||
|
||||
buff[MAX_BUFF_LEN] = 0;
|
||||
while (fgets (buff, MAX_BUFF_LEN, stdin) && buff[0])
|
||||
{
|
||||
char file[MAX_BUFF_LEN];
|
||||
char expected_result[MAX_BUFF_LEN];
|
||||
char const *result;
|
||||
sscanf (buff, "%s %s", file, expected_result);
|
||||
result = dir_name (file);
|
||||
if (strcmp (result, expected_result))
|
||||
printf ("%s: got %s, expected %s\n", file, result, expected_result);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* Take file names apart into directory and base names.
|
||||
|
||||
Copyright (C) 1998, 2001, 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||
Copyright (C) 1998, 2001, 2003-2006 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
|
||||
@@ -31,16 +31,39 @@
|
||||
# endif
|
||||
|
||||
# ifndef FILE_SYSTEM_PREFIX_LEN
|
||||
# define FILE_SYSTEM_PREFIX_LEN(File_name) 0
|
||||
# if FILE_SYSTEM_ACCEPTS_DRIVE_LETTER_PREFIX
|
||||
/* This internal macro assumes ASCII, but all hosts that support drive
|
||||
letters use ASCII. */
|
||||
# define _IS_DRIVE_LETTER(c) (((unsigned int) (c) | ('a' - 'A')) - 'a' \
|
||||
<= 'z' - 'a')
|
||||
# define FILE_SYSTEM_PREFIX_LEN(Filename) \
|
||||
(_IS_DRIVE_LETTER ((Filename)[0]) && (Filename)[1] == ':' ? 2 : 0)
|
||||
# else
|
||||
# define FILE_SYSTEM_PREFIX_LEN(Filename) 0
|
||||
# endif
|
||||
# endif
|
||||
|
||||
# define IS_ABSOLUTE_FILE_NAME(F) ISSLASH ((F)[FILE_SYSTEM_PREFIX_LEN (F)])
|
||||
# ifndef FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE
|
||||
# define FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE 0
|
||||
# endif
|
||||
|
||||
# ifndef DOUBLE_SLASH_IS_DISTINCT_ROOT
|
||||
# define DOUBLE_SLASH_IS_DISTINCT_ROOT 1
|
||||
# endif
|
||||
|
||||
# if FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE
|
||||
# define IS_ABSOLUTE_FILE_NAME(F) ISSLASH ((F)[FILE_SYSTEM_PREFIX_LEN (F)])
|
||||
# else
|
||||
# define IS_ABSOLUTE_FILE_NAME(F) \
|
||||
(ISSLASH ((F)[0]) || 0 < FILE_SYSTEM_PREFIX_LEN (F))
|
||||
# endif
|
||||
# define IS_RELATIVE_FILE_NAME(F) (! IS_ABSOLUTE_FILE_NAME (F))
|
||||
|
||||
char *base_name (char const *file);
|
||||
char *dir_name (char const *file);
|
||||
size_t base_len (char const *file);
|
||||
size_t dir_len (char const *file);
|
||||
char *last_component (char const *file);
|
||||
|
||||
bool strip_trailing_slashes (char *file);
|
||||
|
||||
|
||||
111
lib/error.c
111
lib/error.c
@@ -1,5 +1,5 @@
|
||||
/* Error handler for noninteractive utilities
|
||||
Copyright (C) 1990-1998, 2000-2003, 2004 Free Software Foundation, Inc.
|
||||
Copyright (C) 1990-1998, 2000-2005, 2006 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
@@ -34,6 +34,9 @@
|
||||
#endif
|
||||
|
||||
#ifdef _LIBC
|
||||
# include <libintl.h>
|
||||
# include <stdbool.h>
|
||||
# include <stdint.h>
|
||||
# include <wchar.h>
|
||||
# define mbsrtowcs __mbsrtowcs
|
||||
#endif
|
||||
@@ -59,6 +62,7 @@ unsigned int error_message_count;
|
||||
|
||||
# define program_name program_invocation_name
|
||||
# include <errno.h>
|
||||
# include <limits.h>
|
||||
# include <libio/libioP.h>
|
||||
|
||||
/* In GNU libc we want do not want to use the common name `error' directly.
|
||||
@@ -122,14 +126,10 @@ print_errno_message (int errnum)
|
||||
#endif
|
||||
|
||||
#if _LIBC
|
||||
if (_IO_fwide (stderr, 0) > 0)
|
||||
{
|
||||
__fwprintf (stderr, L": %s", s);
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
__fxprintf (NULL, ": %s", s);
|
||||
#else
|
||||
fprintf (stderr, ": %s", s);
|
||||
#endif
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -140,26 +140,65 @@ error_tail (int status, int errnum, const char *message, va_list args)
|
||||
{
|
||||
# define ALLOCA_LIMIT 2000
|
||||
size_t len = strlen (message) + 1;
|
||||
const wchar_t *wmessage = L"out of memory";
|
||||
wchar_t *wbuf = (len < ALLOCA_LIMIT
|
||||
? alloca (len * sizeof *wbuf)
|
||||
: len <= SIZE_MAX / sizeof *wbuf
|
||||
? malloc (len * sizeof *wbuf)
|
||||
: NULL);
|
||||
wchar_t *wmessage = NULL;
|
||||
mbstate_t st;
|
||||
size_t res;
|
||||
const char *tmp;
|
||||
bool use_malloc = false;
|
||||
|
||||
if (wbuf)
|
||||
while (1)
|
||||
{
|
||||
size_t res;
|
||||
mbstate_t st;
|
||||
const char *tmp = message;
|
||||
if (__libc_use_alloca (len * sizeof (wchar_t)))
|
||||
wmessage = (wchar_t *) alloca (len * sizeof (wchar_t));
|
||||
else
|
||||
{
|
||||
if (!use_malloc)
|
||||
wmessage = NULL;
|
||||
|
||||
wchar_t *p = (wchar_t *) realloc (wmessage,
|
||||
len * sizeof (wchar_t));
|
||||
if (p == NULL)
|
||||
{
|
||||
free (wmessage);
|
||||
fputws_unlocked (L"out of memory\n", stderr);
|
||||
return;
|
||||
}
|
||||
wmessage = p;
|
||||
use_malloc = true;
|
||||
}
|
||||
|
||||
memset (&st, '\0', sizeof (st));
|
||||
res = mbsrtowcs (wbuf, &tmp, len, &st);
|
||||
wmessage = res == (size_t) -1 ? L"???" : wbuf;
|
||||
tmp = message;
|
||||
|
||||
res = mbsrtowcs (wmessage, &tmp, len, &st);
|
||||
if (res != len)
|
||||
break;
|
||||
|
||||
if (__builtin_expect (len >= SIZE_MAX / 2, 0))
|
||||
{
|
||||
/* This really should not happen if everything is fine. */
|
||||
res = (size_t) -1;
|
||||
break;
|
||||
}
|
||||
|
||||
len *= 2;
|
||||
}
|
||||
|
||||
if (res == (size_t) -1)
|
||||
{
|
||||
/* The string cannot be converted. */
|
||||
if (use_malloc)
|
||||
{
|
||||
free (wmessage);
|
||||
use_malloc = false;
|
||||
}
|
||||
wmessage = (wchar_t *) L"???";
|
||||
}
|
||||
|
||||
__vfwprintf (stderr, wmessage, args);
|
||||
if (! (len < ALLOCA_LIMIT))
|
||||
free (wbuf);
|
||||
|
||||
if (use_malloc)
|
||||
free (wmessage);
|
||||
}
|
||||
else
|
||||
#endif
|
||||
@@ -170,11 +209,10 @@ error_tail (int status, int errnum, const char *message, va_list args)
|
||||
if (errnum)
|
||||
print_errno_message (errnum);
|
||||
#if _LIBC
|
||||
if (_IO_fwide (stderr, 0) > 0)
|
||||
putwc (L'\n', stderr);
|
||||
else
|
||||
__fxprintf (NULL, "\n");
|
||||
#else
|
||||
putc ('\n', stderr);
|
||||
#endif
|
||||
putc ('\n', stderr);
|
||||
fflush (stderr);
|
||||
if (status)
|
||||
exit (status);
|
||||
@@ -207,11 +245,10 @@ error (int status, int errnum, const char *message, ...)
|
||||
else
|
||||
{
|
||||
#if _LIBC
|
||||
if (_IO_fwide (stderr, 0) > 0)
|
||||
__fwprintf (stderr, L"%s: ", program_name);
|
||||
else
|
||||
__fxprintf (NULL, "%s: ", program_name);
|
||||
#else
|
||||
fprintf (stderr, "%s: ", program_name);
|
||||
#endif
|
||||
fprintf (stderr, "%s: ", program_name);
|
||||
}
|
||||
|
||||
va_start (args, message);
|
||||
@@ -267,21 +304,19 @@ error_at_line (int status, int errnum, const char *file_name,
|
||||
else
|
||||
{
|
||||
#if _LIBC
|
||||
if (_IO_fwide (stderr, 0) > 0)
|
||||
__fwprintf (stderr, L"%s: ", program_name);
|
||||
else
|
||||
__fxprintf (NULL, "%s:", program_name);
|
||||
#else
|
||||
fprintf (stderr, "%s:", program_name);
|
||||
#endif
|
||||
fprintf (stderr, "%s:", program_name);
|
||||
}
|
||||
|
||||
if (file_name != NULL)
|
||||
{
|
||||
#if _LIBC
|
||||
if (_IO_fwide (stderr, 0) > 0)
|
||||
__fwprintf (stderr, L"%s:%d: ", file_name, line_number);
|
||||
else
|
||||
__fxprintf (NULL, "%s:%d: ", file_name, line_number);
|
||||
#else
|
||||
fprintf (stderr, "%s:%d: ", file_name, line_number);
|
||||
#endif
|
||||
fprintf (stderr, "%s:%d: ", file_name, line_number);
|
||||
}
|
||||
|
||||
va_start (args, message);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* Declaration for error-reporting function
|
||||
Copyright (C) 1995, 1996, 1997, 2003 Free Software Foundation, Inc.
|
||||
Copyright (C) 1995, 1996, 1997, 2003, 2006 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
@@ -21,7 +21,7 @@
|
||||
|
||||
#ifndef __attribute__
|
||||
/* This feature is available in gcc versions 2.5 and later. */
|
||||
# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5)
|
||||
# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__
|
||||
# define __attribute__(Spec) /* empty */
|
||||
# endif
|
||||
/* The __-protected variants of `format' and `printf' attributes
|
||||
|
||||
145
lib/euidaccess-stat.c
Normal file
145
lib/euidaccess-stat.c
Normal file
@@ -0,0 +1,145 @@
|
||||
/* euidaccess-stat -- check if effective user id can access lstat'd file
|
||||
This function is probably useful only for choosing whether to issue
|
||||
a prompt in an implementation of POSIX-specified rm.
|
||||
|
||||
Copyright (C) 2005 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
|
||||
|
||||
/* Adapted for use in GNU remove.c by Jim Meyering. */
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#include "euidaccess-stat.h"
|
||||
|
||||
#include <unistd.h>
|
||||
|
||||
#ifndef F_OK
|
||||
# define F_OK 0
|
||||
# define X_OK 1
|
||||
# define W_OK 2
|
||||
# define R_OK 4
|
||||
#endif
|
||||
|
||||
#include "group-member.h"
|
||||
#include "stat-macros.h"
|
||||
|
||||
/* Return true if the current user has permission of type MODE
|
||||
on the file from which stat buffer *ST was obtained, ignoring
|
||||
ACLs, attributes, `read-only'ness, etc...
|
||||
Otherwise, return false.
|
||||
|
||||
Like the reentrant version of euidaccess, but starting with
|
||||
a stat buffer rather than a file name. Hence, this function
|
||||
never calls access or accessx, and doesn't take into account
|
||||
whether the file has ACLs or other attributes, or resides on
|
||||
a read-only file system. */
|
||||
|
||||
bool
|
||||
euidaccess_stat (struct stat const *st, int mode)
|
||||
{
|
||||
uid_t euid;
|
||||
unsigned int granted;
|
||||
|
||||
/* Convert the mode to traditional form, clearing any bogus bits. */
|
||||
if (R_OK == 4 && W_OK == 2 && X_OK == 1 && F_OK == 0)
|
||||
mode &= 7;
|
||||
else
|
||||
mode = ((mode & R_OK ? 4 : 0)
|
||||
+ (mode & W_OK ? 2 : 0)
|
||||
+ (mode & X_OK ? 1 : 0));
|
||||
|
||||
if (mode == 0)
|
||||
return true; /* The file exists. */
|
||||
|
||||
euid = geteuid ();
|
||||
|
||||
/* The super-user can read and write any file, and execute any file
|
||||
that anyone can execute. */
|
||||
if (euid == 0 && ((mode & X_OK) == 0
|
||||
|| (st->st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))))
|
||||
return true;
|
||||
|
||||
/* Convert the file's permission bits to traditional form. */
|
||||
if ( S_IRUSR == (4 << 6)
|
||||
&& S_IWUSR == (2 << 6)
|
||||
&& S_IXUSR == (1 << 6)
|
||||
&& S_IRGRP == (4 << 3)
|
||||
&& S_IWGRP == (2 << 3)
|
||||
&& S_IXGRP == (1 << 3)
|
||||
&& S_IROTH == (4 << 0)
|
||||
&& S_IWOTH == (2 << 0)
|
||||
&& S_IXOTH == (1 << 0))
|
||||
granted = st->st_mode;
|
||||
else
|
||||
granted = ( (st->st_mode & S_IRUSR ? 4 << 6 : 0)
|
||||
+ (st->st_mode & S_IWUSR ? 2 << 6 : 0)
|
||||
+ (st->st_mode & S_IXUSR ? 1 << 6 : 0)
|
||||
+ (st->st_mode & S_IRGRP ? 4 << 3 : 0)
|
||||
+ (st->st_mode & S_IWGRP ? 2 << 3 : 0)
|
||||
+ (st->st_mode & S_IXGRP ? 1 << 3 : 0)
|
||||
+ (st->st_mode & S_IROTH ? 4 << 0 : 0)
|
||||
+ (st->st_mode & S_IWOTH ? 2 << 0 : 0)
|
||||
+ (st->st_mode & S_IXOTH ? 1 << 0 : 0));
|
||||
|
||||
if (euid == st->st_uid)
|
||||
granted >>= 6;
|
||||
else
|
||||
{
|
||||
gid_t egid = getegid ();
|
||||
if (egid == st->st_gid || group_member (st->st_gid))
|
||||
granted >>= 3;
|
||||
}
|
||||
|
||||
if ((mode & ~granted) == 0)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
#ifdef TEST
|
||||
# include <errno.h>
|
||||
# include <stdio.h>
|
||||
# include <stdlib.h>
|
||||
|
||||
# include "error.h"
|
||||
# define _(msg) msg
|
||||
|
||||
char *program_name;
|
||||
|
||||
int
|
||||
main (int argc, char **argv)
|
||||
{
|
||||
char *file;
|
||||
int mode;
|
||||
bool ok;
|
||||
struct stat st;
|
||||
|
||||
program_name = argv[0];
|
||||
if (argc < 3)
|
||||
abort ();
|
||||
file = argv[1];
|
||||
mode = atoi (argv[2]);
|
||||
if (lstat (file, &st) != 0)
|
||||
error (EXIT_FAILURE, errno, _("cannot stat %s"), file);
|
||||
|
||||
ok = euidaccess_stat (&st, mode);
|
||||
printf ("%s: %s\n", file, ok ? "y" : "n");
|
||||
exit (0);
|
||||
}
|
||||
#endif
|
||||
5
lib/euidaccess-stat.h
Normal file
5
lib/euidaccess-stat.h
Normal file
@@ -0,0 +1,5 @@
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
bool euidaccess_stat (struct stat const *st, int mode);
|
||||
@@ -1,7 +1,7 @@
|
||||
/* exclude.c -- exclude file names
|
||||
|
||||
Copyright (C) 1992, 1993, 1994, 1997, 1999, 2000, 2001, 2002, 2003,
|
||||
2004, 2005 Free Software Foundation, Inc.
|
||||
2004, 2005, 2006 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -37,26 +37,12 @@
|
||||
#include "fnmatch.h"
|
||||
#include "strcase.h"
|
||||
#include "xalloc.h"
|
||||
#include "verify.h"
|
||||
|
||||
#if USE_UNLOCKED_IO
|
||||
# include "unlocked-io.h"
|
||||
#endif
|
||||
|
||||
#if STDC_HEADERS || (! defined isascii && ! HAVE_ISASCII)
|
||||
# define IN_CTYPE_DOMAIN(c) true
|
||||
#else
|
||||
# define IN_CTYPE_DOMAIN(c) isascii (c)
|
||||
#endif
|
||||
|
||||
static inline bool
|
||||
is_space (unsigned char c)
|
||||
{
|
||||
return IN_CTYPE_DOMAIN (c) && isspace (c);
|
||||
}
|
||||
|
||||
/* 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
|
||||
@@ -65,11 +51,10 @@ is_space (unsigned char c)
|
||||
# define FNM_LEADING_DIR 0
|
||||
#endif
|
||||
|
||||
verify (EXCLUDE_macros_do_not_collide_with_FNM_macros,
|
||||
(((EXCLUDE_ANCHORED | EXCLUDE_INCLUDE | EXCLUDE_WILDCARDS)
|
||||
& (FNM_PATHNAME | FNM_NOESCAPE | FNM_PERIOD | FNM_LEADING_DIR
|
||||
| FNM_CASEFOLD))
|
||||
== 0));
|
||||
verify (((EXCLUDE_ANCHORED | EXCLUDE_INCLUDE | EXCLUDE_WILDCARDS)
|
||||
& (FNM_PATHNAME | FNM_NOESCAPE | FNM_PERIOD | FNM_LEADING_DIR
|
||||
| FNM_CASEFOLD))
|
||||
== 0);
|
||||
|
||||
/* An exclude pattern-options pair. The options are fnmatch options
|
||||
ORed with EXCLUDE_* options. */
|
||||
@@ -132,6 +117,24 @@ fnmatch_no_wildcards (char const *pattern, char const *f, int options)
|
||||
}
|
||||
}
|
||||
|
||||
bool
|
||||
exclude_fnmatch (char const *pattern, char const *f, int options)
|
||||
{
|
||||
int (*matcher) (char const *, char const *, int) =
|
||||
(options & EXCLUDE_WILDCARDS
|
||||
? fnmatch
|
||||
: fnmatch_no_wildcards);
|
||||
bool matched = ((*matcher) (pattern, f, options) == 0);
|
||||
char const *p;
|
||||
|
||||
if (! (options & EXCLUDE_ANCHORED))
|
||||
for (p = f; *p && ! matched; p++)
|
||||
if (*p == '/' && p[1] != '/')
|
||||
matched = ((*matcher) (pattern, p + 1, options) == 0);
|
||||
|
||||
return matched;
|
||||
}
|
||||
|
||||
/* Return true if EX excludes F. */
|
||||
|
||||
bool
|
||||
@@ -157,21 +160,7 @@ excluded_file_name (struct exclude const *ex, char const *f)
|
||||
char const *pattern = exclude[i].pattern;
|
||||
int options = exclude[i].options;
|
||||
if (excluded == !! (options & EXCLUDE_INCLUDE))
|
||||
{
|
||||
int (*matcher) (char const *, char const *, int) =
|
||||
(options & EXCLUDE_WILDCARDS
|
||||
? fnmatch
|
||||
: fnmatch_no_wildcards);
|
||||
bool matched = ((*matcher) (pattern, f, options) == 0);
|
||||
char const *p;
|
||||
|
||||
if (! (options & EXCLUDE_ANCHORED))
|
||||
for (p = f; *p && ! matched; p++)
|
||||
if (*p == '/' && p[1] != '/')
|
||||
matched = ((*matcher) (pattern, p + 1, options) == 0);
|
||||
|
||||
excluded ^= matched;
|
||||
}
|
||||
excluded ^= exclude_fnmatch (pattern, f, options);
|
||||
}
|
||||
|
||||
return excluded;
|
||||
@@ -243,12 +232,12 @@ add_exclude_file (void (*add_func) (struct exclude *, char const *, int),
|
||||
{
|
||||
char *pattern_end = p;
|
||||
|
||||
if (is_space (line_end))
|
||||
if (isspace ((unsigned char) line_end))
|
||||
{
|
||||
for (; ; pattern_end--)
|
||||
if (pattern_end == pattern)
|
||||
goto next_pattern;
|
||||
else if (! is_space (pattern_end[-1]))
|
||||
else if (! isspace ((unsigned char) pattern_end[-1]))
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* exclude.h -- declarations for excluding file names
|
||||
|
||||
Copyright (C) 1992, 1993, 1994, 1997, 1999, 2001, 2002, 2003, 2005
|
||||
Free Software Foundation, Inc.
|
||||
Copyright (C) 1992, 1993, 1994, 1997, 1999, 2001, 2002, 2003, 2005,
|
||||
2006 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
|
||||
@@ -41,3 +41,4 @@ 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_file_name (struct exclude const *, char const *);
|
||||
bool exclude_fnmatch (char const *pattern, char const *f, int options);
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
/* Get exit() declaration. */
|
||||
#include <stdlib.h>
|
||||
|
||||
/* Some systems do not define EXIT_*, even with STDC_HEADERS. */
|
||||
/* Some systems do not define EXIT_*, despite otherwise supporting C89. */
|
||||
#ifndef EXIT_SUCCESS
|
||||
# define EXIT_SUCCESS 0
|
||||
#endif
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* Failure exit status
|
||||
|
||||
Copyright (C) 2002, 2003 Free Software Foundation, Inc.
|
||||
Copyright (C) 2002, 2003, 2005 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
|
||||
|
||||
104
lib/fchmodat.c
Normal file
104
lib/fchmodat.c
Normal file
@@ -0,0 +1,104 @@
|
||||
/* Change the protections of file relative to an open directory.
|
||||
Copyright (C) 2006 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
|
||||
|
||||
/* written by Jim Meyering */
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#include "openat.h"
|
||||
|
||||
#include <errno.h>
|
||||
|
||||
#include "dirname.h" /* solely for definition of IS_ABSOLUTE_FILE_NAME */
|
||||
#include "save-cwd.h"
|
||||
|
||||
#include "gettext.h"
|
||||
#define _(msgid) gettext (msgid)
|
||||
|
||||
#include "openat-priv.h"
|
||||
|
||||
/* Some systems don't have ENOSYS. */
|
||||
#ifndef ENOSYS
|
||||
# ifdef ENOTSUP
|
||||
# define ENOSYS ENOTSUP
|
||||
# else
|
||||
/* Some systems don't have ENOTSUP either. */
|
||||
# define ENOSYS EINVAL
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_LCHMOD
|
||||
# undef lchmod
|
||||
# define lchmod(f,m) (errno = ENOSYS, -1)
|
||||
#endif
|
||||
|
||||
/* Solaris 10 has no function like this.
|
||||
Invoke chmod or lchmod on file, FILE, using mode MODE, in the directory
|
||||
open on descriptor FD. If possible, do it without changing the
|
||||
working directory. Otherwise, resort to using save_cwd/fchdir,
|
||||
then mkdir/restore_cwd. If either the save_cwd or the restore_cwd
|
||||
fails, then give a diagnostic and exit nonzero.
|
||||
Note that an attempt to use a FLAG value of AT_SYMLINK_NOFOLLOW
|
||||
on a system without lchmod support causes this function to fail. */
|
||||
int
|
||||
fchmodat (int fd, char const *file, mode_t mode, int flag)
|
||||
{
|
||||
struct saved_cwd saved_cwd;
|
||||
int saved_errno;
|
||||
int err;
|
||||
|
||||
if (fd == AT_FDCWD || IS_ABSOLUTE_FILE_NAME (file))
|
||||
return (flag == AT_SYMLINK_NOFOLLOW
|
||||
? lchmod (file, mode)
|
||||
: chmod (file, mode));
|
||||
|
||||
{
|
||||
char *proc_file;
|
||||
BUILD_PROC_NAME (proc_file, fd, file);
|
||||
err = (flag == AT_SYMLINK_NOFOLLOW
|
||||
? lchmod (proc_file, mode)
|
||||
: chmod (proc_file, mode));
|
||||
/* If the syscall succeeds, or if it fails with an unexpected
|
||||
errno value, then return right away. Otherwise, fall through
|
||||
and resort to using save_cwd/restore_cwd. */
|
||||
if (0 <= err || ! EXPECTED_ERRNO (errno))
|
||||
return err;
|
||||
}
|
||||
|
||||
if (save_cwd (&saved_cwd) != 0)
|
||||
openat_save_fail (errno);
|
||||
|
||||
err = fchdir (fd);
|
||||
saved_errno = errno;
|
||||
|
||||
if (! err)
|
||||
{
|
||||
err = (flag == AT_SYMLINK_NOFOLLOW
|
||||
? lchmod (file, mode)
|
||||
: chmod (file, mode));
|
||||
saved_errno = errno;
|
||||
|
||||
if (restore_cwd (&saved_cwd) != 0)
|
||||
openat_restore_fail (errno);
|
||||
}
|
||||
|
||||
free_cwd (&saved_cwd);
|
||||
errno = saved_errno;
|
||||
return err;
|
||||
}
|
||||
@@ -18,6 +18,10 @@
|
||||
|
||||
/* Written by Paul Eggert. */
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#include "fd-reopen.h"
|
||||
|
||||
#include <errno.h>
|
||||
|
||||
121
lib/fdopendir-glibc.c
Normal file
121
lib/fdopendir-glibc.c
Normal file
@@ -0,0 +1,121 @@
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <string.h>
|
||||
#include <stdbool.h>
|
||||
#include <dirent.h>
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
#include <sys/stat.h>
|
||||
|
||||
#if _LIBC
|
||||
# include <dirstream.h>
|
||||
# include <not-cancel.h>
|
||||
|
||||
#else
|
||||
|
||||
# if __GNUC__ < 3
|
||||
# define __builtin_expect(expr, expected_val) expr
|
||||
# endif
|
||||
|
||||
# include "openat.h"
|
||||
# define stat64 stat
|
||||
# define dirent64 dirent
|
||||
# define __fxstat64(V, fd, sb) fstat(fd, sb)
|
||||
# define __fcntl fcntl
|
||||
# define __set_errno(Val) do { errno = (Val); } while (0)
|
||||
# define __libc_lock_init(NAME) ((NAME) = 0, 0)
|
||||
# define close_not_cancel_no_status(fd) close (fd)
|
||||
# ifdef __i386__
|
||||
# define internal_function __attribute ((regparm (3), stdcall))
|
||||
# else
|
||||
# define internal_function
|
||||
# endif
|
||||
|
||||
struct __dirstream
|
||||
{
|
||||
int fd; /* File descriptor. */
|
||||
|
||||
char *data; /* Directory block. */
|
||||
size_t allocation; /* Space allocated for the block. */
|
||||
size_t size; /* Total valid data in the block. */
|
||||
size_t offset; /* Current offset into the block. */
|
||||
|
||||
off_t filepos; /* Position of next entry to read. */
|
||||
int lock;
|
||||
};
|
||||
#endif
|
||||
|
||||
#undef _STATBUF_ST_BLKSIZE
|
||||
|
||||
static DIR *
|
||||
internal_function
|
||||
__alloc_dir (int fd, bool close_fd)
|
||||
{
|
||||
if (__builtin_expect (__fcntl (fd, F_SETFD, FD_CLOEXEC), 0) < 0)
|
||||
goto lose;
|
||||
|
||||
size_t allocation;
|
||||
#ifdef _STATBUF_ST_BLKSIZE
|
||||
if (__builtin_expect ((size_t) statp->st_blksize >= sizeof (struct dirent64),
|
||||
1))
|
||||
allocation = statp->st_blksize;
|
||||
else
|
||||
#endif
|
||||
allocation = (BUFSIZ < sizeof (struct dirent64)
|
||||
? sizeof (struct dirent64) : BUFSIZ);
|
||||
|
||||
const int pad = -sizeof (DIR) % __alignof__ (struct dirent64);
|
||||
|
||||
DIR *dirp = (DIR *) malloc (sizeof (DIR) + allocation + pad);
|
||||
if (dirp == NULL)
|
||||
lose:
|
||||
{
|
||||
if (close_fd)
|
||||
{
|
||||
int save_errno = errno;
|
||||
close_not_cancel_no_status (fd);
|
||||
__set_errno (save_errno);
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
memset (dirp, '\0', sizeof (DIR));
|
||||
dirp->data = (char *) (dirp + 1) + pad;
|
||||
dirp->allocation = allocation;
|
||||
dirp->fd = fd;
|
||||
|
||||
__libc_lock_init (dirp->lock);
|
||||
|
||||
return dirp;
|
||||
}
|
||||
|
||||
DIR *
|
||||
fdopendir (int fd)
|
||||
{
|
||||
#if 0
|
||||
struct stat64 statbuf;
|
||||
|
||||
if (__builtin_expect (__fxstat64 (_STAT_VER, fd, &statbuf), 0) < 0)
|
||||
return NULL;
|
||||
if (__builtin_expect (! S_ISDIR (statbuf.st_mode), 0))
|
||||
{
|
||||
__set_errno (ENOTDIR);
|
||||
return NULL;
|
||||
}
|
||||
/* Make sure the descriptor allows for reading. */
|
||||
int flags = __fcntl (fd, F_GETFL);
|
||||
if (__builtin_expect (flags == -1, 0))
|
||||
return NULL;
|
||||
if (__builtin_expect ((flags & O_ACCMODE) == O_WRONLY, 0))
|
||||
{
|
||||
__set_errno (EINVAL);
|
||||
return NULL;
|
||||
}
|
||||
#endif
|
||||
|
||||
return __alloc_dir (fd, false);
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
/* Convert file size to number of blocks on System V-like machines.
|
||||
|
||||
Copyright (C) 1990, 1997, 1998, 1999, 2004, 2005 Free Software
|
||||
Copyright (C) 1990, 1997, 1998, 1999, 2004, 2005, 2006 Free Software
|
||||
Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
@@ -35,7 +35,7 @@
|
||||
|
||||
# ifndef NINDIR
|
||||
|
||||
# if defined (__DJGPP__)
|
||||
# if defined __DJGPP__
|
||||
typedef long daddr_t; /* for disk address */
|
||||
# endif
|
||||
|
||||
|
||||
179
lib/filemode.c
179
lib/filemode.c
@@ -1,5 +1,7 @@
|
||||
/* filemode.c -- make a string describing file modes
|
||||
Copyright (C) 1985, 1990, 1993, 1998-2000, 2004 Free Software Foundation, Inc.
|
||||
|
||||
Copyright (C) 1985, 1990, 1993, 1998-2000, 2004, 2006 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,129 +21,120 @@
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
|
||||
#include "filemode.h"
|
||||
|
||||
#include "stat-macros.h"
|
||||
|
||||
/* The following is for Cray DMF (Data Migration Facility), which is a
|
||||
HSM file system. A migrated file has a `st_dm_mode' that is
|
||||
different from the normal `st_mode', so any tests for migrated
|
||||
files should use the former. */
|
||||
#if HAVE_ST_DM_MODE
|
||||
# define IS_MIGRATED_FILE(statp) \
|
||||
(S_ISOFD (statp->st_dm_mode) || S_ISOFL (statp->st_dm_mode))
|
||||
#else
|
||||
# define IS_MIGRATED_FILE(statp) 0
|
||||
#endif
|
||||
|
||||
/* Set the 's' and 't' flags in file attributes string CHARS,
|
||||
according to the file mode BITS. */
|
||||
|
||||
static void
|
||||
setst (mode_t bits, char *chars)
|
||||
{
|
||||
if (bits & S_ISUID)
|
||||
{
|
||||
if (chars[3] != 'x')
|
||||
/* Set-uid, but not executable by owner. */
|
||||
chars[3] = 'S';
|
||||
else
|
||||
chars[3] = 's';
|
||||
}
|
||||
if (bits & S_ISGID)
|
||||
{
|
||||
if (chars[6] != 'x')
|
||||
/* Set-gid, but not executable by group. */
|
||||
chars[6] = 'S';
|
||||
else
|
||||
chars[6] = 's';
|
||||
}
|
||||
if (bits & S_ISVTX)
|
||||
{
|
||||
if (chars[9] != 'x')
|
||||
/* Sticky, but not executable by others. */
|
||||
chars[9] = 'T';
|
||||
else
|
||||
chars[9] = 't';
|
||||
}
|
||||
}
|
||||
#if ! HAVE_DECL_STRMODE
|
||||
|
||||
/* Return a character indicating the type of file described by
|
||||
file mode BITS:
|
||||
'd' for directories
|
||||
'D' for doors
|
||||
'b' for block special files
|
||||
'c' for character special files
|
||||
'n' for network special files
|
||||
'm' for multiplexor files
|
||||
'M' for an off-line (regular) file
|
||||
'l' for symbolic links
|
||||
's' for sockets
|
||||
'p' for fifos
|
||||
'C' for contigous data files
|
||||
'-' for regular files
|
||||
'?' for any other file type. */
|
||||
'-' regular file
|
||||
'b' block special file
|
||||
'c' character special file
|
||||
'C' high performance ("contiguous data") file
|
||||
'd' directory
|
||||
'D' door
|
||||
'l' symbolic link
|
||||
'm' multiplexed file (7th edition Unix; obsolete)
|
||||
'n' network special file (HP-UX)
|
||||
'p' fifo (named pipe)
|
||||
'P' port
|
||||
's' socket
|
||||
'w' whiteout (4.4BSD)
|
||||
'?' some other file type */
|
||||
|
||||
static char
|
||||
ftypelet (mode_t bits)
|
||||
{
|
||||
/* These are the most common, so test for them first. */
|
||||
if (S_ISREG (bits))
|
||||
return '-';
|
||||
if (S_ISDIR (bits))
|
||||
return 'd';
|
||||
|
||||
/* Other letters standardized by POSIX 1003.1-2004. */
|
||||
if (S_ISBLK (bits))
|
||||
return 'b';
|
||||
if (S_ISCHR (bits))
|
||||
return 'c';
|
||||
if (S_ISDIR (bits))
|
||||
return 'd';
|
||||
if (S_ISREG (bits))
|
||||
return '-';
|
||||
if (S_ISFIFO (bits))
|
||||
return 'p';
|
||||
if (S_ISLNK (bits))
|
||||
return 'l';
|
||||
if (S_ISFIFO (bits))
|
||||
return 'p';
|
||||
|
||||
/* Other file types (though not letters) standardized by POSIX. */
|
||||
if (S_ISSOCK (bits))
|
||||
return 's';
|
||||
if (S_ISMPC (bits))
|
||||
|
||||
/* Nonstandard file types. */
|
||||
if (S_ISCTG (bits))
|
||||
return 'C';
|
||||
if (S_ISDOOR (bits))
|
||||
return 'D';
|
||||
if (S_ISMPB (bits) || S_ISMPC (bits))
|
||||
return 'm';
|
||||
if (S_ISNWK (bits))
|
||||
return 'n';
|
||||
if (S_ISDOOR (bits))
|
||||
return 'D';
|
||||
if (S_ISCTG (bits))
|
||||
return 'C';
|
||||
if (S_ISPORT (bits))
|
||||
return 'P';
|
||||
if (S_ISWHT (bits))
|
||||
return 'w';
|
||||
|
||||
/* The following two tests are for Cray DMF (Data Migration
|
||||
Facility), which is a HSM file system. A migrated file has a
|
||||
`st_dm_mode' that is different from the normal `st_mode', so any
|
||||
tests for migrated files should use the former. */
|
||||
|
||||
if (S_ISOFD (bits))
|
||||
/* off line, with data */
|
||||
return 'M';
|
||||
/* off line, with no data */
|
||||
if (S_ISOFL (bits))
|
||||
return 'M';
|
||||
return '?';
|
||||
}
|
||||
|
||||
/* Like filemodestring, but only the relevant part of the `struct stat'
|
||||
is given as an argument. */
|
||||
/* Like filemodestring, but rely only on MODE. */
|
||||
|
||||
void
|
||||
mode_string (mode_t mode, char *str)
|
||||
strmode (mode_t mode, char *str)
|
||||
{
|
||||
str[0] = ftypelet (mode);
|
||||
str[1] = mode & S_IRUSR ? 'r' : '-';
|
||||
str[2] = mode & S_IWUSR ? 'w' : '-';
|
||||
str[3] = mode & S_IXUSR ? 'x' : '-';
|
||||
str[3] = (mode & S_ISUID
|
||||
? (mode & S_IXUSR ? 's' : 'S')
|
||||
: (mode & S_IXUSR ? 'x' : '-'));
|
||||
str[4] = mode & S_IRGRP ? 'r' : '-';
|
||||
str[5] = mode & S_IWGRP ? 'w' : '-';
|
||||
str[6] = mode & S_IXGRP ? 'x' : '-';
|
||||
str[6] = (mode & S_ISGID
|
||||
? (mode & S_IXGRP ? 's' : 'S')
|
||||
: (mode & S_IXGRP ? 'x' : '-'));
|
||||
str[7] = mode & S_IROTH ? 'r' : '-';
|
||||
str[8] = mode & S_IWOTH ? 'w' : '-';
|
||||
str[9] = mode & S_IXOTH ? 'x' : '-';
|
||||
setst (mode, str);
|
||||
str[9] = (mode & S_ISVTX
|
||||
? (mode & S_IXOTH ? 't' : 'T')
|
||||
: (mode & S_IXOTH ? 'x' : '-'));
|
||||
str[10] = ' ';
|
||||
str[11] = '\0';
|
||||
}
|
||||
|
||||
#endif /* ! HAVE_DECL_STRMODE */
|
||||
|
||||
/* filemodestring - fill in string STR with an ls-style ASCII
|
||||
representation of the st_mode field of file stats block STATP.
|
||||
10 characters are stored in STR; no terminating null is added.
|
||||
12 characters are stored in STR.
|
||||
The characters stored in STR are:
|
||||
|
||||
0 File type. 'd' for directory, 'c' for character
|
||||
special, 'b' for block special, 'm' for multiplex,
|
||||
'l' for symbolic link, 's' for socket, 'p' for fifo,
|
||||
'-' for regular, '?' for any other file type
|
||||
0 File type, as in ftypelet above, except that other letters are used
|
||||
for files whose type cannot be determined solely from st_mode:
|
||||
|
||||
'F' semaphore
|
||||
'M' migrated file (Cray DMF)
|
||||
'Q' message queue
|
||||
'S' shared memory object
|
||||
'T' typed memory object
|
||||
|
||||
1 'r' if the owner may read, '-' otherwise.
|
||||
|
||||
@@ -167,10 +160,26 @@ mode_string (mode_t mode, char *str)
|
||||
9 'x' if any user may execute, 't' if the file is "sticky"
|
||||
(will be retained in swap space after execution), '-'
|
||||
otherwise.
|
||||
'T' if the file is sticky but not executable. */
|
||||
'T' if the file is sticky but not executable.
|
||||
|
||||
10 ' ' for compatibility with 4.4BSD strmode,
|
||||
since this interface does not support ACLs.
|
||||
|
||||
11 '\0'. */
|
||||
|
||||
void
|
||||
filemodestring (struct stat *statp, char *str)
|
||||
filemodestring (struct stat const *statp, char *str)
|
||||
{
|
||||
mode_string (statp->st_mode, str);
|
||||
strmode (statp->st_mode, str);
|
||||
|
||||
if (S_TYPEISSEM (statp))
|
||||
str[0] = 'F';
|
||||
else if (IS_MIGRATED_FILE (statp))
|
||||
str[0] = 'M';
|
||||
else if (S_TYPEISMQ (statp))
|
||||
str[0] = 'Q';
|
||||
else if (S_TYPEISSHM (statp))
|
||||
str[0] = 'S';
|
||||
else if (S_TYPEISTMO (statp))
|
||||
str[0] = 'T';
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* Make a string describing file modes.
|
||||
|
||||
Copyright (C) 1998, 1999, 2003 Free Software Foundation, Inc.
|
||||
Copyright (C) 1998, 1999, 2003, 2006 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,7 +19,14 @@
|
||||
#ifndef FILEMODE_H_
|
||||
|
||||
# include <sys/types.h>
|
||||
# include <sys/stat.h>
|
||||
|
||||
void mode_string (mode_t mode, char *str);
|
||||
# if HAVE_DECL_STRMODE
|
||||
# include <string.h>
|
||||
# else
|
||||
void strmode (mode_t mode, char *str);
|
||||
# endif
|
||||
|
||||
void filemodestring (struct stat const *statp, char *str);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* Concatenate two arbitrary file names.
|
||||
|
||||
Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free
|
||||
Software Foundation, Inc.
|
||||
Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
|
||||
2005, 2006 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,7 +64,7 @@ longest_relative_suffix (char const *f)
|
||||
char *
|
||||
file_name_concat (char const *dir, char const *abase, char **base_in_result)
|
||||
{
|
||||
char const *dirbase = base_name (dir);
|
||||
char const *dirbase = last_component (dir);
|
||||
size_t dirbaselen = base_len (dirbase);
|
||||
size_t dirlen = dirbase - dir + dirbaselen;
|
||||
size_t needs_separator = (dirbaselen && ! ISSLASH (dirbase[dirbaselen - 1]));
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 1991,1992,1993,1996,1997,1998,1999,2000,2001,2002,2003,2004,2005
|
||||
/* Copyright (C) 1991,1992,1993,1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,2006
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
@@ -86,34 +86,10 @@ extern int fnmatch (const char *pattern, const char *string, int flags);
|
||||
#if defined _LIBC || !defined __GNU_LIBRARY__ || !HAVE_FNMATCH_GNU
|
||||
|
||||
|
||||
# if defined STDC_HEADERS || !defined isascii
|
||||
# define ISASCII(c) 1
|
||||
# else
|
||||
# define ISASCII(c) isascii(c)
|
||||
# if ! (defined isblank || HAVE_DECL_ISBLANK)
|
||||
# define isblank(c) ((c) == ' ' || (c) == '\t')
|
||||
# endif
|
||||
|
||||
# ifdef isblank
|
||||
# define ISBLANK(c) (ISASCII (c) && isblank (c))
|
||||
# else
|
||||
# define ISBLANK(c) ((c) == ' ' || (c) == '\t')
|
||||
# endif
|
||||
# ifdef isgraph
|
||||
# define ISGRAPH(c) (ISASCII (c) && isgraph (c))
|
||||
# else
|
||||
# define ISGRAPH(c) (ISASCII (c) && isprint (c) && !isspace (c))
|
||||
# endif
|
||||
|
||||
# define ISPRINT(c) (ISASCII (c) && isprint (c))
|
||||
# define ISDIGIT(c) (ISASCII (c) && isdigit (c))
|
||||
# define ISALNUM(c) (ISASCII (c) && isalnum (c))
|
||||
# define ISALPHA(c) (ISASCII (c) && isalpha (c))
|
||||
# define ISCNTRL(c) (ISASCII (c) && iscntrl (c))
|
||||
# define ISLOWER(c) (ISASCII (c) && islower (c))
|
||||
# define ISPUNCT(c) (ISASCII (c) && ispunct (c))
|
||||
# define ISSPACE(c) (ISASCII (c) && isspace (c))
|
||||
# define ISUPPER(c) (ISASCII (c) && isupper (c))
|
||||
# define ISXDIGIT(c) (ISASCII (c) && isxdigit (c))
|
||||
|
||||
# define STREQ(s1, s2) ((strcmp (s1, s2) == 0))
|
||||
|
||||
# if defined _LIBC || WIDE_CHAR_SUPPORT
|
||||
@@ -169,18 +145,14 @@ static int posixly_correct;
|
||||
# endif
|
||||
|
||||
/* Note that this evaluates C many times. */
|
||||
# ifdef _LIBC
|
||||
# define FOLD(c) ((flags & FNM_CASEFOLD) ? tolower (c) : (c))
|
||||
# else
|
||||
# define FOLD(c) ((flags & FNM_CASEFOLD) && ISUPPER (c) ? tolower (c) : (c))
|
||||
# endif
|
||||
# define FOLD(c) ((flags & FNM_CASEFOLD) ? tolower (c) : (c))
|
||||
# define CHAR char
|
||||
# define UCHAR unsigned char
|
||||
# define INT int
|
||||
# define FCT internal_fnmatch
|
||||
# define EXT ext_match
|
||||
# define END end_pattern
|
||||
# define L(CS) CS
|
||||
# define L_(CS) CS
|
||||
# ifdef _LIBC
|
||||
# define BTOWC(C) __btowc (C)
|
||||
# else
|
||||
@@ -210,7 +182,7 @@ static int posixly_correct;
|
||||
# define FCT internal_fnwmatch
|
||||
# define EXT ext_wmatch
|
||||
# define END end_wpattern
|
||||
# define L(CS) L##CS
|
||||
# define L_(CS) L##CS
|
||||
# define BTOWC(C) (C)
|
||||
# ifdef _LIBC
|
||||
# define STRLEN(S) __wcslen (S)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 1991,1992,1993,1996,1997,1998,1999,2000,2001,2002,2003,2004,2005
|
||||
/* Copyright (C) 1991,1992,1993,1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,2006
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
@@ -39,14 +39,14 @@ FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||||
# endif
|
||||
#endif
|
||||
|
||||
while ((c = *p++) != L('\0'))
|
||||
while ((c = *p++) != L_('\0'))
|
||||
{
|
||||
bool new_no_leading_period = false;
|
||||
c = FOLD (c);
|
||||
|
||||
switch (c)
|
||||
{
|
||||
case L('?'):
|
||||
case L_('?'):
|
||||
if (__builtin_expect (flags & FNM_EXTMATCH, 0) && *p == '(')
|
||||
{
|
||||
int res;
|
||||
@@ -59,17 +59,17 @@ FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||||
|
||||
if (n == string_end)
|
||||
return FNM_NOMATCH;
|
||||
else if (*n == L('/') && (flags & FNM_FILE_NAME))
|
||||
else if (*n == L_('/') && (flags & FNM_FILE_NAME))
|
||||
return FNM_NOMATCH;
|
||||
else if (*n == L('.') && no_leading_period)
|
||||
else if (*n == L_('.') && no_leading_period)
|
||||
return FNM_NOMATCH;
|
||||
break;
|
||||
|
||||
case L('\\'):
|
||||
case L_('\\'):
|
||||
if (!(flags & FNM_NOESCAPE))
|
||||
{
|
||||
c = *p++;
|
||||
if (c == L('\0'))
|
||||
if (c == L_('\0'))
|
||||
/* Trailing \ loses. */
|
||||
return FNM_NOMATCH;
|
||||
c = FOLD (c);
|
||||
@@ -78,7 +78,7 @@ FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||||
return FNM_NOMATCH;
|
||||
break;
|
||||
|
||||
case L('*'):
|
||||
case L_('*'):
|
||||
if (__builtin_expect (flags & FNM_EXTMATCH, 0) && *p == '(')
|
||||
{
|
||||
int res;
|
||||
@@ -89,12 +89,12 @@ FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||||
return res;
|
||||
}
|
||||
|
||||
if (n != string_end && *n == L('.') && no_leading_period)
|
||||
if (n != string_end && *n == L_('.') && no_leading_period)
|
||||
return FNM_NOMATCH;
|
||||
|
||||
for (c = *p++; c == L('?') || c == L('*'); c = *p++)
|
||||
for (c = *p++; c == L_('?') || c == L_('*'); c = *p++)
|
||||
{
|
||||
if (*p == L('(') && (flags & FNM_EXTMATCH) != 0)
|
||||
if (*p == L_('(') && (flags & FNM_EXTMATCH) != 0)
|
||||
{
|
||||
const CHAR *endp = END (p);
|
||||
if (endp != p)
|
||||
@@ -105,13 +105,13 @@ FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||||
}
|
||||
}
|
||||
|
||||
if (c == L('?'))
|
||||
if (c == L_('?'))
|
||||
{
|
||||
/* A ? needs to match one character. */
|
||||
if (n == string_end)
|
||||
/* There isn't another character; no match. */
|
||||
return FNM_NOMATCH;
|
||||
else if (*n == L('/')
|
||||
else if (*n == L_('/')
|
||||
&& __builtin_expect (flags & FNM_FILE_NAME, 0))
|
||||
/* A slash does not match a wildcard under
|
||||
FNM_FILE_NAME. */
|
||||
@@ -124,7 +124,7 @@ FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||||
}
|
||||
}
|
||||
|
||||
if (c == L('\0'))
|
||||
if (c == L_('\0'))
|
||||
/* The wildcard(s) is/are the last element of the pattern.
|
||||
If the name is a file name and contains another slash
|
||||
this means it cannot match, unless the FNM_LEADING_DIR
|
||||
@@ -138,7 +138,7 @@ FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||||
result = 0;
|
||||
else
|
||||
{
|
||||
if (MEMCHR (n, L('/'), string_end - n) == NULL)
|
||||
if (MEMCHR (n, L_('/'), string_end - n) == NULL)
|
||||
result = 0;
|
||||
}
|
||||
}
|
||||
@@ -149,15 +149,15 @@ FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||||
{
|
||||
const CHAR *endp;
|
||||
|
||||
endp = MEMCHR (n, (flags & FNM_FILE_NAME) ? L('/') : L('\0'),
|
||||
endp = MEMCHR (n, (flags & FNM_FILE_NAME) ? L_('/') : L_('\0'),
|
||||
string_end - n);
|
||||
if (endp == NULL)
|
||||
endp = string_end;
|
||||
|
||||
if (c == L('[')
|
||||
if (c == L_('[')
|
||||
|| (__builtin_expect (flags & FNM_EXTMATCH, 0) != 0
|
||||
&& (c == L('@') || c == L('+') || c == L('!'))
|
||||
&& *p == L('(')))
|
||||
&& (c == L_('@') || c == L_('+') || c == L_('!'))
|
||||
&& *p == L_('(')))
|
||||
{
|
||||
int flags2 = ((flags & FNM_FILE_NAME)
|
||||
? flags : (flags & ~FNM_PERIOD));
|
||||
@@ -168,11 +168,11 @@ FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||||
== 0)
|
||||
return 0;
|
||||
}
|
||||
else if (c == L('/') && (flags & FNM_FILE_NAME))
|
||||
else if (c == L_('/') && (flags & FNM_FILE_NAME))
|
||||
{
|
||||
while (n < string_end && *n != L('/'))
|
||||
while (n < string_end && *n != L_('/'))
|
||||
++n;
|
||||
if (n < string_end && *n == L('/')
|
||||
if (n < string_end && *n == L_('/')
|
||||
&& (FCT (p, n + 1, string_end, flags & FNM_PERIOD, flags)
|
||||
== 0))
|
||||
return 0;
|
||||
@@ -183,7 +183,7 @@ FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||||
? flags : (flags & ~FNM_PERIOD));
|
||||
int no_leading_period2 = no_leading_period;
|
||||
|
||||
if (c == L('\\') && !(flags & FNM_NOESCAPE))
|
||||
if (c == L_('\\') && !(flags & FNM_NOESCAPE))
|
||||
c = *p;
|
||||
c = FOLD (c);
|
||||
for (--p; n < endp; ++n, no_leading_period2 = false)
|
||||
@@ -197,7 +197,7 @@ FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||||
/* If we come here no match is possible with the wildcard. */
|
||||
return FNM_NOMATCH;
|
||||
|
||||
case L('['):
|
||||
case L_('['):
|
||||
{
|
||||
/* Nonzero if the sense of the character class is inverted. */
|
||||
register bool not;
|
||||
@@ -210,14 +210,14 @@ FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||||
if (n == string_end)
|
||||
return FNM_NOMATCH;
|
||||
|
||||
if (*n == L('.') && no_leading_period)
|
||||
if (*n == L_('.') && no_leading_period)
|
||||
return FNM_NOMATCH;
|
||||
|
||||
if (*n == L('/') && (flags & FNM_FILE_NAME))
|
||||
if (*n == L_('/') && (flags & FNM_FILE_NAME))
|
||||
/* `/' cannot be matched. */
|
||||
return FNM_NOMATCH;
|
||||
|
||||
not = (*p == L('!') || (posixly_correct < 0 && *p == L('^')));
|
||||
not = (*p == L_('!') || (posixly_correct < 0 && *p == L_('^')));
|
||||
if (not)
|
||||
++p;
|
||||
|
||||
@@ -226,9 +226,9 @@ FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||||
c = *p++;
|
||||
for (;;)
|
||||
{
|
||||
if (!(flags & FNM_NOESCAPE) && c == L('\\'))
|
||||
if (!(flags & FNM_NOESCAPE) && c == L_('\\'))
|
||||
{
|
||||
if (*p == L('\0'))
|
||||
if (*p == L_('\0'))
|
||||
return FNM_NOMATCH;
|
||||
c = FOLD ((UCHAR) *p);
|
||||
++p;
|
||||
@@ -236,7 +236,7 @@ FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||||
if (c == fn)
|
||||
goto matched;
|
||||
}
|
||||
else if (c == L('[') && *p == L(':'))
|
||||
else if (c == L_('[') && *p == L_(':'))
|
||||
{
|
||||
/* Leave room for the null. */
|
||||
CHAR str[CHAR_CLASS_MAX_LENGTH + 1];
|
||||
@@ -254,22 +254,22 @@ FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||||
return FNM_NOMATCH;
|
||||
|
||||
c = *++p;
|
||||
if (c == L(':') && p[1] == L(']'))
|
||||
if (c == L_(':') && p[1] == L_(']'))
|
||||
{
|
||||
p += 2;
|
||||
break;
|
||||
}
|
||||
if (c < L('a') || c >= L('z'))
|
||||
if (c < L_('a') || c >= L_('z'))
|
||||
{
|
||||
/* This cannot possibly be a character class name.
|
||||
Match it as a normal range. */
|
||||
p = startp;
|
||||
c = L('[');
|
||||
c = L_('[');
|
||||
goto normal_bracket;
|
||||
}
|
||||
str[c1++] = c;
|
||||
}
|
||||
str[c1] = L('\0');
|
||||
str[c1] = L_('\0');
|
||||
|
||||
#if defined _LIBC || WIDE_CHAR_SUPPORT
|
||||
wt = IS_CHAR_CLASS (str);
|
||||
@@ -288,24 +288,24 @@ FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||||
goto matched;
|
||||
# endif
|
||||
#else
|
||||
if ((STREQ (str, L("alnum")) && ISALNUM ((UCHAR) *n))
|
||||
|| (STREQ (str, L("alpha")) && ISALPHA ((UCHAR) *n))
|
||||
|| (STREQ (str, L("blank")) && ISBLANK ((UCHAR) *n))
|
||||
|| (STREQ (str, L("cntrl")) && ISCNTRL ((UCHAR) *n))
|
||||
|| (STREQ (str, L("digit")) && ISDIGIT ((UCHAR) *n))
|
||||
|| (STREQ (str, L("graph")) && ISGRAPH ((UCHAR) *n))
|
||||
|| (STREQ (str, L("lower")) && ISLOWER ((UCHAR) *n))
|
||||
|| (STREQ (str, L("print")) && ISPRINT ((UCHAR) *n))
|
||||
|| (STREQ (str, L("punct")) && ISPUNCT ((UCHAR) *n))
|
||||
|| (STREQ (str, L("space")) && ISSPACE ((UCHAR) *n))
|
||||
|| (STREQ (str, L("upper")) && ISUPPER ((UCHAR) *n))
|
||||
|| (STREQ (str, L("xdigit")) && ISXDIGIT ((UCHAR) *n)))
|
||||
if ((STREQ (str, L_("alnum")) && isalnum ((UCHAR) *n))
|
||||
|| (STREQ (str, L_("alpha")) && isalpha ((UCHAR) *n))
|
||||
|| (STREQ (str, L_("blank")) && isblank ((UCHAR) *n))
|
||||
|| (STREQ (str, L_("cntrl")) && iscntrl ((UCHAR) *n))
|
||||
|| (STREQ (str, L_("digit")) && isdigit ((UCHAR) *n))
|
||||
|| (STREQ (str, L_("graph")) && isgraph ((UCHAR) *n))
|
||||
|| (STREQ (str, L_("lower")) && islower ((UCHAR) *n))
|
||||
|| (STREQ (str, L_("print")) && isprint ((UCHAR) *n))
|
||||
|| (STREQ (str, L_("punct")) && ispunct ((UCHAR) *n))
|
||||
|| (STREQ (str, L_("space")) && isspace ((UCHAR) *n))
|
||||
|| (STREQ (str, L_("upper")) && isupper ((UCHAR) *n))
|
||||
|| (STREQ (str, L_("xdigit")) && isxdigit ((UCHAR) *n)))
|
||||
goto matched;
|
||||
#endif
|
||||
c = *p++;
|
||||
}
|
||||
#ifdef _LIBC
|
||||
else if (c == L('[') && *p == L('='))
|
||||
else if (c == L_('[') && *p == L_('='))
|
||||
{
|
||||
UCHAR str[1];
|
||||
uint32_t nrules =
|
||||
@@ -313,19 +313,19 @@ FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||||
const CHAR *startp = p;
|
||||
|
||||
c = *++p;
|
||||
if (c == L('\0'))
|
||||
if (c == L_('\0'))
|
||||
{
|
||||
p = startp;
|
||||
c = L('[');
|
||||
c = L_('[');
|
||||
goto normal_bracket;
|
||||
}
|
||||
str[0] = c;
|
||||
|
||||
c = *++p;
|
||||
if (c != L('=') || p[1] != L(']'))
|
||||
if (c != L_('=') || p[1] != L_(']'))
|
||||
{
|
||||
p = startp;
|
||||
c = L('[');
|
||||
c = L_('[');
|
||||
goto normal_bracket;
|
||||
}
|
||||
p += 2;
|
||||
@@ -405,7 +405,7 @@ FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||||
c = *p++;
|
||||
}
|
||||
#endif
|
||||
else if (c == L('\0'))
|
||||
else if (c == L_('\0'))
|
||||
/* [ (unterminated) loses. */
|
||||
return FNM_NOMATCH;
|
||||
else
|
||||
@@ -415,7 +415,7 @@ FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||||
#ifdef _LIBC
|
||||
bool is_seqval = false;
|
||||
|
||||
if (c == L('[') && *p == L('.'))
|
||||
if (c == L_('[') && *p == L_('.'))
|
||||
{
|
||||
uint32_t nrules =
|
||||
_NL_CURRENT_WORD (LC_COLLATE, _NL_COLLATE_NRULES);
|
||||
@@ -425,7 +425,7 @@ FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||||
while (1)
|
||||
{
|
||||
c = *++p;
|
||||
if (c == L('.') && p[1] == L(']'))
|
||||
if (c == L_('.') && p[1] == L_(']'))
|
||||
{
|
||||
p += 2;
|
||||
break;
|
||||
@@ -438,7 +438,7 @@ FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||||
/* We have to handling the symbols differently in
|
||||
ranges since then the collation sequence is
|
||||
important. */
|
||||
is_range = *p == L('-') && p[1] != L('\0');
|
||||
is_range = *p == L_('-') && p[1] != L_('\0');
|
||||
|
||||
if (nrules == 0)
|
||||
{
|
||||
@@ -586,8 +586,8 @@ FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||||
/* We have to handling the symbols differently in
|
||||
ranges since then the collation sequence is
|
||||
important. */
|
||||
is_range = (*p == L('-') && p[1] != L('\0')
|
||||
&& p[1] != L(']'));
|
||||
is_range = (*p == L_('-') && p[1] != L_('\0')
|
||||
&& p[1] != L_(']'));
|
||||
|
||||
if (!is_range && c == fn)
|
||||
goto matched;
|
||||
@@ -596,7 +596,7 @@ FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||||
c = *p++;
|
||||
}
|
||||
|
||||
if (c == L('-') && *p != L(']'))
|
||||
if (c == L_('-') && *p != L_(']'))
|
||||
{
|
||||
#if _LIBC
|
||||
/* We have to find the collation sequence
|
||||
@@ -630,7 +630,7 @@ FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||||
# endif
|
||||
|
||||
is_seqval = false;
|
||||
if (cend == L('[') && *p == L('.'))
|
||||
if (cend == L_('[') && *p == L_('.'))
|
||||
{
|
||||
uint32_t nrules =
|
||||
_NL_CURRENT_WORD (LC_COLLATE,
|
||||
@@ -641,7 +641,7 @@ FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||||
while (1)
|
||||
{
|
||||
c = *++p;
|
||||
if (c == L('.') && p[1] == L(']'))
|
||||
if (c == L_('.') && p[1] == L_(']'))
|
||||
{
|
||||
p += 2;
|
||||
break;
|
||||
@@ -760,9 +760,9 @@ FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!(flags & FNM_NOESCAPE) && cend == L('\\'))
|
||||
if (!(flags & FNM_NOESCAPE) && cend == L_('\\'))
|
||||
cend = *p++;
|
||||
if (cend == L('\0'))
|
||||
if (cend == L_('\0'))
|
||||
return FNM_NOMATCH;
|
||||
cend = FOLD (cend);
|
||||
}
|
||||
@@ -814,9 +814,9 @@ FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||||
and sometimes fatal consequences. */
|
||||
UCHAR cend = *p++;
|
||||
|
||||
if (!(flags & FNM_NOESCAPE) && cend == L('\\'))
|
||||
if (!(flags & FNM_NOESCAPE) && cend == L_('\\'))
|
||||
cend = *p++;
|
||||
if (cend == L('\0'))
|
||||
if (cend == L_('\0'))
|
||||
return FNM_NOMATCH;
|
||||
|
||||
/* It is a range. */
|
||||
@@ -828,7 +828,7 @@ FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||||
}
|
||||
}
|
||||
|
||||
if (c == L(']'))
|
||||
if (c == L_(']'))
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -843,18 +843,18 @@ FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||||
ignore_next:
|
||||
c = *p++;
|
||||
|
||||
if (c == L('\0'))
|
||||
if (c == L_('\0'))
|
||||
/* [... (unterminated) loses. */
|
||||
return FNM_NOMATCH;
|
||||
|
||||
if (!(flags & FNM_NOESCAPE) && c == L('\\'))
|
||||
if (!(flags & FNM_NOESCAPE) && c == L_('\\'))
|
||||
{
|
||||
if (*p == L('\0'))
|
||||
if (*p == L_('\0'))
|
||||
return FNM_NOMATCH;
|
||||
/* XXX 1003.2d11 is unclear if this is right. */
|
||||
++p;
|
||||
}
|
||||
else if (c == L('[') && *p == L(':'))
|
||||
else if (c == L_('[') && *p == L_(':'))
|
||||
{
|
||||
int c1 = 0;
|
||||
const CHAR *startp = p;
|
||||
@@ -865,10 +865,10 @@ FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||||
if (++c1 == CHAR_CLASS_MAX_LENGTH)
|
||||
return FNM_NOMATCH;
|
||||
|
||||
if (*p == L(':') && p[1] == L(']'))
|
||||
if (*p == L_(':') && p[1] == L_(']'))
|
||||
break;
|
||||
|
||||
if (c < L('a') || c >= L('z'))
|
||||
if (c < L_('a') || c >= L_('z'))
|
||||
{
|
||||
p = startp;
|
||||
goto ignore_next;
|
||||
@@ -877,18 +877,18 @@ FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||||
p += 2;
|
||||
c = *p++;
|
||||
}
|
||||
else if (c == L('[') && *p == L('='))
|
||||
else if (c == L_('[') && *p == L_('='))
|
||||
{
|
||||
c = *++p;
|
||||
if (c == L('\0'))
|
||||
if (c == L_('\0'))
|
||||
return FNM_NOMATCH;
|
||||
c = *++p;
|
||||
if (c != L('=') || p[1] != L(']'))
|
||||
if (c != L_('=') || p[1] != L_(']'))
|
||||
return FNM_NOMATCH;
|
||||
p += 2;
|
||||
c = *p++;
|
||||
}
|
||||
else if (c == L('[') && *p == L('.'))
|
||||
else if (c == L_('[') && *p == L_('.'))
|
||||
{
|
||||
++p;
|
||||
while (1)
|
||||
@@ -897,22 +897,22 @@ FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||||
if (c == '\0')
|
||||
return FNM_NOMATCH;
|
||||
|
||||
if (*p == L('.') && p[1] == L(']'))
|
||||
if (*p == L_('.') && p[1] == L_(']'))
|
||||
break;
|
||||
}
|
||||
p += 2;
|
||||
c = *p++;
|
||||
}
|
||||
}
|
||||
while (c != L(']'));
|
||||
while (c != L_(']'));
|
||||
if (not)
|
||||
return FNM_NOMATCH;
|
||||
}
|
||||
break;
|
||||
|
||||
case L('+'):
|
||||
case L('@'):
|
||||
case L('!'):
|
||||
case L_('+'):
|
||||
case L_('@'):
|
||||
case L_('!'):
|
||||
if (__builtin_expect (flags & FNM_EXTMATCH, 0) && *p == '(')
|
||||
{
|
||||
int res;
|
||||
@@ -923,7 +923,7 @@ FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||||
}
|
||||
goto normal_match;
|
||||
|
||||
case L('/'):
|
||||
case L_('/'):
|
||||
if (NO_LEADING_PERIOD (flags))
|
||||
{
|
||||
if (n == string_end || c != (UCHAR) *n)
|
||||
@@ -946,7 +946,7 @@ FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||||
if (n == string_end)
|
||||
return 0;
|
||||
|
||||
if ((flags & FNM_LEADING_DIR) && n != string_end && *n == L('/'))
|
||||
if ((flags & FNM_LEADING_DIR) && n != string_end && *n == L_('/'))
|
||||
/* The FNM_LEADING_DIR flag says that "foo*" matches "foobar/frobozz". */
|
||||
return 0;
|
||||
|
||||
@@ -961,10 +961,10 @@ END (const CHAR *pattern)
|
||||
const CHAR *p = pattern;
|
||||
|
||||
while (1)
|
||||
if (*++p == L('\0'))
|
||||
if (*++p == L_('\0'))
|
||||
/* This is an invalid pattern. */
|
||||
return pattern;
|
||||
else if (*p == L('['))
|
||||
else if (*p == L_('['))
|
||||
{
|
||||
/* Handle brackets special. */
|
||||
if (posixly_correct == 0)
|
||||
@@ -972,21 +972,21 @@ END (const CHAR *pattern)
|
||||
|
||||
/* Skip the not sign. We have to recognize it because of a possibly
|
||||
following ']'. */
|
||||
if (*++p == L('!') || (posixly_correct < 0 && *p == L('^')))
|
||||
if (*++p == L_('!') || (posixly_correct < 0 && *p == L_('^')))
|
||||
++p;
|
||||
/* A leading ']' is recognized as such. */
|
||||
if (*p == L(']'))
|
||||
if (*p == L_(']'))
|
||||
++p;
|
||||
/* Skip over all characters of the list. */
|
||||
while (*p != L(']'))
|
||||
if (*p++ == L('\0'))
|
||||
while (*p != L_(']'))
|
||||
if (*p++ == L_('\0'))
|
||||
/* This is no valid pattern. */
|
||||
return pattern;
|
||||
}
|
||||
else if ((*p == L('?') || *p == L('*') || *p == L('+') || *p == L('@')
|
||||
|| *p == L('!')) && p[1] == L('('))
|
||||
else if ((*p == L_('?') || *p == L_('*') || *p == L_('+') || *p == L_('@')
|
||||
|| *p == L_('!')) && p[1] == L_('('))
|
||||
p = END (p + 1);
|
||||
else if (*p == L(')'))
|
||||
else if (*p == L_(')'))
|
||||
break;
|
||||
|
||||
return p + 1;
|
||||
@@ -1014,10 +1014,10 @@ EXT (INT opt, const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||||
/* Parse the pattern. Store the individual parts in the list. */
|
||||
level = 0;
|
||||
for (startp = p = pattern + 1; ; ++p)
|
||||
if (*p == L('\0'))
|
||||
if (*p == L_('\0'))
|
||||
/* This is an invalid pattern. */
|
||||
return -1;
|
||||
else if (*p == L('['))
|
||||
else if (*p == L_('['))
|
||||
{
|
||||
/* Handle brackets special. */
|
||||
if (posixly_correct == 0)
|
||||
@@ -1025,22 +1025,22 @@ EXT (INT opt, const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||||
|
||||
/* Skip the not sign. We have to recognize it because of a possibly
|
||||
following ']'. */
|
||||
if (*++p == L('!') || (posixly_correct < 0 && *p == L('^')))
|
||||
if (*++p == L_('!') || (posixly_correct < 0 && *p == L_('^')))
|
||||
++p;
|
||||
/* A leading ']' is recognized as such. */
|
||||
if (*p == L(']'))
|
||||
if (*p == L_(']'))
|
||||
++p;
|
||||
/* Skip over all characters of the list. */
|
||||
while (*p != L(']'))
|
||||
if (*p++ == L('\0'))
|
||||
while (*p != L_(']'))
|
||||
if (*p++ == L_('\0'))
|
||||
/* This is no valid pattern. */
|
||||
return -1;
|
||||
}
|
||||
else if ((*p == L('?') || *p == L('*') || *p == L('+') || *p == L('@')
|
||||
|| *p == L('!')) && p[1] == L('('))
|
||||
else if ((*p == L_('?') || *p == L_('*') || *p == L_('+') || *p == L_('@')
|
||||
|| *p == L_('!')) && p[1] == L_('('))
|
||||
/* Remember the nesting level. */
|
||||
++level;
|
||||
else if (*p == L(')'))
|
||||
else if (*p == L_(')'))
|
||||
{
|
||||
if (level-- == 0)
|
||||
{
|
||||
@@ -1051,7 +1051,7 @@ EXT (INT opt, const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||||
size_t plensize; \
|
||||
size_t newpsize; \
|
||||
\
|
||||
plen = (opt == L('?') || opt == L('@') \
|
||||
plen = (opt == L_('?') || opt == L_('@') \
|
||||
? pattern_len \
|
||||
: p - startp + 1); \
|
||||
plensize = plen * sizeof (CHAR); \
|
||||
@@ -1061,7 +1061,7 @@ EXT (INT opt, const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||||
|| ALLOCA_LIMIT <= newpsize) \
|
||||
return -1; \
|
||||
newp = (struct patternlist *) alloca (newpsize); \
|
||||
*((CHAR *) MEMPCPY (newp->str, startp, p - startp)) = L('\0'); \
|
||||
*((CHAR *) MEMPCPY (newp->str, startp, p - startp)) = L_('\0'); \
|
||||
newp->next = NULL; \
|
||||
*lastp = newp; \
|
||||
lastp = &newp->next
|
||||
@@ -1069,7 +1069,7 @@ EXT (INT opt, const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if (*p == L('|'))
|
||||
else if (*p == L_('|'))
|
||||
{
|
||||
if (level == 0)
|
||||
{
|
||||
@@ -1078,17 +1078,17 @@ EXT (INT opt, const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||||
}
|
||||
}
|
||||
assert (list != NULL);
|
||||
assert (p[-1] == L(')'));
|
||||
assert (p[-1] == L_(')'));
|
||||
#undef NEW_PATTERN
|
||||
|
||||
switch (opt)
|
||||
{
|
||||
case L('*'):
|
||||
case L_('*'):
|
||||
if (FCT (p, string, string_end, no_leading_period, flags) == 0)
|
||||
return 0;
|
||||
/* FALLTHROUGH */
|
||||
|
||||
case L('+'):
|
||||
case L_('+'):
|
||||
do
|
||||
{
|
||||
for (rs = string; rs <= string_end; ++rs)
|
||||
@@ -1120,12 +1120,12 @@ EXT (INT opt, const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||||
/* None of the patterns lead to a match. */
|
||||
return FNM_NOMATCH;
|
||||
|
||||
case L('?'):
|
||||
case L_('?'):
|
||||
if (FCT (p, string, string_end, no_leading_period, flags) == 0)
|
||||
return 0;
|
||||
/* FALLTHROUGH */
|
||||
|
||||
case L('@'):
|
||||
case L_('@'):
|
||||
do
|
||||
/* I cannot believe it but `strcat' is actually acceptable
|
||||
here. Match the entire string with the prefix from the
|
||||
@@ -1141,7 +1141,7 @@ EXT (INT opt, const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||||
/* None of the patterns lead to a match. */
|
||||
return FNM_NOMATCH;
|
||||
|
||||
case L('!'):
|
||||
case L_('!'):
|
||||
for (rs = string; rs <= string_end; ++rs)
|
||||
{
|
||||
struct patternlist *runp;
|
||||
@@ -1188,5 +1188,5 @@ EXT (INT opt, const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||||
#undef STRCOLL
|
||||
#undef STRLEN
|
||||
#undef STRCAT
|
||||
#undef L
|
||||
#undef L_
|
||||
#undef BTOWC
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user