mirror of
https://git.savannah.gnu.org/git/coreutils.git
synced 2025-09-10 07:59:52 +02:00
Compare commits
1507 Commits
FILEUTILS-
...
v4.5.3
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5ed1f9d1b1 | ||
|
|
f92f1a29c0 | ||
|
|
5955869435 | ||
|
|
c9c00c8bec | ||
|
|
e408ac408c | ||
|
|
6dafd5b2fc | ||
|
|
25797575f8 | ||
|
|
ff4e2725a7 | ||
|
|
bd9e754992 | ||
|
|
5b87a60663 | ||
|
|
29a1a5e5d4 | ||
|
|
475f183eab | ||
|
|
797d72c3cc | ||
|
|
331dd19c54 | ||
|
|
2f4402aa58 | ||
|
|
380f554a46 | ||
|
|
c19c8b5952 | ||
|
|
1b9984330e | ||
|
|
f175e3efc2 | ||
|
|
b7fbfec375 | ||
|
|
0b7a5a2391 | ||
|
|
707f8bfa62 | ||
|
|
81817a30ea | ||
|
|
38a8810cd3 | ||
|
|
0ddadb6245 | ||
|
|
fb8af4b59f | ||
|
|
818addef64 | ||
|
|
08886ecd26 | ||
|
|
480a562b21 | ||
|
|
5a56be1388 | ||
|
|
2ad8545649 | ||
|
|
91762c16a0 | ||
|
|
6fb9a86b51 | ||
|
|
b468370388 | ||
|
|
042b41c2b9 | ||
|
|
64044efd7c | ||
|
|
617c5a571a | ||
|
|
e995dcb2d5 | ||
|
|
7db0a34488 | ||
|
|
97cd9f1149 | ||
|
|
d57998f128 | ||
|
|
ad9f3ac0a9 | ||
|
|
932a05f006 | ||
|
|
70869c09b8 | ||
|
|
9a7b64e701 | ||
|
|
c9f88f349a | ||
|
|
2cef2b3122 | ||
|
|
3a4fbcd12b | ||
|
|
d928b833e3 | ||
|
|
a83991f50b | ||
|
|
1d2876761d | ||
|
|
a890541a5d | ||
|
|
718b928df1 | ||
|
|
fb763e4f7a | ||
|
|
f3584c5e62 | ||
|
|
b3a42e44e9 | ||
|
|
ffd20427d8 | ||
|
|
c52b7838fa | ||
|
|
b82563de58 | ||
|
|
f99306fcd5 | ||
|
|
5f4fb36645 | ||
|
|
7a58f340c1 | ||
|
|
ea544336d7 | ||
|
|
a05880e42b | ||
|
|
647b737648 | ||
|
|
00ebca59b7 | ||
|
|
f99d9f8109 | ||
|
|
926546dcac | ||
|
|
e70e42fa66 | ||
|
|
4ee1570593 | ||
|
|
cd6593abaf | ||
|
|
7ec9bab074 | ||
|
|
17c175eb48 | ||
|
|
76e102fa20 | ||
|
|
667c11d2dc | ||
|
|
cf00c95789 | ||
|
|
a5761a4adb | ||
|
|
017c2208e2 | ||
|
|
fb918bedbf | ||
|
|
702a18d659 | ||
|
|
0bd10f3b8b | ||
|
|
d0d7266488 | ||
|
|
1f4be66913 | ||
|
|
931e5aef07 | ||
|
|
7a45935962 | ||
|
|
c1a20dc27b | ||
|
|
55c73b9516 | ||
|
|
f540cf3789 | ||
|
|
e3d5348851 | ||
|
|
ae48cdae26 | ||
|
|
6a9dc978f9 | ||
|
|
c5549236da | ||
|
|
215f635780 | ||
|
|
314c0eaa97 | ||
|
|
4adcccbf48 | ||
|
|
c19dbea39c | ||
|
|
4a6814ada7 | ||
|
|
f91c0597b1 | ||
|
|
8ddf1353cc | ||
|
|
b382c38eb1 | ||
|
|
42a19757ae | ||
|
|
0c0586bb2e | ||
|
|
dd356beb0a | ||
|
|
ba13d22e09 | ||
|
|
1512315121 | ||
|
|
ce221c2708 | ||
|
|
6ee4cfca07 | ||
|
|
c42deaae1a | ||
|
|
cc9e07b32f | ||
|
|
1ea1325068 | ||
|
|
43231af577 | ||
|
|
be9d4e80a0 | ||
|
|
98abcaa372 | ||
|
|
8adddf55c0 | ||
|
|
9df8af3675 | ||
|
|
7e1ff0b4f8 | ||
|
|
ca9b1df44b | ||
|
|
c791a382f8 | ||
|
|
d27ac3d82a | ||
|
|
9d9dbdb922 | ||
|
|
0863bbf447 | ||
|
|
e16b6e395b | ||
|
|
c1d185f01c | ||
|
|
d51cd50606 | ||
|
|
559a6d0f80 | ||
|
|
dcb8cc65fa | ||
|
|
92a2cc65cb | ||
|
|
b7412e8bc0 | ||
|
|
9e3fc21d11 | ||
|
|
a3b479c91f | ||
|
|
b928574bf6 | ||
|
|
6daabb7578 | ||
|
|
d7e2b7fa84 | ||
|
|
9265193dd2 | ||
|
|
a20222cd22 | ||
|
|
d7098ccf98 | ||
|
|
e5a2ac0f88 | ||
|
|
885b7147cc | ||
|
|
9d78678c22 | ||
|
|
30978dfadf | ||
|
|
d83e894316 | ||
|
|
ccd5e413fb | ||
|
|
500ad9b9b1 | ||
|
|
fd5bc32835 | ||
|
|
6fee4452d3 | ||
|
|
16b4b4f861 | ||
|
|
1060257446 | ||
|
|
475574011d | ||
|
|
876ff10b0c | ||
|
|
cd6ee8563b | ||
|
|
ddb038c033 | ||
|
|
8c10d25fd0 | ||
|
|
7c8156ca73 | ||
|
|
0327689de0 | ||
|
|
d50e1a86b7 | ||
|
|
2c6d700418 | ||
|
|
4b0eb25d6d | ||
|
|
9cc87603b9 | ||
|
|
d4add26938 | ||
|
|
4fcf036cb3 | ||
|
|
ca2302ece5 | ||
|
|
59e6528c22 | ||
|
|
b79c9e46a9 | ||
|
|
0b797ed056 | ||
|
|
619a52f976 | ||
|
|
b5a4f7671a | ||
|
|
d711a9e3be | ||
|
|
029b8ea75d | ||
|
|
34ba862f93 | ||
|
|
6b7e8621e2 | ||
|
|
cc0a6e14fc | ||
|
|
8683024a34 | ||
|
|
d8e1894335 | ||
|
|
68527271a5 | ||
|
|
0f88878c11 | ||
|
|
fab46cb466 | ||
|
|
003ab9a58d | ||
|
|
709d79631a | ||
|
|
7b355ee476 | ||
|
|
3be0542f6d | ||
|
|
17e6ca3e89 | ||
|
|
575cb67bb2 | ||
|
|
457ae040b7 | ||
|
|
ddc4c1a8a9 | ||
|
|
ef2c79217f | ||
|
|
c5c97ee23a | ||
|
|
ae1f13cd3c | ||
|
|
d5d3e4a862 | ||
|
|
7080cab46c | ||
|
|
036ab5abda | ||
|
|
17170ddcb3 | ||
|
|
9fd07809b6 | ||
|
|
350063fa65 | ||
|
|
9a8d898e60 | ||
|
|
f0693e040c | ||
|
|
899a855343 | ||
|
|
f026fc4b46 | ||
|
|
eaa5777cc5 | ||
|
|
80b4ef8025 | ||
|
|
f02d6eea14 | ||
|
|
62718bc18d | ||
|
|
0e71fdcb84 | ||
|
|
78dfee94cb | ||
|
|
b8da58cdac | ||
|
|
8837ed851e | ||
|
|
32af38ad7f | ||
|
|
eb025632fc | ||
|
|
96a4006030 | ||
|
|
498e1e4f34 | ||
|
|
0ba46f3211 | ||
|
|
1c6add23a8 | ||
|
|
83ce802e59 | ||
|
|
2e828f4304 | ||
|
|
fd275f739b | ||
|
|
29cf63f13e | ||
|
|
bed74c5f2c | ||
|
|
9679e3f156 | ||
|
|
786254cbd5 | ||
|
|
3888eed848 | ||
|
|
68754e2a35 | ||
|
|
f4c8df3d37 | ||
|
|
165e561cf5 | ||
|
|
643087c9eb | ||
|
|
e13f998e3d | ||
|
|
ec317bd993 | ||
|
|
466902bf34 | ||
|
|
3935842cb3 | ||
|
|
12b5bb320c | ||
|
|
95631bcc4d | ||
|
|
c81581d5c3 | ||
|
|
5ca2fe79d9 | ||
|
|
fd73068711 | ||
|
|
cea6b0e19a | ||
|
|
6dfd1fe44a | ||
|
|
17b4cf8818 | ||
|
|
5bd4fe2400 | ||
|
|
b4994d29a1 | ||
|
|
ef7c6ac69f | ||
|
|
b9485873b6 | ||
|
|
6b11de0aad | ||
|
|
41de1d5546 | ||
|
|
0264deb7f0 | ||
|
|
adaffb391b | ||
|
|
dbe1e3529a | ||
|
|
a59ff019de | ||
|
|
4de67de0af | ||
|
|
510b33a541 | ||
|
|
626d26baaa | ||
|
|
96a4360079 | ||
|
|
5ecd38d97e | ||
|
|
313f44f036 | ||
|
|
3087631793 | ||
|
|
96bd9415dc | ||
|
|
a4d28ef145 | ||
|
|
3a9de00dc7 | ||
|
|
a6386ad90d | ||
|
|
3bbdcee8c3 | ||
|
|
1e8f677ed4 | ||
|
|
3a49e627de | ||
|
|
7a79266014 | ||
|
|
d7a4a48c83 | ||
|
|
aa6f330821 | ||
|
|
079eb6b3d1 | ||
|
|
ae3d0303a0 | ||
|
|
867d0d0403 | ||
|
|
5d5cef3277 | ||
|
|
99583c1cae | ||
|
|
3fb3949208 | ||
|
|
0b49457e24 | ||
|
|
9e35801348 | ||
|
|
afef4e7e86 | ||
|
|
0e1e6b5e56 | ||
|
|
8706a066cf | ||
|
|
37f7bae4f0 | ||
|
|
fceb8c6f6d | ||
|
|
1a71d84326 | ||
|
|
de68469582 | ||
|
|
8b4aebd031 | ||
|
|
6c0a2cd041 | ||
|
|
2eb1ba5109 | ||
|
|
d3f25cc8bf | ||
|
|
a9e5e84ed7 | ||
|
|
585d13437c | ||
|
|
496f29fa8c | ||
|
|
0ea01d21a3 | ||
|
|
2ebfe2fc9c | ||
|
|
680cd976cc | ||
|
|
c6fcfa23be | ||
|
|
636b6d76f3 | ||
|
|
951b87ccd5 | ||
|
|
e6c8577825 | ||
|
|
55b9df1653 | ||
|
|
b2523f82c5 | ||
|
|
f7e3d9b0f2 | ||
|
|
b0231a2f03 | ||
|
|
a5f8422570 | ||
|
|
5bdb1226eb | ||
|
|
eb540d8e9b | ||
|
|
174a1f057c | ||
|
|
6dcc1a7fc3 | ||
|
|
08264fc838 | ||
|
|
24272cc948 | ||
|
|
62808a7fb5 | ||
|
|
03b25d2e46 | ||
|
|
570446de4a | ||
|
|
970a18999d | ||
|
|
61fe93b0c0 | ||
|
|
41766f78de | ||
|
|
45615cb41f | ||
|
|
4006f4e672 | ||
|
|
7488703199 | ||
|
|
6c80ecd8d5 | ||
|
|
4bffc55254 | ||
|
|
96a48abf78 | ||
|
|
e5ccb59f97 | ||
|
|
649a00e9b8 | ||
|
|
515f184462 | ||
|
|
609231e3fa | ||
|
|
1f8ece552f | ||
|
|
82c0b315bc | ||
|
|
9a9e0503a2 | ||
|
|
cd79080f4a | ||
|
|
3ee8ba25ba | ||
|
|
c725204141 | ||
|
|
4ab5b1b246 | ||
|
|
b10e1c1a4a | ||
|
|
69a590a469 | ||
|
|
e5f8396b09 | ||
|
|
efaf3a08de | ||
|
|
6f6a8f0361 | ||
|
|
7dd8275506 | ||
|
|
234cd4e3fe | ||
|
|
6d1c743816 | ||
|
|
5dff34cd8d | ||
|
|
83f07a2ae3 | ||
|
|
c7bfa321f9 | ||
|
|
3124a4e393 | ||
|
|
f7f7207a69 | ||
|
|
dd11d9349e | ||
|
|
17077cbcbf | ||
|
|
9db4370c1a | ||
|
|
91d008f619 | ||
|
|
ac9b8804eb | ||
|
|
78088e3400 | ||
|
|
01ac2fda31 | ||
|
|
f12b040a86 | ||
|
|
b2ad2ca795 | ||
|
|
13f19a6185 | ||
|
|
b1113d0168 | ||
|
|
82e2664b87 | ||
|
|
6eb3ba11fb | ||
|
|
a4726a4c8d | ||
|
|
11eaed5c9c | ||
|
|
fc0e70fe74 | ||
|
|
596072d020 | ||
|
|
23fd377567 | ||
|
|
4cb69e11ad | ||
|
|
99ec0b1a38 | ||
|
|
f900759505 | ||
|
|
c762eef14f | ||
|
|
8cfd57e318 | ||
|
|
0a6e22bb95 | ||
|
|
1f6174e466 | ||
|
|
8f5baf053e | ||
|
|
ea1d6448fb | ||
|
|
c66dd95e8e | ||
|
|
bdccb7c890 | ||
|
|
643bb0f883 | ||
|
|
5c1e3600c9 | ||
|
|
ea64b210f7 | ||
|
|
67b3ee9676 | ||
|
|
46f67717fb | ||
|
|
4597dbd2a7 | ||
|
|
78c7cfea3f | ||
|
|
4ab4543c2d | ||
|
|
c6827392b2 | ||
|
|
28618d4dda | ||
|
|
27076dfd18 | ||
|
|
04e21e6e53 | ||
|
|
92b12e12af | ||
|
|
62ddac9d22 | ||
|
|
a3e653fea2 | ||
|
|
54160b0b94 | ||
|
|
f09c1b54cf | ||
|
|
0e727f4c59 | ||
|
|
ca845879a4 | ||
|
|
9c24b11207 | ||
|
|
c1f4d04c0f | ||
|
|
2220d47e56 | ||
|
|
dbb5342c42 | ||
|
|
b0c47ec127 | ||
|
|
667d18259c | ||
|
|
12107c3302 | ||
|
|
cd93525ee8 | ||
|
|
1c421df83b | ||
|
|
245b16635b | ||
|
|
cefeb81dd5 | ||
|
|
87ef26a750 | ||
|
|
ccd890dc9f | ||
|
|
9193e7e10a | ||
|
|
9159586138 | ||
|
|
515fe7d138 | ||
|
|
1a15d841b8 | ||
|
|
be39dde5b1 | ||
|
|
f74c790e4d | ||
|
|
545c2323d4 | ||
|
|
69a27f2c3d | ||
|
|
9a7a47422e | ||
|
|
d2b62daff5 | ||
|
|
a6005c2ba4 | ||
|
|
2a41097fd7 | ||
|
|
901688234a | ||
|
|
8f065fba94 | ||
|
|
12046ce90b | ||
|
|
cac2b2c8eb | ||
|
|
2394313610 | ||
|
|
a022cf6329 | ||
|
|
ac8cf8db56 | ||
|
|
2b1fd19a04 | ||
|
|
206dd4a985 | ||
|
|
ef2c17c290 | ||
|
|
72c145938f | ||
|
|
0b903c36ca | ||
|
|
bc9509e015 | ||
|
|
9d8a92eeb8 | ||
|
|
95a4eb7b02 | ||
|
|
c010271591 | ||
|
|
c017df37f1 | ||
|
|
49f015c36b | ||
|
|
c8729cad98 | ||
|
|
14714daf41 | ||
|
|
03089e39cb | ||
|
|
ff7b7797bb | ||
|
|
e3d2d82194 | ||
|
|
cafa875ac4 | ||
|
|
aab1a6520d | ||
|
|
3eb3c770fd | ||
|
|
af8dd6d427 | ||
|
|
e1b511adc6 | ||
|
|
ad0b9f7dde | ||
|
|
37a7d1433c | ||
|
|
598ed91d62 | ||
|
|
86af2dfa29 | ||
|
|
ee16ef9929 | ||
|
|
62c03f8fac | ||
|
|
5e8cbfdf8e | ||
|
|
1d423f93c8 | ||
|
|
aa2fb76aa1 | ||
|
|
8c01127f70 | ||
|
|
e4d4cea119 | ||
|
|
723e226532 | ||
|
|
2b4dff2063 | ||
|
|
d1f42de115 | ||
|
|
ce7a9483a9 | ||
|
|
be7f1936bd | ||
|
|
43343c2793 | ||
|
|
68aff85110 | ||
|
|
9bbd5af6e8 | ||
|
|
34598a09f5 | ||
|
|
c6bb7f43ff | ||
|
|
2497b8e42f | ||
|
|
8c55f0fbfa | ||
|
|
a6d4483234 | ||
|
|
33106990a6 | ||
|
|
63fb8bd5b6 | ||
|
|
2bd28f0200 | ||
|
|
48a269db9c | ||
|
|
07fdea3ed9 | ||
|
|
14947f5b6c | ||
|
|
786b4298a5 | ||
|
|
a0ba130aea | ||
|
|
ae1331b60a | ||
|
|
2f17be04e3 | ||
|
|
db6dff2e6e | ||
|
|
fc1b595b19 | ||
|
|
c206bac583 | ||
|
|
64f41399ff | ||
|
|
bcfbac9349 | ||
|
|
32ea988e8b | ||
|
|
ad7b8c7978 | ||
|
|
b24b689963 | ||
|
|
334294f09d | ||
|
|
3f6c422f1a | ||
|
|
ad7e872471 | ||
|
|
a82d360478 | ||
|
|
bfe17c403d | ||
|
|
d234d4b968 | ||
|
|
edc5d1e500 | ||
|
|
ce62cf1bd3 | ||
|
|
eb7996a1df | ||
|
|
4d84eaa764 | ||
|
|
a5c943a9b4 | ||
|
|
6249feeba8 | ||
|
|
74222f7619 | ||
|
|
18d123ec85 | ||
|
|
2b6249f98c | ||
|
|
6884ff795d | ||
|
|
e54c429349 | ||
|
|
559555c77c | ||
|
|
b76525f29d | ||
|
|
a848d8b02b | ||
|
|
6f382f7324 | ||
|
|
5e9dbfad55 | ||
|
|
940ec37b9d | ||
|
|
fd72bdc343 | ||
|
|
5a75d400d9 | ||
|
|
03229a474f | ||
|
|
5b8a7240b0 | ||
|
|
7e168001e9 | ||
|
|
ca66dd1648 | ||
|
|
2200bd0564 | ||
|
|
9befab3af8 | ||
|
|
39d971818e | ||
|
|
e724268ea5 | ||
|
|
748de084cc | ||
|
|
7ca9560caf | ||
|
|
6c38ff8431 | ||
|
|
b6389794e2 | ||
|
|
29c8739e95 | ||
|
|
767a8b968e | ||
|
|
5db1ff6873 | ||
|
|
164e61fbb9 | ||
|
|
4a8560e2a0 | ||
|
|
d4439bcbf4 | ||
|
|
af37865370 | ||
|
|
3c26c805a7 | ||
|
|
a19f9253c4 | ||
|
|
510f7bfe87 | ||
|
|
283c81ccdd | ||
|
|
80206d9811 | ||
|
|
c696260961 | ||
|
|
dadffbebca | ||
|
|
2ea4083a64 | ||
|
|
a536063677 | ||
|
|
570e8c45fe | ||
|
|
37bbc4c47f | ||
|
|
5486771381 | ||
|
|
9ee956a2f7 | ||
|
|
15b923a271 | ||
|
|
6080be6701 | ||
|
|
3474b1e642 | ||
|
|
a96affa5e1 | ||
|
|
d85c0c81fa | ||
|
|
6978ba6736 | ||
|
|
753bb04a60 | ||
|
|
99bf17613b | ||
|
|
c7a1d7f58f | ||
|
|
b23214fca0 | ||
|
|
ce0f0e7e12 | ||
|
|
52b40984a2 | ||
|
|
eba70ec3a5 | ||
|
|
9d348b20ef | ||
|
|
34e8e6db03 | ||
|
|
b918fce9a6 | ||
|
|
02bdcf7646 | ||
|
|
cdcc745b6b | ||
|
|
33b79abe90 | ||
|
|
bac77ea3d9 | ||
|
|
b65a2d1877 | ||
|
|
6e5c26da04 | ||
|
|
ab4c1d5532 | ||
|
|
7678915a9e | ||
|
|
e5ee2e3aee | ||
|
|
902453fc35 | ||
|
|
545b6d7541 | ||
|
|
0fe8dc3290 | ||
|
|
44ce3e4b3c | ||
|
|
2aeeb5466e | ||
|
|
eb8c474088 | ||
|
|
290867cc4a | ||
|
|
4e2a62ff5e | ||
|
|
a1e22df67a | ||
|
|
703f6c0969 | ||
|
|
00489c764a | ||
|
|
6b33fa2fc6 | ||
|
|
01fb2d0ba8 | ||
|
|
d072c179a7 | ||
|
|
c77361418f | ||
|
|
ca407c08fa | ||
|
|
ffffb388a0 | ||
|
|
744750ded3 | ||
|
|
a879a0925f | ||
|
|
56a4c59e60 | ||
|
|
a1d54b2837 | ||
|
|
1882eec679 | ||
|
|
67bf6815c4 | ||
|
|
dc0221e601 | ||
|
|
ffceff850d | ||
|
|
af75d641d4 | ||
|
|
647eaf53a8 | ||
|
|
01eacf71cb | ||
|
|
cebf7f7371 | ||
|
|
a18abe21f7 | ||
|
|
ce7f59f2ff | ||
|
|
e289e5c881 | ||
|
|
a72662ed6b | ||
|
|
89eb405076 | ||
|
|
a6b74b8947 | ||
|
|
5a6436bf38 | ||
|
|
593a07614a | ||
|
|
d815f6dbb7 | ||
|
|
512de3938e | ||
|
|
66f8c36584 | ||
|
|
49d3f4be1a | ||
|
|
0dc6b951d8 | ||
|
|
665089a167 | ||
|
|
2afe4a1677 | ||
|
|
b645ebf086 | ||
|
|
99c8e3f461 | ||
|
|
81cae5ce24 | ||
|
|
dd2496d71e | ||
|
|
8a7ec6fa52 | ||
|
|
973f88bd7d | ||
|
|
27195acdb6 | ||
|
|
421c142235 | ||
|
|
8d7c1bb101 | ||
|
|
4afd8a87cd | ||
|
|
41fe641773 | ||
|
|
33c2d4da98 | ||
|
|
40d884ef95 | ||
|
|
99e738219b | ||
|
|
51e63eddf4 | ||
|
|
3f1725cd4a | ||
|
|
bde17523a9 | ||
|
|
fa6c1e3f51 | ||
|
|
b5e07cb9e8 | ||
|
|
2ee11887cd | ||
|
|
6d0fe4dba5 | ||
|
|
5a731510b2 | ||
|
|
d23970e52e | ||
|
|
4c7e003c1b | ||
|
|
4262ada1bd | ||
|
|
f4bb64378d | ||
|
|
d3ddaf1b29 | ||
|
|
16cec7b66e | ||
|
|
9d6d0e452b | ||
|
|
c16552eee5 | ||
|
|
e2003dea4b | ||
|
|
7f412c940d | ||
|
|
4b42154477 | ||
|
|
dc58af4acf | ||
|
|
58c37faa5c | ||
|
|
bec7e2c432 | ||
|
|
214d3ee739 | ||
|
|
a7d1d17be0 | ||
|
|
7039e40db2 | ||
|
|
c69f2e06ce | ||
|
|
48ed048feb | ||
|
|
abb32bb0ae | ||
|
|
5ad73398f4 | ||
|
|
e6b4ef7f1d | ||
|
|
a9a425d557 | ||
|
|
83df3a8165 | ||
|
|
9eea5b03dd | ||
|
|
b31006ba99 | ||
|
|
de19a1af57 | ||
|
|
3ba3282be5 | ||
|
|
0d051ba221 | ||
|
|
8020e5b1e3 | ||
|
|
074e29a651 | ||
|
|
5da70319a7 | ||
|
|
8ac1a9f278 | ||
|
|
6e78c788f0 | ||
|
|
35f99d5347 | ||
|
|
de1abda345 | ||
|
|
e6d1f21ea6 | ||
|
|
2223ca3c2d | ||
|
|
4605ddcc95 | ||
|
|
4dcdd8be06 | ||
|
|
67e6f0f233 | ||
|
|
8965df82d1 | ||
|
|
453257fa71 | ||
|
|
9e7746f4c0 | ||
|
|
7721a2148a | ||
|
|
64a1747ac5 | ||
|
|
2e53304940 | ||
|
|
299741bf33 | ||
|
|
a715ff5d80 | ||
|
|
e3dbc8d753 | ||
|
|
d8cfcf1a19 | ||
|
|
7fc37adff9 | ||
|
|
53ba358c4b | ||
|
|
f9114f866d | ||
|
|
846b65a50e | ||
|
|
6e8cd75ccf | ||
|
|
3a88e9055b | ||
|
|
10ff1d4404 | ||
|
|
fe02d6163d | ||
|
|
6088c6dba5 | ||
|
|
04c5110e59 | ||
|
|
555d569125 | ||
|
|
ff6434052f | ||
|
|
c230b93ee1 | ||
|
|
06f7295ae7 | ||
|
|
f35ad592ca | ||
|
|
8b213cb96f | ||
|
|
1cbf3518b8 | ||
|
|
7d04e0b63c | ||
|
|
fb10c254d8 | ||
|
|
003d4e0cbe | ||
|
|
b3e0a2f188 | ||
|
|
04bc254d7a | ||
|
|
6d9cf68838 | ||
|
|
442596279b | ||
|
|
04b4ee1245 | ||
|
|
848d68e2c7 | ||
|
|
1e1836f7ca | ||
|
|
4877e7ad84 | ||
|
|
15606fc8a9 | ||
|
|
fc3520c6fc | ||
|
|
0c788cabce | ||
|
|
a170c7e497 | ||
|
|
fff4a08af1 | ||
|
|
047ab72566 | ||
|
|
3ec40eb458 | ||
|
|
e2a70948d4 | ||
|
|
a905df79ad | ||
|
|
0ab9ebc469 | ||
|
|
807ad57ff1 | ||
|
|
2b45b199f8 | ||
|
|
ecbe7fb826 | ||
|
|
071b36fd90 | ||
|
|
d7313803f0 | ||
|
|
26ba37793c | ||
|
|
2f223b443c | ||
|
|
7758b0efd3 | ||
|
|
343d7d4065 | ||
|
|
f35cc0e4a0 | ||
|
|
86adc7266e | ||
|
|
57db2c8659 | ||
|
|
6d797a5b97 | ||
|
|
3d16018d2e | ||
|
|
6a4bcbb5d6 | ||
|
|
240330ca78 | ||
|
|
719c68fe2e | ||
|
|
34f5f485be | ||
|
|
dc70d62988 | ||
|
|
75dedb9944 | ||
|
|
45f4bb1290 | ||
|
|
dda6cbbb1c | ||
|
|
4c52326d70 | ||
|
|
2fd73898d2 | ||
|
|
4726bde475 | ||
|
|
a44fd51a81 | ||
|
|
35e9b38dd8 | ||
|
|
a2e113a2db | ||
|
|
767aa7bf70 | ||
|
|
9234b6f7e0 | ||
|
|
77bc22f77a | ||
|
|
646e37ff59 | ||
|
|
bf7c8ba557 | ||
|
|
59f339c1f8 | ||
|
|
2309be536f | ||
|
|
14c7cfea4c | ||
|
|
6f809229ef | ||
|
|
f09cbdc4b4 | ||
|
|
ef159d5cdb | ||
|
|
58e6f3d386 | ||
|
|
39237a241f | ||
|
|
8ba0cddae4 | ||
|
|
13221a5a13 | ||
|
|
3351c8aada | ||
|
|
19548deac9 | ||
|
|
ff43f6b441 | ||
|
|
1d51d96e1e | ||
|
|
140f272a56 | ||
|
|
9da59fff0d | ||
|
|
06b1f74288 | ||
|
|
dbb90872ee | ||
|
|
cb8155615a | ||
|
|
b29576f01f | ||
|
|
d404816448 | ||
|
|
02d8535f9e | ||
|
|
dfe88896b5 | ||
|
|
0f19d3650b | ||
|
|
10c95a54b5 | ||
|
|
f849e0aaac | ||
|
|
7e6aff288f | ||
|
|
c5b3b8e2b6 | ||
|
|
e20a6cfb82 | ||
|
|
bae1890d5b | ||
|
|
b2816db207 | ||
|
|
2e6f8bf01e | ||
|
|
a3eb51b0e2 | ||
|
|
6d3ea70cf7 | ||
|
|
b965b62436 | ||
|
|
8bd3e55a54 | ||
|
|
cb93da5115 | ||
|
|
9897e1994c | ||
|
|
52fc0276d7 | ||
|
|
ce73721712 | ||
|
|
0f6d0c6016 | ||
|
|
a4b18d8961 | ||
|
|
fb205872c1 | ||
|
|
a4ff1d036d | ||
|
|
26693888de | ||
|
|
63a8743830 | ||
|
|
2ef6aec8ce | ||
|
|
d38d008a1d | ||
|
|
09184490e9 | ||
|
|
c27d78e6e0 | ||
|
|
3b96dac1d7 | ||
|
|
c96356eba9 | ||
|
|
1d478cbd05 | ||
|
|
10d0bbfbc7 | ||
|
|
76c7142a55 | ||
|
|
e913eebe7c | ||
|
|
79278d0cad | ||
|
|
8af3bb0443 | ||
|
|
e8b70f2823 | ||
|
|
79e4cbd57a | ||
|
|
0057fa16a4 | ||
|
|
924d623ac8 | ||
|
|
636fceb22a | ||
|
|
ab0ab21b2e | ||
|
|
625d533476 | ||
|
|
2eef2b57dd | ||
|
|
faa8bced59 | ||
|
|
d2be1268c4 | ||
|
|
c75c72a9fc | ||
|
|
fc1018de0e | ||
|
|
7ec9be427c | ||
|
|
5e15547dad | ||
|
|
e9f9963e6b | ||
|
|
ad9071c4ba | ||
|
|
0ef5b0241e | ||
|
|
ef71f8a52d | ||
|
|
4c9753bdf7 | ||
|
|
e8e002ad91 | ||
|
|
36efe03850 | ||
|
|
37877a3b9c | ||
|
|
81c4b1fcff | ||
|
|
516c58c84c | ||
|
|
f930c9ca0e | ||
|
|
8e1915ff14 | ||
|
|
710a1bc347 | ||
|
|
c55ed2c0a9 | ||
|
|
f08e272c8b | ||
|
|
c2e4117240 | ||
|
|
90e0ba933e | ||
|
|
b2615f2b7f | ||
|
|
ae6d164b7a | ||
|
|
0e7a38dbbe | ||
|
|
1be69adaeb | ||
|
|
925390f0bf | ||
|
|
92255513cd | ||
|
|
42e9ac45ff | ||
|
|
eaa373aeb6 | ||
|
|
cea518eba5 | ||
|
|
fdadb32d0a | ||
|
|
b2cb94b93c | ||
|
|
c09bf755a6 | ||
|
|
137f240e4a | ||
|
|
59d5765b0f | ||
|
|
0ded127f4c | ||
|
|
205cfe4695 | ||
|
|
24f18f089d | ||
|
|
61dd314ba4 | ||
|
|
24a893ff63 | ||
|
|
ef0776dddd | ||
|
|
6095c9a3f8 | ||
|
|
ebc0c4c72f | ||
|
|
65e6baf5a9 | ||
|
|
072ec8dc77 | ||
|
|
ef8e614b04 | ||
|
|
d51a8422a2 | ||
|
|
7b53d3d127 | ||
|
|
36d90a4f13 | ||
|
|
09d4a8f165 | ||
|
|
c7475ee11e | ||
|
|
2431a66944 | ||
|
|
b016bc2d4f | ||
|
|
bdd9db581f | ||
|
|
29fbbc05c9 | ||
|
|
2a061153f6 | ||
|
|
8bbc4ca7ec | ||
|
|
56130b3231 | ||
|
|
5a40d9ead2 | ||
|
|
13d897efcf | ||
|
|
0c4c742189 | ||
|
|
9d64f63aaa | ||
|
|
d7984a3fdb | ||
|
|
17d3a3e28c | ||
|
|
20ee294371 | ||
|
|
6e40a95415 | ||
|
|
24ad720079 | ||
|
|
bb3842917c | ||
|
|
9c46845348 | ||
|
|
2cc5a65c0f | ||
|
|
15bef4ddb6 | ||
|
|
5ce88fe525 | ||
|
|
676991e630 | ||
|
|
f3959d84d3 | ||
|
|
86459445f9 | ||
|
|
ad0f322065 | ||
|
|
735b546108 | ||
|
|
94650aa4ba | ||
|
|
786fcaf4a2 | ||
|
|
eae0819e3d | ||
|
|
550a02c909 | ||
|
|
1e2a59b68a | ||
|
|
7fb3529376 | ||
|
|
3a898d66ba | ||
|
|
699c46f88b | ||
|
|
5565903d7c | ||
|
|
c14da32ec4 | ||
|
|
db37e581bc | ||
|
|
75bb9f0a2a | ||
|
|
89e4bfabcd | ||
|
|
57b792bb8a | ||
|
|
625cb88756 | ||
|
|
01084fbd8d | ||
|
|
219be37b93 | ||
|
|
3be197ed19 | ||
|
|
2bac14f45a | ||
|
|
ed05aed044 | ||
|
|
02be728995 | ||
|
|
cb75a8c02d | ||
|
|
f7978a042c | ||
|
|
6980e29da9 | ||
|
|
79d4ae4bf8 | ||
|
|
03d0ba4c06 | ||
|
|
b41ca51fc6 | ||
|
|
8e6c9373c1 | ||
|
|
dbaf821f82 | ||
|
|
b8b5ed3d52 | ||
|
|
8075fc59b5 | ||
|
|
d22026207c | ||
|
|
b5d5f6fffd | ||
|
|
e464e1da1c | ||
|
|
ec4ea625c9 | ||
|
|
38fa93be81 | ||
|
|
a1319f687c | ||
|
|
059c9672ff | ||
|
|
8a2075ba7d | ||
|
|
a6050a7291 | ||
|
|
d1cf325739 | ||
|
|
6cc8245afb | ||
|
|
93066fab51 | ||
|
|
daeef68961 | ||
|
|
c5e9725e5b | ||
|
|
e94bd40348 | ||
|
|
6576e27321 | ||
|
|
d29bfd529e | ||
|
|
e758541f7e | ||
|
|
0cf2e85eda | ||
|
|
de9a50b611 | ||
|
|
b6dd48b361 | ||
|
|
184edc32ab | ||
|
|
0199003cf9 | ||
|
|
bbd396f52f | ||
|
|
2a15b5cbc4 | ||
|
|
2dbf41d0d0 | ||
|
|
c80374e8e8 | ||
|
|
e53320438b | ||
|
|
1bb22e3075 | ||
|
|
fc7d0fef5f | ||
|
|
b2861672f1 | ||
|
|
9cd1ed4307 | ||
|
|
8a054458d4 | ||
|
|
570703fb5e | ||
|
|
0b79c81d9d | ||
|
|
6acdf37888 | ||
|
|
1391eaea5d | ||
|
|
d3de1d0186 | ||
|
|
a15c26266f | ||
|
|
c32c344dd6 | ||
|
|
e305ef0fa8 | ||
|
|
f1014ac7cc | ||
|
|
8fd6feded9 | ||
|
|
c175e3f6c8 | ||
|
|
73f2d11007 | ||
|
|
f2bb69ebb0 | ||
|
|
0129239343 | ||
|
|
92d76e1e92 | ||
|
|
dc2f3bc5e4 | ||
|
|
1a35394a57 | ||
|
|
2b5e6e4835 | ||
|
|
306c8e8b4f | ||
|
|
3cc80a4390 | ||
|
|
ff015c529a | ||
|
|
ebf16be3ea | ||
|
|
4061c49579 | ||
|
|
d01146b817 | ||
|
|
d0ae660607 | ||
|
|
5aaccdf6a7 | ||
|
|
dc3a2321e0 | ||
|
|
3f094fd26b | ||
|
|
e86cf7f5e6 | ||
|
|
ad9fd82850 | ||
|
|
da5debc995 | ||
|
|
9f79f8d7e0 | ||
|
|
56931437e3 | ||
|
|
5051a33ba6 | ||
|
|
8d851e17c0 | ||
|
|
1df5e317dc | ||
|
|
950d7008ea | ||
|
|
8a2d561e45 | ||
|
|
ccf99a6d4c | ||
|
|
78ec76159b | ||
|
|
28ea23054e | ||
|
|
cea6ca618e | ||
|
|
a9ecff59e4 | ||
|
|
b1f44ffb39 | ||
|
|
2e0e925d3b | ||
|
|
6f0db0ac6e | ||
|
|
aef17cff0f | ||
|
|
92cad6a4e5 | ||
|
|
5bd81eab0f | ||
|
|
598064934e | ||
|
|
c75c37dc2b | ||
|
|
67492390d4 | ||
|
|
480aa4b7c1 | ||
|
|
9a9958dafc | ||
|
|
2262fbb298 | ||
|
|
a36a4fdedc | ||
|
|
57d75ea4d8 | ||
|
|
7880914895 | ||
|
|
b214c8214c | ||
|
|
68f054be8f | ||
|
|
d9feb76a02 | ||
|
|
872325a656 | ||
|
|
d133be1fc3 | ||
|
|
ad02a0f47d | ||
|
|
f7d204bce4 | ||
|
|
2b38bcb26a | ||
|
|
6d89182e28 | ||
|
|
30215a98cc | ||
|
|
c8088a6184 | ||
|
|
82395d065e | ||
|
|
5120cb1bc9 | ||
|
|
e407204f28 | ||
|
|
af3fa53348 | ||
|
|
4fc8280fa6 | ||
|
|
9e92d099ce | ||
|
|
7c3982f666 | ||
|
|
b6e520d478 | ||
|
|
2c41df8b40 | ||
|
|
86168539c7 | ||
|
|
d849f68245 | ||
|
|
91990a324b | ||
|
|
ac829d6935 | ||
|
|
d1a60cddfe | ||
|
|
8d8acf4b3c | ||
|
|
fadc4d4786 | ||
|
|
9eb27b5fad | ||
|
|
b1e1f83089 | ||
|
|
ad935391c2 | ||
|
|
5f057a69d6 | ||
|
|
d635ea46cb | ||
|
|
51816f9adb | ||
|
|
50bc2a4286 | ||
|
|
7f01432879 | ||
|
|
d11a1de3ed | ||
|
|
c6590a2f61 | ||
|
|
f5da3f584b | ||
|
|
5771d0193b | ||
|
|
f52a204a4e | ||
|
|
21126e288b | ||
|
|
d1aa15101c | ||
|
|
92c4ad70ea | ||
|
|
1247f879f9 | ||
|
|
b46ec3cd33 | ||
|
|
f0ea374271 | ||
|
|
72af85a647 | ||
|
|
aa77b79b4b | ||
|
|
f36cf8b4d8 | ||
|
|
a8a0842148 | ||
|
|
8c3b497f01 | ||
|
|
61d6d975af | ||
|
|
b5422e71f7 | ||
|
|
c20f3cd330 | ||
|
|
a88ba0dd94 | ||
|
|
81c7cd4c29 | ||
|
|
f79efa913c | ||
|
|
8b861292c6 | ||
|
|
39f54be321 | ||
|
|
9bfbfd3b8a | ||
|
|
fff7466c36 | ||
|
|
bd2fa30652 | ||
|
|
fffcc47efc | ||
|
|
302c89b285 | ||
|
|
3dd09fbf17 | ||
|
|
baa4aff633 | ||
|
|
aa3694f1ff | ||
|
|
9211474a6e | ||
|
|
ca76cd842a | ||
|
|
6879364228 | ||
|
|
0a2845a592 | ||
|
|
d4e06e8c46 | ||
|
|
61789dd7d5 | ||
|
|
df92958bed | ||
|
|
c559453c89 | ||
|
|
65ab259cdb | ||
|
|
563ff6778d | ||
|
|
eae700da7d | ||
|
|
dc3bf580fc | ||
|
|
d2ed2e78cf | ||
|
|
c799d7b979 | ||
|
|
73c74c33e6 | ||
|
|
c1635e0379 | ||
|
|
2486f9acdf | ||
|
|
af1a8f76a6 | ||
|
|
1c1565ff39 | ||
|
|
c3d98f8640 | ||
|
|
cf504308fe | ||
|
|
3677890d37 | ||
|
|
2af2bec9b2 | ||
|
|
30f0e39058 | ||
|
|
fc1e984e89 | ||
|
|
24c61a8949 | ||
|
|
b3354081ac | ||
|
|
aedb44867d | ||
|
|
65a82e4c26 | ||
|
|
28571ed121 | ||
|
|
3a0036e766 | ||
|
|
fa0309e396 | ||
|
|
4f3c16b4f5 | ||
|
|
16b01fbdc7 | ||
|
|
cd0be06ed2 | ||
|
|
48f998c0e8 | ||
|
|
f3a82e33ac | ||
|
|
14867399cd | ||
|
|
948cbc01ff | ||
|
|
29dade1a06 | ||
|
|
814ef75488 | ||
|
|
17202b905d | ||
|
|
0a35becaf5 | ||
|
|
21eba648bd | ||
|
|
c880cde6a9 | ||
|
|
3afb09ac80 | ||
|
|
1595f15531 | ||
|
|
a6921b13ef | ||
|
|
ae5a552bf1 | ||
|
|
0d4eeae035 | ||
|
|
c4f4cfbf11 | ||
|
|
8cef936d37 | ||
|
|
583ce8b6c9 | ||
|
|
f369403dc6 | ||
|
|
3a82fa109f | ||
|
|
57d9a3625b | ||
|
|
3f81b8e189 | ||
|
|
d06faa245b | ||
|
|
29544710c6 | ||
|
|
7c38cd6901 | ||
|
|
9419e88fc4 | ||
|
|
2c929257dc | ||
|
|
28efd24883 | ||
|
|
bb09da15fe | ||
|
|
db8d2fe339 | ||
|
|
b3183656ef | ||
|
|
aa0c7901a4 | ||
|
|
ef8f6fe459 | ||
|
|
c3aafd6932 | ||
|
|
b0a1aa04ba | ||
|
|
e304471a9e | ||
|
|
405638ebb0 | ||
|
|
2020df6702 | ||
|
|
c4836a7811 | ||
|
|
47c5a14bad | ||
|
|
f6ac75fd2c | ||
|
|
c76a2ddf15 | ||
|
|
337e4b174d | ||
|
|
246e147a6a | ||
|
|
e566848d2a | ||
|
|
da1695cee6 | ||
|
|
2fd63693cc | ||
|
|
244554ca1a | ||
|
|
22b03a6110 | ||
|
|
d726c5ad5f | ||
|
|
c5fcc8e462 | ||
|
|
256f19b8db | ||
|
|
e4dfd95e1f | ||
|
|
846263ddff | ||
|
|
b9d1d9e98e | ||
|
|
3c3e5c4a31 | ||
|
|
e2497bb4fd | ||
|
|
7a5c83d8d5 | ||
|
|
808b51dfba | ||
|
|
baea296b94 | ||
|
|
07b422cb2a | ||
|
|
558fd59769 | ||
|
|
dea4262fa6 | ||
|
|
17e6a0e4bb | ||
|
|
9f1c3a0e22 | ||
|
|
a9e1eeab54 | ||
|
|
b39517e205 | ||
|
|
920077edd1 | ||
|
|
e2f0548110 | ||
|
|
a25f0cdb7e | ||
|
|
5fe8296d4a | ||
|
|
853b15e627 | ||
|
|
f5d3da342d | ||
|
|
8f5e4ea244 | ||
|
|
06b02f10be | ||
|
|
e616c17722 | ||
|
|
3bde76131b | ||
|
|
5a3e8f271b | ||
|
|
e5106171da | ||
|
|
e56702cfd6 | ||
|
|
20075bd5d4 | ||
|
|
11af8c2887 | ||
|
|
4e9fd57633 | ||
|
|
db2557052c | ||
|
|
97943b2180 | ||
|
|
69e796de6c | ||
|
|
2a7a905dfc | ||
|
|
81b59e0ba3 | ||
|
|
419dd76de0 | ||
|
|
04c4d4dc87 | ||
|
|
9f96885c83 | ||
|
|
7da31a15bb | ||
|
|
d7f4b25511 | ||
|
|
99c885f123 | ||
|
|
fba433574b | ||
|
|
d678a9231c | ||
|
|
d936975f34 | ||
|
|
4656d21181 | ||
|
|
b11f94d927 | ||
|
|
f57432bb1d | ||
|
|
3612fcbdb2 | ||
|
|
60a7806d6e | ||
|
|
e3fe486f9f | ||
|
|
0142f9ed84 | ||
|
|
63d4f2d50b | ||
|
|
6a8f12175a | ||
|
|
687ed33f94 | ||
|
|
39ae860d5b | ||
|
|
8f0c48cf2f | ||
|
|
a5d6352ca2 | ||
|
|
1f8d1e1a94 | ||
|
|
0d9dce8362 | ||
|
|
69e2127485 | ||
|
|
12756a214f | ||
|
|
7ca2112fce | ||
|
|
b9bf7eada4 | ||
|
|
0692039ada | ||
|
|
edd622d994 | ||
|
|
c53546aa7e | ||
|
|
c58e076233 | ||
|
|
20f7083676 | ||
|
|
ebf1beaf96 | ||
|
|
42eb22a775 | ||
|
|
68d442ddaf | ||
|
|
5e8ee3161d | ||
|
|
3f570570fd | ||
|
|
4228c4b860 | ||
|
|
1b34d3edee | ||
|
|
94fcdc55eb | ||
|
|
09eb7ebbca | ||
|
|
91564c12b0 | ||
|
|
a261a6aa62 | ||
|
|
59ad795300 | ||
|
|
3b118bfa86 | ||
|
|
9c5a25e176 | ||
|
|
525a872b3f | ||
|
|
908d3853ac | ||
|
|
2377fcd9a3 | ||
|
|
5e55fec6e9 | ||
|
|
28d582acd9 | ||
|
|
2b345f4a8d | ||
|
|
49a3c7a82d | ||
|
|
2202d97525 | ||
|
|
83dcec4e43 | ||
|
|
ad61fd4133 | ||
|
|
9644fae0fd | ||
|
|
36dd24da90 | ||
|
|
b79eab3aa6 | ||
|
|
c7f3f0fba9 | ||
|
|
0bca413339 | ||
|
|
a714e6b4e5 | ||
|
|
246ae48193 | ||
|
|
96cb172817 | ||
|
|
59c60442f3 | ||
|
|
7408ba7d77 | ||
|
|
8b7fb356cb | ||
|
|
b164e8fd95 | ||
|
|
8481ec72a8 | ||
|
|
90e921d334 | ||
|
|
f033fef4ce | ||
|
|
7513e6d4f4 | ||
|
|
361dda3c20 | ||
|
|
44cfebcac7 | ||
|
|
e2ae699ef5 | ||
|
|
b2b2d44f20 | ||
|
|
76272609c2 | ||
|
|
ebce0d1dec | ||
|
|
21d2ed30b3 | ||
|
|
7592628e48 | ||
|
|
9fff44980c | ||
|
|
5de5f30d9b | ||
|
|
aa21da0560 | ||
|
|
c1e20b738a | ||
|
|
981a7966e7 | ||
|
|
cc98f8a745 | ||
|
|
815c5a7a31 | ||
|
|
5c7becf8ca | ||
|
|
b7bdf635da | ||
|
|
1e6f7000ac | ||
|
|
e1ce35d51f | ||
|
|
12549a6db8 | ||
|
|
3741aa834b | ||
|
|
e98b44e829 | ||
|
|
9cb0d2f448 | ||
|
|
8232744d27 | ||
|
|
a5e2a85f07 | ||
|
|
1183723f25 | ||
|
|
014c8f4a02 | ||
|
|
b042392540 | ||
|
|
7823d1aaed | ||
|
|
f676dbef22 | ||
|
|
0798f9740f | ||
|
|
80cb677ce9 | ||
|
|
18a3d6a8aa | ||
|
|
9e2f2e9f31 | ||
|
|
98ca17881b | ||
|
|
d4e24746dc | ||
|
|
65cbf7d1fd | ||
|
|
edcef60550 | ||
|
|
3e7513f731 | ||
|
|
2efda64d38 | ||
|
|
e34b2d9108 | ||
|
|
bc4fb9c6f0 | ||
|
|
a4376b2603 | ||
|
|
28bcd77302 | ||
|
|
6793260cdd | ||
|
|
d614857d03 | ||
|
|
8abf13fa94 | ||
|
|
154e260c9d | ||
|
|
1b7ac91429 | ||
|
|
bbc05d986e | ||
|
|
21b915db0f | ||
|
|
c2fbf52745 | ||
|
|
5c754a018b | ||
|
|
821811d87f | ||
|
|
57eace9a0f | ||
|
|
afd24a90a3 | ||
|
|
395fbc0389 | ||
|
|
19d1db4624 | ||
|
|
f54a032ad1 | ||
|
|
213d9a655f | ||
|
|
71447df741 | ||
|
|
e44fbb95ea | ||
|
|
5ec71c5990 | ||
|
|
f1587760e9 | ||
|
|
78c4877776 | ||
|
|
55a1f9d86b | ||
|
|
a759b38acf | ||
|
|
04a5f2605f | ||
|
|
7278cc2e51 | ||
|
|
4166236b53 | ||
|
|
1f6bad2b30 | ||
|
|
3c25a62eb8 | ||
|
|
5e2bb11618 | ||
|
|
44dc43bb3d | ||
|
|
bf76cb368c | ||
|
|
c578654cad | ||
|
|
bf3a5672fb | ||
|
|
f87b5cab0c | ||
|
|
33f9d106bc | ||
|
|
793fbbc7f2 | ||
|
|
20c2cd43a9 | ||
|
|
546f26cbb3 | ||
|
|
a00579f70b | ||
|
|
61d5f094fd | ||
|
|
3e04fcdbb5 | ||
|
|
31cb36e88f | ||
|
|
06506ceb4f | ||
|
|
2c1c1dc64e | ||
|
|
7db90444af | ||
|
|
92747bfbc9 | ||
|
|
467a80a588 | ||
|
|
2d34812b74 | ||
|
|
874d77f17f | ||
|
|
662fff7861 | ||
|
|
2852c1c0a1 | ||
|
|
bae9a65da4 | ||
|
|
a08c6469be | ||
|
|
c99c6c304a | ||
|
|
6cf1df86a5 | ||
|
|
b2d18ac8f5 | ||
|
|
1c3fa0f99e | ||
|
|
5d9ed2d7bc | ||
|
|
97d18a1d85 | ||
|
|
7e37a5e5e1 | ||
|
|
d283021a71 | ||
|
|
0e4a77847a | ||
|
|
bc3afd9b46 | ||
|
|
fb92d24736 | ||
|
|
c00f96b198 | ||
|
|
7a50bc0dff | ||
|
|
31a6a88517 | ||
|
|
78ebc8e8d5 | ||
|
|
e053850b61 | ||
|
|
aa247b62b3 | ||
|
|
c31e5c3ca5 | ||
|
|
3da062869b | ||
|
|
f8053809f8 | ||
|
|
ef95b3233e | ||
|
|
437d89a151 | ||
|
|
2b1c83e4e2 | ||
|
|
e4407b754b | ||
|
|
f2c93707b4 | ||
|
|
5713380d80 | ||
|
|
ff9ea9b139 | ||
|
|
026c2017b1 | ||
|
|
64eb355c76 | ||
|
|
023877ac27 | ||
|
|
cc6668c3e7 | ||
|
|
ecf261bb6e | ||
|
|
3de8f89388 | ||
|
|
1495a99781 | ||
|
|
80e8506f75 | ||
|
|
bb1f5171c4 | ||
|
|
5883167774 | ||
|
|
2d1ec93821 | ||
|
|
012945ff54 | ||
|
|
0199f37303 | ||
|
|
8ecf5f402d | ||
|
|
81e204a3e7 | ||
|
|
ccfd76fbc8 | ||
|
|
0957ccf367 | ||
|
|
3ca688d69a | ||
|
|
885956355c | ||
|
|
e6345ecb09 | ||
|
|
758e7f409f | ||
|
|
945532de66 | ||
|
|
54bf872aab | ||
|
|
ee6911b745 | ||
|
|
c5c6647f22 | ||
|
|
72d40f6724 | ||
|
|
99f7bd761f | ||
|
|
325addae1d | ||
|
|
4e69204179 | ||
|
|
c7b097f904 | ||
|
|
8723a1eaae | ||
|
|
fe680fd860 | ||
|
|
2bd66cf7fc | ||
|
|
8e7e29d1de | ||
|
|
96efa91b23 | ||
|
|
ea2703dd8c | ||
|
|
009e3b99cf | ||
|
|
10b3363e2e | ||
|
|
c8aa23a9cc | ||
|
|
8a755a3d27 | ||
|
|
36a16de45c | ||
|
|
6e2ffd49b1 | ||
|
|
2abefb14eb | ||
|
|
e2c1c2e529 | ||
|
|
067c2ea921 | ||
|
|
e91fe759ec | ||
|
|
37d0d50168 | ||
|
|
6f46b8dd99 | ||
|
|
1f2f9be7f8 | ||
|
|
96400fcda4 | ||
|
|
4ff8979277 | ||
|
|
3e9354e7f7 | ||
|
|
42e25937cf | ||
|
|
1701230f32 | ||
|
|
68bd369ece | ||
|
|
358a274042 | ||
|
|
2f8c0a3131 | ||
|
|
9b0e6e4b56 | ||
|
|
2302cc643b | ||
|
|
f29617e3fe | ||
|
|
485d699baf | ||
|
|
a5bda3260c | ||
|
|
b5b50f46ea | ||
|
|
0037e217df | ||
|
|
2bea3939c6 | ||
|
|
65562d99c3 | ||
|
|
f199c753eb | ||
|
|
af0225072d | ||
|
|
d85702e334 | ||
|
|
b4012f613a | ||
|
|
bc3a5c4e5f | ||
|
|
fe734b9b2d | ||
|
|
d298aab8a2 | ||
|
|
87ca587534 | ||
|
|
aafbc6e7fc | ||
|
|
8efbf4f961 | ||
|
|
9e19c0c5cd | ||
|
|
9b2c2ebb79 | ||
|
|
9f9d6f6c31 | ||
|
|
e73a9ed54d | ||
|
|
84f8fd1af6 | ||
|
|
15e112e97b | ||
|
|
37d93402d2 | ||
|
|
b00199bd9b | ||
|
|
98ad587709 | ||
|
|
5d1f26b8e5 | ||
|
|
dd3d3d7226 | ||
|
|
fe42846981 | ||
|
|
a907e0806e | ||
|
|
4705104cfa | ||
|
|
706fae60a3 | ||
|
|
9aec59b45a | ||
|
|
3fcb933b8c | ||
|
|
50c1199e09 | ||
|
|
5ce160d64c | ||
|
|
30c0861e98 | ||
|
|
6d5707dfa6 | ||
|
|
fca9e007c6 | ||
|
|
75ecfa15f1 | ||
|
|
e3cc4f6bc8 | ||
|
|
d851ca7056 | ||
|
|
4471d9eb05 |
6
.cvsignore
Normal file
6
.cvsignore
Normal file
@@ -0,0 +1,6 @@
|
||||
Makefile
|
||||
config.h
|
||||
config.log
|
||||
config.status
|
||||
stamp-h1
|
||||
autom4te.cache
|
||||
1
.prev-version
Normal file
1
.prev-version
Normal file
@@ -0,0 +1 @@
|
||||
4.5.2
|
||||
353
ABOUT-NLS
353
ABOUT-NLS
@@ -113,6 +113,13 @@ But in fact, some languages have dialects in different countries. For
|
||||
example, `de_AT' is used for Austria, and `pt_BR' for Brazil. The
|
||||
country code serves to distinguish the dialects.
|
||||
|
||||
The locale naming convention of `LL_CC', with `LL' denoting the
|
||||
language and `CC' denoting the country, is the one use on systems based
|
||||
on GNU libc. On other systems, some variations of this scheme are
|
||||
used, such as `LL' or `LL_CC.ENCODING'. You can get the list of
|
||||
locales supported by your system for your country by running the command
|
||||
`locale -a | grep '^LL''.
|
||||
|
||||
Not all programs have translations for all languages. By default, an
|
||||
English message is shown in place of a nonexistent translation. If you
|
||||
understand other languages, you can set up a priority list of languages.
|
||||
@@ -164,128 +171,232 @@ Available Packages
|
||||
==================
|
||||
|
||||
Languages are not equally supported in all packages. The following
|
||||
matrix shows the current state of internationalization, as of September
|
||||
2001. The matrix shows, in regard of each package, for which languages
|
||||
matrix shows the current state of internationalization, as of August
|
||||
2002. The matrix shows, in regard of each package, for which languages
|
||||
PO files have been submitted to translation coordination, with a
|
||||
translation percentage of at least 50%.
|
||||
|
||||
Ready PO files bg cs da de el en eo es et fi fr gl he hr id it ja
|
||||
+----------------------------------------------------+
|
||||
a2ps | [] [] [] |
|
||||
bash | [] [] [] [] |
|
||||
bfd | |
|
||||
binutils | [] |
|
||||
bison | [] [] [] [] [] |
|
||||
clisp | [] [] [] [] |
|
||||
cpio | [] [] [] [] [] |
|
||||
diffutils | [] [] [] [] [] [] [] |
|
||||
enscript | [] [] |
|
||||
error | [] [] |
|
||||
fetchmail | |
|
||||
fileutils | [] [] [] [] [] [] [] [] |
|
||||
findutils | [] [] [] [] [] [] [] [] |
|
||||
flex | [] [] [] |
|
||||
freetype | |
|
||||
gas | |
|
||||
gawk | [] [] |
|
||||
gcal | |
|
||||
gcc | |
|
||||
gettext | [] [] [] [] [] [] [] [] [] [] |
|
||||
gnupg | [] [] [] [] [] [] [] |
|
||||
gprof | |
|
||||
grep | [] [] [] [] [] [] [] [] |
|
||||
hello | [] [] [] [] [] [] [] [] [] [] [] |
|
||||
id-utils | [] [] [] |
|
||||
indent | [] [] [] [] [] |
|
||||
jpilot | [] |
|
||||
kbd | |
|
||||
ld | [] |
|
||||
libc | [] [] [] [] [] [] [] [] |
|
||||
lilypond | [] |
|
||||
lynx | [] [] [] [] |
|
||||
m4 | [] [] [] [] [] [] [] [] |
|
||||
make | [] [] [] [] [] [] |
|
||||
mysecretdiary | [] |
|
||||
nano | [] [] [] |
|
||||
opcodes | |
|
||||
parted | [] [] [] |
|
||||
ptx | [] [] [] [] [] [] [] |
|
||||
python | |
|
||||
recode | [] [] [] [] [] [] [] [] [] |
|
||||
sed | [] [] [] [] [] [] [] [] [] [] [] [] |
|
||||
sh-utils | [] [] [] [] [] [] [] [] [] [] |
|
||||
sharutils | [] [] [] [] [] [] [] [] |
|
||||
sketch | |
|
||||
soundtracker | [] [] [] |
|
||||
sp | |
|
||||
tar | [] [] [] [] [] [] [] [] |
|
||||
texinfo | [] [] [] [] [] [] |
|
||||
textutils | [] [] [] [] [] [] [] [] |
|
||||
util-linux | [] [] |
|
||||
wdiff | [] [] [] |
|
||||
wget | [] [] [] [] [] [] [] [] [] [] |
|
||||
+----------------------------------------------------+
|
||||
bg cs da de el en eo es et fi fr gl he hr id it ja
|
||||
0 14 24 32 11 1 8 23 13 1 33 22 4 0 7 9 18
|
||||
Ready PO files be bg ca cs da de el en eo es et fi fr
|
||||
+----------------------------------------+
|
||||
a2ps | [] [] [] [] |
|
||||
ap-utils | |
|
||||
bash | [] [] [] [] |
|
||||
bfd | [] [] |
|
||||
binutils | [] [] |
|
||||
bison | [] [] [] [] |
|
||||
clisp | |
|
||||
clisp | [] [] [] [] |
|
||||
clisplow | |
|
||||
cpio | [] [] [] [] |
|
||||
darkstat | () |
|
||||
diffutils | [] [] [] [] [] [] |
|
||||
enscript | [] [] |
|
||||
error | [] [] [] |
|
||||
fetchmail | [] () [] [] [] () |
|
||||
fileutils | [] [] [] [] [] |
|
||||
findutils | [] [] [] [] [] [] |
|
||||
flex | [] [] [] [] [] |
|
||||
gas | [] [] |
|
||||
gawk | [] [] [] |
|
||||
gcal | [] [] |
|
||||
gcc | [] [] |
|
||||
gettext | [] [] [] [] [] |
|
||||
gnupg | [] [] [] [] [] [] [] |
|
||||
gprof | [] [] |
|
||||
gpsdrive | () () () () () |
|
||||
grep | [] [] [] [] [] [] [] [] |
|
||||
gretl | [] |
|
||||
gthumb | () () () |
|
||||
hello | [] [] [] [] [] [] [] [] [] |
|
||||
id-utils | [] [] [] |
|
||||
indent | [] [] [] [] [] |
|
||||
jpilot | () [] [] [] |
|
||||
jwhois | [] [] |
|
||||
kbd | [] [] [] |
|
||||
ld | [] [] |
|
||||
libc | [] [] [] [] [] [] [] [] |
|
||||
libiconv | [] [] [] [] |
|
||||
lifelines | () () |
|
||||
lilypond | [] [] |
|
||||
lingoteach | [] [] |
|
||||
lingoteach_lessons| () () |
|
||||
lynx | [] [] [] [] [] |
|
||||
m4 | [] [] [] [] [] |
|
||||
make | [] [] [] [] |
|
||||
man-db | [] () () [] () () |
|
||||
mysecretdiary | [] [] [] |
|
||||
nano | [] () [] [] [] [] |
|
||||
nano_1_0 | [] () [] [] [] [] |
|
||||
opcodes | [] [] [] |
|
||||
parted | [] [] [] [] [] |
|
||||
ptx | [] [] [] [] [] [] [] |
|
||||
python | |
|
||||
recode | [] [] [] [] [] [] |
|
||||
sed | [] [] [] [] [] [] [] [] [] [] |
|
||||
sh-utils | [] [] [] [] |
|
||||
sharutils | [] [] [] [] [] [] [] |
|
||||
sketch | () [] () |
|
||||
soundtracker | [] [] [] |
|
||||
sp | [] |
|
||||
tar | [] [] [] [] [] [] |
|
||||
texinfo | [] [] [] [] [] |
|
||||
textutils | [] [] [] [] [] |
|
||||
util-linux | [] [] [] [] [] [] |
|
||||
vorbis-tools | [] |
|
||||
wastesedge | |
|
||||
wdiff | [] [] [] [] [] [] |
|
||||
wget | [] [] [] [] [] [] [] [] [] [] |
|
||||
+----------------------------------------+
|
||||
be bg ca cs da de el en eo es et fi fr
|
||||
0 2 19 10 30 44 9 1 12 44 17 6 53
|
||||
|
||||
ko lv nb nl nn no pl pt pt_BR ru sk sl sv tr uk zh
|
||||
+----------------------------------------------------+
|
||||
a2ps | [] [] [] | 6
|
||||
bash | | 4
|
||||
bfd | | 0
|
||||
binutils | | 1
|
||||
bison | [] | 6
|
||||
clisp | [] | 5
|
||||
cpio | [] [] [] [] [] | 10
|
||||
diffutils | [] [] [] [] | 11
|
||||
enscript | [] [] [] | 5
|
||||
error | [] [] | 4
|
||||
fetchmail | | 0
|
||||
fileutils | [] [] [] [] [] [] [] [] [] | 17
|
||||
findutils | [] [] [] [] [] [] [] [] | 16
|
||||
flex | [] [] [] | 6
|
||||
freetype | | 0
|
||||
gas | | 0
|
||||
gawk | [] | 3
|
||||
gcal | | 0
|
||||
gcc | | 0
|
||||
gettext | [] [] [] [] [] [] [] [] | 18
|
||||
gnupg | [] [] [] | 10
|
||||
gprof | | 0
|
||||
grep | [] [] [] [] | 12
|
||||
hello | [] [] [] [] [] [] [] [] [] [] [] | 22
|
||||
id-utils | [] [] [] | 6
|
||||
indent | [] [] [] [] [] [] [] | 12
|
||||
jpilot | | 1
|
||||
kbd | [] | 1
|
||||
ld | | 1
|
||||
libc | [] [] [] [] [] [] [] [] | 16
|
||||
lilypond | [] [] | 3
|
||||
lynx | [] [] [] [] | 8
|
||||
m4 | [] [] [] [] | 12
|
||||
make | [] [] [] [] [] [] | 12
|
||||
mysecretdiary | | 1
|
||||
nano | [] | 4
|
||||
opcodes | [] | 1
|
||||
parted | [] [] | 5
|
||||
ptx | [] [] [] [] [] [] [] [] | 15
|
||||
python | | 0
|
||||
recode | [] [] [] [] | 13
|
||||
sed | [] [] [] [] [] [] [] | 19
|
||||
sh-utils | [] [] [] [] [] [] [] [] [] [] [] | 21
|
||||
sharutils | [] [] [] | 11
|
||||
sketch | | 0
|
||||
soundtracker | | 3
|
||||
sp | | 0
|
||||
tar | [] [] [] [] [] [] [] | 15
|
||||
texinfo | [] | 7
|
||||
textutils | [] [] [] [] [] [] [] [] | 16
|
||||
util-linux | [] [] | 4
|
||||
wdiff | [] [] [] [] | 7
|
||||
wget | [] [] [] [] [] [] [] | 17
|
||||
+----------------------------------------------------+
|
||||
33 teams ko lv nb nl nn no pl pt pt_BR ru sk sl sv tr uk zh
|
||||
53 domains 9 1 6 20 0 6 17 1 13 25 10 11 23 21 2 2 387
|
||||
gl he hr hu id it ja ko lv nb nl nn
|
||||
+-------------------------------------+
|
||||
a2ps | () () [] |
|
||||
ap-utils | |
|
||||
bash | [] |
|
||||
bfd | [] |
|
||||
binutils | [] |
|
||||
bison | [] [] [] [] |
|
||||
clisp | |
|
||||
clisp | [] |
|
||||
clisplow | |
|
||||
cpio | [] [] [] [] |
|
||||
darkstat | |
|
||||
diffutils | [] [] [] [] [] |
|
||||
enscript | [] [] |
|
||||
error | [] |
|
||||
fetchmail | [] |
|
||||
fileutils | [] [] [] |
|
||||
findutils | [] [] [] [] [] [] [] [] |
|
||||
flex | [] |
|
||||
gas | |
|
||||
gawk | [] |
|
||||
gcal | |
|
||||
gcc | [] |
|
||||
gettext | [] [] |
|
||||
gnupg | [] [] [] [] |
|
||||
gprof | [] |
|
||||
gpsdrive | [] () () |
|
||||
grep | [] [] [] [] [] [] [] |
|
||||
gretl | |
|
||||
gthumb | () () |
|
||||
hello | [] [] [] [] [] [] [] [] [] [] [] [] |
|
||||
id-utils | [] [] |
|
||||
indent | [] [] [] [] |
|
||||
jpilot | () () |
|
||||
jwhois | [] [] |
|
||||
kbd | |
|
||||
ld | |
|
||||
libc | [] [] [] [] |
|
||||
libiconv | [] [] [] |
|
||||
lifelines | |
|
||||
lilypond | [] |
|
||||
lingoteach | [] |
|
||||
lingoteach_lessons| |
|
||||
lynx | [] [] [] [] |
|
||||
m4 | [] [] [] [] |
|
||||
make | [] [] [] [] [] [] |
|
||||
man-db | () () |
|
||||
mysecretdiary | [] |
|
||||
nano | [] [] [] [] |
|
||||
nano_1_0 | [] [] [] [] [] |
|
||||
opcodes | [] [] |
|
||||
parted | [] [] [] |
|
||||
ptx | [] [] [] [] [] |
|
||||
python | |
|
||||
recode | [] [] [] |
|
||||
sed | [] [] [] [] [] [] [] [] |
|
||||
sh-utils | [] [] [] |
|
||||
sharutils | [] [] [] |
|
||||
sketch | () |
|
||||
soundtracker | [] [] |
|
||||
sp | |
|
||||
tar | [] [] [] [] [] [] |
|
||||
texinfo | [] [] [] |
|
||||
textutils | [] [] [] [] |
|
||||
util-linux | () [] |
|
||||
vorbis-tools | [] |
|
||||
wastesedge | |
|
||||
wdiff | [] [] [] |
|
||||
wget | [] [] [] [] [] [] |
|
||||
+-------------------------------------+
|
||||
gl he hr hu id it ja ko lv nb nl nn
|
||||
23 9 12 19 16 13 26 9 1 7 19 3
|
||||
|
||||
no pl pt pt_BR ru sk sl sv tr uk zh_CN zh_TW
|
||||
+----------------------------------------------+
|
||||
a2ps | () () () [] [] [] [] [] | 10
|
||||
ap-utils | () | 0
|
||||
bash | [] | 6
|
||||
bfd | [] [] | 5
|
||||
binutils | [] [] | 5
|
||||
bison | [] [] [] [] | 12
|
||||
clisp | | 0
|
||||
clisp | | 5
|
||||
clisplow | | 0
|
||||
cpio | [] [] [] [] | 12
|
||||
darkstat | [] [] () () | 2
|
||||
diffutils | [] [] [] [] [] [] | 17
|
||||
enscript | [] [] [] [] | 8
|
||||
error | [] [] [] | 7
|
||||
fetchmail | () () [] | 6
|
||||
fileutils | [] [] [] [] [] [] | 14
|
||||
findutils | [] [] [] [] [] [] [] | 21
|
||||
flex | [] [] [] | 9
|
||||
gas | [] | 3
|
||||
gawk | [] [] | 6
|
||||
gcal | [] [] | 4
|
||||
gcc | [] | 4
|
||||
gettext | [] [] [] [] [] [] | 13
|
||||
gnupg | [] [] [] | 14
|
||||
gprof | [] [] | 5
|
||||
gpsdrive | [] [] | 3
|
||||
grep | [] [] [] [] [] | 20
|
||||
gretl | | 1
|
||||
gthumb | () () [] | 1
|
||||
hello | [] [] [] [] [] [] [] | 28
|
||||
id-utils | [] [] [] [] | 9
|
||||
indent | [] [] [] [] [] | 14
|
||||
jpilot | () () [] [] | 5
|
||||
jwhois | [] () () [] [] | 7
|
||||
kbd | [] [] | 5
|
||||
ld | [] [] | 4
|
||||
libc | [] [] [] [] [] [] | 18
|
||||
libiconv | [] [] [] [] [] | 12
|
||||
lifelines | [] | 1
|
||||
lilypond | [] | 4
|
||||
lingoteach | [] [] | 5
|
||||
lingoteach_lessons| () | 0
|
||||
lynx | [] [] [] [] | 13
|
||||
m4 | [] [] [] [] | 13
|
||||
make | [] [] [] [] [] | 15
|
||||
man-db | | 3
|
||||
mysecretdiary | [] [] [] | 7
|
||||
nano | [] [] [] [] | 13
|
||||
nano_1_0 | [] [] [] [] | 14
|
||||
opcodes | [] [] [] | 8
|
||||
parted | [] [] [] [] | 12
|
||||
ptx | [] [] [] [] [] [] [] | 19
|
||||
python | | 0
|
||||
recode | [] [] [] [] [] [] | 15
|
||||
sed | [] [] [] [] [] [] | 24
|
||||
sh-utils | [] [] | 9
|
||||
sharutils | [] [] [] [] | 14
|
||||
sketch | [] () [] | 4
|
||||
soundtracker | [] | 6
|
||||
sp | | 1
|
||||
tar | [] [] [] [] [] [] [] | 19
|
||||
texinfo | [] [] | 10
|
||||
textutils | [] [] [] [] [] | 14
|
||||
util-linux | [] [] [] | 10
|
||||
vorbis-tools | [] | 3
|
||||
wastesedge | | 0
|
||||
wdiff | [] [] [] [] [] | 14
|
||||
wget | [] [] [] [] [] [] [] [] | 24
|
||||
+----------------------------------------------+
|
||||
37 teams no pl pt pt_BR ru sk sl sv tr uk zh_CN zh_TW
|
||||
68 domains 4 15 2 28 28 12 10 49 43 4 1 9 609
|
||||
|
||||
Some counters in the preceding matrix are higher than the number of
|
||||
visible blocks let us expect. This is because a few extra PO files are
|
||||
@@ -298,9 +409,9 @@ distributed as such by its maintainer. There might be an observable
|
||||
lag between the mere existence a PO file and its wide availability in a
|
||||
distribution.
|
||||
|
||||
If September 2001 seems to be old, you may fetch a more recent copy
|
||||
of this `ABOUT-NLS' file on most GNU archive sites. The most
|
||||
up-to-date matrix with full percentage details can be found at
|
||||
If August 2002 seems to be old, you may fetch a more recent copy of
|
||||
this `ABOUT-NLS' file on most GNU archive sites. The most up-to-date
|
||||
matrix with full percentage details can be found at
|
||||
`http://www.iro.umontreal.ca/contrib/po/HTML/matrix.html'.
|
||||
|
||||
Using `gettext' in new packages
|
||||
|
||||
86
AUTHORS
Normal file
86
AUTHORS
Normal file
@@ -0,0 +1,86 @@
|
||||
Here are the names of the programs in this package,
|
||||
each followed by the name(s) of its author(s).
|
||||
|
||||
basename: FIXME unknown
|
||||
cat: Torbjorn Granlund and Richard M. Stallman
|
||||
chgrp: David MacKenzie
|
||||
chmod: David MacKenzie
|
||||
chown: David MacKenzie
|
||||
chroot: Roland McGrath
|
||||
cksum: Q. Frank Xia
|
||||
comm: Richard Stallman and David MacKenzie
|
||||
cp: Torbjorn Granlund, David MacKenzie, and Jim Meyering
|
||||
csplit: Stuart Kemp and David MacKenzie
|
||||
cut: David Ihnat, David MacKenzie, and Jim Meyering
|
||||
date: David MacKenzie
|
||||
dd: Paul Rubin, David MacKenzie, and Stuart Kemp
|
||||
df: Torbjorn Granlund, David MacKenzie, Larry McVoy, and Paul Eggert
|
||||
dircolors: H. Peter Anvin
|
||||
dirname: David MacKenzie and Jim Meyering
|
||||
du: Torbjorn Granlund, David MacKenzie, Larry McVoy, and Paul Eggert
|
||||
echo: FIXME unknown
|
||||
env: Richard Mlynarik and David MacKenzie
|
||||
expand: David MacKenzie
|
||||
expr: Mike Parker
|
||||
factor: Paul Rubin
|
||||
false: no one
|
||||
fmt: Ross Paterson
|
||||
fold: David MacKenzie
|
||||
head: David MacKenzie
|
||||
hostid: Jim Meyering
|
||||
hostname: Jim Meyering
|
||||
id: Arnold Robbins and David MacKenzie
|
||||
install: David MacKenzie
|
||||
join: Mike Haertel
|
||||
kill: Paul Eggert
|
||||
link: Michael Stone
|
||||
ln: Mike Parker and David MacKenzie
|
||||
logname: FIXME: unknown
|
||||
ls: Richard Stallman and David MacKenzie
|
||||
md5sum: Ulrich Drepper and Scott Miller
|
||||
mkdir: David MacKenzie
|
||||
mkfifo: David MacKenzie
|
||||
mknod: David MacKenzie
|
||||
mv: Mike Parker, David MacKenzie, and Jim Meyering
|
||||
nice: David MacKenzie
|
||||
nl: Scott Bartram and David MacKenzie
|
||||
od: Jim Meyering
|
||||
paste: David M. Ihnat and David MacKenzie
|
||||
pathchk: David MacKenzie and Jim Meyering
|
||||
pinky: Joseph Arceneaux, David MacKenzie, and Kaveh Ghazi
|
||||
pr: Pete TerMaat and Roland Huebner
|
||||
printenv: David MacKenzie and Richard Mlynarik
|
||||
printf: David MacKenzie
|
||||
ptx: François Pinard
|
||||
pwd: Jim Meyering
|
||||
rm: Paul Rubin, David MacKenzie, Richard Stallman, and Jim Meyering
|
||||
rmdir: David MacKenzie
|
||||
seq: Ulrich Drepper
|
||||
shred: Colin Plumb
|
||||
sleep: Jim Meyering and Paul Eggert
|
||||
sort: Mike Haertel and Paul Eggert
|
||||
split: Torbjorn Granlund and Richard M. Stallman
|
||||
stat: Michael Meskes
|
||||
stty: David MacKenzie
|
||||
su: David MacKenzie
|
||||
sum: Kayvan Aghaiepour and David MacKenzie
|
||||
sync: Jim Meyering
|
||||
tac: Jay Lepreau and David MacKenzie
|
||||
tail: Paul Rubin, David MacKenzie, Ian Lance Taylor, and Jim Meyering
|
||||
tee: Mike Parker, Richard M. Stallman, and David MacKenzie
|
||||
test: FIXME: ksb and mjb
|
||||
touch: Paul Rubin, Arnold Robbins, Jim Kingdon, David MacKenzie, and Randy Smith
|
||||
tr: Jim Meyering
|
||||
true: no one
|
||||
tsort: Mark Kettenis
|
||||
tty: David MacKenzie
|
||||
uname: David MacKenzie
|
||||
unexpand: David MacKenzie
|
||||
uniq: Richard Stallman and David MacKenzie
|
||||
unlink: Michael Stone
|
||||
uptime: Joseph Arceneaux, David MacKenzie, and Kaveh Ghazi
|
||||
users: Joseph Arceneaux and David MacKenzie
|
||||
wc: Paul Rubin and David MacKenzie
|
||||
who: Joseph Arceneaux, David MacKenzie, and Michael Stone
|
||||
whoami: Richard Mlynarik
|
||||
yes: David MacKenzie
|
||||
508
ChangeLog
Normal file
508
ChangeLog
Normal file
@@ -0,0 +1,508 @@
|
||||
2002-10-13 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* Version 4.5.3.
|
||||
|
||||
* src/du.c (usage): Tweak description of --dereference-args/-D.
|
||||
|
||||
* src/du.c (count_entry): Also save cwd when dereferencing (via
|
||||
--dereference-args, -D) a command-line argument.
|
||||
Reported by Michal Svec. Based on a patch by Andreas Schwab.
|
||||
|
||||
* src/Makefile.am (../AUTHORS): New target/rule.
|
||||
|
||||
2002-10-12 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* src/paste.c (paste_parallel): Declare local, `delims_saved', to be
|
||||
of type size_t, since that's the way it's used and avoids a warning.
|
||||
|
||||
* src/csplit.c (struct cstring) [len]: Declare to be unsigned int,
|
||||
since that's how it's always used and avoids a new warning from gcc.
|
||||
(read_input): Adapt to new safe_read ABI.
|
||||
|
||||
* src/cut.c (cut_fields): Add a temporary size_t variable, n_bytes,
|
||||
to avoid warnings.
|
||||
|
||||
* src/pinky.c (print_long_entry): fread returns size_t.
|
||||
Declare local `bytes' accordingly, to avoid warning.
|
||||
|
||||
tail -c +N would perform an extra read after encountering EOF
|
||||
[this change is analogous (bytes vs. lines) to the one of 2002-01-27]
|
||||
* src/tail.c (start_bytes): Detect EOF, inform caller.
|
||||
(tail_bytes): Upon EOF in start_bytes, return immediately.
|
||||
(file_lines): Reorganize to use memrchr rather than an explicit loop.
|
||||
Adapt to new safe_read ABI.
|
||||
|
||||
2002-10-11 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* tests/du/deref: New file/test, for the above fix.
|
||||
* tests/du/Makefile.am (TESTS): Add deref.
|
||||
|
||||
2002-10-10 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* tests/ln/Makefile.am (TESTS): Add target-1.
|
||||
* tests/ln/target-1: New file/test, for the fix on 2002-10-08.
|
||||
|
||||
2002-10-09 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* tests/cp/backup-is-src: Ensure that certain environment variables
|
||||
are not set (e.g., SIMPLA_BACKUP_SUFFIX). Reported by Duncan Roe.
|
||||
|
||||
* tests/tail-2/big-4gb: Mark this as an expensive test; it would
|
||||
consume 4GB of disk space on systems without support for sparse files.
|
||||
Fix a logic error that'd make it `cat err' even though dd didn't fail.
|
||||
|
||||
* src/dircolors.hin (.jar): Fix typo: s/;3$/;31/.
|
||||
Patch by steven@magelico.net, forwarded by Michael Stone.
|
||||
|
||||
* tests/ls/dired: Ensure that ls produces English messages.
|
||||
Patch by Alexey Vyskubov, forwarded by Michael Stone.
|
||||
|
||||
2002-10-08 Dmitry V. Levin <ldv@altlinux.org>
|
||||
|
||||
* src/ln.c (main): Fix target_directory parsing when n_files == 1.
|
||||
|
||||
2002-10-08 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* tests/tail-2/big-4gb: Use double quotes around diagnostic.
|
||||
Fix syntax in test: use =, not ==.
|
||||
Reported by Bob Proulx.
|
||||
Change all the rest like this: grep -lR "testing framework'" .\
|
||||
|xargs perl -pi -e 's/'\''(\$0: failure in testing framework)'\''/"$1"/'
|
||||
|
||||
* src/sum.c (sysv_sum_file): Adapt to new safe_read ABI.
|
||||
* src/tr.c (squeeze_filter, read_and_delete, read_and_xlate): Likewise.
|
||||
* src/tac.c (save_stdin, tac_stdin_to_mem): Likewise.
|
||||
* src/wc.c (wc): Likewise.
|
||||
|
||||
2002-10-07 Paul Eggert <eggert@twinsun.com>
|
||||
|
||||
* src/cat.c (cat):
|
||||
Don't advance the write pointer past the end of the write buffer.
|
||||
* src/sort.c (begfield, limfield): Likewise.
|
||||
|
||||
2002-10-07 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* src/cat.c (simple_cat, cat): Adapt to new safe_read ABI.
|
||||
* src/head.c (head_bytes, head_lines): Likewise.
|
||||
|
||||
2002-10-06 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* src/dd.c (scanargs): Ensure that specified block sizes (specified
|
||||
via ibs=N, obs=N, and bs=N) are no larger than SSIZE_MAX.
|
||||
(skip, dd_copy): Adapt to new safe_read ABI.
|
||||
|
||||
* Makefile.maint (signatures): Define.
|
||||
(%.sig): New rule.
|
||||
(announcement): Depend on $(signatures).
|
||||
|
||||
* Makefile.maint (announcement): Output all URLs for detached
|
||||
signatures, not just the last one from the previous loop.
|
||||
|
||||
2002-10-05 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* Version 4.5.2.
|
||||
|
||||
* src/remove.c (remove_entry) [ROOT_CAN_UNLINK_DIRS]: With `rm -i DIR',
|
||||
don't recurse into directory, DIR. Prompted by a report from
|
||||
Leonardo Milano.
|
||||
|
||||
* tests/rm/i-no-r: New file/test, for the above fix.
|
||||
* tests/rm/Makefile.am (TESTS): Add i-no-r.
|
||||
|
||||
* tests/tail-2/big-4gb: New file/test, for the fix of 2002-09-27.
|
||||
* tests/tail-2/Makefile.am (TESTS): Add big-4gb.
|
||||
|
||||
2002-10-03 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* src/rm.c (AUTHORS): Mark translatable string with `N_ (...)'.
|
||||
* src/df.c (AUTHORS): Likewise.
|
||||
* src/du.c (AUTHORS): Likewise.
|
||||
* src/tail.c (AUTHORS): Likewise.
|
||||
* src/touch.c (AUTHORS): Likewise.
|
||||
|
||||
2002-10-02 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* Makefile.am (SUBDIRS): Remove `old'.
|
||||
(EXTRA_DIST): List the files in old/.
|
||||
* configure.ac (AC_CONFIG_FILES): Remove old/* names.
|
||||
Suggestion from Akim Demaille.
|
||||
|
||||
2002-10-01 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* src/sys2.h (SSIZE_MAX): Define.
|
||||
|
||||
2002-09-30 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* src/csplit.c: Don't include stdlib.h here. It's already included
|
||||
via system.h.
|
||||
|
||||
2002-09-29 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* src/tr.c (find_bracketed_repeat): Rearrange pointer/integer
|
||||
expression to avoid bogus warning from gcc.
|
||||
|
||||
* src/cat.c (simple_cat): Use a temporary to avoid bogus warnings.
|
||||
(cat): Declare insize and outsize to be of type size_t, not int.
|
||||
Rearrange pointer/integer expressions to avoid bogus warnings.
|
||||
(main): Declare insize and outsize to be of type size_t, not int.
|
||||
|
||||
* src/tail.c (parse_options): Give a sensible diagnostic for
|
||||
an invalid byte or line count. Reported by Mikko Tuumanen.
|
||||
|
||||
* src/touch.c (main): Split a long line.
|
||||
|
||||
* tests/du/Makefile.am (TESTS): Add slink.
|
||||
* tests/du/slink: New test for system.h change of 2002-08-31.
|
||||
|
||||
In move mode, always first try to rename. Before, upon failure to
|
||||
rename a directory, this code would never attempt to rename any
|
||||
other file in that directory, but would thenceforth always copy.
|
||||
On some systems (e.g., NetApp's OnTap-6.4), renaming a directory
|
||||
may fail with EXDEV, yet renaming files within that directory to
|
||||
a newly-created destination directory succeeds.
|
||||
* src/copy.c (copy_internal): Remove local, move_mode;
|
||||
use x->move_mode instead. Based on a patch from Tom Haynes.
|
||||
|
||||
2002-09-28 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* src/split.c (FAIL_ONLY_ONE_WAY): New macro.
|
||||
Factor out some duplication.
|
||||
(main): Use it.
|
||||
[case 'a']: Use strtoul rather than strtol to avoid compiler warnings.
|
||||
|
||||
* src/sort.c (begfield, limfield): Rearrange comparisons to avoid
|
||||
compiler warnings.
|
||||
(fillbuf, keycompare): Cast literal `-1' to size_t in comparisons,
|
||||
to avoid compiler warnings.
|
||||
|
||||
* src/shred.c (dopass): Use a uintmax_t temporary to avoid bogus
|
||||
compiler warnings.
|
||||
|
||||
Fix things so `mkdir -p' can create very deep directories, e.g.,
|
||||
mkdir -p $(perl -e 'print "a/" x 40000') now works.
|
||||
* src/mkdir.c (main): For --parents (-p), call make_path with the
|
||||
entire directory name, so we don't ever require that file operations
|
||||
like stat or chmod be performed on the entire command line argument.
|
||||
* makepath.c (make_path): Restore umask *before* creating the final
|
||||
component.
|
||||
|
||||
2002-09-27 Andreas Schwab <schwab@suse.de>
|
||||
|
||||
* src/tail.c (tail_bytes): Change type of bytes_remaining to off_t
|
||||
to avoid overflow. Reported by Hans Lermen.
|
||||
|
||||
2002-09-26 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* src/install.c (get_ids): Use strtoul, not strtol. Remove some casts.
|
||||
|
||||
2002-09-25 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* src/test.c (eaccess): Change type of local `euid' from int to uid_t
|
||||
and add a cast, to avoid a warning about `signed and unsigned type in
|
||||
conditional expression'.
|
||||
|
||||
2002-09-22 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* src/rmdir.c: Include "dirname.h", for declaration of
|
||||
strip_trailing_slashes.
|
||||
|
||||
* src/stat.c (PRIdMAX, PRIuMAX): Remove definitions.
|
||||
Now they're defined through system.h.
|
||||
|
||||
* src/cp-hash.c, src/dd.c, src/df.c, src/du.c, src/ls.c,
|
||||
* src/stat.c, src/wc.c: Remove all inclusions of inttypes.h,
|
||||
since it's already included from sys2.h via system.h.
|
||||
|
||||
* Use automake-1.6f. Regenerate dependent files.
|
||||
|
||||
* src/Makefile.am (PERL): Remove duplicate definition.
|
||||
|
||||
fmt's -s, -t, -c options didn't work properly for long lines.
|
||||
Since get_line may end up calling put_paragraph (for long lines),
|
||||
be sure to set global, `other_indent', before it is used there.
|
||||
|
||||
* src/fmt.c (set_other_indent): New function, factored out of...
|
||||
(get_paragraph): ... here. Call it.
|
||||
(get_line): Call set_other_indent before calling flush_paragraph,
|
||||
which calls fmt_paragraph, which in turn calls put_paragraph,
|
||||
which uses other_indent.
|
||||
|
||||
* tests/fmt/Makefile.am (TESTS): Add long-line.
|
||||
* tests/fmt/long-line: New file/test, for the above fix.
|
||||
|
||||
2002-09-21 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* src/od.c: No longer include deprecated <values.h>.
|
||||
It was required solely for now-removed reference to BITSPERBYTE.
|
||||
* src/install.c: Likewise.
|
||||
Suggestion from Bruno Haible.
|
||||
|
||||
2002-09-06 Andreas Schwab <schwab@suse.de>
|
||||
|
||||
`rmdir -p dir-specified-with-trailing-slash/' would fail.
|
||||
* src/rmdir.c (remove_parents): Strip trailing slashes.
|
||||
|
||||
2002-09-20 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* tests/rmdir/t-slash: New file/test, for the above fix.
|
||||
* tests/rmdir/Makefile.am (TESTS): Add t-slash.
|
||||
|
||||
* Makefile.maint (announcement): Arrange to gpg-sign the message.
|
||||
Add a URL for each detached signature file.
|
||||
|
||||
2002-09-07 Bruno Haible <bruno@clisp.org>
|
||||
|
||||
* configure.ac: Add need-ngettext to AM_GNU_GETTEXT invocation.
|
||||
|
||||
2002-09-18 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
`od -t x8' used the wrong (`l'-prefixed) printf format.
|
||||
Likewise for the o8 and u8 formats.
|
||||
* src/od.c (ISPEC_TO_FORMAT): Define macro.
|
||||
(decode_one_format): Use PRIdMAX, PRIoMAX, etc. for LONG_LONG.
|
||||
Reported by Arun Sharma.
|
||||
|
||||
2002-09-17 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* src/sys2.h (PRIdMAX, PRIoMAX, PRIuMAX, PRIxMAX): Define if necessary.
|
||||
From gettext's intl/loadmsgcat.c.
|
||||
|
||||
* tests/od/x8: New file/test, for the above fix.
|
||||
* tests/od/Makefile.am (TESTS): Add x8.
|
||||
|
||||
2002-09-15 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* Use autoconf-2.54. Regenerate dependent files.
|
||||
|
||||
* src/csplit.c (get_format_width): Add cast to avoid
|
||||
warning about `signed and unsigned type in conditional expression'.
|
||||
|
||||
2002-09-14 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* src/who.c (print_user): Change type of local to size_t
|
||||
to avoid warnings about `comparison between signed and unsigned'.
|
||||
* src/ptx.c (generate_all_output): Likewise.
|
||||
|
||||
* src/dd.c (main, skip): Add casts to avoid warnings about
|
||||
`comparison between signed and unsigned'.
|
||||
|
||||
* src/id.c (print_full_info, print_group_list): Add casts to avoid
|
||||
warnings about `signed and unsigned type in conditional expression'.
|
||||
|
||||
* src/md5sum.c: Change type of global, digest_hex_bytes, to size_t
|
||||
to avoid warnings about `comparison between signed and unsigned'.
|
||||
(split_3): Change parameter names to be readable and add comment.
|
||||
Clean up the test for whether a line may be ignored.
|
||||
|
||||
2002-09-13 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* src/printf.c (main): Handle leading command line argument of `--'.
|
||||
Reported by Raul: DervishD <raul@pleyades.net>
|
||||
* tests/misc/printf: New file: test for the above.
|
||||
* tests/misc/Makefile.am (TESTS): Add printf.
|
||||
|
||||
* src/date.c (usage): Explain that %S's range of [0..60] is required --
|
||||
rather than 0..59 -- to accommodate the occasional positive leap second.
|
||||
Reported by Richard Neill.
|
||||
|
||||
2002-09-12 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* src/Makefile.am (nanosec_libs): Define.
|
||||
(sleep_LDADD, tail_LDADD): Use it here.
|
||||
|
||||
Factor nanosleep-related code into ../lib/xnanosleep.c.
|
||||
* src/sleep.c: Include xnanosleep.h.
|
||||
Factor out fenv.h-related code.
|
||||
(timespec_subtract): Remove function.
|
||||
(main): Remove code that deals with computing start and stop times
|
||||
as well as the loop around nanosleep. Now that's in xnanosleep.c.
|
||||
|
||||
Allow S (in --sleep-interval=S) to be a floating point value.
|
||||
* src/tail.c: Include xnanosleep.h and xstrtod.h.
|
||||
Move declaration of global variable, sleep_interval, to ...
|
||||
(main): ...here.
|
||||
(usage): Update description of --sleep-interval option.
|
||||
(tail_forever): New parameter, sleep_interval. Update caller.
|
||||
Use xnanosleep, rather than sleep.
|
||||
(parse_options): New parameter, sleep_interval. Update caller.
|
||||
Use xstrtod, now that we accept floating point values.
|
||||
Prompted by a patch from Augey Mikus.
|
||||
|
||||
2002-09-06 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* src/remove.c (prompt): Change comment to give a better note to
|
||||
translators. From Michael Piefel.
|
||||
|
||||
2002-09-02 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* README: A good problem report/patch includes diffs against
|
||||
the most recent test release.
|
||||
|
||||
* src/pathchk.c (NEED_PATHCONF_WRAPPER): Define.
|
||||
(pathconf_wrapper): Define only if NEED_PATHCONF_WRAPPER is set.
|
||||
|
||||
* src/kill.c (print_table_row): Use an unsigned type for widths
|
||||
to avoid warning about comparison between signed and unsigned.
|
||||
(list_signals): Likewise.
|
||||
|
||||
* src/od.c (skip): Add a cast to avoid warning about comparison
|
||||
between signed and unsigned.
|
||||
* src/install.c (get_ids): Likewise. Also rearrange range-checking
|
||||
comparisons to make them more readable.
|
||||
|
||||
2002-09-01 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* Version 4.5.1.
|
||||
|
||||
2002-08-31 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
Symlinks were always reported as using 0 blocks.
|
||||
* src/system.h (ST_NBLOCKS): Don't depend on file type.
|
||||
This reverts the change of 2000-01-30.
|
||||
Based on a report and patch from Neil Brown via Michael Stone.
|
||||
This fixes Debian Bug#156358.
|
||||
|
||||
* Most files: Change `exit (0)' to `exit (EXIT_SUCCESS)',
|
||||
`exit (1)' to `exit (EXIT_FAILURE)', and
|
||||
`usage (1)' to `usage (EXIT_FAILURE)'.
|
||||
|
||||
* chgrp.c, chmod.c, chown.c, chroot.c, cp.c, date.c, dd.c, du.c,
|
||||
* hostname.c, id.c, install.c, ln.c, mkdir.c, mkfifo.c, mknod.c,
|
||||
* nice.c, pinky.c, printf.c, pwd.c, shred.c, sleep.c, stty.c,
|
||||
* su.c, tac-pipe.c, tail.c, tee.c, touch.c, uname.c, uptime.c,
|
||||
* users.c, who.c: Change `error (1, ...' to `error (EXIT_FAILURE, ...'.
|
||||
But don't change `error (0, ...' to `error (EXIT_SUCCESS, ...', since
|
||||
error never exits successfully.
|
||||
|
||||
2002-08-29 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* src/remove.c (remove_cwd_entries): Use closedir (not CLOSEDIR)
|
||||
when ignoring any return value.
|
||||
|
||||
* src/remove.c (remove_cwd_entries): Detect and diagnose readdir
|
||||
failures. On some systems (at least EMC Celerra and Solaris5.8),
|
||||
this appears to be necessary.
|
||||
(is_empty_dir): Likewise. Also, always close directory handle.
|
||||
* src/ls.c (print_dir): Likewise.
|
||||
(print_dir): Rename local variable: reading -> dirp.
|
||||
Reported by Mike Coleman.
|
||||
|
||||
2002-08-28 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* src/remove.c (remove_cwd_entries): Use CLOSEDIR, not closedir.
|
||||
Give a diagnostic and fail if closedir fails.
|
||||
|
||||
2002-08-26 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* Makefile.am (THANKS-to-translators): New rule.
|
||||
(EXTRA_DIST): Add both THANKS-to-translators and THANKStt.in.
|
||||
* THANKStt.in: New file.
|
||||
|
||||
* src/cat.c (close_stdout_wrapper): New, kludgey, function and
|
||||
file-scoped global.
|
||||
(main): Register it with atexit.
|
||||
Close STDOUT_FILENO, to avoid a problem when writing to
|
||||
/dev/audio on at least Solaris 2.7 and 2.8 systems.
|
||||
Reported by Shing-Shong Shei.
|
||||
|
||||
2002-08-25 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* src/cat.c (main): Close STDIN_FILENO rather than a literal `0'.
|
||||
* src/tac.c (main): Likewise.
|
||||
* src/tail.c (main): Likewise.
|
||||
* src/tee.c (main): Likewise.
|
||||
* src/tr.c (main): Likewise.
|
||||
* src/wc.c (main): Likewise.
|
||||
|
||||
2002-08-20 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* tests/mv/setup: Rewrite not to use `: ${VAR=not_set}' paradigm.
|
||||
|
||||
2002-08-10 Paul Eggert <eggert@twinsun.com>
|
||||
|
||||
* src/nohup.sh: Don't use "exec --"; it's not portable and
|
||||
shouldn't be needed.
|
||||
|
||||
2002-08-09 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* src/pr.c (main): Don't ignore -COLUMN if it's the last option.
|
||||
(usage): Clarify help text for the -COLUMN option.
|
||||
Patch by Padraig Brady.
|
||||
* tests/pr/Test.pm [col-last]: New test for the above.
|
||||
|
||||
* configure.ac: Start with version 4.5.1, chosen so that it's larger
|
||||
than the latest version numbers of the component packages.
|
||||
|
||||
* man/Makefile.am (check-x-vs-1): Set and export PATH so we use
|
||||
programs in ../src.
|
||||
|
||||
2002-08-08 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* src/date.c: Guard inclusion of <langinfo.h> with
|
||||
`#if HAVE_LANGINFO_CODESET', not `#if HAVE_LANGINFO_H'.
|
||||
* src/sort.c: Likewise.
|
||||
Patch by GOTO Masanori.
|
||||
|
||||
2002-08-05 Paul Eggert <eggert@twinsun.com>
|
||||
|
||||
Fix some minor time-related bugs with POSIX time arguments.
|
||||
Some valid time stamps were being rejected (notably -1, and
|
||||
time stamps before 1900 on 64-bit hosts). And some invalid
|
||||
time stamps were being accepted, e.g. September 31.
|
||||
|
||||
* src/date.c (main): Adjust to posixtime signature change.
|
||||
* src/touch.c (main): Likewise. Remove unnecessary initialization.
|
||||
Use localtime, not posixtm, to warn about obsolete "touch".
|
||||
|
||||
2002-08-05 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* tests/misc/Makefile.am (TESTS): Add nice and pathchk1.
|
||||
|
||||
2002-08-04 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* src/Makefile.am (check-README): New target/rule.
|
||||
(check): Depend on it.
|
||||
|
||||
* configure.ac (AC_CONFIG_FILES): Add old/Makefile and old/*/Makefile.
|
||||
|
||||
2002-08-03 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* Makefile.am (SUBDIRS): Add old.
|
||||
* old/: New directory, containing legacy ChangeLog* and NEWS files
|
||||
from the fileutils, sh-utils, and textutils packages.
|
||||
|
||||
* src/Makefile.am (AM_INSTALLCHECK_STD_OPTIONS_EXEMPT): Set to false.
|
||||
|
||||
2002-08-02 Paul Eggert <eggert@twinsun.com>
|
||||
|
||||
* NEWS, doc/coreutils.texi: uniq now obeys LC_COLLATE.
|
||||
|
||||
* src/uniq.c: Include hard-locale.h, xmemcoll.h.
|
||||
(hard_LC_COLLATE): New var.
|
||||
(different): Args are now char *, not const char *.
|
||||
Use xmemcoll instead of memcmp to compare lines, so that
|
||||
LC_COLLATE has effect. However, use memcmp if it is an
|
||||
easy locale.
|
||||
(check_file): Do not include newline in comparison, so that
|
||||
xmemcoll has a byte to stomp on temporarily.
|
||||
(main): Set hard_LC_COLLATE.
|
||||
|
||||
2002-07-29 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* Makefile.am (SUBDIRS): Remove djgpp, for now.
|
||||
|
||||
2002-07-08 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* src/Makefile.am (uninstall-local): Search for @GNU_PACKAGE@,
|
||||
rather than the hard-coded `sh-utils'.
|
||||
|
||||
2002-07-01 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* configure.ac: Merge the three files from fileutils,
|
||||
textutils, and sh-utils.
|
||||
* Makefile.am: Likewise.
|
||||
* src/Makefile.am: Likewise.
|
||||
|
||||
Local Variables:
|
||||
version-control: never
|
||||
End:
|
||||
25
INSTALL
25
INSTALL
@@ -1,3 +1,9 @@
|
||||
Copyright 1994, 1995, 1996, 1999, 2000, 2001 Free Software Foundation,
|
||||
Inc.
|
||||
|
||||
This file is free documentation; the Free Software Foundation gives
|
||||
unlimited permission to copy, distribute and modify it.
|
||||
|
||||
Basic Installation
|
||||
==================
|
||||
|
||||
@@ -70,7 +76,7 @@ them in the environment. You can do that on the command line like this:
|
||||
|
||||
./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
|
||||
|
||||
*Note Environment Variables::, for more details.
|
||||
*Note Defining Variables::, for more details.
|
||||
|
||||
Compiling For Multiple Architectures
|
||||
====================================
|
||||
@@ -84,10 +90,10 @@ the `configure' script. `configure' automatically checks for the
|
||||
source code in the directory that `configure' is in and in `..'.
|
||||
|
||||
If you have to use a `make' that does not support the `VPATH'
|
||||
variable, you have to compile the package for one architecture at a time
|
||||
in the source code directory. After you have installed the package for
|
||||
one architecture, use `make distclean' before reconfiguring for another
|
||||
architecture.
|
||||
variable, you have to compile the package for one architecture at a
|
||||
time in the source code directory. After you have installed the
|
||||
package for one architecture, use `make distclean' before reconfiguring
|
||||
for another architecture.
|
||||
|
||||
Installation Names
|
||||
==================
|
||||
@@ -141,8 +147,7 @@ type, such as `sun4', or a canonical name which has the form:
|
||||
|
||||
where SYSTEM can have one of these forms:
|
||||
|
||||
OS
|
||||
KERNEL-OS
|
||||
OS KERNEL-OS
|
||||
|
||||
See the file `config.sub' for the possible values of each field. If
|
||||
`config.sub' isn't included in this package, then this package doesn't
|
||||
@@ -172,11 +177,11 @@ default values for variables like `CC', `cache_file', and `prefix'.
|
||||
`CONFIG_SITE' environment variable to the location of the site script.
|
||||
A warning: not all `configure' scripts look for a site script.
|
||||
|
||||
Environment Variables
|
||||
=====================
|
||||
Defining Variables
|
||||
==================
|
||||
|
||||
Variables not defined in a site shell script can be set in the
|
||||
environment passed to configure. However, some packages may run
|
||||
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
|
||||
them in the `configure' command line, using `VAR=value'. For example:
|
||||
|
||||
47
Makefile.am
Normal file
47
Makefile.am
Normal file
@@ -0,0 +1,47 @@
|
||||
## Process this file with automake to produce Makefile.in -*-Makefile-*-
|
||||
|
||||
SUBDIRS = lib src doc man m4 po tests
|
||||
EXTRA_DIST = Makefile.cfg Makefile.maint GNUmakefile \
|
||||
.kludge-stamp .prev-version THANKS-to-translators THANKStt.in \
|
||||
old/fileutils/ChangeLog \
|
||||
old/fileutils/ChangeLog-1997 \
|
||||
old/sh-utils/ChangeLog \
|
||||
old/sh-utils/ChangeLog.0 \
|
||||
old/textutils/ChangeLog \
|
||||
old/fileutils/NEWS \
|
||||
old/sh-utils/NEWS \
|
||||
old/textutils/NEWS
|
||||
|
||||
install-root:
|
||||
cd src && $(MAKE) $@
|
||||
|
||||
ACLOCAL_AMFLAGS = -I m4
|
||||
|
||||
# Some tests always need root privileges, others need them only sometimes.
|
||||
check-root:
|
||||
cd tests && $(MAKE) $@
|
||||
|
||||
distcheck-hook:
|
||||
$(MAKE) my-distcheck
|
||||
|
||||
# Just prior to distribution, ...
|
||||
# transform the automake-generated rule that runs `rm -f rm'.
|
||||
# On some systems, that command would fail with a diagnostic like
|
||||
# `rm: cannot unlink `rm': Text file busy' when `.' appears so early
|
||||
# in the shell's search path that running `rm' would run the `rm'
|
||||
# executable in the current directory.
|
||||
# Similarly, adjust the clean-binPROGRAMS rule.
|
||||
|
||||
rm_subst = \
|
||||
s!(rm -f (rm|\$$\(bin_PROGRAMS\)))$$!$$1 > /dev/null 2>&1 || /bin/$$1!
|
||||
.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; \
|
||||
for lang in `cat po/LINGUAS`; do \
|
||||
echo http://www.iro.umontreal.ca/contrib/po/HTML/team-$$lang.html; \
|
||||
done; \
|
||||
) > $@-tmp && mv $@-tmp $@
|
||||
@@ -7,9 +7,9 @@ url_dir_list = \
|
||||
|
||||
# Files that `make wget-update' should update.
|
||||
wget_files = \
|
||||
$(srcdir)/config.guess \
|
||||
$(srcdir)/config.sub \
|
||||
$(srcdir)/doc/texinfo.tex
|
||||
$(srcdir)/config/config.guess \
|
||||
$(srcdir)/config/config.sub \
|
||||
$(srcdir)/config/texinfo.tex
|
||||
|
||||
# $(srcdir)/src/ansi2knr.c
|
||||
|
||||
|
||||
603
Makefile.in
Normal file
603
Makefile.in
Normal file
@@ -0,0 +1,603 @@
|
||||
# Makefile.in generated by automake 1.7 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
|
||||
# Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
srcdir = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
VPATH = @srcdir@
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
top_builddir = .
|
||||
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
INSTALL = @INSTALL@
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
host_triplet = @host@
|
||||
ACLOCAL = @ACLOCAL@
|
||||
ALLOCA = @ALLOCA@
|
||||
AMDEP_FALSE = @AMDEP_FALSE@
|
||||
AMDEP_TRUE = @AMDEP_TRUE@
|
||||
AMTAR = @AMTAR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DF_PROG = @DF_PROG@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
FESETROUND_LIBM = @FESETROUND_LIBM@
|
||||
GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
|
||||
GLIBC21 = @GLIBC21@
|
||||
GMSGFMT = @GMSGFMT@
|
||||
GNU_PACKAGE = @GNU_PACKAGE@
|
||||
HELP2MAN = @HELP2MAN@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
INTLLIBS = @INTLLIBS@
|
||||
KMEM_GROUP = @KMEM_GROUP@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBICONV = @LIBICONV@
|
||||
LIBINTL = @LIBINTL@
|
||||
LIBS = @LIBS@
|
||||
LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
|
||||
LIB_CRYPT = @LIB_CRYPT@
|
||||
LIB_NANOSLEEP = @LIB_NANOSLEEP@
|
||||
LTLIBICONV = @LTLIBICONV@
|
||||
LTLIBINTL = @LTLIBINTL@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MAN = @MAN@
|
||||
MKINSTALLDIRS = @MKINSTALLDIRS@
|
||||
MSGFMT = @MSGFMT@
|
||||
MSGMERGE = @MSGMERGE@
|
||||
NEED_SETGID = @NEED_SETGID@
|
||||
OBJEXT = @OBJEXT@
|
||||
OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
|
||||
OPTIONAL_BIN_ZCRIPTS = @OPTIONAL_BIN_ZCRIPTS@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PERL = @PERL@
|
||||
POSUB = @POSUB@
|
||||
POW_LIB = @POW_LIB@
|
||||
RANLIB = @RANLIB@
|
||||
SEQ_LIBM = @SEQ_LIBM@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
SQRT_LIBM = @SQRT_LIBM@
|
||||
STRIP = @STRIP@
|
||||
U = @U@
|
||||
USE_NLS = @USE_NLS@
|
||||
VERSION = @VERSION@
|
||||
XGETTEXT = @XGETTEXT@
|
||||
YACC = @YACC@
|
||||
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@
|
||||
am__quote = @am__quote@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
datadir = @datadir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
oldincludedir = @oldincludedir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
|
||||
SUBDIRS = lib src doc man m4 po tests
|
||||
EXTRA_DIST = Makefile.cfg Makefile.maint GNUmakefile \
|
||||
.kludge-stamp .prev-version THANKS-to-translators THANKStt.in \
|
||||
old/fileutils/ChangeLog \
|
||||
old/fileutils/ChangeLog-1997 \
|
||||
old/sh-utils/ChangeLog \
|
||||
old/sh-utils/ChangeLog.0 \
|
||||
old/textutils/ChangeLog \
|
||||
old/fileutils/NEWS \
|
||||
old/sh-utils/NEWS \
|
||||
old/textutils/NEWS
|
||||
|
||||
|
||||
ACLOCAL_AMFLAGS = -I m4
|
||||
|
||||
|
||||
# Just prior to distribution, ...
|
||||
# transform the automake-generated rule that runs `rm -f rm'.
|
||||
# On some systems, that command would fail with a diagnostic like
|
||||
# `rm: cannot unlink `rm': Text file busy' when `.' appears so early
|
||||
# in the shell's search path that running `rm' would run the `rm'
|
||||
# executable in the current directory.
|
||||
# Similarly, adjust the clean-binPROGRAMS rule.
|
||||
rm_subst = \
|
||||
s!(rm -f (rm|\$$\(bin_PROGRAMS\)))$$!$$1 > /dev/null 2>&1 || /bin/$$1!
|
||||
|
||||
subdir = .
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
|
||||
CONFIG_HEADER = config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
DIST_SOURCES =
|
||||
|
||||
RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \
|
||||
ps-recursive install-info-recursive uninstall-info-recursive \
|
||||
all-recursive install-data-recursive install-exec-recursive \
|
||||
installdirs-recursive install-recursive uninstall-recursive \
|
||||
check-recursive installcheck-recursive
|
||||
DIST_COMMON = README ABOUT-NLS AUTHORS COPYING ChangeLog INSTALL \
|
||||
Makefile.am Makefile.in NEWS THANKS TODO aclocal.m4 config.hin \
|
||||
config/ChangeLog config/config.guess config/config.rpath \
|
||||
config/config.sub config/depcomp config/install-sh \
|
||||
config/mdate-sh config/missing config/mkinstalldirs \
|
||||
config/texinfo.tex configure configure.ac
|
||||
DIST_SUBDIRS = $(SUBDIRS)
|
||||
all: config.h
|
||||
$(MAKE) $(AM_MAKEFLAGS) all-recursive
|
||||
|
||||
.SUFFIXES:
|
||||
|
||||
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
|
||||
configure.lineno
|
||||
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4)
|
||||
cd $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnits Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)
|
||||
|
||||
$(top_builddir)/config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
$(SHELL) ./config.status --recheck
|
||||
$(srcdir)/configure: $(srcdir)/configure.ac $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES)
|
||||
cd $(srcdir) && $(AUTOCONF)
|
||||
|
||||
$(ACLOCAL_M4): configure.ac m4/acl.m4 m4/afs.m4 m4/assert.m4 m4/bison.m4 m4/boottime.m4 m4/c-stack.m4 m4/check-decl.m4 m4/chown.m4 m4/codeset.m4 m4/d-ino.m4 m4/d-type.m4 m4/dirfd.m4 m4/dos.m4 m4/error.m4 m4/fpending.m4 m4/fstypename.m4 m4/fsusage.m4 m4/ftruncate.m4 m4/getcwd.m4 m4/getgroups.m4 m4/getline.m4 m4/gettext.m4 m4/gettimeofday.m4 m4/glibc.m4 m4/glibc21.m4 m4/group-member.m4 m4/host-os.m4 m4/iconv.m4 m4/intdiv0.m4 m4/inttypes-pri.m4 m4/inttypes.m4 m4/isc-posix.m4 m4/jm-glibc-io.m4 m4/jm-macros.m4 m4/jm-mktime.m4 m4/jm-winsz1.m4 m4/jm-winsz2.m4 m4/lchown.m4 m4/lcmessage.m4 m4/lib-check.m4 m4/lib-ld.m4 m4/lib-link.m4 m4/lib-prefix.m4 m4/link-follow.m4 m4/longlong.m4 m4/ls-mntd-fs.m4 m4/lstat.m4 m4/mbrtowc.m4 m4/mbswidth.m4 m4/memcmp.m4 m4/mkdir-slash.m4 m4/mkstemp.m4 m4/nanosleep.m4 m4/perl.m4 m4/prereq.m4 m4/progtest.m4 m4/putenv.m4 m4/regex.m4 m4/rename.m4 m4/rmdir-errno.m4 m4/search-libs.m4 m4/st_dm_mode.m4 m4/st_mtim.m4 m4/stat.m4 m4/stdbool.m4 m4/strftime.m4 m4/timespec.m4 m4/unlink-busy.m4 m4/uptime.m4 m4/utimbuf.m4 m4/utime.m4 m4/utimes.m4 m4/xstrtoimax.m4 m4/xstrtoumax.m4
|
||||
cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
|
||||
|
||||
config.h: stamp-h1
|
||||
@if test ! -f $@; then \
|
||||
rm -f stamp-h1; \
|
||||
$(MAKE) stamp-h1; \
|
||||
else :; fi
|
||||
|
||||
stamp-h1: $(srcdir)/config.hin $(top_builddir)/config.status
|
||||
@rm -f stamp-h1
|
||||
cd $(top_builddir) && $(SHELL) ./config.status config.h
|
||||
|
||||
$(srcdir)/config.hin: $(top_srcdir)/configure.ac $(ACLOCAL_M4)
|
||||
cd $(top_srcdir) && $(AUTOHEADER)
|
||||
touch $(srcdir)/config.hin
|
||||
|
||||
distclean-hdr:
|
||||
-rm -f config.h stamp-h1
|
||||
uninstall-info-am:
|
||||
|
||||
# This directory's subdirectories are mostly independent; you can cd
|
||||
# into them and run `make' without going through this Makefile.
|
||||
# To change the values of `make' variables: instead of editing Makefiles,
|
||||
# (1) if the variable is set in `config.status', edit `config.status'
|
||||
# (which will cause the Makefiles to be regenerated when you run `make');
|
||||
# (2) otherwise, pass the desired values on the `make' command line.
|
||||
$(RECURSIVE_TARGETS):
|
||||
@set fnord $$MAKEFLAGS; amf=$$2; \
|
||||
dot_seen=no; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
dot_seen=yes; \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
|
||||
done; \
|
||||
if test "$$dot_seen" = "no"; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
|
||||
fi; test -z "$$fail"
|
||||
|
||||
mostlyclean-recursive clean-recursive distclean-recursive \
|
||||
maintainer-clean-recursive:
|
||||
@set fnord $$MAKEFLAGS; amf=$$2; \
|
||||
dot_seen=no; \
|
||||
case "$@" in \
|
||||
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
|
||||
*) list='$(SUBDIRS)' ;; \
|
||||
esac; \
|
||||
rev=''; for subdir in $$list; do \
|
||||
if test "$$subdir" = "."; then :; else \
|
||||
rev="$$subdir $$rev"; \
|
||||
fi; \
|
||||
done; \
|
||||
rev="$$rev ."; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
for subdir in $$rev; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
|
||||
done && test -z "$$fail"
|
||||
tags-recursive:
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
|
||||
done
|
||||
ctags-recursive:
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
|
||||
done
|
||||
|
||||
ETAGS = etags
|
||||
ETAGSFLAGS =
|
||||
|
||||
CTAGS = ctags
|
||||
CTAGSFLAGS =
|
||||
|
||||
tags: TAGS
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
mkid -fID $$unique
|
||||
|
||||
TAGS: tags-recursive $(HEADERS) $(SOURCES) config.hin $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \
|
||||
fi; \
|
||||
done; \
|
||||
list='$(SOURCES) $(HEADERS) config.hin $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
test -z "$(ETAGS_ARGS)$$tags$$unique" \
|
||||
|| $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$tags $$unique
|
||||
|
||||
ctags: CTAGS
|
||||
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.hin $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
list='$(SOURCES) $(HEADERS) config.hin $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$tags $$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& cd $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) $$here
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
|
||||
top_distdir = .
|
||||
distdir = $(PACKAGE)-$(VERSION)
|
||||
|
||||
am__remove_distdir = \
|
||||
{ test ! -d $(distdir) \
|
||||
|| { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
|
||||
&& rm -fr $(distdir); }; }
|
||||
|
||||
GZIP_ENV = --best
|
||||
distuninstallcheck_listfiles = find . -type f -print
|
||||
distcleancheck_listfiles = find . -type f -print
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@case `sed 15q $(srcdir)/NEWS` in \
|
||||
*"$(VERSION)"*) : ;; \
|
||||
*) \
|
||||
echo "NEWS not updated; not releasing" 1>&2; \
|
||||
exit 1;; \
|
||||
esac
|
||||
$(am__remove_distdir)
|
||||
mkdir $(distdir)
|
||||
$(mkinstalldirs) $(distdir)/config $(distdir)/old/fileutils $(distdir)/old/sh-utils $(distdir)/old/textutils $(distdir)/po
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
||||
list='$(DISTFILES)'; for file in $$list; do \
|
||||
case $$file in \
|
||||
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
esac; \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
|
||||
dir="/$$dir"; \
|
||||
$(mkinstalldirs) "$(distdir)$$dir"; \
|
||||
else \
|
||||
dir=''; \
|
||||
fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
||||
fi; \
|
||||
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
||||
else \
|
||||
test -f $(distdir)/$$file \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
test -d $(distdir)/$$subdir \
|
||||
|| mkdir $(distdir)/$$subdir \
|
||||
|| exit 1; \
|
||||
(cd $$subdir && \
|
||||
$(MAKE) $(AM_MAKEFLAGS) \
|
||||
top_distdir="$(top_distdir)" \
|
||||
distdir=../$(distdir)/$$subdir \
|
||||
distdir) \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
-find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
|
||||
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
|
||||
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
|
||||
! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \
|
||||
|| chmod -R a+r $(distdir)
|
||||
dist-gzip: distdir
|
||||
$(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
|
||||
$(am__remove_distdir)
|
||||
|
||||
dist-bzip2: distdir
|
||||
$(AMTAR) chof - $(distdir) | bzip2 -9 -c >$(distdir).tar.bz2
|
||||
$(am__remove_distdir)
|
||||
|
||||
dist dist-all: distdir
|
||||
$(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
|
||||
$(AMTAR) chof - $(distdir) | bzip2 -9 -c >$(distdir).tar.bz2
|
||||
$(am__remove_distdir)
|
||||
|
||||
# This target untars the dist file and tries a VPATH configuration. Then
|
||||
# it guarantees that the distribution is self-contained by making another
|
||||
# tarfile.
|
||||
distcheck: dist
|
||||
$(am__remove_distdir)
|
||||
GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(AMTAR) xf -
|
||||
chmod -R a-w $(distdir); chmod a+w $(distdir)
|
||||
mkdir $(distdir)/=build
|
||||
mkdir $(distdir)/=inst
|
||||
chmod a-w $(distdir)
|
||||
dc_install_base=`$(am__cd) $(distdir)/=inst && pwd` \
|
||||
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
|
||||
&& $(mkinstalldirs) $$dc_destdir \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) distcheck-hook \
|
||||
&& cd $(distdir)/=build \
|
||||
&& ../configure --srcdir=.. --prefix="$$dc_install_base" \
|
||||
--with-included-gettext \
|
||||
$(DISTCHECK_CONFIGURE_FLAGS) \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) check \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) install \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) uninstall \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
|
||||
distuninstallcheck \
|
||||
&& chmod -R a-w "$$dc_install_base" \
|
||||
&& ({ $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
|
||||
distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
|
||||
} || { rm -rf "$$dc_destdir"; exit 1; }) \
|
||||
&& rm -rf "$$dc_destdir" \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) dist-gzip \
|
||||
&& rm -f $(distdir).tar.gz \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck
|
||||
$(am__remove_distdir)
|
||||
@echo "$(distdir).tar.gz is ready for distribution" | \
|
||||
sed 'h;s/./=/g;p;x;p;x'
|
||||
distuninstallcheck:
|
||||
cd $(distuninstallcheck_dir) \
|
||||
&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
|
||||
|| { echo "ERROR: files left after uninstall:" ; \
|
||||
if test -n "$(DESTDIR)"; then \
|
||||
echo " (check DESTDIR support)"; \
|
||||
fi ; \
|
||||
$(distuninstallcheck_listfiles) ; \
|
||||
exit 1; } >&2
|
||||
distcleancheck: distclean
|
||||
if test '$(srcdir)' = . ; then \
|
||||
echo "ERROR: distcleancheck can only run from a VPATH build" ; \
|
||||
exit 1 ; \
|
||||
fi
|
||||
test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
|
||||
|| { echo "ERROR: files left in build directory after distclean:" ; \
|
||||
$(distcleancheck_listfiles) ; \
|
||||
exit 1; } >&2
|
||||
check-am: all-am
|
||||
check: check-recursive
|
||||
all-am: Makefile config.h
|
||||
installdirs: installdirs-recursive
|
||||
installdirs-am:
|
||||
|
||||
install: install-recursive
|
||||
install-exec: install-exec-recursive
|
||||
install-data: install-data-recursive
|
||||
uninstall: uninstall-recursive
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-recursive
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-rm -f Makefile $(CONFIG_CLEAN_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-recursive
|
||||
|
||||
clean-am: clean-generic mostlyclean-am
|
||||
|
||||
distclean: distclean-recursive
|
||||
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
||||
distclean-am: clean-am distclean-generic distclean-hdr distclean-tags
|
||||
|
||||
dvi: dvi-recursive
|
||||
|
||||
dvi-am:
|
||||
|
||||
info: info-recursive
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-info: install-info-recursive
|
||||
|
||||
install-man:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-recursive
|
||||
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
||||
-rm -rf autom4te.cache
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-recursive
|
||||
|
||||
mostlyclean-am: mostlyclean-generic
|
||||
|
||||
pdf: pdf-recursive
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-recursive
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am: uninstall-info-am
|
||||
|
||||
uninstall-info: uninstall-info-recursive
|
||||
|
||||
.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \
|
||||
clean-generic clean-recursive ctags ctags-recursive dist \
|
||||
dist-all dist-bzip2 dist-gzip distcheck distclean \
|
||||
distclean-generic distclean-hdr distclean-recursive \
|
||||
distclean-tags distcleancheck distdir distuninstallcheck dvi \
|
||||
dvi-am dvi-recursive info info-am info-recursive install \
|
||||
install-am install-data install-data-am install-data-recursive \
|
||||
install-exec install-exec-am install-exec-recursive \
|
||||
install-info install-info-am install-info-recursive install-man \
|
||||
install-recursive install-strip installcheck installcheck-am \
|
||||
installdirs installdirs-am installdirs-recursive \
|
||||
maintainer-clean maintainer-clean-generic \
|
||||
maintainer-clean-recursive mostlyclean mostlyclean-generic \
|
||||
mostlyclean-recursive pdf pdf-am pdf-recursive ps ps-am \
|
||||
ps-recursive tags tags-recursive uninstall uninstall-am \
|
||||
uninstall-info-am uninstall-info-recursive uninstall-recursive
|
||||
|
||||
|
||||
install-root:
|
||||
cd src && $(MAKE) $@
|
||||
|
||||
# Some tests always need root privileges, others need them only sometimes.
|
||||
check-root:
|
||||
cd tests && $(MAKE) $@
|
||||
|
||||
distcheck-hook:
|
||||
$(MAKE) my-distcheck
|
||||
.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; \
|
||||
for lang in `cat po/LINGUAS`; do \
|
||||
echo http://www.iro.umontreal.ca/contrib/po/HTML/team-$$lang.html; \
|
||||
done; \
|
||||
) > $@-tmp && mv $@-tmp $@
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
||||
@@ -2,7 +2,7 @@
|
||||
# This Makefile fragment is shared between fileutils, sh-utils, textutils,
|
||||
# CPPI, Bison, and Autoconf.
|
||||
|
||||
## Copyright 2001 Free Software Foundation, Inc.
|
||||
## Copyright (C) 2001-2002 Free Software Foundation, Inc.
|
||||
##
|
||||
## This program is free software; you can redistribute it and/or modify
|
||||
## it under the terms of the GNU General Public License as published by
|
||||
@@ -53,9 +53,35 @@ release_archive_dir ?= ../release
|
||||
# Checks that don't require cvs.
|
||||
# Run `changelog-check' last, as previous test may reveal problems requiring
|
||||
# new ChangeLog entries.
|
||||
local-check: po-check copyright-check writable-files \
|
||||
m4-check author_mark_check \
|
||||
changelog-check
|
||||
local-check = \
|
||||
po-check copyright-check writable-files m4-check author_mark_check \
|
||||
changelog-check strftime-check header-check
|
||||
.PHONY: $(local-check)
|
||||
|
||||
# Make sure C source files in src/ don't include xalloc.h directly,
|
||||
# since they all already include it via sys2.h.
|
||||
# It's not a big deal -- just aesthetics.
|
||||
header-check:
|
||||
if test -f $(srcdir)/src/sys2.h; then \
|
||||
if grep 'xalloc\.h' $(srcdir)/src/*.c; then \
|
||||
exit 1; \
|
||||
fi; \
|
||||
fi
|
||||
|
||||
# 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.
|
||||
extract_char = sed 's/^[^%][^%]*%\(.\).*/\1/'
|
||||
strftime-check:
|
||||
if test -f $(srcdir)/src/date.c; then \
|
||||
grep '^ %. ' $(srcdir)/src/date.c | sort \
|
||||
| $(extract_char) > $@-src; \
|
||||
{ echo N; \
|
||||
info libc date calendar format | grep '^ `%.'\' \
|
||||
| $(extract_char); } | sort > $@-info; \
|
||||
diff -u $@-src $@-info || exit 1; \
|
||||
rm -f $@-src $@-info; \
|
||||
fi
|
||||
|
||||
changelog-check:
|
||||
if head ChangeLog | grep 'Version $(VERSION)' >/dev/null; then \
|
||||
@@ -139,7 +165,7 @@ maintainer-distcheck: changelog-check
|
||||
# Tag before making distribution. Also, don't make a distribution if
|
||||
# checks fail. Also, make sure the NEWS file is up-to-date.
|
||||
# FIXME: use dist-hook/my-dist like distcheck-hook/my-distcheck.
|
||||
cvs-dist: local-check cvs-check maintainer-distcheck
|
||||
cvs-dist: $(local-check) cvs-check maintainer-distcheck
|
||||
$(CVS) update po
|
||||
$(CVS) tag -c $(this-cvs-tag)
|
||||
$(MAKE) dist
|
||||
@@ -158,7 +184,7 @@ null_AM_MAKEFLAGS = \
|
||||
# and building with CFLAGS='-Wformat -Werror' causes any format warning to be
|
||||
# treated as a failure.
|
||||
t=./=test
|
||||
my-distcheck: local-check
|
||||
my-distcheck: $(local-check)
|
||||
-rm -rf $(t)
|
||||
mkdir $(t)
|
||||
GZIP=$(GZIP_ENV) $(AMTAR) -C $(t) -zxf $(distdir).tar.gz
|
||||
@@ -183,9 +209,9 @@ 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/\([Mk]\).*/ \1B/')
|
||||
bz2-size = $(shell du --human $(my_distdir).tar.bz2|sed 's/\([Mk]\).*/ \1B/')
|
||||
xd-size = $(shell du --human $(xd-delta)|sed 's/\([Mk]\).*/ \1B/')
|
||||
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-$$$$; \
|
||||
@@ -199,18 +225,19 @@ rel-check:
|
||||
prev-tgz = $(PACKAGE)-$(PREV_VERSION).tar.gz
|
||||
xd-delta = $(PACKAGE)-$(PREV_VERSION)-$(VERSION).xdelta
|
||||
|
||||
GZIP = gzip
|
||||
BZIP2 = bzip2
|
||||
$(my_distdir).tar.bz2: $(my_distdir).tar.gz
|
||||
$(GZIP) -dc $< > $(my_distdir).tar
|
||||
rm -f $@
|
||||
$(BZIP2) -9 $(my_distdir).tar
|
||||
news-r1 = /^[^ ].*$(THIS_VERSION_REGEXP)[]:]/
|
||||
news-r2 = /^[^ ].*$(PREV_VERSION_REGEXP)[]:]/
|
||||
|
||||
signatures = $(distdir).tar.bz2.sig $(distdir).tar.gz.sig
|
||||
%.sig: %
|
||||
gpg --detach-sign $<
|
||||
|
||||
rel-files = $(xd-delta) $(distdir).tar.bz2 $(distdir).tar.gz
|
||||
announcement: NEWS ChangeLog $(rel-files)
|
||||
announcement: NEWS ChangeLog $(rel-files) $(signatures)
|
||||
@( \
|
||||
echo Subject: $(my_distdir) released; \
|
||||
echo; \
|
||||
echo '<#secure method=pgpmime mode=sign>'; \
|
||||
echo FIXME: put comments here; \
|
||||
echo; \
|
||||
for url in $(url_dir_list); do \
|
||||
@@ -224,6 +251,13 @@ announcement: NEWS ChangeLog $(rel-files)
|
||||
echo " $$url/$(xd-delta) ($(xd-size))"; \
|
||||
done; \
|
||||
echo; \
|
||||
echo "Here are GPG detached signatures:"; \
|
||||
echo; \
|
||||
for url in $(url_dir_list); do \
|
||||
echo " $$url/$(my_distdir).tar.gz.sig"; \
|
||||
echo " $$url/$(my_distdir).tar.bz2.sig"; \
|
||||
done; \
|
||||
echo; \
|
||||
echo "Here are the MD5 and SHA1 signatures:"; \
|
||||
echo; \
|
||||
echo "$(tgz-md5) $(my_distdir).tar.gz"; \
|
||||
@@ -234,7 +268,7 @@ announcement: NEWS ChangeLog $(rel-files)
|
||||
echo "$(xdelta-sha1) $(xd-delta)"; \
|
||||
echo; \
|
||||
echo NEWS:; \
|
||||
sed -n "/$(THIS_VERSION_REGEXP)[]:]/,/$(PREV_VERSION_REGEXP)[]:]/p" NEWS \
|
||||
sed -n "$(news-r1),$(news-r2)p" NEWS \
|
||||
| grep -v '^\['; \
|
||||
echo; \
|
||||
echo ChangeLog entries:; \
|
||||
@@ -254,9 +288,10 @@ move_if_change ?= move-if-change
|
||||
# The following pseudo table associates a local directory and a URL
|
||||
# with each of the files that belongs to some other package and is
|
||||
# regularly updated from the specified URL.
|
||||
wget_files ?= $(srcdir)/config.guess $(srcdir)/config.sub \
|
||||
wget_files ?= $(srcdir)/config/config.guess \
|
||||
$(srcdir)/config/config.sub \
|
||||
$(srcdir)/src/ansi2knr.c \
|
||||
$(srcdir)/doc/texinfo.tex
|
||||
$(srcdir)/config/texinfo.tex
|
||||
get-targets = $(patsubst %, get-%, $(wget_files))
|
||||
|
||||
config.guess-url_prefix = $(ftp-gnu)/config/
|
||||
@@ -280,11 +315,12 @@ $(get-targets):
|
||||
automake_repo=:pserver:anoncvs@anoncvs.cygnus.com:/cvs/automake
|
||||
.PHONY: wget-update
|
||||
wget-update: $(get-targets)
|
||||
for f in depcomp missing mkinstalldirs; do \
|
||||
test -f $$f || continue; \
|
||||
echo checking out $$f...; \
|
||||
$(CVS) -d $(automake_repo) co -p automake/lib/$$f > $$f.t \
|
||||
&& $(move_if_change) $$f.t $$f; \
|
||||
cd config && \
|
||||
for f in depcomp missing mkinstalldirs; do \
|
||||
test -f $$f || { echo "*** skipping $$f" 1>&2; continue; }; \
|
||||
echo checking out $$f...; \
|
||||
$(CVS) -d $(automake_repo) co -p automake/lib/$$f > $$f.t \
|
||||
&& $(move_if_change) $$f.t $$f; \
|
||||
done
|
||||
|
||||
define emit-upload-commands
|
||||
@@ -299,7 +335,7 @@ endef
|
||||
$(xd-delta): $(release_archive_dir)/$(prev-tgz) $(distdir).tar.gz
|
||||
xdelta delta -9 $^ $@ || :
|
||||
|
||||
alpha: local-check
|
||||
alpha: $(local-check)
|
||||
$(MAKE) cvs-dist
|
||||
$(MAKE) $(xd-delta)
|
||||
$(MAKE) -s announcement > /tmp/announce-$(my_distdir)
|
||||
|
||||
17
NEWS
Normal file
17
NEWS
Normal file
@@ -0,0 +1,17 @@
|
||||
[4.5.3]
|
||||
* du --dereference-args (-D) no longer fails in certain cases
|
||||
* `ln --target-dir=DIR' no longer fails when given a single argument
|
||||
[4.5.2]
|
||||
* `rm -i dir' (without --recursive (-r)) no longer recurses into dir
|
||||
* `tail -c N FILE' now works with files of size >= 4GB
|
||||
* `mkdir -p' can now create very deep (e.g. 40,000-component) directories
|
||||
* rmdir -p dir-with-trailing-slash/ no longer fails
|
||||
* printf now honors the `--' command line delimiter
|
||||
* od's 8-byte formats x8, o8, and u8 now work
|
||||
* tail now accepts fractional seconds for its --sleep-interval=S (-s) option
|
||||
[4.5.1]
|
||||
* du and ls now report sizes of symbolic links (before they'd always report 0)
|
||||
* uniq now obeys the LC_COLLATE locale, as per POSIX 1003.1-2001 TC1.
|
||||
|
||||
This package is the union of the following:
|
||||
textutils-2.1, fileutils-4.1.11, sh-utils-2.0.15.
|
||||
96
README
Normal file
96
README
Normal file
@@ -0,0 +1,96 @@
|
||||
These are the GNU core utilities. This package is the union of
|
||||
the GNU fileutils, sh-utils, and textutils packages.
|
||||
|
||||
Most of these programs have significant advantages over their Unix
|
||||
counterparts, such as greater speed, additional options, and fewer
|
||||
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
|
||||
ginstall groups head hostid hostname id join kill link ln logname ls
|
||||
md5sum mkdir mkfifo mknod mv nice nl nohup od paste pathchk pinky pr
|
||||
printenv printf ptx pwd rm rmdir seq sha1sum shred sleep sort split
|
||||
stat stty su sum sync tac tail tee test touch tr true tsort tty uname
|
||||
unexpand uniq unlink uptime users vdir wc who whoami yes
|
||||
|
||||
See the file NEWS for a list of major changes in the current release.
|
||||
|
||||
See the file INSTALL for compilation and installation instructions.
|
||||
|
||||
These programs are intended to be POSIX.2 compliant (with BSD and other
|
||||
extensions), like the rest of the GNU system.
|
||||
|
||||
The ls, dir, and vdir commands are all separate executables instead of
|
||||
one program that checks argv[0] because people often rename these
|
||||
programs to things like gls, gnuls, l, etc. Renaming a program
|
||||
file shouldn't affect how it operates, so that people can get the
|
||||
behavior they want with whatever name they want.
|
||||
|
||||
Special thanks to Paul Eggert, Brian Matthews, Bruce Evans, Karl Berry,
|
||||
Kaveh Ghazi, and François Pinard for help with debugging and porting
|
||||
these programs. Many thanks to all of the people who have taken the
|
||||
time to submit problem reports and fixes. All contributed changes are
|
||||
attributed in the ChangeLog file.
|
||||
|
||||
And thanks to the following people who have provided accounts for
|
||||
portability testing on many different types of systems: Bob Proulx,
|
||||
Christian Robert, François Pinard, Greg McGary, Harlan Stenn,
|
||||
Joel N. Weber, Mark D. Roth, Matt Schalit, Nelson H. F. Beebe,
|
||||
Réjean Payette, Sam Tardieu.
|
||||
|
||||
Thanks to Michael Stone for inflicting test releases of the fileutils
|
||||
on Debian's unstable distribution, and to all the kind folks who used
|
||||
that distribution and found and reported bugs.
|
||||
|
||||
Note that each man page is now automatically generated from a template
|
||||
and from the corresponding --help usage message. Patches to the template
|
||||
files (man/*.x) are welcome. However, the authoritative documentation
|
||||
is in texinfo form in the doc directory.
|
||||
|
||||
If you run the tests on a SunOS4.1.4 system, expect the ctime-part of
|
||||
the ls `time-1' test to fail. I believe that is due to a bug in the
|
||||
way Sun implemented link(2) and chmod(2).
|
||||
|
||||
There are pretty 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
|
||||
it -- it won't bother me to get a reminder. Besides, the more messages I
|
||||
get regarding a particular problem the sooner it'll be fixed -- usually.
|
||||
If you sent a complete patch and, after a couple weeks you haven't
|
||||
received any acknowledgement please ping us. A complete patch includes
|
||||
a well-written ChangeLog entry, unified (diff -u format) diffs relative
|
||||
to the most recent test release, an explanation for why the patch is
|
||||
necessary or useful, and if at all possible, enough information to
|
||||
reproduce whatever problem prompted it.
|
||||
|
||||
If your patch adds a new feature, please try to get some sort of consensus
|
||||
that it is a worthwhile change. One way to do that is to send mail to
|
||||
bug-gnu-utils@gnu.org (aka the gnu.utils.bug news group) including as
|
||||
much description and justification as you can. Based on the feedback
|
||||
that generates, you may be able to convince us that it's worth adding.
|
||||
|
||||
|
||||
WARNING: If you modify files like configure.in, m4/*.m4, aclocal.m4,
|
||||
or any Makefile.am, then don't be surprised if what gets regenerated no
|
||||
longer works. To make things work, you'll have to be using appropriate
|
||||
versions of automake and autoconf. As for what versions are `appropriate',
|
||||
use the versions of
|
||||
|
||||
* autoconf specified via AC_PREREQ in m4/jm-macros.m4
|
||||
* automake specified via AM_INIT_AUTOMAKE in configure.ac
|
||||
|
||||
Usually it's fine to use versions that are newer than those specified.
|
||||
|
||||
These programs all recognize the `--version' option. When reporting
|
||||
bugs, please include in the subject line both the package name/version
|
||||
and the name of the program for which you found a problem.
|
||||
|
||||
For general documentation on the coding and usage standards
|
||||
this distribution follows, see the GNU Coding Standards,
|
||||
http://www.gnu.org/prep/standards_toc.html.
|
||||
|
||||
Mail suggestions and bug reports for these programs to
|
||||
the address on the last line of --help output.
|
||||
63
THANKS
63
THANKS
@@ -1,22 +1,26 @@
|
||||
These people have contributed to the GNU fileutils, textutils,
|
||||
and/or sh-utils packages. Some have reported problems, others have
|
||||
contributed improvements to the documentation, actual code, and even
|
||||
These people have contributed to the GNU coreutils (formerly, the fileutils,
|
||||
textutils, and/or sh-utils packages). Some have reported problems, others
|
||||
have contributed improvements to the documentation, actual code, and even
|
||||
complete programs. Those contributions are described in the ChangeLog
|
||||
files. If your name has been left out, if you'd rather not be listed,
|
||||
or if you'd prefer a different address be used, please let me know.
|
||||
Some old names and addresses are still in the ChangeLog.
|
||||
|
||||
??? kytek@cybercomm.net
|
||||
Achim Blumensath blume@corona.oche.de
|
||||
Adam Klein aklein@debian.org
|
||||
Akim Demaille demaille@inf.enst.fr
|
||||
Alain Magloire alain@qnx.com
|
||||
Alan Iwi iwi@atm.ox.ac.uk
|
||||
Albert Chin-A-Young china@thewrittenword.com
|
||||
Albert Hopkins ahopkins@dynacare.com
|
||||
Alberto Accomazzi alberto@cfa0.harvard.edu
|
||||
aldomel aldomel@ix.netcom.com
|
||||
Alen Muzinic zveki@fly.cc.fer.hr
|
||||
Alexandre Duret-Lutz duret_g@epita.fr
|
||||
Alexey Solovyov alekso@math.uu.se
|
||||
Alexey Vyskubov alexey@pippuri.mawhrin.net
|
||||
Alfred M. Szmidt ams@kemisten.nu
|
||||
Andi Kleen freitag@alancoxonachip.com
|
||||
Andre Novaes Cunha Andre.Cunha@br.global-one.net
|
||||
Andreas Gruenbacher ag@bestbits.at
|
||||
Andreas Jaeger jaeger@gnu.org
|
||||
@@ -35,6 +39,8 @@ Ariel Faigon ariel@cthulhu.engr.sgi.com
|
||||
Arne H. Juul arnej@solan.unit.no
|
||||
Arne Henrik Juul arnej@imf.unit.no
|
||||
Arthur Pool pool@commerce.uq.edu.au
|
||||
Arun Sharma arun.sharma@intel.com
|
||||
Augey Mikus mikus@dqc.org
|
||||
Austin Donnelly Austin.Donnelly@cl.cam.ac.uk
|
||||
Axel Kittenberger Anshil@gmx.net
|
||||
Bauke Jan Douma bjdouma@xs4all.nl
|
||||
@@ -73,9 +79,11 @@ Colin Watson cjw44@riva.ucam.org
|
||||
Collin Rogowski collin@rogowski.de
|
||||
Dale Scheetz dwarf@polaris.net
|
||||
Dan Hagerty hag@gnu.ai.it.edu
|
||||
Dan Jacobson http://www.geocities.com/jidani
|
||||
Dan Pascu dan@services.iiruc.ro
|
||||
Daniel Bergstrom noa@melody.se
|
||||
Darren Salt ds@youmustbejoking.demon.co.uk
|
||||
Dave Beckett dajobe@dajobe.org
|
||||
David Dyck dcd@tc.fluke.COM
|
||||
David Godfrey dave@delta.demon.co.uk
|
||||
David Luyer david_luyer@pacific.net.au
|
||||
@@ -84,11 +92,12 @@ Derek Clegg dclegg@next.com
|
||||
Dick Streefland dick_streefland@tasking.com
|
||||
Dirk Lattermann dlatt@t-online.de
|
||||
Dirk-Jan Faber djfaber@snow.nl
|
||||
Dan Jacobson http://www.geocities.com/jidani
|
||||
Dmitry V. Levin ldv@altlinux.org
|
||||
Don Parsons dparsons@synapse.kent.edu
|
||||
Donni Erpel donald@appc11.gsi.de
|
||||
Doug McLaren dougmc@comco.com
|
||||
Dragos Harabor dharabor@us.oracle.com
|
||||
Duncan Roe duncanr@optimation.com.au
|
||||
Ed Avis epa98@doc.ic.ac.uk
|
||||
Edzer Pebesma Edzer.Pebesma@rivm.nl
|
||||
Eirik Fuller eirik@hackrat.com
|
||||
@@ -104,29 +113,31 @@ Erik Corry erik@kroete2.freinet.de
|
||||
Felix Lee flee@teleport.com
|
||||
Fletcher Mattox fletcher@cs.utexas.edu
|
||||
Florin Iucha fiucha@hsys.mic.ro
|
||||
François Pinard pinard@iro.umontreal.ca
|
||||
Frank Adler fadler@allesklar.de
|
||||
Frank T Lofaro ftlofaro@snooks.Egr.UNLV.EDU
|
||||
François Pinard pinard@iro.umontreal.ca
|
||||
Fred Fish fnf@ninemoons.com
|
||||
Frederik Eaton frederik@caltech.edu
|
||||
Frédéric L. W. Meunier 0@pervalidus.net
|
||||
Frederik Eaton frederik@caltech.edu
|
||||
Gabor Z. Papp gzp@gzp.org.hu
|
||||
Gaël Quéri gqueri@mail.dotcom.fr
|
||||
Galen Hazelwood galenh@micron.net
|
||||
Gary Anderson ganderson@clark.net
|
||||
Gaël Quéri gqueri@mail.dotcom.fr
|
||||
Gaute Hvoslef Kvalnes gaute@verdsveven.com
|
||||
Geoff Kuenning geoff@cs.hmc.edu
|
||||
Geoff Odhner geoff@franklin.com
|
||||
Geoff Whale geoffw@cse.unsw.EDU.AU
|
||||
Gerhard Poul gpoul@gnu.org
|
||||
Germano Leichsenring germano@jedi.cs.kobe-u.ac.jp
|
||||
Göran Uddeborg goeran@uddeborg.pp.se
|
||||
GOTO Masanori gotom@debian.or.jp
|
||||
Greg Louis glouis@dynamicro.on.ca
|
||||
Greg McGary gkm@gnu.org
|
||||
Greg Troxel gdt@bbn.com
|
||||
Greg Wooledge gawooledge@sherwin.com
|
||||
Gregory Leblanc gleblanc@cu-portland.edu
|
||||
Göran Uddeborg goeran@uddeborg.pp.se
|
||||
H. J. Lu hjl@valinux.com
|
||||
Hans Lermen lermen@fgan.de
|
||||
Hans Verkuil hans@wyst.hobby.nl
|
||||
Harry Liu rliu@lek.ugcs.caltech.edu
|
||||
Herbert Xu herbert@gondor.apana.org.au
|
||||
@@ -137,6 +148,7 @@ Ian Bruce ian.bruce@myrealbox.com
|
||||
Ian Jackson ijackson@chiark.greenend.org.uk
|
||||
Ian Lance Taylor ian@cygnus.com
|
||||
Ian Turner vectro@pipeline.com
|
||||
Iida Yosiaki iida@gnu.org
|
||||
James james@albion.glarp.com
|
||||
James Antill jmanti%essex.ac.uk@seralph21.essex.ac.uk
|
||||
James Sneeringer jvs@ocslink.com
|
||||
@@ -157,7 +169,7 @@ Jim Blandy jimb@cyclic.com
|
||||
Jim Dennis jimd@starshine.org
|
||||
Joakim Rosqvist dvljrt@cs.umu.se
|
||||
Jochen Hein jochen@jochen.org
|
||||
Joe Orton joe@orton.demon.co.uk
|
||||
Joe Orton joe@manyfish.co.uk
|
||||
Johan Danielsson joda@pdc.kth.se
|
||||
John Bley jbb6@acpub.duke.edu
|
||||
John David Anglin dave.anglin@nrc.ca
|
||||
@@ -176,8 +188,8 @@ Juan F. Codagnone juam@arnet.com.ar
|
||||
Jungshik Shin jshin@pantheon.yale.edu
|
||||
Jürgen Fluk louis@dachau.marco.de
|
||||
jvogel jvogel@linkny.com
|
||||
Kai-Uwe Rommel rommel@informatik.tu-muenchen.de
|
||||
Kai Henningsen kai@debian.org
|
||||
Kai-Uwe Rommel rommel@informatik.tu-muenchen.de
|
||||
Kalle Olavi Niemitalo tosi@stekt.oulu.fi
|
||||
Kamal Paul Nigam Kamal_Paul_Nigam@gs35.sp.cs.cmu.edu
|
||||
Karl Eichwalder keichwa@gmx.net
|
||||
@@ -190,11 +202,11 @@ Keith Thompson kst@sdsc.edu
|
||||
Ken Pizzini kenp@halcyon.com
|
||||
Kjetil Torgrim Homme kjetilho@ifi.uio.no
|
||||
Kristoffer Rose kris@diku.dk
|
||||
??? kytek@cybercomm.net
|
||||
Larry McVoy lm@sgi.com
|
||||
Lars Hecking lhecking@nmrc.ucc.ie
|
||||
Lehti Rami rammer@cs.tut.fi
|
||||
Leonard N. Zubkoff lnz@dandelion.com
|
||||
Leonardo Milano lmilano@udel.edu
|
||||
Lorne Baker lbaker@nitro.avint.net
|
||||
M. P. Suzuki mpsuzuki@hiroshima-u.ac.jp
|
||||
Maciej Kwapulinski pikpok@univ.gda.pl
|
||||
@@ -203,6 +215,7 @@ Manfred Hollstein manfred@s-direktnet.de
|
||||
Marc Boucher marc@mbsi.ca
|
||||
Marc Olzheim marcolz@stack.nl
|
||||
Marco Franzen Marco.Franzen@Thyron.com
|
||||
Marcus Brinkmann http://www.marcus-brinkmann.de
|
||||
Marcus Daniels marcus@ee.pdx.edu
|
||||
Mark A. Thomas thommark@access.digex.net
|
||||
Mark D. Roth roth@uiuc.edu
|
||||
@@ -216,6 +229,7 @@ Markus Demleitner msdemlei@auriga.ari.uni-heidelberg.de
|
||||
Martin martin@dresden.nacamar.de
|
||||
Martin Gallant martyg@goodbit.net
|
||||
Martin Hippe martin.hippe@schlund.de
|
||||
Martin Michlmayr tbm@cyrius.com
|
||||
Martin Mitchell martin@debian.org
|
||||
Martin P.J. Zinser zinser@decus.de
|
||||
Marty Leisner leisner@sdsp.mc.xerox.com
|
||||
@@ -224,29 +238,38 @@ Mate Wierdl mw@moni.msci.memphis.edu
|
||||
Matej Vela mvela@public.srce.hr
|
||||
Matt Perry matt@primefactor.com
|
||||
Matt Schalit mschalit@pacbell.net
|
||||
Matthew Arnison maffew@cat.org.au
|
||||
Matthew Braun matthew@ans.net
|
||||
Matthew Clarke Matthew_Clarke@mindlink.bc.ca
|
||||
Matthew S. Levine mslevine@theory.lcs.mit.edu
|
||||
Matthew Smith matts@bluesguitar.org
|
||||
Matthew Swift swift@alum.mit.edu
|
||||
Mattias Wadenstein maswan@acc.umu.se
|
||||
Matthias Urlichs smurf@noris.de
|
||||
Mattias Wadenstein maswan@acc.umu.se
|
||||
Meelis Roos mroos@tartu.cyber.ee
|
||||
Michael ??? michael@roka.net
|
||||
Michael Deutschmann michael@talamasca.ocis.net
|
||||
Michael Gaughen mgaughen@polyserve.com
|
||||
Michael Hasselberg mikelh@zonta.ping.de
|
||||
Michael Hohn hohn@math.utah.edu
|
||||
Michael J. Croghan mcroghan@usatoday.com
|
||||
Michael Piefel piefel@informatik.hu-berlin.de
|
||||
Michael Steffens michael.steffens@s.netic.de
|
||||
Michael Stone mstone@debian.org
|
||||
Michael Stutz stutz@dsl.org
|
||||
Michael Veksler mveksler@techunix.technion.ac.il
|
||||
Michail Litvak mci@owl.openwall.com
|
||||
Michal Svec msvec@suse.cz
|
||||
Michel Robitaille robitail@IRO.UMontreal.CA
|
||||
Michiel Bacchiani bacchian@raven.bu.edu
|
||||
Mike Castle dalgoda@ix.netcom.com
|
||||
Mike Coleman mkc@mathdogs.com
|
||||
Mikko Tuumanen m@sorvankyla.yok.utu.fi
|
||||
Miles Bader miles@gnu.ai.mit.edu
|
||||
Minh Tran-Le tranle@intellicorp.com
|
||||
Morten Welinder terra@diku.dk
|
||||
Neal H Walfield neal@cs.uml.edu
|
||||
Neil Brown neilb@cse.unsw.edu.au
|
||||
Nelson H. F. Beebe beebe@math.utah.edu
|
||||
Nick Lawes nlawes@silverplatter.com
|
||||
Niklas Edmundsson nikke@acc.umu.se
|
||||
@@ -254,12 +277,13 @@ Noah Friedman friedman@splode.com
|
||||
Noel Cragg noel@red-bean.com
|
||||
Olav Morkrid olav@funcom.com
|
||||
Ole Laursen olau@hardworking.dk
|
||||
Oskar Liljeblad osk@hem.passagen.se
|
||||
Ørn E. Hansen oehansen@daimi.aau.dk
|
||||
Oskar Liljeblad osk@hem.passagen.se
|
||||
Paul Eggert eggert@twinsun.com
|
||||
Paul Nevai nevai@ops.mps.ohio-state.edu
|
||||
Paul Sauer paul@alexa.com
|
||||
Paul Slootman paul@debian.org
|
||||
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
|
||||
@@ -278,9 +302,11 @@ Rainer Orth ro@TechFak.Uni-Bielefeld.DE
|
||||
Ralf W. Stephan stephan@tmt.de
|
||||
Ralph Loader loader@maths.ox.ac.uk
|
||||
Raul Miller moth@magenta.com
|
||||
Raúl Núñez de Arenas Coronado raul@pleyades.net
|
||||
Richard Braakman dark@xs4all.nl
|
||||
Richard Dawe richdawe@bigfoot.com
|
||||
Richard J. Rauenzahn rrauenza@hairball.cup.hp.com
|
||||
Richard Neill rn214@hermes.cam.ac.uk
|
||||
Richard Sharman rsharman@magmacom.com
|
||||
Rick Sladkey jrs@world.std.com
|
||||
Rik Faith faith@cs.unc.edu
|
||||
@@ -298,22 +324,28 @@ Sander van Malssen svm@kozmix.ow.nl
|
||||
Santiago Vila Doncel sanvila@unex.es
|
||||
Savochkin Andrey Vladimirovich saw@msu.ru
|
||||
Scott Lurndal slurn@griffin.engr.sgi.com
|
||||
Shing-Shong Shei shei@cs.indiana.edu
|
||||
Soeren Sonnenburg sonnenburg@informatik.hu-berlin.de
|
||||
Stéphane Chazelas Stephane_CHAZELAS@yahoo.fr
|
||||
Stephen Eglen eglen@pcg.wustl.edu
|
||||
Stephen Gildea gildea@stop.mail-abuse.org
|
||||
Stephen Smoogen ??????????
|
||||
Stephen Smoogen smooge@mindspring.com
|
||||
Steve McConnel steve@acadcomp.sil.org
|
||||
Steven P Watson steven@magelico.net
|
||||
Stuart Kemp skemp@peter.bmc.com
|
||||
Tadayoshi Funaba tadf@kt.rim.or.jp
|
||||
TAKAI Kousuke takai@vlsi.kuee.kyoto-u.ac.jp
|
||||
Theodore Ts'o tytso@rsts-11.mit.edu
|
||||
Thomas Bushnell thomas@gnu.ai.mit.edu
|
||||
Thomas Quinot thomas@Cuivre.FR.EU.ORG
|
||||
Tim J. Robbins tjr@FreeBSD.org
|
||||
Tim Smithers mouse@dmouse.com.au
|
||||
Tim Waugh twaugh@redhat
|
||||
Todd A. Jacobs tjacobs@codegnome.org
|
||||
Tom Haynes thomas@netapp.com
|
||||
Tom Quinn trq@dionysos.thphys.ox.ac.uk
|
||||
Ton Hospel thospel@mail.dma.be
|
||||
Tony Kocurko akocurko@mun.ca
|
||||
Tony Leneis tony@plaza.ds.adp.com
|
||||
Tony Robinson ajr@eng.cam.ac.uk
|
||||
Torbjorn Granlund tege@nada.kth.se
|
||||
@@ -333,6 +365,7 @@ Will Edgington wedgingt@acm.org
|
||||
William Bader william@nscs.fast.net
|
||||
William Dowling will@franklin.com
|
||||
William Lewis wiml@omnigroup.com
|
||||
Wojciech Purczynski cliph@isec.pl
|
||||
Wolfram Kleff kleff@cs.uni-bonn.de
|
||||
Won-kyu Park wkpark@chem.skku.ac.kr
|
||||
Zvi Har'El rl@math.technion.ac.il
|
||||
|
||||
4
THANKStt.in
Normal file
4
THANKStt.in
Normal file
@@ -0,0 +1,4 @@
|
||||
The following teams have translated the many diagnostics of this
|
||||
package into many different languages. Thank you!
|
||||
|
||||
---
|
||||
6
TODO
Normal file
6
TODO
Normal file
@@ -0,0 +1,6 @@
|
||||
restore djgpp, eventually
|
||||
merge TODO lists
|
||||
add unit tests for lib/*.c
|
||||
|
||||
strip: add an option to specify the program used to strip binaries.
|
||||
suggestion from Karl Berry
|
||||
32
TODO-private
Normal file
32
TODO-private
Normal file
@@ -0,0 +1,32 @@
|
||||
Move things so there are no symlinks from repository to
|
||||
any directory other than common
|
||||
|
||||
******************
|
||||
LINGUAS:
|
||||
sort -u ../[fst]u/po/LINGUAS > po/LINGUAS
|
||||
|
||||
go cu
|
||||
cd po
|
||||
for i in f s t; do
|
||||
echo $i:
|
||||
xu=${i}u
|
||||
for j in $(cat ../../$xu/po/LINGUAS); do
|
||||
echo " $j"
|
||||
msgmerge -o k ../../$xu/po/$j.po $j.po && mv k $j.po
|
||||
done
|
||||
done
|
||||
|
||||
go cu; cd po; export xu=tu j=zh_TW
|
||||
go cu; cd po; export xu=su j=ru
|
||||
go cu; cd po; export xu=fu j=zh_TW
|
||||
go cu; cd po; export xu=tu j=fr
|
||||
go cu; cd po; export xu=su j=tr
|
||||
go cu; cd po; export xu=fu j=ca
|
||||
|
||||
go cu; cd po; export xu=su j=sl
|
||||
go cu; cd po; export xu=tu j=el
|
||||
go cu; cd po; export xu=su j=da
|
||||
go cu; cd po; export xu=fu j=lg
|
||||
k=$xu-$j
|
||||
msgmerge -o $k ../../$xu/po/$j.po $j.po && mv $k $j.po
|
||||
cvs ci -m 'merge from fileutils-4.1.11' $j.po
|
||||
6147
aclocal.m4
vendored
Normal file
6147
aclocal.m4
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1447
config.hin
Normal file
1447
config.hin
Normal file
File diff suppressed because it is too large
Load Diff
4
config/ChangeLog
Normal file
4
config/ChangeLog
Normal file
@@ -0,0 +1,4 @@
|
||||
2002-02-17 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* config.guess (main): Don't use `head -1'; it's no longer portable.
|
||||
Use `sed 1q' instead.
|
||||
1363
config/config.guess
vendored
Normal file
1363
config/config.guess
vendored
Normal file
File diff suppressed because it is too large
Load Diff
513
config/config.rpath
Executable file
513
config/config.rpath
Executable file
@@ -0,0 +1,513 @@
|
||||
#! /bin/sh
|
||||
# Output a system dependent set of variables, describing how to set the
|
||||
# run time search path of shared libraries in an executable.
|
||||
#
|
||||
# Copyright 1996-2002 Free Software Foundation, Inc.
|
||||
# Taken from GNU libtool, 2001
|
||||
# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
|
||||
#
|
||||
# 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 of the License, 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.
|
||||
#
|
||||
# The first argument passed to this file is the canonical host specification,
|
||||
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
|
||||
# or
|
||||
# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
|
||||
# The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld
|
||||
# should be set by the caller.
|
||||
#
|
||||
# The set of defined variables is at the end of this script.
|
||||
|
||||
# All known linkers require a `.a' archive for static linking (except M$VC,
|
||||
# which needs '.lib').
|
||||
libext=a
|
||||
shlibext=
|
||||
|
||||
host="$1"
|
||||
host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
|
||||
host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
|
||||
host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
|
||||
|
||||
wl=
|
||||
if test "$GCC" = yes; then
|
||||
wl='-Wl,'
|
||||
else
|
||||
case "$host_os" in
|
||||
aix3* | aix4* | aix5*)
|
||||
wl='-Wl,'
|
||||
;;
|
||||
hpux9* | hpux10* | hpux11*)
|
||||
wl='-Wl,'
|
||||
;;
|
||||
irix5* | irix6*)
|
||||
wl='-Wl,'
|
||||
;;
|
||||
linux*)
|
||||
echo '__INTEL_COMPILER' > conftest.$ac_ext
|
||||
if $CC -E conftest.$ac_ext >/dev/null | grep __INTEL_COMPILER >/dev/null
|
||||
then
|
||||
:
|
||||
else
|
||||
# Intel icc
|
||||
wl='-Qoption,ld,'
|
||||
fi
|
||||
;;
|
||||
osf3* | osf4* | osf5*)
|
||||
wl='-Wl,'
|
||||
;;
|
||||
solaris*)
|
||||
wl='-Wl,'
|
||||
;;
|
||||
sunos4*)
|
||||
wl='-Qoption ld '
|
||||
;;
|
||||
sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
|
||||
if test "x$host_vendor" = xsni; then
|
||||
wl='-LD'
|
||||
else
|
||||
wl='-Wl,'
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
hardcode_libdir_flag_spec=
|
||||
hardcode_libdir_separator=
|
||||
hardcode_direct=no
|
||||
hardcode_minus_L=no
|
||||
|
||||
case "$host_os" in
|
||||
cygwin* | mingw* | pw32*)
|
||||
# FIXME: the MSVC++ port hasn't been tested in a loooong time
|
||||
# When not using gcc, we currently assume that we are using
|
||||
# Microsoft Visual C++.
|
||||
if test "$GCC" != yes; then
|
||||
with_gnu_ld=no
|
||||
fi
|
||||
;;
|
||||
openbsd*)
|
||||
with_gnu_ld=no
|
||||
;;
|
||||
esac
|
||||
|
||||
ld_shlibs=yes
|
||||
if test "$with_gnu_ld" = yes; then
|
||||
case "$host_os" in
|
||||
aix3* | aix4* | aix5*)
|
||||
# On AIX, the GNU linker is very broken
|
||||
ld_shlibs=no
|
||||
;;
|
||||
amigaos*)
|
||||
hardcode_libdir_flag_spec='-L$libdir'
|
||||
hardcode_minus_L=yes
|
||||
# Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
|
||||
# that the semantics of dynamic libraries on AmigaOS, at least up
|
||||
# to version 4, is to share data among multiple programs linked
|
||||
# with the same dynamic library. Since this doesn't match the
|
||||
# behavior of shared libraries on other platforms, we can use
|
||||
# them.
|
||||
ld_shlibs=no
|
||||
;;
|
||||
beos*)
|
||||
if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
|
||||
:
|
||||
else
|
||||
ld_shlibs=no
|
||||
fi
|
||||
;;
|
||||
cygwin* | mingw* | pw32*)
|
||||
# hardcode_libdir_flag_spec is actually meaningless, as there is
|
||||
# no search path for DLLs.
|
||||
hardcode_libdir_flag_spec='-L$libdir'
|
||||
;;
|
||||
solaris* | sysv5*)
|
||||
if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then
|
||||
ld_shlibs=no
|
||||
elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
|
||||
:
|
||||
else
|
||||
ld_shlibs=no
|
||||
fi
|
||||
;;
|
||||
sunos4*)
|
||||
hardcode_direct=yes
|
||||
;;
|
||||
*)
|
||||
if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
|
||||
:
|
||||
else
|
||||
ld_shlibs=no
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
if test "$ld_shlibs" = yes; then
|
||||
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
|
||||
fi
|
||||
else
|
||||
case "$host_os" in
|
||||
aix3*)
|
||||
# Note: this linker hardcodes the directories in LIBPATH if there
|
||||
# are no directories specified by -L.
|
||||
hardcode_minus_L=yes
|
||||
if test "$GCC" = yes; then
|
||||
# Neither direct hardcoding nor static linking is supported with a
|
||||
# broken collect2.
|
||||
hardcode_direct=unsupported
|
||||
fi
|
||||
;;
|
||||
aix4* | aix5*)
|
||||
if test "$host_cpu" = ia64; then
|
||||
# On IA64, the linker does run time linking by default, so we don't
|
||||
# have to do anything special.
|
||||
aix_use_runtimelinking=no
|
||||
else
|
||||
aix_use_runtimelinking=no
|
||||
# Test if we are trying to use run time linking or normal
|
||||
# AIX style linking. If -brtl is somewhere in LDFLAGS, we
|
||||
# need to do runtime linking.
|
||||
case $host_os in aix4.[23]|aix4.[23].*|aix5*)
|
||||
for ld_flag in $LDFLAGS; do
|
||||
if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
|
||||
aix_use_runtimelinking=yes
|
||||
break
|
||||
fi
|
||||
done
|
||||
esac
|
||||
fi
|
||||
hardcode_direct=yes
|
||||
hardcode_libdir_separator=':'
|
||||
if test "$GCC" = yes; then
|
||||
case $host_os in aix4.[012]|aix4.[012].*)
|
||||
collect2name=`${CC} -print-prog-name=collect2`
|
||||
if test -f "$collect2name" && \
|
||||
strings "$collect2name" | grep resolve_lib_name >/dev/null
|
||||
then
|
||||
# We have reworked collect2
|
||||
hardcode_direct=yes
|
||||
else
|
||||
# We have old collect2
|
||||
hardcode_direct=unsupported
|
||||
hardcode_minus_L=yes
|
||||
hardcode_libdir_flag_spec='-L$libdir'
|
||||
hardcode_libdir_separator=
|
||||
fi
|
||||
esac
|
||||
fi
|
||||
if test "$aix_use_runtimelinking" = yes; then
|
||||
hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib'
|
||||
else
|
||||
if test "$host_cpu" = ia64; then
|
||||
hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
|
||||
else
|
||||
hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib'
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
amigaos*)
|
||||
hardcode_libdir_flag_spec='-L$libdir'
|
||||
hardcode_minus_L=yes
|
||||
# see comment about different semantics on the GNU ld section
|
||||
ld_shlibs=no
|
||||
;;
|
||||
cygwin* | mingw* | pw32*)
|
||||
# When not using gcc, we currently assume that we are using
|
||||
# Microsoft Visual C++.
|
||||
# hardcode_libdir_flag_spec is actually meaningless, as there is
|
||||
# no search path for DLLs.
|
||||
hardcode_libdir_flag_spec=' '
|
||||
libext=lib
|
||||
;;
|
||||
darwin* | rhapsody*)
|
||||
hardcode_direct=yes
|
||||
;;
|
||||
freebsd1*)
|
||||
ld_shlibs=no
|
||||
;;
|
||||
freebsd2.2*)
|
||||
hardcode_libdir_flag_spec='-R$libdir'
|
||||
hardcode_direct=yes
|
||||
;;
|
||||
freebsd2*)
|
||||
hardcode_direct=yes
|
||||
hardcode_minus_L=yes
|
||||
;;
|
||||
freebsd*)
|
||||
hardcode_libdir_flag_spec='-R$libdir'
|
||||
hardcode_direct=yes
|
||||
;;
|
||||
hpux9* | hpux10* | hpux11*)
|
||||
hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
|
||||
hardcode_libdir_separator=:
|
||||
hardcode_direct=yes
|
||||
hardcode_minus_L=yes # Not in the search PATH, but as the default
|
||||
# location of the library.
|
||||
;;
|
||||
irix5* | irix6*)
|
||||
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
|
||||
hardcode_libdir_separator=:
|
||||
;;
|
||||
netbsd*)
|
||||
hardcode_libdir_flag_spec='-R$libdir'
|
||||
hardcode_direct=yes
|
||||
;;
|
||||
newsos6)
|
||||
hardcode_direct=yes
|
||||
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
|
||||
hardcode_libdir_separator=:
|
||||
;;
|
||||
openbsd*)
|
||||
hardcode_direct=yes
|
||||
if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
|
||||
hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
|
||||
else
|
||||
case "$host_os" in
|
||||
openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
|
||||
hardcode_libdir_flag_spec='-R$libdir'
|
||||
;;
|
||||
*)
|
||||
hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
;;
|
||||
os2*)
|
||||
hardcode_libdir_flag_spec='-L$libdir'
|
||||
hardcode_minus_L=yes
|
||||
;;
|
||||
osf3*)
|
||||
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
|
||||
hardcode_libdir_separator=:
|
||||
;;
|
||||
osf4* | osf5*)
|
||||
if test "$GCC" = yes; then
|
||||
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
|
||||
else
|
||||
# Both cc and cxx compiler support -rpath directly
|
||||
hardcode_libdir_flag_spec='-rpath $libdir'
|
||||
fi
|
||||
hardcode_libdir_separator=:
|
||||
;;
|
||||
sco3.2v5*)
|
||||
;;
|
||||
solaris*)
|
||||
hardcode_libdir_flag_spec='-R$libdir'
|
||||
;;
|
||||
sunos4*)
|
||||
hardcode_libdir_flag_spec='-L$libdir'
|
||||
hardcode_direct=yes
|
||||
hardcode_minus_L=yes
|
||||
;;
|
||||
sysv4)
|
||||
if test "x$host_vendor" = xsno; then
|
||||
hardcode_direct=yes # is this really true???
|
||||
else
|
||||
hardcode_direct=no # Motorola manual says yes, but my tests say they lie
|
||||
fi
|
||||
;;
|
||||
sysv4.3*)
|
||||
;;
|
||||
sysv5*)
|
||||
hardcode_libdir_flag_spec=
|
||||
;;
|
||||
uts4*)
|
||||
hardcode_libdir_flag_spec='-L$libdir'
|
||||
;;
|
||||
dgux*)
|
||||
hardcode_libdir_flag_spec='-L$libdir'
|
||||
;;
|
||||
sysv4*MP*)
|
||||
if test -d /usr/nec; then
|
||||
ld_shlibs=yes
|
||||
fi
|
||||
;;
|
||||
sysv4.2uw2*)
|
||||
hardcode_direct=yes
|
||||
hardcode_minus_L=no
|
||||
;;
|
||||
sysv5uw7* | unixware7*)
|
||||
;;
|
||||
*)
|
||||
ld_shlibs=no
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# Check dynamic linker characteristics
|
||||
libname_spec='lib$name'
|
||||
sys_lib_dlsearch_path_spec="/lib /usr/lib"
|
||||
sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
|
||||
case "$host_os" in
|
||||
aix3*)
|
||||
shlibext=so
|
||||
;;
|
||||
aix4* | aix5*)
|
||||
shlibext=so
|
||||
;;
|
||||
amigaos*)
|
||||
shlibext=ixlibrary
|
||||
;;
|
||||
beos*)
|
||||
shlibext=so
|
||||
;;
|
||||
bsdi4*)
|
||||
shlibext=so
|
||||
sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
|
||||
sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
|
||||
;;
|
||||
cygwin* | mingw* | pw32*)
|
||||
case $GCC,$host_os in
|
||||
yes,cygwin*)
|
||||
shlibext=dll.a
|
||||
;;
|
||||
yes,mingw*)
|
||||
shlibext=dll
|
||||
sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries://" -e "s/;/ /g"`
|
||||
;;
|
||||
yes,pw32*)
|
||||
shlibext=dll
|
||||
;;
|
||||
*)
|
||||
shlibext=dll
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
darwin* | rhapsody*)
|
||||
shlibext=dylib
|
||||
;;
|
||||
freebsd1*)
|
||||
;;
|
||||
freebsd*)
|
||||
shlibext=so
|
||||
;;
|
||||
gnu*)
|
||||
shlibext=so
|
||||
;;
|
||||
hpux9* | hpux10* | hpux11*)
|
||||
shlibext=sl
|
||||
;;
|
||||
irix5* | irix6*)
|
||||
shlibext=so
|
||||
case "$host_os" in
|
||||
irix5*)
|
||||
libsuff= shlibsuff=
|
||||
;;
|
||||
*)
|
||||
case $LD in
|
||||
*-32|*"-32 ") libsuff= shlibsuff= ;;
|
||||
*-n32|*"-n32 ") libsuff=32 shlibsuff=N32 ;;
|
||||
*-64|*"-64 ") libsuff=64 shlibsuff=64 ;;
|
||||
*) libsuff= shlibsuff= ;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
|
||||
sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
|
||||
;;
|
||||
linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*)
|
||||
;;
|
||||
linux-gnu*)
|
||||
shlibext=so
|
||||
;;
|
||||
netbsd*)
|
||||
shlibext=so
|
||||
;;
|
||||
newsos6)
|
||||
shlibext=so
|
||||
;;
|
||||
openbsd*)
|
||||
shlibext=so
|
||||
;;
|
||||
os2*)
|
||||
libname_spec='$name'
|
||||
shlibext=dll
|
||||
;;
|
||||
osf3* | osf4* | osf5*)
|
||||
shlibext=so
|
||||
sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
|
||||
sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
|
||||
;;
|
||||
sco3.2v5*)
|
||||
shlibext=so
|
||||
;;
|
||||
solaris*)
|
||||
shlibext=so
|
||||
;;
|
||||
sunos4*)
|
||||
shlibext=so
|
||||
;;
|
||||
sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
|
||||
shlibext=so
|
||||
case "$host_vendor" in
|
||||
motorola)
|
||||
sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
uts4*)
|
||||
shlibext=so
|
||||
;;
|
||||
dgux*)
|
||||
shlibext=so
|
||||
;;
|
||||
sysv4*MP*)
|
||||
if test -d /usr/nec; then
|
||||
shlibext=so
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
|
||||
escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"`
|
||||
escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
|
||||
escaped_sys_lib_search_path_spec=`echo "X$sys_lib_search_path_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
|
||||
escaped_sys_lib_dlsearch_path_spec=`echo "X$sys_lib_dlsearch_path_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
|
||||
|
||||
sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <<EOF
|
||||
|
||||
# How to pass a linker flag through the compiler.
|
||||
wl="$escaped_wl"
|
||||
|
||||
# Static library suffix (normally "a").
|
||||
libext="$libext"
|
||||
|
||||
# Shared library suffix (normally "so").
|
||||
shlibext="$shlibext"
|
||||
|
||||
# Flag to hardcode \$libdir into a binary during linking.
|
||||
# This must work even if \$libdir does not exist.
|
||||
hardcode_libdir_flag_spec="$escaped_hardcode_libdir_flag_spec"
|
||||
|
||||
# Whether we need a single -rpath flag with a separated argument.
|
||||
hardcode_libdir_separator="$hardcode_libdir_separator"
|
||||
|
||||
# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the
|
||||
# resulting binary.
|
||||
hardcode_direct="$hardcode_direct"
|
||||
|
||||
# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
|
||||
# resulting binary.
|
||||
hardcode_minus_L="$hardcode_minus_L"
|
||||
|
||||
# Compile-time system search path for libraries
|
||||
sys_lib_search_path_spec="$escaped_sys_lib_search_path_spec"
|
||||
|
||||
# Run-time system search path for libraries
|
||||
sys_lib_dlsearch_path_spec="$escaped_sys_lib_dlsearch_path_spec"
|
||||
|
||||
EOF
|
||||
1470
config/config.sub
vendored
Normal file
1470
config/config.sub
vendored
Normal file
File diff suppressed because it is too large
Load Diff
423
config/depcomp
Normal file
423
config/depcomp
Normal file
@@ -0,0 +1,423 @@
|
||||
#! /bin/sh
|
||||
|
||||
# depcomp - compile a program generating dependencies as side-effects
|
||||
# Copyright 1999, 2000 Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
# 02111-1307, USA.
|
||||
|
||||
# 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.
|
||||
|
||||
# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
|
||||
|
||||
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
|
||||
echo "depcomp: Variables source, object and depmode must be set" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
# `libtool' can also be set to `yes' or `no'.
|
||||
|
||||
if test -z "$depfile"; then
|
||||
base=`echo "$object" | sed -e 's,^.*/,,' -e 's,\.\([^.]*\)$,.P\1,'`
|
||||
dir=`echo "$object" | sed 's,/.*$,/,'`
|
||||
if test "$dir" = "$object"; then
|
||||
dir=
|
||||
fi
|
||||
# FIXME: should be _deps on DOS.
|
||||
depfile="$dir.deps/$base"
|
||||
fi
|
||||
|
||||
tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
|
||||
|
||||
rm -f "$tmpdepfile"
|
||||
|
||||
# Some modes work just like other modes, but use different flags. We
|
||||
# parameterize here, but still list the modes in the big case below,
|
||||
# to make depend.m4 easier to write. Note that we *cannot* use a case
|
||||
# here, because this file can only contain one case statement.
|
||||
if test "$depmode" = hp; then
|
||||
# HP compiler uses -M and no extra arg.
|
||||
gccflag=-M
|
||||
depmode=gcc
|
||||
fi
|
||||
|
||||
if test "$depmode" = dashXmstdout; then
|
||||
# This is just like dashmstdout with a different argument.
|
||||
dashmflag=-xM
|
||||
depmode=dashmstdout
|
||||
fi
|
||||
|
||||
case "$depmode" in
|
||||
gcc3)
|
||||
## gcc 3 implements dependency tracking that does exactly what
|
||||
## we want. Yay! Note: for some reason libtool 1.4 doesn't like
|
||||
## it if -MD -MP comes after the -MF stuff. Hmm.
|
||||
"$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
|
||||
stat=$?
|
||||
if test $stat -eq 0; then :
|
||||
else
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
mv "$tmpdepfile" "$depfile"
|
||||
;;
|
||||
|
||||
gcc)
|
||||
## There are various ways to get dependency output from gcc. Here's
|
||||
## why we pick this rather obscure method:
|
||||
## - Don't want to use -MD because we'd like the dependencies to end
|
||||
## up in a subdir. Having to rename by hand is ugly.
|
||||
## (We might end up doing this anyway to support other compilers.)
|
||||
## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
|
||||
## -MM, not -M (despite what the docs say).
|
||||
## - Using -M directly means running the compiler twice (even worse
|
||||
## than renaming).
|
||||
if test -z "$gccflag"; then
|
||||
gccflag=-MD,
|
||||
fi
|
||||
"$@" -Wp,"$gccflag$tmpdepfile"
|
||||
stat=$?
|
||||
if test $stat -eq 0; then :
|
||||
else
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
rm -f "$depfile"
|
||||
echo "$object : \\" > "$depfile"
|
||||
alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
|
||||
## The second -e expression handles DOS-style file names with drive letters.
|
||||
sed -e 's/^[^:]*: / /' \
|
||||
-e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
|
||||
## This next piece of magic avoids the `deleted header file' problem.
|
||||
## The problem is that when a header file which appears in a .P file
|
||||
## is deleted, the dependency causes make to die (because there is
|
||||
## typically no way to rebuild the header). We avoid this by adding
|
||||
## dummy dependencies for each header file. Too bad gcc doesn't do
|
||||
## this for us directly.
|
||||
tr ' ' '
|
||||
' < "$tmpdepfile" |
|
||||
## Some versions of gcc put a space before the `:'. On the theory
|
||||
## that the space means something, we add a space to the output as
|
||||
## well.
|
||||
## Some versions of the HPUX 10.20 sed can't process this invocation
|
||||
## correctly. Breaking it into two sed invocations is a workaround.
|
||||
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
hp)
|
||||
# This case exists only to let depend.m4 do its work. It works by
|
||||
# looking at the text of this script. This case will never be run,
|
||||
# since it is checked for above.
|
||||
exit 1
|
||||
;;
|
||||
|
||||
sgi)
|
||||
if test "$libtool" = yes; then
|
||||
"$@" "-Wp,-MDupdate,$tmpdepfile"
|
||||
else
|
||||
"$@" -MDupdate "$tmpdepfile"
|
||||
fi
|
||||
stat=$?
|
||||
if test $stat -eq 0; then :
|
||||
else
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
rm -f "$depfile"
|
||||
|
||||
if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
|
||||
echo "$object : \\" > "$depfile"
|
||||
|
||||
# Clip off the initial element (the dependent). Don't try to be
|
||||
# clever and replace this with sed code, as IRIX sed won't handle
|
||||
# lines with more than a fixed number of characters (4096 in
|
||||
# IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
|
||||
# the IRIX cc adds comments like `#:fec' to the end of the
|
||||
# dependency line.
|
||||
tr ' ' '
|
||||
' < "$tmpdepfile" \
|
||||
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
|
||||
tr '
|
||||
' ' ' >> $depfile
|
||||
echo >> $depfile
|
||||
|
||||
# The second pass generates a dummy entry for each header file.
|
||||
tr ' ' '
|
||||
' < "$tmpdepfile" \
|
||||
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
|
||||
>> $depfile
|
||||
else
|
||||
# The sourcefile does not contain any dependencies, so just
|
||||
# store a dummy comment line, to avoid errors with the Makefile
|
||||
# "include basename.Plo" scheme.
|
||||
echo "#dummy" > "$depfile"
|
||||
fi
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
aix)
|
||||
# The C for AIX Compiler uses -M and outputs the dependencies
|
||||
# in a .u file. This file always lives in the current directory.
|
||||
# Also, the AIX compiler puts `$object:' at the start of each line;
|
||||
# $object doesn't have directory information.
|
||||
stripped=`echo "$object" | sed -e 's,^.*/,,' -e 's/\(.*\)\..*$/\1/'`
|
||||
tmpdepfile="$stripped.u"
|
||||
outname="$stripped.o"
|
||||
if test "$libtool" = yes; then
|
||||
"$@" -Wc,-M
|
||||
else
|
||||
"$@" -M
|
||||
fi
|
||||
|
||||
stat=$?
|
||||
if test $stat -eq 0; then :
|
||||
else
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
|
||||
if test -f "$tmpdepfile"; then
|
||||
# Each line is of the form `foo.o: dependent.h'.
|
||||
# Do two passes, one to just change these to
|
||||
# `$object: dependent.h' and one to simply `dependent.h:'.
|
||||
sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
|
||||
sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
|
||||
else
|
||||
# The sourcefile does not contain any dependencies, so just
|
||||
# store a dummy comment line, to avoid errors with the Makefile
|
||||
# "include basename.Plo" scheme.
|
||||
echo "#dummy" > "$depfile"
|
||||
fi
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
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'.
|
||||
# At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
|
||||
# dependencies in `foo.d' instead, so we check for that too.
|
||||
# Subdirectories are respected.
|
||||
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.libs/$base.lo.d"
|
||||
tmpdepfile2="$dir.libs/$base.d"
|
||||
"$@" -Wc,-MD
|
||||
else
|
||||
tmpdepfile1="$dir$base.o.d"
|
||||
tmpdepfile2="$dir$base.d"
|
||||
"$@" -MD
|
||||
fi
|
||||
|
||||
stat=$?
|
||||
if test $stat -eq 0; then :
|
||||
else
|
||||
rm -f "$tmpdepfile1" "$tmpdepfile2"
|
||||
exit $stat
|
||||
fi
|
||||
|
||||
if test -f "$tmpdepfile1"; then
|
||||
tmpdepfile="$tmpdepfile1"
|
||||
else
|
||||
tmpdepfile="$tmpdepfile2"
|
||||
fi
|
||||
if test -f "$tmpdepfile"; then
|
||||
sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
|
||||
# That's a space and a tab in the [].
|
||||
sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
|
||||
else
|
||||
echo "#dummy" > "$depfile"
|
||||
fi
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
#nosideeffect)
|
||||
# This comment above is used by automake to tell side-effect
|
||||
# dependency tracking mechanisms from slower ones.
|
||||
|
||||
dashmstdout)
|
||||
# Important note: in order to support this mode, a compiler *must*
|
||||
# always write the proprocessed file to stdout, regardless of -o.
|
||||
"$@" || exit $?
|
||||
|
||||
# Remove the call to Libtool.
|
||||
if test "$libtool" = yes; then
|
||||
while test $1 != '--mode=compile'; do
|
||||
shift
|
||||
done
|
||||
shift
|
||||
fi
|
||||
|
||||
# Remove `-o $object'. We will use -o /dev/null later,
|
||||
# however we can't do the remplacement now because
|
||||
# `-o $object' might simply not be used
|
||||
IFS=" "
|
||||
for arg
|
||||
do
|
||||
case $arg in
|
||||
-o)
|
||||
shift
|
||||
;;
|
||||
$object)
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
set fnord "$@" "$arg"
|
||||
shift # fnord
|
||||
shift # $arg
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
test -z "$dashmflag" && dashmflag=-M
|
||||
"$@" -o /dev/null $dashmflag | sed 's:^[^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
|
||||
rm -f "$depfile"
|
||||
cat < "$tmpdepfile" > "$depfile"
|
||||
tr ' ' '
|
||||
' < "$tmpdepfile" | \
|
||||
## Some versions of the HPUX 10.20 sed can't process this invocation
|
||||
## correctly. Breaking it into two sed invocations is a workaround.
|
||||
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
dashXmstdout)
|
||||
# This case only exists to satisfy depend.m4. It is never actually
|
||||
# run, as this mode is specially recognized in the preamble.
|
||||
exit 1
|
||||
;;
|
||||
|
||||
makedepend)
|
||||
"$@" || exit $?
|
||||
# X makedepend
|
||||
shift
|
||||
cleared=no
|
||||
for arg in "$@"; do
|
||||
case $cleared in
|
||||
no)
|
||||
set ""; shift
|
||||
cleared=yes ;;
|
||||
esac
|
||||
case "$arg" in
|
||||
-D*|-I*)
|
||||
set fnord "$@" "$arg"; shift ;;
|
||||
-*)
|
||||
;;
|
||||
*)
|
||||
set fnord "$@" "$arg"; shift ;;
|
||||
esac
|
||||
done
|
||||
obj_suffix="`echo $object | sed 's/^.*\././'`"
|
||||
touch "$tmpdepfile"
|
||||
${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
|
||||
rm -f "$depfile"
|
||||
cat < "$tmpdepfile" > "$depfile"
|
||||
sed '1,2d' "$tmpdepfile" | tr ' ' '
|
||||
' | \
|
||||
## Some versions of the HPUX 10.20 sed can't process this invocation
|
||||
## correctly. Breaking it into two sed invocations is a workaround.
|
||||
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile" "$tmpdepfile".bak
|
||||
;;
|
||||
|
||||
cpp)
|
||||
# Important note: in order to support this mode, a compiler *must*
|
||||
# always write the proprocessed file to stdout.
|
||||
"$@" || exit $?
|
||||
|
||||
# Remove the call to Libtool.
|
||||
if test "$libtool" = yes; then
|
||||
while test $1 != '--mode=compile'; do
|
||||
shift
|
||||
done
|
||||
shift
|
||||
fi
|
||||
|
||||
# Remove `-o $object'.
|
||||
IFS=" "
|
||||
for arg
|
||||
do
|
||||
case $arg in
|
||||
-o)
|
||||
shift
|
||||
;;
|
||||
$object)
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
set fnord "$@" "$arg"
|
||||
shift # fnord
|
||||
shift # $arg
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
"$@" -E |
|
||||
sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
|
||||
sed '$ s: \\$::' > "$tmpdepfile"
|
||||
rm -f "$depfile"
|
||||
echo "$object : \\" > "$depfile"
|
||||
cat < "$tmpdepfile" >> "$depfile"
|
||||
sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
msvisualcpp)
|
||||
# Important note: in order to support this mode, a compiler *must*
|
||||
# always write the proprocessed file to stdout, regardless of -o,
|
||||
# because we must use -o when running libtool.
|
||||
"$@" || exit $?
|
||||
IFS=" "
|
||||
for arg
|
||||
do
|
||||
case "$arg" in
|
||||
"-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
|
||||
set fnord "$@"
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
set fnord "$@" "$arg"
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
done
|
||||
"$@" -E |
|
||||
sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
|
||||
rm -f "$depfile"
|
||||
echo "$object : \\" > "$depfile"
|
||||
. "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
|
||||
echo " " >> "$depfile"
|
||||
. "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
none)
|
||||
exec "$@"
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "Unknown depmode $depmode" 1>&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
exit 0
|
||||
276
config/install-sh
Executable file
276
config/install-sh
Executable file
@@ -0,0 +1,276 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# install - install a program, script, or datafile
|
||||
# This comes from X11R5 (mit/util/scripts/install.sh).
|
||||
#
|
||||
# Copyright 1991 by the Massachusetts Institute of Technology
|
||||
#
|
||||
# Permission to use, copy, modify, distribute, and sell this software and its
|
||||
# documentation for any purpose is hereby granted without fee, provided that
|
||||
# the above copyright notice appear in all copies and that both that
|
||||
# copyright notice and this permission notice appear in supporting
|
||||
# documentation, and that the name of M.I.T. not be used in advertising or
|
||||
# publicity pertaining to distribution of the software without specific,
|
||||
# written prior permission. M.I.T. makes no representations about the
|
||||
# suitability of this software for any purpose. It is provided "as is"
|
||||
# without express or implied warranty.
|
||||
#
|
||||
# Calling this script install-sh is preferred over install.sh, to prevent
|
||||
# `make' implicit rules from creating a file called install from it
|
||||
# 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.
|
||||
|
||||
|
||||
# set DOITPROG to echo to test this script
|
||||
|
||||
# Don't use :- since 4.3BSD and earlier shells don't like it.
|
||||
doit="${DOITPROG-}"
|
||||
|
||||
|
||||
# put in absolute paths if you don't have them in your path; or use env. vars.
|
||||
|
||||
mvprog="${MVPROG-mv}"
|
||||
cpprog="${CPPROG-cp}"
|
||||
chmodprog="${CHMODPROG-chmod}"
|
||||
chownprog="${CHOWNPROG-chown}"
|
||||
chgrpprog="${CHGRPPROG-chgrp}"
|
||||
stripprog="${STRIPPROG-strip}"
|
||||
rmprog="${RMPROG-rm}"
|
||||
mkdirprog="${MKDIRPROG-mkdir}"
|
||||
|
||||
transformbasename=""
|
||||
transform_arg=""
|
||||
instcmd="$mvprog"
|
||||
chmodcmd="$chmodprog 0755"
|
||||
chowncmd=""
|
||||
chgrpcmd=""
|
||||
stripcmd=""
|
||||
rmcmd="$rmprog -f"
|
||||
mvcmd="$mvprog"
|
||||
src=""
|
||||
dst=""
|
||||
dir_arg=""
|
||||
|
||||
while [ x"$1" != x ]; do
|
||||
case "$1" in
|
||||
-c) instcmd=$cpprog
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-d) dir_arg=true
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-m) chmodcmd="$chmodprog $2"
|
||||
shift
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-o) chowncmd="$chownprog $2"
|
||||
shift
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-g) chgrpcmd="$chgrpprog $2"
|
||||
shift
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-s) stripcmd=$stripprog
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-t=*) transformarg=`echo $1 | sed 's/-t=//'`
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-b=*) transformbasename=`echo $1 | sed 's/-b=//'`
|
||||
shift
|
||||
continue;;
|
||||
|
||||
*) if [ x"$src" = x ]
|
||||
then
|
||||
src=$1
|
||||
else
|
||||
# this colon is to work around a 386BSD /bin/sh bug
|
||||
:
|
||||
dst=$1
|
||||
fi
|
||||
shift
|
||||
continue;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ x"$src" = x ]
|
||||
then
|
||||
echo "install: no input file specified" >&2
|
||||
exit 1
|
||||
else
|
||||
true
|
||||
fi
|
||||
|
||||
if [ x"$dir_arg" != x ]; then
|
||||
dst=$src
|
||||
src=""
|
||||
|
||||
if [ -d "$dst" ]; then
|
||||
instcmd=:
|
||||
chmodcmd=""
|
||||
else
|
||||
instcmd=$mkdirprog
|
||||
fi
|
||||
else
|
||||
|
||||
# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
|
||||
# might cause directories to be created, which would be especially bad
|
||||
# if $src (and thus $dsttmp) contains '*'.
|
||||
|
||||
if [ -f "$src" -o -d "$src" ]
|
||||
then
|
||||
true
|
||||
else
|
||||
echo "install: $src does not exist" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ x"$dst" = x ]
|
||||
then
|
||||
echo "install: no destination specified" >&2
|
||||
exit 1
|
||||
else
|
||||
true
|
||||
fi
|
||||
|
||||
# If destination is a directory, append the input filename; if your system
|
||||
# does not like double slashes in filenames, you may need to add some logic
|
||||
|
||||
if [ -d "$dst" ]
|
||||
then
|
||||
dst=$dst/`basename "$src"`
|
||||
else
|
||||
true
|
||||
fi
|
||||
fi
|
||||
|
||||
## this sed command emulates the dirname command
|
||||
dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
|
||||
|
||||
# Make sure that the destination directory exists.
|
||||
# this part is taken from Noah Friedman's mkinstalldirs script
|
||||
|
||||
# Skip lots of stat calls in the usual case.
|
||||
if [ ! -d "$dstdir" ]; then
|
||||
defaultIFS='
|
||||
'
|
||||
IFS="${IFS-$defaultIFS}"
|
||||
|
||||
oIFS=$IFS
|
||||
# Some sh's can't handle IFS=/ for some reason.
|
||||
IFS='%'
|
||||
set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
|
||||
IFS=$oIFS
|
||||
|
||||
pathcomp=''
|
||||
|
||||
while [ $# -ne 0 ] ; do
|
||||
pathcomp=$pathcomp$1
|
||||
shift
|
||||
|
||||
if [ ! -d "$pathcomp" ] ;
|
||||
then
|
||||
$mkdirprog "$pathcomp"
|
||||
else
|
||||
true
|
||||
fi
|
||||
|
||||
pathcomp=$pathcomp/
|
||||
done
|
||||
fi
|
||||
|
||||
if [ x"$dir_arg" != x ]
|
||||
then
|
||||
$doit $instcmd "$dst" &&
|
||||
|
||||
if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dst"; else true ; fi &&
|
||||
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dst"; else true ; fi &&
|
||||
if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dst"; else true ; fi &&
|
||||
if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dst"; else true ; fi
|
||||
else
|
||||
|
||||
# If we're going to rename the final executable, determine the name now.
|
||||
|
||||
if [ x"$transformarg" = x ]
|
||||
then
|
||||
dstfile=`basename "$dst"`
|
||||
else
|
||||
dstfile=`basename "$dst" $transformbasename |
|
||||
sed $transformarg`$transformbasename
|
||||
fi
|
||||
|
||||
# don't allow the sed command to completely eliminate the filename
|
||||
|
||||
if [ x"$dstfile" = x ]
|
||||
then
|
||||
dstfile=`basename "$dst"`
|
||||
else
|
||||
true
|
||||
fi
|
||||
|
||||
# Make a couple of temp file names in the proper directory.
|
||||
|
||||
dsttmp=$dstdir/#inst.$$#
|
||||
rmtmp=$dstdir/#rm.$$#
|
||||
|
||||
# Trap to clean up temp files at exit.
|
||||
|
||||
trap 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0
|
||||
trap '(exit $?); exit' 1 2 13 15
|
||||
|
||||
# Move or copy the file name to the temp name
|
||||
|
||||
$doit $instcmd $src "$dsttmp" &&
|
||||
|
||||
# and set any options; do chmod last to preserve setuid bits
|
||||
|
||||
# If any of these fail, we abort the whole thing. If we want to
|
||||
# ignore errors from any of these, just make sure not to ignore
|
||||
# errors from the above "$doit $instcmd $src $dsttmp" command.
|
||||
|
||||
if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dsttmp";else true;fi &&
|
||||
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dsttmp";else true;fi &&
|
||||
if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dsttmp";else true;fi &&
|
||||
if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dsttmp";else true;fi &&
|
||||
|
||||
# Now remove or move any old file at destination location. We try this
|
||||
# two ways since rm can't unlink itself on some systems and the destination
|
||||
# file might be busy for other reasons. In this case, the final cleanup
|
||||
# might fail but the new file should still install successfully.
|
||||
|
||||
{
|
||||
if [ -f "$dstdir/$dstfile" ]
|
||||
then
|
||||
$doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null ||
|
||||
$doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null ||
|
||||
{
|
||||
echo "install: cannot unlink or rename $dstdir/$dstfile" >&2
|
||||
(exit 1); exit
|
||||
}
|
||||
else
|
||||
true
|
||||
fi
|
||||
} &&
|
||||
|
||||
# Now rename the file to the real destination.
|
||||
|
||||
$doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
|
||||
|
||||
fi &&
|
||||
|
||||
# The final little trick to "correctly" pass the exit status to the exit trap.
|
||||
|
||||
{
|
||||
(exit 0); exit
|
||||
}
|
||||
336
config/missing
Normal file
336
config/missing
Normal file
@@ -0,0 +1,336 @@
|
||||
#! /bin/sh
|
||||
# Common stub for a few missing GNU programs while installing.
|
||||
# Copyright (C) 1996, 1997, 1999, 2000, 2002 Free Software Foundation, Inc.
|
||||
# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
|
||||
|
||||
# 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.
|
||||
|
||||
if test $# -eq 0; then
|
||||
echo 1>&2 "Try \`$0 --help' for more information"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
run=:
|
||||
|
||||
# In the cases where this matters, `missing' is being run in the
|
||||
# srcdir already.
|
||||
if test -f configure.ac; then
|
||||
configure_ac=configure.ac
|
||||
else
|
||||
configure_ac=configure.in
|
||||
fi
|
||||
|
||||
case "$1" in
|
||||
--run)
|
||||
# Try to run requested program, and just exit if it succeeds.
|
||||
run=
|
||||
shift
|
||||
"$@" && exit 0
|
||||
;;
|
||||
esac
|
||||
|
||||
# If it does not exist, or fails to run (possibly an outdated version),
|
||||
# try to emulate it.
|
||||
case "$1" in
|
||||
|
||||
-h|--h|--he|--hel|--help)
|
||||
echo "\
|
||||
$0 [OPTION]... PROGRAM [ARGUMENT]...
|
||||
|
||||
Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
|
||||
error status if there is no known handling for PROGRAM.
|
||||
|
||||
Options:
|
||||
-h, --help display this help and exit
|
||||
-v, --version output version information and exit
|
||||
--run try to run the given command, and emulate it if it fails
|
||||
|
||||
Supported PROGRAM values:
|
||||
aclocal touch file \`aclocal.m4'
|
||||
autoconf touch file \`configure'
|
||||
autoheader touch file \`config.h.in'
|
||||
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
|
||||
help2man touch the output file
|
||||
lex create \`lex.yy.c', if possible, from existing .c
|
||||
makeinfo touch the output file
|
||||
tar try tar, gnutar, gtar, then tar without non-portable flags
|
||||
yacc create \`y.tab.[ch]', if possible, from existing .[ch]"
|
||||
;;
|
||||
|
||||
-v|--v|--ve|--ver|--vers|--versi|--versio|--version)
|
||||
echo "missing 0.4 - GNU automake"
|
||||
;;
|
||||
|
||||
-*)
|
||||
echo 1>&2 "$0: Unknown \`$1' option"
|
||||
echo 1>&2 "Try \`$0 --help' for more information"
|
||||
exit 1
|
||||
;;
|
||||
|
||||
aclocal*)
|
||||
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
|
||||
# We have it, but it failed.
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is missing on your system. You should only need it if
|
||||
you modified \`acinclude.m4' or \`${configure_ac}'. You might want
|
||||
to install the \`Automake' and \`Perl' packages. Grab them from
|
||||
any GNU archive site."
|
||||
touch aclocal.m4
|
||||
;;
|
||||
|
||||
autoconf)
|
||||
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
|
||||
# We have it, but it failed.
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is missing on your system. You should only need it if
|
||||
you modified \`${configure_ac}'. You might want to install the
|
||||
\`Autoconf' and \`GNU m4' packages. Grab them from any GNU
|
||||
archive site."
|
||||
touch configure
|
||||
;;
|
||||
|
||||
autoheader)
|
||||
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
|
||||
# We have it, but it failed.
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is missing on your system. You should only need it if
|
||||
you modified \`acconfig.h' or \`${configure_ac}'. You might want
|
||||
to install the \`Autoconf' and \`GNU m4' packages. Grab them
|
||||
from any GNU archive site."
|
||||
files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
|
||||
test -z "$files" && files="config.h"
|
||||
touch_files=
|
||||
for f in $files; do
|
||||
case "$f" in
|
||||
*:*) touch_files="$touch_files "`echo "$f" |
|
||||
sed -e 's/^[^:]*://' -e 's/:.*//'`;;
|
||||
*) touch_files="$touch_files $f.in";;
|
||||
esac
|
||||
done
|
||||
touch $touch_files
|
||||
;;
|
||||
|
||||
automake*)
|
||||
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
|
||||
# We have it, but it failed.
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is missing on your system. You should only need it if
|
||||
you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
|
||||
You might want to install the \`Automake' and \`Perl' packages.
|
||||
Grab them from any GNU archive site."
|
||||
find . -type f -name Makefile.am -print |
|
||||
sed 's/\.am$/.in/' |
|
||||
while read f; do touch "$f"; done
|
||||
;;
|
||||
|
||||
autom4te)
|
||||
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
|
||||
# We have it, but it failed.
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is needed, and you do not seem to have it handy on your
|
||||
system. You might have modified some files without having the
|
||||
proper tools for further handling them.
|
||||
You can get \`$1Help2man' 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'`
|
||||
if test -f "$file"; then
|
||||
touch $file
|
||||
else
|
||||
test -z "$file" || exec >$file
|
||||
echo "#! /bin/sh"
|
||||
echo "# Created by GNU Automake missing as a replacement of"
|
||||
echo "# $ $@"
|
||||
echo "exit 0"
|
||||
chmod +x $file
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
|
||||
bison|yacc)
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is missing on your system. You should only need it if
|
||||
you modified a \`.y' file. You may need the \`Bison' package
|
||||
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
|
||||
eval LASTARG="\${$#}"
|
||||
case "$LASTARG" in
|
||||
*.y)
|
||||
SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
|
||||
if [ -f "$SRCFILE" ]; then
|
||||
cp "$SRCFILE" y.tab.c
|
||||
fi
|
||||
SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
|
||||
if [ -f "$SRCFILE" ]; then
|
||||
cp "$SRCFILE" y.tab.h
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
if [ ! -f y.tab.h ]; then
|
||||
echo >y.tab.h
|
||||
fi
|
||||
if [ ! -f y.tab.c ]; then
|
||||
echo 'main() { return 0; }' >y.tab.c
|
||||
fi
|
||||
;;
|
||||
|
||||
lex|flex)
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is missing on your system. You should only need it if
|
||||
you modified a \`.l' file. You may need the \`Flex' package
|
||||
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
|
||||
eval LASTARG="\${$#}"
|
||||
case "$LASTARG" in
|
||||
*.l)
|
||||
SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
|
||||
if [ -f "$SRCFILE" ]; then
|
||||
cp "$SRCFILE" lex.yy.c
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
if [ ! -f lex.yy.c ]; then
|
||||
echo 'main() { return 0; }' >lex.yy.c
|
||||
fi
|
||||
;;
|
||||
|
||||
help2man)
|
||||
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
|
||||
# We have it, but it failed.
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is missing on your system. You should only need it if
|
||||
you modified a dependency of a manual page. You may need the
|
||||
\`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
|
||||
touch $file
|
||||
else
|
||||
test -z "$file" || exec >$file
|
||||
echo ".ab help2man is required to generate this page"
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
|
||||
makeinfo)
|
||||
if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then
|
||||
# We have makeinfo, but it failed.
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is missing on your system. You should only need it if
|
||||
you modified a \`.texi' or \`.texinfo' file, or any other file
|
||||
indirectly affecting the aspect of the manual. The spurious
|
||||
call might also be the consequence of using a buggy \`make' (AIX,
|
||||
DU, IRIX). You might want to install the \`Texinfo' package or
|
||||
the \`GNU make' package. Grab either from any GNU archive site."
|
||||
file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
|
||||
if test -z "$file"; then
|
||||
file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
|
||||
file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file`
|
||||
fi
|
||||
touch $file
|
||||
;;
|
||||
|
||||
tar)
|
||||
shift
|
||||
if test -n "$run"; then
|
||||
echo 1>&2 "ERROR: \`tar' requires --run"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# We have already tried tar in the generic part.
|
||||
# Look for gnutar/gtar before invocation to avoid ugly error
|
||||
# messages.
|
||||
if (gnutar --version > /dev/null 2>&1); then
|
||||
gnutar "$@" && exit 0
|
||||
fi
|
||||
if (gtar --version > /dev/null 2>&1); then
|
||||
gtar "$@" && exit 0
|
||||
fi
|
||||
firstarg="$1"
|
||||
if shift; then
|
||||
case "$firstarg" in
|
||||
*o*)
|
||||
firstarg=`echo "$firstarg" | sed s/o//`
|
||||
tar "$firstarg" "$@" && exit 0
|
||||
;;
|
||||
esac
|
||||
case "$firstarg" in
|
||||
*h*)
|
||||
firstarg=`echo "$firstarg" | sed s/h//`
|
||||
tar "$firstarg" "$@" && exit 0
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
echo 1>&2 "\
|
||||
WARNING: I can't seem to be able to run \`tar' with the given arguments.
|
||||
You may want to install GNU tar or Free paxutils, or check the
|
||||
command line arguments."
|
||||
exit 1
|
||||
;;
|
||||
|
||||
*)
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is needed, and you do not seem to have it handy on your
|
||||
system. You might have modified some files without having the
|
||||
proper tools for further handling them. Check the \`README' file,
|
||||
it often tells you about the needed prerequirements for installing
|
||||
this package. You may also peek at any GNU archive site, in case
|
||||
some other package would contain this missing \`$1' program."
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
exit 0
|
||||
111
config/mkinstalldirs
Normal file
111
config/mkinstalldirs
Normal file
@@ -0,0 +1,111 @@
|
||||
#! /bin/sh
|
||||
# mkinstalldirs --- make directory hierarchy
|
||||
# Author: Noah Friedman <friedman@prep.ai.mit.edu>
|
||||
# Created: 1993-05-16
|
||||
# Public domain
|
||||
|
||||
errstatus=0
|
||||
dirmode=""
|
||||
|
||||
usage="\
|
||||
Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..."
|
||||
|
||||
# process command line arguments
|
||||
while test $# -gt 0 ; do
|
||||
case $1 in
|
||||
-h | --help | --h*) # -h for help
|
||||
echo "$usage" 1>&2
|
||||
exit 0
|
||||
;;
|
||||
-m) # -m PERM arg
|
||||
shift
|
||||
test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
|
||||
dirmode=$1
|
||||
shift
|
||||
;;
|
||||
--) # stop option processing
|
||||
shift
|
||||
break
|
||||
;;
|
||||
-*) # unknown option
|
||||
echo "$usage" 1>&2
|
||||
exit 1
|
||||
;;
|
||||
*) # first non-opt arg
|
||||
break
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
for file
|
||||
do
|
||||
if test -d "$file"; then
|
||||
shift
|
||||
else
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
case $# in
|
||||
0) exit 0 ;;
|
||||
esac
|
||||
|
||||
case $dirmode in
|
||||
'')
|
||||
if mkdir -p -- . 2>/dev/null; then
|
||||
echo "mkdir -p -- $*"
|
||||
exec mkdir -p -- "$@"
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
if mkdir -m "$dirmode" -p -- . 2>/dev/null; then
|
||||
echo "mkdir -m $dirmode -p -- $*"
|
||||
exec mkdir -m "$dirmode" -p -- "$@"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
for file
|
||||
do
|
||||
set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
|
||||
shift
|
||||
|
||||
pathcomp=
|
||||
for d
|
||||
do
|
||||
pathcomp="$pathcomp$d"
|
||||
case $pathcomp in
|
||||
-*) pathcomp=./$pathcomp ;;
|
||||
esac
|
||||
|
||||
if test ! -d "$pathcomp"; then
|
||||
echo "mkdir $pathcomp"
|
||||
|
||||
mkdir "$pathcomp" || lasterr=$?
|
||||
|
||||
if test ! -d "$pathcomp"; then
|
||||
errstatus=$lasterr
|
||||
else
|
||||
if test ! -z "$dirmode"; then
|
||||
echo "chmod $dirmode $pathcomp"
|
||||
lasterr=""
|
||||
chmod "$dirmode" "$pathcomp" || lasterr=$?
|
||||
|
||||
if test ! -z "$lasterr"; then
|
||||
errstatus=$lasterr
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
pathcomp="$pathcomp/"
|
||||
done
|
||||
done
|
||||
|
||||
exit $errstatus
|
||||
|
||||
# Local Variables:
|
||||
# mode: shell-script
|
||||
# sh-indentation: 2
|
||||
# End:
|
||||
# mkinstalldirs ends here
|
||||
File diff suppressed because it is too large
Load Diff
302
configure.ac
Normal file
302
configure.ac
Normal file
@@ -0,0 +1,302 @@
|
||||
dnl Process this file with autoconf to produce a configure script. -*-m4-*-
|
||||
AC_INIT(GNU coreutils, 4.5.3, bug-coreutils@gnu.org)
|
||||
AC_CONFIG_SRCDIR(src/ls.c)
|
||||
|
||||
AC_CONFIG_AUX_DIR(config)
|
||||
AM_CONFIG_HEADER(config.h:config.hin)
|
||||
AC_CANONICAL_HOST
|
||||
|
||||
AM_INIT_AUTOMAKE([1.6b gnits dist-bzip2])
|
||||
|
||||
AC_GNU_SOURCE
|
||||
jm_PERL
|
||||
AC_PROG_CC
|
||||
AC_PROG_CPP
|
||||
AC_PROG_GCC_TRADITIONAL
|
||||
AC_PROG_RANLIB
|
||||
AC_AIX
|
||||
AC_MINIX
|
||||
|
||||
AC_CHECK_FUNCS(uname,
|
||||
OPTIONAL_BIN_PROGS="$OPTIONAL_BIN_PROGS uname" MAN="$MAN uname.1")
|
||||
AC_CHECK_FUNCS(chroot,
|
||||
OPTIONAL_BIN_PROGS="$OPTIONAL_BIN_PROGS chroot" MAN="$MAN chroot.1")
|
||||
AC_CHECK_FUNCS(gethostid,
|
||||
OPTIONAL_BIN_PROGS="$OPTIONAL_BIN_PROGS hostid" MAN="$MAN hostid.1")
|
||||
|
||||
jm_MACROS
|
||||
|
||||
AM_HEADER_TIOCGWINSZ_NEEDS_SYS_IOCTL
|
||||
jm_WINSIZE_IN_PTEM
|
||||
|
||||
# Check for SunOS statfs brokenness wrt partitions 2GB and larger.
|
||||
# If <sys/vfs.h> exists and struct statfs has a member named f_spare,
|
||||
# enable the work-around code in fsusage.c.
|
||||
AC_MSG_CHECKING([for statfs that truncates block counts])
|
||||
AC_CACHE_VAL(fu_cv_sys_truncating_statfs,
|
||||
[AC_TRY_COMPILE([
|
||||
#if !defined(sun) && !defined(__sun)
|
||||
choke -- this is a workaround for a Sun-specific problem
|
||||
#endif
|
||||
#include <sys/types.h>
|
||||
#include <sys/vfs.h>],
|
||||
[struct statfs t; long c = *(t.f_spare);],
|
||||
fu_cv_sys_truncating_statfs=yes,
|
||||
fu_cv_sys_truncating_statfs=no,
|
||||
)])
|
||||
if test $fu_cv_sys_truncating_statfs = yes; then
|
||||
AC_DEFINE(STATFS_TRUNCATES_BLOCK_COUNTS, 1,
|
||||
[ Define if the block counts reported by statfs may be truncated to 2GB
|
||||
and the correct values may be stored in the f_spare array.
|
||||
(SunOS 4.1.2, 4.1.3, and 4.1.3_U1 are reported to have this problem.
|
||||
SunOS 4.1.1 seems not to be affected.)])
|
||||
fi
|
||||
AC_MSG_RESULT($fu_cv_sys_truncating_statfs)
|
||||
|
||||
AC_MSG_CHECKING(whether localtime caches TZ)
|
||||
AC_CACHE_VAL(utils_cv_localtime_cache,
|
||||
[if test x$ac_cv_func_tzset = xyes; then
|
||||
AC_TRY_RUN([#include <time.h>
|
||||
#if STDC_HEADERS
|
||||
# include <stdlib.h>
|
||||
#endif
|
||||
extern char **environ;
|
||||
unset_TZ ()
|
||||
{
|
||||
char **from, **to;
|
||||
for (to = from = environ; (*to = *from); from++)
|
||||
if (! (to[0][0] == 'T' && to[0][1] == 'Z' && to[0][2] == '='))
|
||||
to++;
|
||||
}
|
||||
main()
|
||||
{
|
||||
time_t now = time ((time_t *) 0);
|
||||
int hour_GMT0, hour_unset;
|
||||
if (putenv ("TZ=GMT0") != 0)
|
||||
exit (1);
|
||||
hour_GMT0 = localtime (&now)->tm_hour;
|
||||
unset_TZ ();
|
||||
hour_unset = localtime (&now)->tm_hour;
|
||||
if (putenv ("TZ=PST8") != 0)
|
||||
exit (1);
|
||||
if (localtime (&now)->tm_hour == hour_GMT0)
|
||||
exit (1);
|
||||
unset_TZ ();
|
||||
if (localtime (&now)->tm_hour != hour_unset)
|
||||
exit (1);
|
||||
exit (0);
|
||||
}], utils_cv_localtime_cache=no, utils_cv_localtime_cache=yes,
|
||||
[# If we have tzset, assume the worst when cross-compiling.
|
||||
utils_cv_localtime_cache=yes])
|
||||
else
|
||||
# If we lack tzset, report that localtime does not cache TZ,
|
||||
# since we can't invalidate the cache if we don't have tzset.
|
||||
utils_cv_localtime_cache=no
|
||||
fi])dnl
|
||||
AC_MSG_RESULT($utils_cv_localtime_cache)
|
||||
if test $utils_cv_localtime_cache = yes; then
|
||||
AC_DEFINE(LOCALTIME_CACHE, 1, [FIXME])
|
||||
fi
|
||||
|
||||
# SCO-ODT-3.0 is reported to need -los to link programs using initgroups
|
||||
AC_CHECK_FUNCS(initgroups)
|
||||
if test $ac_cv_func_initgroups = no; then
|
||||
AC_CHECK_LIB(os, initgroups)
|
||||
fi
|
||||
|
||||
AC_CHECK_FUNCS(syslog)
|
||||
if test $ac_cv_func_syslog = no; then
|
||||
# syslog is not in the default libraries. See if it's in some other.
|
||||
for lib in bsd socket inet; do
|
||||
AC_CHECK_LIB($lib, syslog, [AC_DEFINE(HAVE_SYSLOG, 1, [FIXME])
|
||||
LIBS="$LIBS -l$lib"; break])
|
||||
done
|
||||
fi
|
||||
|
||||
AC_MSG_CHECKING(for 3-argument setpriority function)
|
||||
AC_CACHE_VAL(utils_cv_func_setpriority,
|
||||
[AC_TRY_LINK([#include <sys/time.h>
|
||||
#include <sys/resource.h>],
|
||||
[setpriority(0, 0, 0);],
|
||||
utils_cv_func_setpriority=yes, utils_cv_func_setpriority=no)])
|
||||
AC_MSG_RESULT($utils_cv_func_setpriority)
|
||||
if test $utils_cv_func_setpriority = yes; then
|
||||
OPTIONAL_BIN_PROGS="$OPTIONAL_BIN_PROGS nice"
|
||||
OPTIONAL_BIN_ZCRIPTS="$OPTIONAL_BIN_ZCRIPTS nohup"
|
||||
MAN="$MAN nice.1 nohup.1"
|
||||
else
|
||||
AC_MSG_CHECKING(for nice function)
|
||||
AC_CACHE_VAL(utils_cv_func_nice,
|
||||
[AC_TRY_LINK([], nice();,
|
||||
utils_cv_func_nice=yes, utils_cv_func_nice=no)])
|
||||
AC_MSG_RESULT($utils_cv_func_nice)
|
||||
if test $utils_cv_func_nice = yes; then
|
||||
AC_DEFINE(NICE_PRIORITY, 1, [FIXME])
|
||||
OPTIONAL_BIN_PROGS="$OPTIONAL_BIN_PROGS nice"
|
||||
OPTIONAL_BIN_ZCRIPTS="$OPTIONAL_BIN_ZCRIPTS nohup"
|
||||
MAN="$MAN nice.1 nohup.1"
|
||||
fi
|
||||
fi
|
||||
|
||||
AC_DEFUN(jm_DUMMY_1,
|
||||
[
|
||||
AC_REQUIRE([jm_PREREQ_READUTMP])
|
||||
if test $ac_cv_header_utmp_h = yes || test $ac_cv_header_utmpx_h = yes; then
|
||||
OPTIONAL_BIN_PROGS="$OPTIONAL_BIN_PROGS pinky users who"
|
||||
MAN="$MAN pinky.1 users.1 who.1"
|
||||
fi
|
||||
])
|
||||
jm_DUMMY_1
|
||||
|
||||
AC_MSG_CHECKING(ut_host in struct utmp)
|
||||
AC_CACHE_VAL(su_cv_func_ut_host_in_utmp,
|
||||
[AC_TRY_LINK([#include <sys/types.h>
|
||||
#include <utmp.h>], [struct utmp ut; ut.ut_host;],
|
||||
su_cv_func_ut_host_in_utmp=yes, su_cv_func_ut_host_in_utmp=no)])
|
||||
AC_MSG_RESULT($su_cv_func_ut_host_in_utmp)
|
||||
if test $su_cv_func_ut_host_in_utmp = yes; then
|
||||
have_ut_host=1
|
||||
AC_DEFINE(HAVE_UT_HOST, 1, [FIXME])
|
||||
fi
|
||||
|
||||
if test -z "$have_ut_host"; then
|
||||
AC_MSG_CHECKING(ut_host in struct utmpx)
|
||||
AC_CACHE_VAL(su_cv_func_ut_host_in_utmpx,
|
||||
[AC_TRY_LINK([#include <sys/types.h>
|
||||
#include <utmpx.h>], [struct utmpx ut; ut.ut_host;],
|
||||
su_cv_func_ut_host_in_utmpx=yes, su_cv_func_ut_host_in_utmpx=no)])
|
||||
AC_MSG_RESULT($su_cv_func_ut_host_in_utmpx)
|
||||
if test $su_cv_func_ut_host_in_utmpx = yes; then
|
||||
AC_DEFINE(HAVE_UTMPX_H, 1, [FIXME])
|
||||
AC_DEFINE(HAVE_UT_HOST, 1, [FIXME])
|
||||
fi
|
||||
fi
|
||||
|
||||
GNULIB_BOOT_TIME(
|
||||
[OPTIONAL_BIN_PROGS="$OPTIONAL_BIN_PROGS uptime" MAN="$MAN uptime.1"])
|
||||
|
||||
AM_SYS_POSIX_TERMIOS
|
||||
jm_HEADER_TIOCGWINSZ_NEEDS_SYS_IOCTL
|
||||
|
||||
if test $ac_cv_sys_posix_termios = yes; then
|
||||
OPTIONAL_BIN_PROGS="$OPTIONAL_BIN_PROGS stty" MAN="$MAN stty.1"
|
||||
|
||||
AC_MSG_CHECKING(whether termios.h needs _XOPEN_SOURCE)
|
||||
AC_CACHE_VAL(su_cv_sys_termios_needs_xopen_source,
|
||||
[AC_EGREP_CPP(yes, [#include <termios.h>
|
||||
#ifdef IUCLC
|
||||
yes
|
||||
#endif], su_cv_sys_termios_needs_xopen_source=no,
|
||||
AC_EGREP_CPP(yes, [#define _XOPEN_SOURCE
|
||||
#include <termios.h>
|
||||
#ifdef IUCLC
|
||||
yes
|
||||
#endif], su_cv_sys_termios_needs_xopen_source=yes,
|
||||
su_cv_sys_termios_needs_xopen_source=no))])
|
||||
AC_MSG_RESULT($su_cv_sys_termios_needs_xopen_source)
|
||||
test $su_cv_sys_termios_needs_xopen_source = yes &&
|
||||
AC_DEFINE(TERMIOS_NEEDS_XOPEN_SOURCE, 1, [FIXME])
|
||||
|
||||
AC_MSG_CHECKING(c_line in struct termios)
|
||||
AC_CACHE_VAL(su_cv_sys_c_line_in_termios,
|
||||
[AC_TRY_LINK([#if TERMIOS_NEEDS_XOPEN_SOURCE
|
||||
#define _XOPEN_SOURCE
|
||||
#endif
|
||||
#include <sys/types.h>
|
||||
#include <termios.h>],
|
||||
[struct termios t; t.c_line;],
|
||||
su_cv_sys_c_line_in_termios=yes,
|
||||
su_cv_sys_c_line_in_termios=no)])
|
||||
AC_MSG_RESULT($su_cv_sys_c_line_in_termios)
|
||||
test $su_cv_sys_c_line_in_termios = yes && AC_DEFINE(HAVE_C_LINE, 1, [FIXME])
|
||||
fi
|
||||
|
||||
# FIXME: note that this macro appears above, too.
|
||||
# I'm leaving it here for now. This whole thing needs to be modernized...
|
||||
jm_WINSIZE_IN_PTEM
|
||||
|
||||
jm_HEADER_TIOCGWINSZ_IN_TERMIOS_H
|
||||
|
||||
if test $jm_cv_sys_tiocgwinsz_needs_termios_h = no && \
|
||||
test $jm_cv_sys_tiocgwinsz_needs_sys_ioctl_h = no; then
|
||||
AC_MSG_CHECKING(TIOCGWINSZ in sys/pty.h)
|
||||
AC_CACHE_VAL(su_cv_sys_tiocgwinsz_in_sys_pty_h,
|
||||
[AC_TRY_LINK([#include <sys/types.h>
|
||||
#ifdef WINSIZE_IN_PTEM
|
||||
# include <sys/stream.h>
|
||||
# include <sys/ptem.h>
|
||||
#endif
|
||||
#include <sys/ioctl.h>
|
||||
#include <sys/tty.h>
|
||||
#include <sys/pty.h>],
|
||||
[int x = TIOCGWINSZ;],
|
||||
su_cv_sys_tiocgwinsz_in_sys_pty_h=yes,
|
||||
su_cv_sys_tiocgwinsz_in_sys_pty_h=no)])
|
||||
AC_MSG_RESULT($su_cv_sys_tiocgwinsz_in_sys_pty_h)
|
||||
|
||||
test $su_cv_sys_tiocgwinsz_in_sys_pty_h = yes \
|
||||
&& AC_DEFINE(GWINSZ_IN_SYS_PTY, 1,
|
||||
[Define if your system defines TIOCGWINSZ in sys/pty.h.])
|
||||
fi
|
||||
|
||||
# For src/kill.c.
|
||||
AC_CHECK_DECLS([strsignal, strtoimax, sys_siglist, _sys_siglist])
|
||||
|
||||
jm_LIB_CHECK
|
||||
|
||||
AM_GNU_GETTEXT([external], [need-ngettext])
|
||||
|
||||
AC_CONFIG_FILES(
|
||||
Makefile
|
||||
doc/Makefile
|
||||
lib/Makefile
|
||||
man/Makefile
|
||||
m4/Makefile
|
||||
po/Makefile.in
|
||||
src/Makefile
|
||||
tests/Makefile
|
||||
tests/basename/Makefile
|
||||
tests/chgrp/Makefile
|
||||
tests/chmod/Makefile
|
||||
tests/chown/Makefile
|
||||
tests/cp/Makefile
|
||||
tests/cut/Makefile
|
||||
tests/date/Makefile
|
||||
tests/dd/Makefile
|
||||
tests/dircolors/Makefile
|
||||
tests/du/Makefile
|
||||
tests/expr/Makefile
|
||||
tests/factor/Makefile
|
||||
tests/fmt/Makefile
|
||||
tests/head/Makefile
|
||||
tests/install/Makefile
|
||||
tests/join/Makefile
|
||||
tests/ln/Makefile
|
||||
tests/ls-2/Makefile
|
||||
tests/ls/Makefile
|
||||
tests/md5sum/Makefile
|
||||
tests/misc/Makefile
|
||||
tests/mkdir/Makefile
|
||||
tests/mv/Makefile
|
||||
tests/od/Makefile
|
||||
tests/pr/Makefile
|
||||
tests/rm/Makefile
|
||||
tests/rmdir/Makefile
|
||||
tests/seq/Makefile
|
||||
tests/sha1sum/Makefile
|
||||
tests/shred/Makefile
|
||||
tests/sort/Makefile
|
||||
tests/stty/Makefile
|
||||
tests/sum/Makefile
|
||||
tests/tac/Makefile
|
||||
tests/tail-2/Makefile
|
||||
tests/tail/Makefile
|
||||
tests/test/Makefile
|
||||
tests/touch/Makefile
|
||||
tests/tr/Makefile
|
||||
tests/tsort/Makefile
|
||||
tests/unexpand/Makefile
|
||||
tests/uniq/Makefile
|
||||
tests/wc/Makefile
|
||||
)
|
||||
AC_OUTPUT
|
||||
184
doc/ChangeLog
184
doc/ChangeLog
@@ -1,3 +1,187 @@
|
||||
2002-09-13 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* coreutils.texi (tail invocation): In --sleep-interval=NUMBER,
|
||||
NUMBER may now be a floating point number.
|
||||
(stat invocation): Remove references to now-removed %S and %C.
|
||||
(Time directives) [%S]: Explain why the range is [0..60].
|
||||
|
||||
2002-08-30 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* coreutils.texi [START-INFO-DIR-ENTRY]: Don't use sc{} on LHS.
|
||||
Fix typo: s/permission/permissions/. From Michail Litvak.
|
||||
|
||||
2002-08-02 Paul Eggert <eggert@twinsun.com>
|
||||
|
||||
* coreutils.texi (uniq invocation): uniq now obeys LC_COLLATE.
|
||||
|
||||
2002-07-29 Paul Eggert <eggert@twinsun.com>
|
||||
|
||||
* coreutils.texi (nohup invocation): Change behavior to conform to
|
||||
POSIX 1003.1-2001:
|
||||
- Do not adjust scheduling priority.
|
||||
- Redirects stderr to stdout, if stderr is not a terminal.
|
||||
- Exit status is now 126 if command was found but not invoked,
|
||||
127 if nohup failed or if command was not found.
|
||||
|
||||
2002-07-24 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* coreutils.texi (Time directives): Document %P, %R, %e, %F,
|
||||
%g, %G, and %V
|
||||
|
||||
2002-07-22 Martin Michlmayr <tbm@cyrius.com>
|
||||
|
||||
* coreutils.texi (Formatting the file names): Document
|
||||
that -N/--literal are equivalent to --quoting-style=literal.
|
||||
Reported by Oskar Liljeblad as Debian bug#103612.
|
||||
|
||||
2002-07-10 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* coreutils.texi (du invocation): s/PAT/PATTERN/.
|
||||
From Martin Michlmayr.
|
||||
|
||||
2002-07-08 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* coreutils.texi (cp invocation): Remove unnecessary "$@" in example;
|
||||
Texinfo would render the @" as an umlaut over the following character.
|
||||
From Paul Eggert.
|
||||
* Makefile.am (check-texinfo): Check for the above.
|
||||
|
||||
2002-07-06 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* coreutils.texi (stat invocation): Remove description of --secure.
|
||||
|
||||
2002-07-03 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* coreutils.texi (stat invocation): Rename --link/-l
|
||||
to --dereference/-L. Rewrite description of --dereference.
|
||||
|
||||
2002-06-26 Paul Eggert <eggert@twinsun.com>
|
||||
|
||||
* coreutils.texi (Putting the tools together): Don't mention egrep,
|
||||
since it's not part of POSIX 1003.1-2001.
|
||||
|
||||
2002-06-21 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* coreutils.texi (stat invocation): New section. From Michael Meskes.
|
||||
|
||||
2002-05-19 Paul Eggert <eggert@twinsun.com>
|
||||
|
||||
* coreutils.texi (ls invocation): Document new option: --author.
|
||||
|
||||
2002-06-03 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* coreutils.texi (rm invocation): Add the warning (also in the --help
|
||||
output) that the contents of a removed file are often recoverable.
|
||||
|
||||
2002-05-27 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* Makefile.am (check-texinfo): Adapt to reflect that now we use
|
||||
@acronym{POSIX}.
|
||||
|
||||
2002-05-26 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* coreutils.texi: Use @acronym in place of most uses of @sc.
|
||||
* getdate.texi (Date input formats): Likewise.
|
||||
|
||||
2002-04-28 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* coreutils.texi: Change `@code{PROG}' to `@command{PROG}'.
|
||||
|
||||
2002-04-28 Paul Eggert <eggert@twinsun.com>
|
||||
|
||||
* coreutils.texi (kill invocation): Document the above.
|
||||
Document POSIX signals better.
|
||||
|
||||
2002-04-15 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* coreutils.texi: Document kill.
|
||||
Written by Marcus Brinkmann.
|
||||
|
||||
2002-04-13 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* coreutils.texi: Document link and unlink.
|
||||
|
||||
2002-04-08 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* coreutils.texi: Use new directives, @copying and @insertcopying,
|
||||
thus now requiring texinfo-4.2 to create the .info file.
|
||||
|
||||
2002-02-26 Paul Eggert <eggert@twinsun.com>
|
||||
|
||||
* coreutils.texi (File characteristic tests): Document the
|
||||
behavior of test -nt and -ot when one of the files does not exist,
|
||||
using the same behavior that is documented in ksh93.
|
||||
|
||||
2002-03-05 Paul Eggert <eggert@twinsun.com>
|
||||
|
||||
* coreutils.texi (cut invocation): Say that selected input is
|
||||
written in the same order that it is read, and is written
|
||||
exactly once.
|
||||
|
||||
2002-03-03 Paul Eggert <eggert@twinsun.com>
|
||||
|
||||
Make cp -r equivalent to cp -R. Add a new cp option --copy-contents
|
||||
for people who want to emulate the traditional (and rarely desirable)
|
||||
cp -r behavior.
|
||||
|
||||
* coreutils.texi (cp invocation): Document this.
|
||||
Fix some related minor bugs: --no-dereference is no longer
|
||||
equivalent to -d, and --archive (-a) can override the other
|
||||
symlink options. Warn that cp -R is not portable on symbolic
|
||||
links unless you also specify -P.
|
||||
|
||||
2002-03-02 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* coreutils.texi (cp invocation): Document that cp -r
|
||||
preserves symlinks. Emphasize non-portability of cp -r.
|
||||
|
||||
2002-02-27 Paul Eggert <eggert@twinsun.com>
|
||||
|
||||
* coreutils.texi (Time directives): Add %N for nanoseconds.
|
||||
This documents the recent change to 'ls'.
|
||||
|
||||
2002-02-28 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* coreutils.texi (pr invocation): Reword to avoid using `:'
|
||||
in an @opindex entry -- info doesn't permit it.
|
||||
|
||||
2002-02-27 Paul Eggert <eggert@twinsun.com>
|
||||
|
||||
* coreutils.texi (Formatting file timestamps): Document new
|
||||
time-formatting method: --time-style=+FORMAT.
|
||||
|
||||
2002-02-18 Paul Eggert <eggert@twinsun.com>
|
||||
|
||||
* coreutils.texi (seq invocation): In the example, use "tail
|
||||
-n 3", not "tail -3", to conform to POSIX 1003.1-2001.
|
||||
|
||||
2002-02-17 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* coreutils.texi (tsort background): New section.
|
||||
From Ian Lance Taylor.
|
||||
(tsort invocation): Add a more realistic example.
|
||||
|
||||
2002-02-15 Paul Eggert <eggert@twinsun.com>
|
||||
|
||||
* coreutils.texi: Document _POSIX2_VERSION.
|
||||
(Standards Conformance): New section.
|
||||
|
||||
2002-01-24 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* coreutils.texi (START-INFO-DIR-ENTRY): Remove a few entries
|
||||
and clean up a few others based on suggestions from Bob Proulx.
|
||||
|
||||
2002-02-14 Paul Eggert <eggert@twinsun.com>
|
||||
|
||||
Add support for POSIX 1003.1-2001, which requires removal for
|
||||
support of obsolete "+" option syntax in sort, tail, and uniq.
|
||||
* coreutils.texi: Document this. (Also, document a similar
|
||||
change to "touch", for fileutils).
|
||||
|
||||
2002-01-12 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* coreutils.texi (shred invocation): List some journaled filesystems.
|
||||
|
||||
2001-11-10 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* coreutils.texi (Date directives): Document %u.
|
||||
|
||||
@@ -31,6 +31,9 @@ $(INFO_DEPS): $(EXTRA_DIST)
|
||||
# List words/regexps here that should not appear in the texinfo documentation.
|
||||
check-texinfo:
|
||||
grep timezone $(srcdir)/*.texi && exit 1 || :
|
||||
grep -w POSIX $(srcdir)/*.texi 2> /dev/null && exit 1 || :
|
||||
grep '\$$@"' $(srcdir)/*.texi && exit 1 || :
|
||||
$(PERL) -ne \
|
||||
'/\bPOSIX\b/ && !/\@acronym{POSIX}/ || /{posix}/ and print,exit 1' \
|
||||
$(srcdir)/*.texi 2> /dev/null && : || exit 1
|
||||
|
||||
check: check-texinfo
|
||||
|
||||
298
doc/Makefile.in
298
doc/Makefile.in
@@ -1,7 +1,7 @@
|
||||
# Makefile.in generated by automake 1.5a from Makefile.am.
|
||||
# Makefile.in generated by automake 1.7 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
|
||||
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
|
||||
# Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@@ -14,110 +14,73 @@
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
SHELL = @SHELL@
|
||||
|
||||
srcdir = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
VPATH = @srcdir@
|
||||
prefix = @prefix@
|
||||
exec_prefix = @exec_prefix@
|
||||
|
||||
bindir = @bindir@
|
||||
sbindir = @sbindir@
|
||||
libexecdir = @libexecdir@
|
||||
datadir = @datadir@
|
||||
sysconfdir = @sysconfdir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
localstatedir = @localstatedir@
|
||||
libdir = @libdir@
|
||||
infodir = @infodir@
|
||||
mandir = @mandir@
|
||||
includedir = @includedir@
|
||||
oldincludedir = /usr/include
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
top_builddir = ..
|
||||
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = @program_transform_name@
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
host_alias = @host_alias@
|
||||
host_triplet = @host@
|
||||
|
||||
EXEEXT = @EXEEXT@
|
||||
OBJEXT = @OBJEXT@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
ACLOCAL = @ACLOCAL@
|
||||
ALLOCA = @ALLOCA@
|
||||
AMDEP_FALSE = @AMDEP_FALSE@
|
||||
AMDEP_TRUE = @AMDEP_TRUE@
|
||||
AMTAR = @AMTAR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@
|
||||
CATALOGS = @CATALOGS@
|
||||
CATOBJEXT = @CATOBJEXT@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CPP = @CPP@
|
||||
DATADIRNAME = @DATADIRNAME@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DF_PROG = @DF_PROG@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
FESETROUND_LIBM = @FESETROUND_LIBM@
|
||||
GENCAT = @GENCAT@
|
||||
GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
|
||||
GLIBC21 = @GLIBC21@
|
||||
GMOFILES = @GMOFILES@
|
||||
GMSGFMT = @GMSGFMT@
|
||||
GNU_PACKAGE = @GNU_PACKAGE@
|
||||
HELP2MAN = @HELP2MAN@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
INSTOBJEXT = @INSTOBJEXT@
|
||||
INTLBISON = @INTLBISON@
|
||||
INTLLIBS = @INTLLIBS@
|
||||
INTLOBJS = @INTLOBJS@
|
||||
INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@
|
||||
KMEM_GROUP = @KMEM_GROUP@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBICONV = @LIBICONV@
|
||||
LIBINTL = @LIBINTL@
|
||||
LIBS = @LIBS@
|
||||
LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
|
||||
LIB_CRYPT = @LIB_CRYPT@
|
||||
LIB_NANOSLEEP = @LIB_NANOSLEEP@
|
||||
MAN = @MAN@
|
||||
MKINSTALLDIRS = @MKINSTALLDIRS@
|
||||
MSGFMT = @MSGFMT@
|
||||
NEED_SETGID = @NEED_SETGID@
|
||||
OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
|
||||
OPTIONAL_BIN_ZCRIPTS = @OPTIONAL_BIN_ZCRIPTS@
|
||||
PACKAGE = @PACKAGE@
|
||||
PERL = @PERL@
|
||||
POFILES = @POFILES@
|
||||
POSUB = @POSUB@
|
||||
RANLIB = @RANLIB@
|
||||
SEQ_LIBM = @SEQ_LIBM@
|
||||
SQRT_LIBM = @SQRT_LIBM@
|
||||
U = @U@
|
||||
USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@
|
||||
USE_NLS = @USE_NLS@
|
||||
VERSION = @VERSION@
|
||||
YACC = @YACC@
|
||||
am__include = @am__include@
|
||||
am__quote = @am__quote@
|
||||
install_sh = @install_sh@
|
||||
|
||||
info_TEXINFOS = coreutils.texi
|
||||
|
||||
EXTRA_DIST = perm.texi getdate.texi constants.texi doclicense.texi
|
||||
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,
|
||||
@@ -128,66 +91,134 @@ EXTRA_DIST = perm.texi getdate.texi constants.texi doclicense.texi
|
||||
# and those names all map to one 14-byte name (<package>.info-) on some crufty
|
||||
# old systems.
|
||||
MAKEINFO = makeinfo --no-split
|
||||
MAN = @MAN@
|
||||
MKINSTALLDIRS = @MKINSTALLDIRS@
|
||||
MSGFMT = @MSGFMT@
|
||||
MSGMERGE = @MSGMERGE@
|
||||
NEED_SETGID = @NEED_SETGID@
|
||||
OBJEXT = @OBJEXT@
|
||||
OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
|
||||
OPTIONAL_BIN_ZCRIPTS = @OPTIONAL_BIN_ZCRIPTS@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PERL = @PERL@
|
||||
POSUB = @POSUB@
|
||||
POW_LIB = @POW_LIB@
|
||||
RANLIB = @RANLIB@
|
||||
SEQ_LIBM = @SEQ_LIBM@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
SQRT_LIBM = @SQRT_LIBM@
|
||||
STRIP = @STRIP@
|
||||
U = @U@
|
||||
USE_NLS = @USE_NLS@
|
||||
VERSION = @VERSION@
|
||||
XGETTEXT = @XGETTEXT@
|
||||
YACC = @YACC@
|
||||
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@
|
||||
am__quote = @am__quote@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
datadir = @datadir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
oldincludedir = @oldincludedir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
info_TEXINFOS = coreutils.texi
|
||||
|
||||
EXTRA_DIST = perm.texi getdate.texi constants.texi doclicense.texi
|
||||
subdir = doc
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
DIST_SOURCES =
|
||||
TEXINFO_TEX = $(top_srcdir)/config/texinfo.tex
|
||||
am__TEXINFO_TEX_DIR = $(top_srcdir)/config
|
||||
INFO_DEPS = coreutils.info
|
||||
DVIS = coreutils.dvi
|
||||
PDFS = coreutils.pdf
|
||||
PSS = coreutils.ps
|
||||
TEXINFOS = coreutils.texi
|
||||
DIST_COMMON = ChangeLog Makefile.am Makefile.in mdate-sh stamp-vti \
|
||||
texinfo.tex version.texi
|
||||
DIST_COMMON = ChangeLog Makefile.am Makefile.in stamp-vti version.texi
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .dvi .info .ps .texi
|
||||
.SUFFIXES: .dvi .info .pdf .ps .texi
|
||||
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4)
|
||||
cd $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu doc/Makefile
|
||||
$(AUTOMAKE) --gnits doc/Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
|
||||
|
||||
$(srcdir)/version.texi: $(srcdir)/stamp-vti
|
||||
@:
|
||||
$(srcdir)/stamp-vti: coreutils.texi $(top_srcdir)/configure.ac
|
||||
@(set `$(SHELL) $(srcdir)/mdate-sh $(srcdir)/coreutils.texi`; \
|
||||
.texi.info:
|
||||
@rm -f $@ $@-[0-9] $@-[0-9][0-9]
|
||||
$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
|
||||
`test -f '$<' || echo '$(srcdir)/'`$< -o $@
|
||||
|
||||
.texi.dvi:
|
||||
TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
|
||||
MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
|
||||
$(TEXI2DVI) `test -f '$<' || echo '$(srcdir)/'`$<
|
||||
|
||||
.texi.pdf:
|
||||
TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
|
||||
MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
|
||||
$(TEXI2PDF) `test -f '$<' || echo '$(srcdir)/'`$<
|
||||
coreutils.info: coreutils.texi version.texi
|
||||
coreutils.dvi: coreutils.texi version.texi
|
||||
coreutils.pdf: coreutils.texi version.texi
|
||||
version.texi: stamp-vti
|
||||
stamp-vti: coreutils.texi $(top_srcdir)/configure.ac
|
||||
@(dir=.; test -f ./coreutils.texi || dir=$(srcdir); \
|
||||
set `$(SHELL) $(top_srcdir)/config/mdate-sh $$dir/coreutils.texi`; \
|
||||
echo "@set UPDATED $$1 $$2 $$3"; \
|
||||
echo "@set UPDATED-MONTH $$2 $$3"; \
|
||||
echo "@set EDITION $(VERSION)"; \
|
||||
echo "@set VERSION $(VERSION)") > vti.tmp
|
||||
@cmp -s vti.tmp $(srcdir)/version.texi \
|
||||
|| (echo "Updating $(srcdir)/version.texi"; \
|
||||
cp vti.tmp $(srcdir)/version.texi)
|
||||
@cmp -s vti.tmp version.texi \
|
||||
|| (echo "Updating version.texi"; \
|
||||
cp vti.tmp version.texi)
|
||||
-@rm -f vti.tmp
|
||||
@cp $(srcdir)/version.texi $@
|
||||
@cp version.texi $@
|
||||
|
||||
mostlyclean-vti:
|
||||
-rm -f vti.tmp
|
||||
|
||||
maintainer-clean-vti:
|
||||
-rm -f $(srcdir)/stamp-vti $(srcdir)/version.texi
|
||||
|
||||
coreutils.info: coreutils.texi $(srcdir)/version.texi
|
||||
coreutils.dvi: coreutils.texi $(srcdir)/version.texi
|
||||
|
||||
.texi.info:
|
||||
@cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9]
|
||||
cd $(srcdir) \
|
||||
&& $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) \
|
||||
`echo $< | sed 's,.*/,,'`
|
||||
|
||||
.texi.dvi:
|
||||
TEXINPUTS="$(srcdir)$(PATH_SEPARATOR)$$TEXINPUTS" \
|
||||
MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
|
||||
$(TEXI2DVI) $<
|
||||
|
||||
.texi:
|
||||
@cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9]
|
||||
cd $(srcdir) \
|
||||
&& $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) \
|
||||
`echo $< | sed 's,.*/,,'`
|
||||
-rm -f stamp-vti version.texi
|
||||
TEXI2DVI = texi2dvi
|
||||
|
||||
TEXI2PDF = $(TEXI2DVI) --pdf --batch
|
||||
DVIPS = dvips
|
||||
.dvi.ps:
|
||||
$(DVIPS) $< -o $@
|
||||
@@ -195,7 +226,7 @@ DVIPS = dvips
|
||||
uninstall-info-am:
|
||||
$(PRE_UNINSTALL)
|
||||
@if (install-info --version && \
|
||||
install-info --version | fgrep -i -v debian) >/dev/null 2>&1; then \
|
||||
install-info --version | grep -i -v debian) >/dev/null 2>&1; then \
|
||||
list='$(INFO_DEPS)'; \
|
||||
for file in $$list; do \
|
||||
echo " install-info --info-dir=$(DESTDIR)$(infodir) --remove $(DESTDIR)$(infodir)/$$file"; \
|
||||
@@ -214,7 +245,7 @@ uninstall-info-am:
|
||||
dist-info: $(INFO_DEPS)
|
||||
list='$(INFO_DEPS)'; \
|
||||
for base in $$list; do \
|
||||
d=$(srcdir); \
|
||||
if test -f $$base; then d=.; else d=$(srcdir); fi; \
|
||||
for file in $$d/$$base*; do \
|
||||
relfile=`expr "$$file" : "$$d/\(.*\)"`; \
|
||||
test -f $(distdir)/$$relfile || \
|
||||
@@ -223,14 +254,13 @@ dist-info: $(INFO_DEPS)
|
||||
done
|
||||
|
||||
mostlyclean-aminfo:
|
||||
-rm -f coreutils.aux coreutils.cp coreutils.cps coreutils.dvi coreutils.fl \
|
||||
coreutils.fn coreutils.ky coreutils.log coreutils.op \
|
||||
coreutils.pg coreutils.ps coreutils.toc coreutils.tp \
|
||||
coreutils.vr
|
||||
-rm -f coreutils.aux coreutils.cp coreutils.cps coreutils.fl coreutils.fn \
|
||||
coreutils.ky coreutils.log coreutils.op coreutils.pg \
|
||||
coreutils.tmp coreutils.toc coreutils.tp coreutils.vr \
|
||||
coreutils.dvi coreutils.pdf coreutils.ps
|
||||
|
||||
maintainer-clean-aminfo:
|
||||
cd $(srcdir) && \
|
||||
for i in $(INFO_DEPS); do \
|
||||
list='$(INFO_DEPS)'; for i in $$list; do \
|
||||
rm -f $$i; \
|
||||
if test "`echo $$i-[0-9]*`" != "$$i-[0-9]*"; then \
|
||||
rm -f $$i-[0-9]*; \
|
||||
@@ -239,21 +269,33 @@ maintainer-clean-aminfo:
|
||||
tags: TAGS
|
||||
TAGS:
|
||||
|
||||
ctags: CTAGS
|
||||
CTAGS:
|
||||
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
|
||||
top_distdir = ..
|
||||
distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@for file in $(DISTFILES); do \
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
||||
list='$(DISTFILES)'; for file in $$list; do \
|
||||
case $$file in \
|
||||
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
esac; \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
|
||||
$(mkinstalldirs) "$(distdir)/$$dir"; \
|
||||
dir="/$$dir"; \
|
||||
$(mkinstalldirs) "$(distdir)$$dir"; \
|
||||
else \
|
||||
dir=''; \
|
||||
fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
cp -pR $$d/$$file $(distdir) \
|
||||
|| exit 1; \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
||||
fi; \
|
||||
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
||||
else \
|
||||
test -f $(distdir)/$$file \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||
@@ -261,7 +303,7 @@ distdir: $(DISTFILES)
|
||||
fi; \
|
||||
done
|
||||
$(MAKE) $(AM_MAKEFLAGS) \
|
||||
top_distdir="${top_distdir}" distdir="$(distdir)" \
|
||||
top_distdir="$(top_distdir)" distdir="$(distdir)" \
|
||||
dist-info
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
@@ -281,6 +323,7 @@ install-am: all-am
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
mostlyclean-generic:
|
||||
@@ -288,7 +331,7 @@ mostlyclean-generic:
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]*
|
||||
-rm -f Makefile $(CONFIG_CLEAN_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@@ -320,7 +363,7 @@ install-info-am: $(INFO_DEPS)
|
||||
$(mkinstalldirs) $(DESTDIR)$(infodir)
|
||||
@list='$(INFO_DEPS)'; \
|
||||
for file in $$list; do \
|
||||
d=$(srcdir); \
|
||||
if test -f $$file; then d=.; else d=$(srcdir); fi; \
|
||||
for ifile in echo $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9]; do \
|
||||
if test -f $$ifile; then \
|
||||
relfile=`expr "$$ifile" : "$$d/\(.*\)"`; \
|
||||
@@ -331,7 +374,7 @@ install-info-am: $(INFO_DEPS)
|
||||
done
|
||||
@$(POST_INSTALL)
|
||||
@if (install-info --version && \
|
||||
install-info --version | fgrep -i -v debian) >/dev/null 2>&1; then \
|
||||
install-info --version | grep -i -v debian) >/dev/null 2>&1; then \
|
||||
list='$(INFO_DEPS)'; \
|
||||
for file in $$list; do \
|
||||
echo " install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$file";\
|
||||
@@ -351,6 +394,14 @@ mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-aminfo mostlyclean-generic mostlyclean-vti
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
pdf-am: $(PDFS)
|
||||
|
||||
ps: ps-am
|
||||
|
||||
ps-am: $(PSS)
|
||||
|
||||
uninstall-am: uninstall-info-am
|
||||
|
||||
.PHONY: all all-am check check-am clean clean-generic dist-info \
|
||||
@@ -360,8 +411,8 @@ uninstall-am: uninstall-info-am
|
||||
install-strip installcheck installcheck-am installdirs \
|
||||
maintainer-clean maintainer-clean-aminfo \
|
||||
maintainer-clean-generic maintainer-clean-vti mostlyclean \
|
||||
mostlyclean-aminfo mostlyclean-generic mostlyclean-vti \
|
||||
uninstall uninstall-am uninstall-info-am
|
||||
mostlyclean-aminfo mostlyclean-generic mostlyclean-vti pdf \
|
||||
pdf-am ps ps-am uninstall uninstall-am uninstall-info-am
|
||||
|
||||
|
||||
# Remove `DISABLED_' when fileutils, textutils, and sh-utils have
|
||||
@@ -382,7 +433,10 @@ $(INFO_DEPS): $(EXTRA_DIST)
|
||||
# List words/regexps here that should not appear in the texinfo documentation.
|
||||
check-texinfo:
|
||||
grep timezone $(srcdir)/*.texi && exit 1 || :
|
||||
grep -w POSIX $(srcdir)/*.texi 2> /dev/null && exit 1 || :
|
||||
grep '\$$@"' $(srcdir)/*.texi && exit 1 || :
|
||||
$(PERL) -ne \
|
||||
'/\bPOSIX\b/ && !/\@acronym{POSIX}/ || /{posix}/ and print,exit 1' \
|
||||
$(srcdir)/*.texi 2> /dev/null && : || exit 1
|
||||
|
||||
check: check-texinfo
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
|
||||
8
doc/code-vs-command
Normal file
8
doc/code-vs-command
Normal file
@@ -0,0 +1,8 @@
|
||||
perl -pi -e \
|
||||
's/\@code\{('"$(echo cp dd df dir dircolors du install ln ls mkdir mkfifo mknod mv shred touch vdir|tr ' ' '|')"')\}/\@command{$1}/' coreutils.texi
|
||||
|
||||
perl -pi -e \
|
||||
's/\@code\{('"$(echo cp dd df dir dircolors du install ln ls mkdir mkfifo mknod mv shred touch vdir|tr ' ' '|')"')\}/\@command{$1}/' coreutils.texi
|
||||
|
||||
regex=$((textutils; shellutils) | tr -s ' ' '|')
|
||||
perl -pi -e 's/\@code\{('"$regex"')\}/\@command{$1}/' coreutils.texi
|
||||
2430
doc/coreutils.texi
2430
doc/coreutils.texi
File diff suppressed because it is too large
Load Diff
@@ -35,13 +35,13 @@ programs accept. These are the strings you, as a user, can supply as
|
||||
arguments to the various programs. The C interface (via the
|
||||
@code{getdate} function) is not described here.
|
||||
|
||||
@cindex beginning of time, for @sc{posix}
|
||||
@cindex epoch, for @sc{posix}
|
||||
@cindex beginning of time, for @acronym{POSIX}
|
||||
@cindex epoch, for @acronym{POSIX}
|
||||
Although the date syntax here can represent any possible time since the
|
||||
year zero, computer integers often cannot represent such a wide range of
|
||||
time. On @sc{posix} systems, the clock starts at 1970-01-01 00:00:00
|
||||
@sc{utc}: @sc{posix} does not require support for times before the
|
||||
@sc{posix} Epoch and times far in the future. Traditional Unix systems
|
||||
time. On @acronym{POSIX} systems, the clock starts at 1970-01-01 00:00:00
|
||||
@sc{utc}: @acronym{POSIX} does not require support for times before the
|
||||
@acronym{POSIX} Epoch and times far in the future. Traditional Unix systems
|
||||
have 32-bit signed @code{time_t} and can represent times from 1901-12-13
|
||||
20:45:52 through 2038-01-19 03:14:07 @sc{utc}. Systems with 64-bit
|
||||
signed @code{time_t} can represent all the times in the known
|
||||
|
||||
360
lib/ChangeLog
360
lib/ChangeLog
@@ -1,3 +1,363 @@
|
||||
2002-10-13 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* xnanosleep.c (initialized): Remove declaration now that it's unused.
|
||||
|
||||
2002-10-12 Paul Eggert <eggert@twionsun.com>
|
||||
|
||||
* xnanosleep.c: There's no need to futz with the rounding mode,
|
||||
since the code should work properly even in the default rounding mode.
|
||||
(<fenv.h>): Do not include.
|
||||
(#pragma STDC FENV_ACCESS ON): Remove.
|
||||
(xnanosleep): Don't futz with rounding state.
|
||||
|
||||
2002-10-06 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* safe-read.c (safe_read): Change type of function
|
||||
from ssize_t to size_t.
|
||||
* safe-read.h: Update prototype.
|
||||
|
||||
2002-09-28 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* makepath.c (make_path): Restore umask *before* creating the final
|
||||
component.
|
||||
|
||||
2002-09-25 Paul Eggert <eggert@twinsun.com>
|
||||
|
||||
* fsusage.c [! HAVE_INTTYPES_H && HAVE_STDINT_H] Include <stdint.h>.
|
||||
(UINTMAX_MAX) [!defined UINTMAX_MAX]: New macro.
|
||||
(PROPAGATE_ALL_ONES): Work even if X is unsigned and narrower than
|
||||
int. Work more efficiently if X is the same width as uintmax_t.
|
||||
Do not compare X to -1, to avoid bogus compiler warning.
|
||||
(get_fs_usage): (uintmax_t) -1 -> UINTMAX_MAX to avoid a cast.
|
||||
Don't assume that f_frsize and f_bsize are the same type.
|
||||
|
||||
2002-09-25 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* fsusage.c: Remove unneeded parentheses around operands of `defined'.
|
||||
|
||||
* safe-read.c (safe_read): Make comment more precise:
|
||||
upon error, it returns -1.
|
||||
|
||||
2002-09-22 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* makepath.c (make_path): Minor reformatting.
|
||||
|
||||
2002-09-14 Paul Eggert <eggert@twinsun.com>
|
||||
|
||||
* lib/xnanosleep (xnanosleep): Return -1 on failure, not 1,
|
||||
for consistency with nanosleep. Check errno after nanosleep
|
||||
returns -1.
|
||||
|
||||
2002-09-11 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* xnanosleep.c, xnanosleep.h: New files, factored out of sleep.c.
|
||||
* Makefile.am (libfetish_a_SOURCES): Add them.
|
||||
|
||||
2002-09-04 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* addext.c (addext): Add a cast to avoid gcc's warning about
|
||||
`comparison between signed and unsigned'.
|
||||
|
||||
* sig2str.c (str2signum, sig2str): Declare loop index variables to be
|
||||
of type size_t so that they match type of upper bound, thus avoiding
|
||||
warning about `comparison between signed and unsigned'.
|
||||
|
||||
2002-08-31 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* mktime.c: Update from GNU libc.
|
||||
* obstack.c: Likewise.
|
||||
* getopt.c: Likewise.
|
||||
* getopt1.c: Likewise.
|
||||
|
||||
2002-08-05 Paul Eggert <eggert@twinsun.com>
|
||||
|
||||
Fix some minor time-related bugs with POSIX time arguments.
|
||||
Some valid time stamps were being rejected (notably -1, and
|
||||
time stamps before 1900 on 64-bit hosts). And some invalid
|
||||
time stamps were being accepted, e.g. September 31.
|
||||
|
||||
* lib/posixtm.h (posixtime): Return bool instead of time_t, so
|
||||
that we can return (time_t) -1 successfully.
|
||||
* lib/posixtm.c: Likewise.
|
||||
[HAVE_STDBOOL_H]: Include <stdbool.h>.
|
||||
(bool, false, true) [!HAVE_STDBOOL_H]: New type.
|
||||
(t): Remove static var.
|
||||
(year, posix_time_parse): Now takes struct tm * arg to modify, instead
|
||||
of static var. All uses changed.
|
||||
(year): Do not reject years before 1900; they can occur with
|
||||
64-bit time_t.
|
||||
(posix_time_parse): Do not check for out-of-range components;
|
||||
that is now the caller's responsibility, since our checks were
|
||||
only approximations.
|
||||
(posixtime): Use mktime to check for out-of-range components,
|
||||
since it knows them exactly.
|
||||
If mktime returns (time_t) -1, check whether an error actually occurred
|
||||
by invoking localtime on -1.
|
||||
(main) [TEST_POSIXTIME]: Check for input data errors, and report
|
||||
posixtime failures better.
|
||||
Improve the test data (in comments only).
|
||||
|
||||
2002-07-27 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* readutmp.h: If we have both utmpx.h and utmp.h, and there exists
|
||||
the utmp.ut_exit member, but not the utmpx.ut_exit member, then
|
||||
undefine HAVE_UTMPX_H. For AIX 4.3.3. Doing all this in cpp is
|
||||
a big kludge; someday we'll put the brains in an autoconf macro.
|
||||
(UT_EXIT_E_TERMINATION, UT_EXIT_E_EXIT): Define.
|
||||
|
||||
2002-07-20 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* xmalloc.c: Adjust to work with new autoconf macros, AC_FUNC_MALLOC
|
||||
and AC_FUNC_REALLOC: test #ifndef HAVE_MALLOC/HAVE_REALLOC.
|
||||
|
||||
* gettext.h: Upgrade to gettext-0.11.3.
|
||||
|
||||
2002-07-13 Bruno Haible <bruno@clisp.org>
|
||||
|
||||
* xstat.in: Include <string.h>.
|
||||
* mountlist.c: #undef MNT_IGNORE before defining it, to avoid warning
|
||||
on FreeBSD.
|
||||
|
||||
2002-07-09 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* mountlist.h (ME_DUMMY): Don't count entries of type `auto' as dummy
|
||||
ones. At least on GNU/Linux systems, `auto' means something else.
|
||||
From Michael Stone.
|
||||
|
||||
2002-07-01 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* c-stack.c: Include sys/time.h.
|
||||
From Volker Borchert.
|
||||
|
||||
2002-06-11 Paul Eggert <eggert@twinsun.com>
|
||||
|
||||
* fnmatch.c, fnmatch_loop.c (WIDE_CHAR_SUPPORT):
|
||||
New macro. Use it uniformly instead of
|
||||
(defined HAVE_WCTYPE_H && defined HAVE_WCHAR_H).
|
||||
It also uses HAVE_BTOWC, to fix a porting bug on Solaris 2.5.1
|
||||
reported by Vin Shelton.
|
||||
|
||||
2002-06-22 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* fnmatch.c (ISASCII, ISPRINT): Undefine, to avoid warning about
|
||||
redefinition due to Solaris5.6's definition in /usr/include/sys/euc.h.
|
||||
|
||||
2002-06-22 Paul Eggert <eggert@twinsun.com>
|
||||
|
||||
* c-stack.h (segv_handler, c_stack_action) [! defined SA_SIGINFO]:
|
||||
Do not assume SA_SIGINFO behavior.
|
||||
Bug reported by Jim Meyering on NetBSD 1.5.2.
|
||||
|
||||
2002-06-22 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* c-stack.c, c-stack.h: New files, from diffutils-2.8.2.
|
||||
|
||||
* exitfail.c, exitfail.h: Likewise.
|
||||
* Makefile.am (libfetish_a_SOURCES): Add exitfail.c and exitfail.h.
|
||||
|
||||
* Makefile.am (libfetish_a_SOURCES): Add fnmatch_.h in place
|
||||
of fnmatch.h.
|
||||
(EXTRA_DIST): Add fnmatch_loop.c.
|
||||
(libfetish_a_SOURCES): Add c-stack.c and c-stack.h.
|
||||
|
||||
* fnmatch_loop.c: New file, from diffutils-2.8.2.
|
||||
* fnmatch.c: Update from diffutils-2.8.2.
|
||||
* fnmatch_.h: New file. From diffutils-2.8.2.
|
||||
* fnmatch.h: Remove file.
|
||||
|
||||
2002-06-18 Paul Eggert <eggert@twinsun.com>
|
||||
|
||||
* file-type.h: Report an error if neither S_ISREG nor
|
||||
S_IFREG is defined, instead of using a test specific to glibc
|
||||
2.2. This should be safe, since POSIX requires S_ISREG and
|
||||
Unix Version 7 had S_IFREG. We don't need to check for
|
||||
<sys/types.h> since we don't use any symbols that it defines.
|
||||
|
||||
2002-06-15 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* file-type.h (FILE_TYPE_H): Guard entire contents with #ifndef.
|
||||
For GNU libc 2.2 and newer, ensure that <sys/types.h> and <sys/stat.h>
|
||||
have been included before this file.
|
||||
|
||||
2002-06-13 Richard Dawe <richdawe@bigfoot.com>
|
||||
|
||||
* Makefile.am (lstat.c, stat.c, .sin.sed): Use t-$@, rather than $@-t,
|
||||
so that each temporary file name is unique and valid in the first
|
||||
8 characters, for operation under DOS.
|
||||
|
||||
2002-06-15 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
Work even with DJGPP 2.03, which lacks support for symlinks.
|
||||
From Richard Dawe.
|
||||
* xstat.in (S_ISLNK): Define to 0 if neither S_ISLNK nor S_IFLNK
|
||||
is defined.
|
||||
* lchown.c (S_ISLNK): Likewise.
|
||||
|
||||
2002-06-14 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* file-type.h: Use the version from diffutils-2.8.2.
|
||||
* file-type.c: Likewise.
|
||||
|
||||
2002-05-27 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
Fix a problem seen only on nonconforming systems whereby ls.c's
|
||||
use of localtime, and then of gettimeofday would cause trouble:
|
||||
the localtime call used to initialize rpl_gettimeofday's save
|
||||
mechanism would clobber ls's current local time information so
|
||||
that in any long listing the first file would always be listed
|
||||
with date 1970-01-01. Analysis by Volker Borchert.
|
||||
|
||||
* gettimeofday.c (localtime): Undefine.
|
||||
(rpl_localtime): New function.
|
||||
|
||||
2002-05-22 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* Makefile.am (libfetish_a_SOURCES): Add file-type.c and file-type.h.
|
||||
* file-type.h: New file.
|
||||
* file-type.c (file_type): New file/function. Extracted from diffutils.
|
||||
|
||||
2002-04-29 Paul Eggert <eggert@twinsun.com>
|
||||
|
||||
* hard-locale.c: Upgrade to version used in GNU Diffutils 2.8.1.
|
||||
|
||||
2002-04-28 Paul Eggert <eggert@twinsun.com>
|
||||
|
||||
* sig2str.h (SIGNUM_BOUND): Do not use WTERMSIG, to avoid
|
||||
depending on <sys/wait.h> and WTERMSIG. Default to 64 instead
|
||||
of 127, since 64 is the largest conceivable number for ancient
|
||||
nonstandard hosts.
|
||||
* sig2str.c: Do not include <sys/wait.h>; no longer needed.
|
||||
|
||||
2002-04-28 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* sig2str.c (WTERMSIG): Remove definition (unused).
|
||||
|
||||
2002-04-28 Paul Eggert <eggert@twinsun.com>
|
||||
|
||||
* sig2str.h, sig2str.c: New files.
|
||||
* Makefile.am (libfetish_a_SOURCES): Add sig2str.h.
|
||||
|
||||
2002-04-24 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* gettext.h: New file, from Gettext.
|
||||
* Makefile.am (INCLUDES): Remove -I../intl.
|
||||
(libfetish_a_SOURCES): Add gettext.h.
|
||||
|
||||
2002-04-16 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* readutmp.h (UT_TYPE): Remove definition (now in who.c).
|
||||
(HAVE_STRUCT_XTMP_UT_EXIT, HAVE_STRUCT_XTMP_UT_ID): Define.
|
||||
(HAVE_STRUCT_XTMP_UT_PID, HAVE_STRUCT_XTMP_UT_TYPE): Define.
|
||||
|
||||
2002-04-12 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* dirfd.h (dirfd): Elide prototype if dirfd is a macro.
|
||||
|
||||
2002-03-10 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* makepath.c (make_path): Remove a comma from a diagnostic.
|
||||
Suggestion from Santiago Vila.
|
||||
|
||||
2002-03-08 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* rename.c: Mention that this wrapper is needed also on
|
||||
mips-dec-ultrix4.4 systems.
|
||||
|
||||
2002-03-02 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* gettime.c (gettime): Test HAVE_CLOCK_GETTIME,
|
||||
not HAVE_CLOCK_SETTIME.
|
||||
|
||||
2002-02-27 Paul Eggert <eggert@twinsun.com>
|
||||
|
||||
* nanosleep.h: Rename to....
|
||||
* timespec.h: New name for nanosleep.h. All uses changed.
|
||||
|
||||
* gettime.c: New file.
|
||||
* settime.c: New file.
|
||||
* stime.c: Remove.
|
||||
|
||||
* Makefile.am (libfetish_a_SOURCES): Add gettime.c, settime.c,
|
||||
timespec.h. Remove nanosleep.h.
|
||||
|
||||
2002-02-25 Paul Eggert <eggert@twinsun.com>
|
||||
|
||||
* acl.c, acl.h: New files.
|
||||
* Makefile.am (libfetish_a_SOURCES): Add acl.h, acl.c.
|
||||
|
||||
2002-02-24 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* strnlen.c (strnlen): Define-away/undef so that an inconsistent
|
||||
prototype in string.h (on at least AIX4.3.2.0 w/gcc-2.95.3) doesn't
|
||||
cause trouble. Reported by Nelson Beebe.
|
||||
|
||||
2002-02-23 Paul Eggert <eggert@twinsun.com>
|
||||
|
||||
* path-concat.c (xpath_concat): Reorder code to pacify
|
||||
compilers that don't know that xalloc_die never returns.
|
||||
|
||||
2002-02-20 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* getdate.c: Regenerate using bison-1.33.
|
||||
|
||||
2002-02-15 Paul Eggert <eggert@twinsun.com>
|
||||
|
||||
* posixver.c, posixver.h: New files.
|
||||
* Makefile.am (libfetish_a_SOURCES): Add them.
|
||||
|
||||
2002-02-02 Paul Eggert <eggert@twinsun.com>
|
||||
Bruno Haible <bruno@clisp.org>
|
||||
|
||||
* unicodeio.h (print_unicode_char): Add exit_on_error argument.
|
||||
(fwrite_success_callback): New declaration.
|
||||
* unicodeio.c (unicode_to_mb): New function, extracted from
|
||||
print_unicode_char. Call failure callback instead of error.
|
||||
(fwrite_success_callback): New function.
|
||||
(exit_failure_callback): New function.
|
||||
(fallback_failure_callback): New function.
|
||||
(print_unicode_char): Call unicode_to_mb.
|
||||
|
||||
2002-01-26 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* Makefile.am (getdate$U.o): Depend on unlocked-io.h.
|
||||
|
||||
2002-01-22 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* Makefile.am (Makefile): Don't depend on $(BUILT_SOURCES).
|
||||
Otherwise, some versions of automake would omit the rule that makes
|
||||
Makefile from Makefile.in.
|
||||
|
||||
2001-01-21 Paul Eggert <eggert@twinsun.com>
|
||||
|
||||
* xmemcoll.h, xmemcoll.c: New files.
|
||||
* Makefile.am (libfetish_a_SOURCES): Add them.
|
||||
* memcoll.c: Include errno.h, and declare errno if not defined.
|
||||
(memcoll): Set errno to zero if there is no error.
|
||||
|
||||
* quotearg.c (quotearg_buffer_restyled):
|
||||
Fix bug with quoting buffers containing NUL when backslashing escapes.
|
||||
This bug was exposed by the other changes in this patch.
|
||||
(quotearg_n_options): New arg ARGSIZE.
|
||||
All callers changed.
|
||||
(quoting_options_from_style): New function.
|
||||
(quotearg_n_style): Use it.
|
||||
(quotearg_n_style_mem): New function.
|
||||
|
||||
* quotearg.h (quotearg_n_style_mem): New function.
|
||||
|
||||
2002-01-16 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* getdate.y: Add three semicolons, each just before a closing brace.
|
||||
Bison (as of version 1.31) no longer papers over that mistake.
|
||||
|
||||
2002-02-14 Paul Eggert <eggert@twinsun.com>
|
||||
|
||||
* backupfile.c (ISDIGIT): Comment fix.
|
||||
* getdate.y (ISDIGIT): Likewise.
|
||||
* posixtm.c (ISDIGIT, year): Likewise.
|
||||
* strverscmp.c (ISDIGIT): Likewise.
|
||||
* userspec.c (ISDIGIT): Likewise.
|
||||
|
||||
2002-01-05 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* version-etc.c (version_etc_copyright): Update copyright year.
|
||||
|
||||
@@ -4,7 +4,7 @@ AUTOMAKE_OPTIONS = ../src/ansi2knr
|
||||
|
||||
noinst_LIBRARIES = libfetish.a
|
||||
|
||||
INCLUDES = -I.. -I$(srcdir) -I../intl
|
||||
INCLUDES = -I.. -I$(srcdir)
|
||||
DEFS = -DLIBDIR=\"$(libdir)\" @DEFS@
|
||||
|
||||
## Put relatively complex files at the beginning of the list so
|
||||
@@ -13,8 +13,10 @@ DEFS = -DLIBDIR=\"$(libdir)\" @DEFS@
|
||||
## added by automake, but on systems with an up to date GNU libc,
|
||||
## regex.c isn't even compiled.
|
||||
libfetish_a_SOURCES = \
|
||||
acl.h acl.c \
|
||||
getdate.h getdate.y \
|
||||
posixtm.c posixtm.h \
|
||||
posixver.c posixver.h \
|
||||
strftime.c \
|
||||
getopt.c getopt.h getopt1.c \
|
||||
hash.c hash.h \
|
||||
@@ -26,20 +28,25 @@ libfetish_a_SOURCES = \
|
||||
basename.c \
|
||||
bumpalloc.h \
|
||||
canon-host.c \
|
||||
c-stack.c c-stack.h \
|
||||
closeout.c closeout.h \
|
||||
diacrit.c diacrit.h \
|
||||
dirname.c dirname.h \
|
||||
dirfd.h \
|
||||
dup-safer.c \
|
||||
exclude.c exclude.h \
|
||||
exitfail.c exitfail.h \
|
||||
filemode.c filemode.h \
|
||||
fnmatch.h \
|
||||
file-type.c file-type.h \
|
||||
fnmatch_.h \
|
||||
fopen-safer.c \
|
||||
fsusage.h \
|
||||
full-write.c full-write.h \
|
||||
getline.h \
|
||||
getpagesize.h \
|
||||
getstr.c getstr.h \
|
||||
gettime.c \
|
||||
gettext.h \
|
||||
getugroups.c \
|
||||
group-member.h \
|
||||
hard-locale.c hard-locale.h \
|
||||
@@ -57,7 +64,6 @@ libfetish_a_SOURCES = \
|
||||
memcoll.c memcoll.h \
|
||||
modechange.c modechange.h \
|
||||
mountlist.h \
|
||||
nanosleep.h \
|
||||
path-concat.c path-concat.h \
|
||||
pathmax.h \
|
||||
physmem.c physmem.h \
|
||||
@@ -70,10 +76,13 @@ libfetish_a_SOURCES = \
|
||||
same.c same.h \
|
||||
save-cwd.c save-cwd.h \
|
||||
savedir.c savedir.h \
|
||||
settime.c \
|
||||
sha.c sha.h \
|
||||
sig2str.h \
|
||||
stdio-safer.h \
|
||||
stripslash.c \
|
||||
strverscmp.h \
|
||||
timespec.h \
|
||||
unicodeio.c unicodeio.h \
|
||||
unistd-safer.h \
|
||||
userspec.c \
|
||||
@@ -82,6 +91,8 @@ libfetish_a_SOURCES = \
|
||||
xgetcwd.c \
|
||||
xgethostname.c \
|
||||
xmalloc.c \
|
||||
xmemcoll.c xmemcoll.h \
|
||||
xnanosleep.c xnanosleep.h \
|
||||
xreadlink.c xreadlink.h \
|
||||
xstrdup.c \
|
||||
xstrtod.c xstrtod.h \
|
||||
@@ -99,15 +110,17 @@ BUILT_SOURCES = getdate.c lstat.c stat.c unlocked-io.h
|
||||
MAINTAINERCLEANFILES = $(BUILT_SOURCES)
|
||||
DISTCLEANFILES = lstat.c stat.c unlocked-io.h
|
||||
|
||||
EXTRA_DIST = xstat.in config.charset ref-add.sin ref-del.sin gen-uio
|
||||
EXTRA_DIST = xstat.in config.charset ref-add.sin ref-del.sin gen-uio \
|
||||
fnmatch_loop.c
|
||||
|
||||
lstat.c: xstat.in
|
||||
sed \
|
||||
-e '/@IGNORE@/d' \
|
||||
-e 's/@xstat@/lstat/g' \
|
||||
-e '/_LSTAT_ONLY@/d' \
|
||||
-e '/@BEGIN_STAT_ONLY@/,/@END_STAT_ONLY@/d' \
|
||||
$(srcdir)/xstat.in > $@-t
|
||||
mv $@-t $@
|
||||
$(srcdir)/xstat.in > t-$@
|
||||
mv t-$@ $@
|
||||
|
||||
stat.c: xstat.in
|
||||
sed \
|
||||
@@ -115,10 +128,8 @@ stat.c: xstat.in
|
||||
-e 's/@xstat@/stat/g' \
|
||||
-e '/_STAT_ONLY@/d' \
|
||||
-e '/@BEGIN_LSTAT_ONLY@/,/@END_LSTAT_ONLY@/d' \
|
||||
$(srcdir)/xstat.in > $@-t
|
||||
mv $@-t $@
|
||||
|
||||
Makefile: $(BUILT_SOURCES)
|
||||
$(srcdir)/xstat.in > t-$@
|
||||
mv t-$@ $@
|
||||
|
||||
# The following is needed in order to install a simple file in $(libdir)
|
||||
# which is shared with other installed packages. We use a list of referencing
|
||||
@@ -163,13 +174,20 @@ charset.alias: config.charset
|
||||
|
||||
SUFFIXES = .sed .sin
|
||||
.sin.sed:
|
||||
sed -e '/^#/d' -e 's/@''PACKAGE''@/@PACKAGE@/g' $< > $@-t
|
||||
mv $@-t $@
|
||||
sed -e '/^#/d' -e 's/@''PACKAGE''@/@PACKAGE@/g' $< > t-$@
|
||||
mv t-$@ $@
|
||||
|
||||
CLEANFILES = charset.alias ref-add.sed ref-del.sed
|
||||
|
||||
###############################################
|
||||
|
||||
# FIXME: remove this dependency once automake handles it.
|
||||
# As of cvs automake of about 2002-01-13,
|
||||
# this dependency is necessary to avoid a build failure
|
||||
# when running `make check' before running `make all'.
|
||||
# Otherwise, unlocked-io.h is not built before it's needed.
|
||||
getdate$U.o: unlocked-io.h
|
||||
|
||||
# FIXME: CAUTION this list is a duplicate of one in ../Makefile.cfg.
|
||||
io_functions = \
|
||||
clearerr feof ferror fflush fgets fputc fputs \
|
||||
|
||||
935
lib/Makefile.in
935
lib/Makefile.in
File diff suppressed because it is too large
Load Diff
62
lib/acl.c
Normal file
62
lib/acl.c
Normal file
@@ -0,0 +1,62 @@
|
||||
/* acl.c - access control lists
|
||||
|
||||
Copyright (C) 2002 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software Foundation,
|
||||
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Written by Paul Eggert. */
|
||||
|
||||
#if HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#include <sys/stat.h>
|
||||
#ifndef S_ISLNK
|
||||
# define S_ISLNK(Mode) 0
|
||||
#endif
|
||||
|
||||
#include "acl.h"
|
||||
|
||||
#include <errno.h>
|
||||
#ifndef ENOSYS
|
||||
# define ENOSYS (-1)
|
||||
#endif
|
||||
|
||||
#ifndef MIN_ACL_ENTRIES
|
||||
# define MIN_ACL_ENTRIES 4
|
||||
#endif
|
||||
|
||||
/* Return 1 if PATH has a nontrivial access control list, 0 if not,
|
||||
and -1 (setting errno) if an error is encountered. */
|
||||
|
||||
int
|
||||
file_has_acl (char const *path, struct stat const *pathstat)
|
||||
{
|
||||
/* 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_ACL && defined GETACLCNT
|
||||
if (! S_ISLNK (pathstat->st_mode))
|
||||
{
|
||||
int n = acl (path, GETACLCNT, 0, NULL);
|
||||
return n < 0 ? (errno == ENOSYS ? 0 : -1) : (MIN_ACL_ENTRIES < n);
|
||||
}
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
}
|
||||
28
lib/acl.h
Normal file
28
lib/acl.h
Normal file
@@ -0,0 +1,28 @@
|
||||
/* acl.c - access control lists
|
||||
|
||||
Copyright (C) 2002 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software Foundation,
|
||||
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Written by Paul Eggert. */
|
||||
|
||||
#if HAVE_SYS_ACL_H && HAVE_ACL
|
||||
# include <sys/acl.h>
|
||||
#endif
|
||||
#if ! defined GETACLCNT && defined ACL_CNT
|
||||
# define GETACLCNT ACL_CNT
|
||||
#endif
|
||||
|
||||
int file_has_acl (char const *, struct stat const *);
|
||||
@@ -1,5 +1,5 @@
|
||||
/* addext.c -- add an extension to a file name
|
||||
Copyright 1990, 1997, 1998, 1999, 2001 Free Software Foundation, Inc.
|
||||
Copyright 1990, 1997, 1998, 1999, 2001, 2002 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -83,7 +83,7 @@ addext (char *filename, char const *ext, int e)
|
||||
*s = c;
|
||||
}
|
||||
if (0 <= name_max || errno == 0)
|
||||
slen_max = name_max == (size_t) name_max ? name_max : -1;
|
||||
slen_max = name_max == (long) (size_t) name_max ? name_max : -1;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* backupfile.c -- make Emacs style backup file names
|
||||
Copyright 1990,91,92,93,94,95,96,97,98,99,2000, 2001 Free Software
|
||||
Copyright (C) 1990,91,92,93,94,95,96,97,98,99,2000, 2001, 2002 Free Software
|
||||
Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
@@ -95,10 +95,9 @@ char *malloc ();
|
||||
- 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.
|
||||
- It's typically faster.
|
||||
Posix 1003.2-1992 section 2.5.2.1 page 50 lines 1556-1558 says that
|
||||
only '0' through '9' are digits. Prefer ISDIGIT to isdigit unless
|
||||
it's important to use the locale's definition of `digit' even when the
|
||||
host does not conform to Posix. */
|
||||
POSIX says that only '0' through '9' are digits. Prefer ISDIGIT to
|
||||
ISDIGIT_LOCALE 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) (c) - '0' <= 9)
|
||||
|
||||
#if D_INO_IN_DIRENT
|
||||
|
||||
435
lib/c-stack.c
Normal file
435
lib/c-stack.c
Normal file
@@ -0,0 +1,435 @@
|
||||
/* Stack overflow handling.
|
||||
|
||||
Copyright (C) 2002 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software Foundation,
|
||||
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
|
||||
/* Written by Paul Eggert. */
|
||||
|
||||
/* NOTES:
|
||||
|
||||
A program that uses alloca, dynamic arrays, or large local
|
||||
variables may extend the stack by more than a page at a time. If
|
||||
so, when the stack overflows the operating system may not detect
|
||||
the overflow until the program uses the array, and this module may
|
||||
incorrectly report a program error instead of a stack overflow.
|
||||
|
||||
To avoid this problem, allocate only small objects on the stack; a
|
||||
program should be OK if it limits single allocations to a page or
|
||||
less. Allocate larger arrays in static storage, or on the heap
|
||||
(e.g., with malloc). Yes, this is a pain, but we don't know of any
|
||||
better solution that is portable.
|
||||
|
||||
No attempt has been made to deal with multithreaded applications.
|
||||
|
||||
If ! HAVE_XSI_STACK_OVERFLOW_HEURISTIC, the current implementation
|
||||
assumes that, if the RLIMIT_STACK limit changes during execution,
|
||||
then c_stack_action is invoked immediately afterwards. */
|
||||
|
||||
#if HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#ifndef __attribute__
|
||||
# if __GNUC__ < 3 || __STRICT_ANSI__
|
||||
# define __attribute__(x)
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#include "gettext.h"
|
||||
#define _(msgid) gettext (msgid)
|
||||
|
||||
#include <errno.h>
|
||||
#ifndef ENOTSUP
|
||||
# define ENOTSUP EINVAL
|
||||
#endif
|
||||
#ifndef EOVERFLOW
|
||||
# define EOVERFLOW EINVAL
|
||||
#endif
|
||||
|
||||
#include <signal.h>
|
||||
#if ! HAVE_STACK_T && ! defined stack_t
|
||||
typedef struct sigaltstack stack_t;
|
||||
#endif
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#if HAVE_SYS_RESOURCE_H
|
||||
/* Include sys/time.h here, because...
|
||||
SunOS-4.1.x <sys/resource.h> fails to include <sys/time.h>.
|
||||
This gives "incomplete type" errors for ru_utime and tu_stime. */
|
||||
# if HAVE_SYS_TIME_H
|
||||
# include <sys/time.h>
|
||||
# endif
|
||||
# include <sys/resource.h>
|
||||
#endif
|
||||
|
||||
#if HAVE_UCONTEXT_H
|
||||
# include <ucontext.h>
|
||||
#endif
|
||||
|
||||
#if HAVE_UNISTD_H
|
||||
# include <unistd.h>
|
||||
#endif
|
||||
#ifndef STDERR_FILENO
|
||||
# define STDERR_FILENO 2
|
||||
#endif
|
||||
|
||||
#if DEBUG
|
||||
# include <stdio.h>
|
||||
#endif
|
||||
|
||||
#include "c-stack.h"
|
||||
#include "exitfail.h"
|
||||
|
||||
extern char *program_name;
|
||||
|
||||
/* The user-specified action to take when a SEGV-related program error
|
||||
or stack overflow occurs. */
|
||||
static void (* volatile segv_action) (int);
|
||||
|
||||
/* Translated messages for program errors and stack overflow. Do not
|
||||
translate them in the signal handler, since gettext is not
|
||||
async-signal-safe. */
|
||||
static char const * volatile program_error_message;
|
||||
static char const * volatile stack_overflow_message;
|
||||
|
||||
/* Output an error message, then exit with status EXIT_FAILURE if it
|
||||
appears to have been a stack overflow, or with a core dump
|
||||
otherwise. This function is async-signal-safe. */
|
||||
|
||||
static void die (int) __attribute__ ((noreturn));
|
||||
static void
|
||||
die (int signo)
|
||||
{
|
||||
char const *message =
|
||||
signo ? program_error_message : stack_overflow_message;
|
||||
segv_action (signo);
|
||||
write (STDERR_FILENO, program_name, strlen (program_name));
|
||||
write (STDERR_FILENO, ": ", 2);
|
||||
write (STDERR_FILENO, message, strlen (message));
|
||||
write (STDERR_FILENO, "\n", 1);
|
||||
if (! signo)
|
||||
_exit (exit_failure);
|
||||
kill (getpid (), signo);
|
||||
abort ();
|
||||
}
|
||||
|
||||
#if HAVE_SIGALTSTACK && HAVE_DECL_SIGALTSTACK
|
||||
|
||||
/* Direction of the C runtime stack. This function is
|
||||
async-signal-safe. */
|
||||
|
||||
# if STACK_DIRECTION
|
||||
# define find_stack_direction(ptr) STACK_DIRECTION
|
||||
# else
|
||||
static int
|
||||
find_stack_direction (char const *addr)
|
||||
{
|
||||
char dummy;
|
||||
return ! addr ? find_stack_direction (&dummy) : addr < &dummy ? 1 : -1;
|
||||
}
|
||||
# endif
|
||||
|
||||
# if HAVE_XSI_STACK_OVERFLOW_HEURISTIC
|
||||
# define get_stack_location(argv) 0
|
||||
# else
|
||||
|
||||
# if defined RLIMIT_STACK && defined _SC_PAGESIZE
|
||||
|
||||
/* Return the minimum machine address deducible from ARGV. This
|
||||
includes the addresses of all the strings that ARGV points at, as
|
||||
well as the address of ARGV itself. */
|
||||
|
||||
static char const *
|
||||
min_address_from_argv (char * const *argv)
|
||||
{
|
||||
char const *min = (char const *) argv;
|
||||
char const *p;
|
||||
while ((p = *argv++))
|
||||
if (p < min)
|
||||
min = p;
|
||||
return min;
|
||||
}
|
||||
|
||||
/* Return the maximum machine address deducible from ARGV. */
|
||||
|
||||
static char const *
|
||||
max_address_from_argv (char * const *argv)
|
||||
{
|
||||
char const *max = *argv;
|
||||
char const *max1;
|
||||
char const *p;
|
||||
while ((p = *argv++))
|
||||
if (max < p)
|
||||
max = p;
|
||||
max1 = (char const *) (argv + 1);
|
||||
return max && max1 < max ? max + strlen (max) + 1 : max1;
|
||||
}
|
||||
# endif
|
||||
|
||||
/* The base and size of the stack, determined at startup. */
|
||||
static char const * volatile stack_base;
|
||||
static size_t volatile stack_size;
|
||||
|
||||
/* Store the base and size of the stack into the static variables
|
||||
STACK_BASE and STACK_SIZE. The base is the numerically lowest
|
||||
address in the stack. Return -1 (setting errno) if this cannot be
|
||||
done. */
|
||||
|
||||
static int
|
||||
get_stack_location (char * const *argv)
|
||||
{
|
||||
# if ! (defined RLIMIT_STACK && defined _SC_PAGESIZE)
|
||||
|
||||
errno = ENOTSUP;
|
||||
return -1;
|
||||
|
||||
# else
|
||||
|
||||
struct rlimit rlimit;
|
||||
int r = getrlimit (RLIMIT_STACK, &rlimit);
|
||||
if (r == 0)
|
||||
{
|
||||
char const *base;
|
||||
size_t size = rlimit.rlim_cur;
|
||||
extern char **environ;
|
||||
size_t page_size = sysconf (_SC_PAGESIZE);
|
||||
int stack_direction = find_stack_direction (0);
|
||||
|
||||
# if HAVE_GETCONTEXT && HAVE_DECL_GETCONTEXT
|
||||
ucontext_t context;
|
||||
if (getcontext (&context) == 0)
|
||||
{
|
||||
base = context.uc_stack.ss_sp;
|
||||
if (stack_direction < 0)
|
||||
base -= size - context.uc_stack.ss_size;
|
||||
}
|
||||
else
|
||||
# endif
|
||||
{
|
||||
if (stack_direction < 0)
|
||||
{
|
||||
char const *a = max_address_from_argv (argv);
|
||||
char const *b = max_address_from_argv (environ);
|
||||
base = (a < b ? b : a) - size;
|
||||
base += - (size_t) base % page_size;
|
||||
}
|
||||
else
|
||||
{
|
||||
char const *a = min_address_from_argv (argv);
|
||||
char const *b = min_address_from_argv (environ);
|
||||
base = a < b ? a : b;
|
||||
base -= (size_t) base % page_size;
|
||||
}
|
||||
}
|
||||
|
||||
if (size != rlimit.rlim_cur
|
||||
|| rlimit.rlim_cur < 0
|
||||
|| base + size < base
|
||||
# ifdef RLIM_SAVED_CUR
|
||||
|| rlimit.rlim_cur == RLIM_SAVED_CUR
|
||||
# endif
|
||||
# ifdef RLIM_SAVED_MAX
|
||||
|| rlimit.rlim_cur == RLIM_SAVED_MAX
|
||||
# endif
|
||||
# ifdef RLIM_INFINITY
|
||||
|| rlimit.rlim_cur == RLIM_INFINITY
|
||||
# endif
|
||||
)
|
||||
{
|
||||
errno = EOVERFLOW;
|
||||
return -1;
|
||||
}
|
||||
|
||||
stack_base = base;
|
||||
stack_size = size;
|
||||
|
||||
# if DEBUG
|
||||
fprintf (stderr, "get_stack_location base=%p size=%lx\n",
|
||||
base, (unsigned long) size);
|
||||
# endif
|
||||
}
|
||||
|
||||
return r;
|
||||
|
||||
# endif
|
||||
}
|
||||
# endif
|
||||
|
||||
/* Storage for the alternate signal stack. */
|
||||
static union
|
||||
{
|
||||
char buffer[SIGSTKSZ];
|
||||
|
||||
/* These other members are for proper alignment. There's no
|
||||
standard way to guarantee stack alignment, but this seems enough
|
||||
in practice. */
|
||||
long double ld;
|
||||
long l;
|
||||
void *p;
|
||||
} alternate_signal_stack;
|
||||
|
||||
# if defined SA_ONSTACK && defined SA_SIGINFO && defined _SC_PAGESIZE
|
||||
|
||||
/* Handle a segmentation violation and exit. This function is
|
||||
async-signal-safe. */
|
||||
|
||||
static void segv_handler (int, siginfo_t *, void *) __attribute__((noreturn));
|
||||
static void
|
||||
segv_handler (int signo, siginfo_t *info,
|
||||
void *context __attribute__ ((unused)))
|
||||
{
|
||||
/* Clear SIGNO if it seems to have been a stack overflow. */
|
||||
if (0 < info->si_code)
|
||||
{
|
||||
/* If the faulting address is within the stack, or within one
|
||||
page of the stack end, assume that it is a stack
|
||||
overflow. */
|
||||
# if HAVE_XSI_STACK_OVERFLOW_HEURISTIC
|
||||
ucontext_t const *user_context = context;
|
||||
char const *stack_base = user_context->uc_stack.ss_sp;
|
||||
size_t stack_size = user_context->uc_stack.ss_size;
|
||||
# endif
|
||||
char const *faulting_address = info->si_addr;
|
||||
size_t s = faulting_address - stack_base;
|
||||
size_t page_size = sysconf (_SC_PAGESIZE);
|
||||
if (find_stack_direction (0) < 0)
|
||||
s += page_size;
|
||||
if (s < stack_size + page_size)
|
||||
signo = 0;
|
||||
|
||||
# if DEBUG
|
||||
{
|
||||
char buf[1024];
|
||||
sprintf (buf,
|
||||
"segv_handler fault=%p base=%p size=%lx page=%lx signo=%d\n",
|
||||
faulting_address, stack_base, (unsigned long) stack_size,
|
||||
(unsigned long) page_size, signo);
|
||||
write (STDERR_FILENO, buf, strlen (buf));
|
||||
}
|
||||
# endif
|
||||
}
|
||||
|
||||
die (signo);
|
||||
}
|
||||
# endif
|
||||
|
||||
static void
|
||||
null_action (int signo __attribute__ ((unused)))
|
||||
{
|
||||
}
|
||||
|
||||
/* Assuming ARGV is the argument vector of `main', set up ACTION so
|
||||
that it is invoked on C stack overflow. Return -1 (setting errno)
|
||||
if this cannot be done.
|
||||
|
||||
When ACTION is called, it is passed an argument equal to SIGSEGV
|
||||
for a segmentation violation that does not appear related to stack
|
||||
overflow, and is passed zero otherwise.
|
||||
|
||||
A null ACTION acts like an action that does nothing.
|
||||
|
||||
ACTION must be async-signal-safe. ACTION together with its callees
|
||||
must not require more than SIGSTKSZ bytes of stack space. */
|
||||
|
||||
int
|
||||
c_stack_action (char * const *argv __attribute__ ((unused)),
|
||||
void (*action) (int))
|
||||
{
|
||||
int r = get_stack_location (argv);
|
||||
if (r != 0)
|
||||
return r;
|
||||
|
||||
{
|
||||
stack_t st;
|
||||
st.ss_flags = 0;
|
||||
st.ss_sp = alternate_signal_stack.buffer;
|
||||
st.ss_size = sizeof alternate_signal_stack.buffer;
|
||||
r = sigaltstack (&st, 0);
|
||||
if (r != 0)
|
||||
return r;
|
||||
}
|
||||
|
||||
segv_action = action ? action : null_action;
|
||||
program_error_message = _("program error");
|
||||
stack_overflow_message = _("stack overflow");
|
||||
|
||||
{
|
||||
# if ! (defined SA_ONSTACK && defined SA_SIGINFO && defined _SC_PAGESIZE)
|
||||
return signal (SIGSEGV, die) == SIG_ERR ? -1 : 0;
|
||||
# else
|
||||
struct sigaction act;
|
||||
sigemptyset (&act.sa_mask);
|
||||
|
||||
/* POSIX 1003.1-2001 says SA_RESETHAND implies SA_NODEFER, but
|
||||
this is not true on Solaris 8 at least. It doesn't hurt to use
|
||||
SA_NODEFER here, so leave it in. */
|
||||
act.sa_flags = SA_NODEFER | SA_ONSTACK | SA_RESETHAND | SA_SIGINFO;
|
||||
|
||||
act.sa_sigaction = segv_handler;
|
||||
|
||||
return sigaction (SIGSEGV, &act, 0);
|
||||
# endif
|
||||
}
|
||||
}
|
||||
|
||||
#else /* ! (HAVE_SIGALTSTACK && HAVE_DECL_SIGALTSTACK) */
|
||||
|
||||
int
|
||||
c_stack_action (char * const *argv __attribute__ ((unused)),
|
||||
void (*action) (int) __attribute__ ((unused)))
|
||||
{
|
||||
errno = ENOTSUP;
|
||||
return -1;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#if DEBUG
|
||||
|
||||
int volatile exit_failure;
|
||||
|
||||
static long
|
||||
recurse (char *p)
|
||||
{
|
||||
char array[500];
|
||||
array[0] = 1;
|
||||
return *p + recurse (array);
|
||||
}
|
||||
|
||||
char *program_name;
|
||||
|
||||
int
|
||||
main (int argc __attribute__ ((unused)), char **argv)
|
||||
{
|
||||
program_name = argv[0];
|
||||
fprintf (stderr, "The last line of output should be \"stack overflow\".\n");
|
||||
if (c_stack_action (argv, 0) == 0)
|
||||
return recurse ("\1");
|
||||
perror ("c_stack_action");
|
||||
return 1;
|
||||
}
|
||||
|
||||
#endif /* DEBUG */
|
||||
|
||||
/*
|
||||
Local Variables:
|
||||
compile-command: "gcc -DDEBUG -DHAVE_CONFIG_H -I.. -g -O -Wall -W c-stack.c"
|
||||
End:
|
||||
*/
|
||||
19
lib/c-stack.h
Normal file
19
lib/c-stack.h
Normal file
@@ -0,0 +1,19 @@
|
||||
/* Stack overflow handling.
|
||||
|
||||
Copyright (C) 2002 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software Foundation,
|
||||
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
|
||||
int c_stack_action (char * const *, void (*) (int));
|
||||
@@ -1,7 +1,7 @@
|
||||
#! /bin/sh
|
||||
# Output a system dependent table of character encoding aliases.
|
||||
#
|
||||
# Copyright (C) 2000-2001 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2000-2002 Free Software Foundation, Inc.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU Library General Public License as published
|
||||
@@ -235,10 +235,12 @@ case "$os" in
|
||||
#echo "sun_eu_greek ?" # what is this?
|
||||
echo "UTF-8 UTF-8"
|
||||
;;
|
||||
freebsd*)
|
||||
freebsd* | os2*)
|
||||
# FreeBSD 4.2 doesn't have nl_langinfo(CODESET); therefore
|
||||
# localcharset.c falls back to using the full locale name
|
||||
# from the environment variables.
|
||||
# Likewise for OS/2. OS/2 has XFree86 just like FreeBSD. Just
|
||||
# reuse FreeBSD's locale data for OS/2.
|
||||
echo "C ASCII"
|
||||
echo "US-ASCII ASCII"
|
||||
for l in la_LN lt_LN; do
|
||||
|
||||
@@ -22,6 +22,6 @@
|
||||
#ifndef HAVE_DECL_DIRFD
|
||||
"this configure-time declaration test was not run"
|
||||
#endif
|
||||
#if !HAVE_DECL_DIRFD
|
||||
#if !HAVE_DECL_DIRFD && !defined dirfd
|
||||
int dirfd (DIR const *);
|
||||
#endif
|
||||
|
||||
31
lib/exitfail.c
Normal file
31
lib/exitfail.c
Normal file
@@ -0,0 +1,31 @@
|
||||
/* Failure exit status
|
||||
|
||||
Copyright (C) 2002 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; see the file COPYING.
|
||||
If not, write to the Free Software Foundation,
|
||||
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
|
||||
#if HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#if HAVE_STDLIB_H
|
||||
# include <stdlib.h>
|
||||
#endif
|
||||
#ifndef EXIT_FAILURE
|
||||
# define EXIT_FAILURE 1
|
||||
#endif
|
||||
|
||||
int volatile exit_failure = EXIT_FAILURE;
|
||||
20
lib/exitfail.h
Normal file
20
lib/exitfail.h
Normal file
@@ -0,0 +1,20 @@
|
||||
/* Failure exit status
|
||||
|
||||
Copyright (C) 2002 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; see the file COPYING.
|
||||
If not, write to the Free Software Foundation,
|
||||
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
|
||||
extern int volatile exit_failure;
|
||||
72
lib/file-type.c
Normal file
72
lib/file-type.c
Normal file
@@ -0,0 +1,72 @@
|
||||
/* Return a string describing the type of a file.
|
||||
|
||||
Copyright (C) 1993, 1994, 2001, 2002 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software Foundation,
|
||||
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
|
||||
/* Written by Paul Eggert. */
|
||||
|
||||
#if HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include "file-type.h"
|
||||
|
||||
#include <gettext.h>
|
||||
#define _(text) gettext (text)
|
||||
|
||||
char const *
|
||||
file_type (struct stat const *st)
|
||||
{
|
||||
/* See POSIX 1003.1-2001 XCU Table 4-8 lines 17093-17107 for some of
|
||||
these formats.
|
||||
|
||||
To keep diagnostics grammatical in English, the returned string
|
||||
must start with a consonant. */
|
||||
|
||||
if (S_ISREG (st->st_mode))
|
||||
return st->st_size == 0 ? _("regular empty file") : _("regular file");
|
||||
|
||||
if (S_ISDIR (st->st_mode))
|
||||
return _("directory");
|
||||
|
||||
if (S_ISBLK (st->st_mode))
|
||||
return _("block special file");
|
||||
|
||||
if (S_ISCHR (st->st_mode))
|
||||
return _("character special file");
|
||||
|
||||
if (S_ISFIFO (st->st_mode))
|
||||
return _("fifo");
|
||||
|
||||
if (S_ISLNK (st->st_mode))
|
||||
return _("symbolic link");
|
||||
|
||||
if (S_ISSOCK (st->st_mode))
|
||||
return _("socket");
|
||||
|
||||
if (S_TYPEISMQ (st))
|
||||
return _("message queue");
|
||||
|
||||
if (S_TYPEISSEM (st))
|
||||
return _("semaphore");
|
||||
|
||||
if (S_TYPEISSHM (st))
|
||||
return _("shared memory object");
|
||||
|
||||
return _("weird file");
|
||||
}
|
||||
161
lib/file-type.h
Normal file
161
lib/file-type.h
Normal file
@@ -0,0 +1,161 @@
|
||||
/* Return a string describing the type of a file.
|
||||
|
||||
Copyright (C) 1993, 1994, 2001, 2002 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software Foundation,
|
||||
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
|
||||
/* Written by Paul Eggert and Jim Meyering. */
|
||||
|
||||
#ifndef FILE_TYPE_H
|
||||
# define FILE_TYPE_H 1
|
||||
|
||||
# if ! defined S_ISREG && ! defined S_IFREG
|
||||
you must include <sys/stat.h> before including this file
|
||||
# endif
|
||||
|
||||
char const *file_type (struct stat const *);
|
||||
|
||||
# ifndef S_IFMT
|
||||
# define S_IFMT 0170000
|
||||
# endif
|
||||
|
||||
# if STAT_MACROS_BROKEN
|
||||
# undef S_ISBLK
|
||||
# undef S_ISCHR
|
||||
# undef S_ISDIR
|
||||
# undef S_ISDOOR
|
||||
# undef S_ISFIFO
|
||||
# undef S_ISLNK
|
||||
# undef S_ISNAM
|
||||
# undef S_ISMPB
|
||||
# undef S_ISMPC
|
||||
# undef S_ISNWK
|
||||
# undef S_ISREG
|
||||
# undef S_ISSOCK
|
||||
# endif
|
||||
|
||||
|
||||
# ifndef S_ISBLK
|
||||
# ifdef S_IFBLK
|
||||
# define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK)
|
||||
# else
|
||||
# define S_ISBLK(m) 0
|
||||
# endif
|
||||
# endif
|
||||
|
||||
# ifndef S_ISCHR
|
||||
# ifdef S_IFCHR
|
||||
# define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR)
|
||||
# else
|
||||
# define S_ISCHR(m) 0
|
||||
# endif
|
||||
# endif
|
||||
|
||||
# ifndef S_ISDIR
|
||||
# ifdef S_IFDIR
|
||||
# define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
|
||||
# else
|
||||
# define S_ISDIR(m) 0
|
||||
# endif
|
||||
# endif
|
||||
|
||||
# ifndef S_ISDOOR /* Solaris 2.5 and up */
|
||||
# ifdef S_IFDOOR
|
||||
# define S_ISDOOR(m) (((m) & S_IFMT) == S_IFDOOR)
|
||||
# else
|
||||
# define S_ISDOOR(m) 0
|
||||
# endif
|
||||
# endif
|
||||
|
||||
# ifndef S_ISFIFO
|
||||
# ifdef S_IFIFO
|
||||
# define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO)
|
||||
# else
|
||||
# define S_ISFIFO(m) 0
|
||||
# endif
|
||||
# endif
|
||||
|
||||
# ifndef S_ISLNK
|
||||
# ifdef S_IFLNK
|
||||
# define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK)
|
||||
# else
|
||||
# define S_ISLNK(m) 0
|
||||
# endif
|
||||
# endif
|
||||
|
||||
# ifndef S_ISMPB /* V7 */
|
||||
# ifdef S_IFMPB
|
||||
# define S_ISMPB(m) (((m) & S_IFMT) == S_IFMPB)
|
||||
# define S_ISMPC(m) (((m) & S_IFMT) == S_IFMPC)
|
||||
# else
|
||||
# define S_ISMPB(m) 0
|
||||
# define S_ISMPC(m) 0
|
||||
# endif
|
||||
# endif
|
||||
|
||||
# ifndef S_ISNAM /* Xenix */
|
||||
# ifdef S_IFNAM
|
||||
# define S_ISNAM(m) (((m) & S_IFMT) == S_IFNAM)
|
||||
# else
|
||||
# define S_ISNAM(m) 0
|
||||
# endif
|
||||
# endif
|
||||
|
||||
# ifndef S_ISNWK /* HP/UX */
|
||||
# ifdef S_IFNWK
|
||||
# define S_ISNWK(m) (((m) & S_IFMT) == S_IFNWK)
|
||||
# else
|
||||
# define S_ISNWK(m) 0
|
||||
# endif
|
||||
# endif
|
||||
|
||||
# ifndef S_ISREG
|
||||
# ifdef S_IFREG
|
||||
# define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
|
||||
# else
|
||||
# define S_ISREG(m) 0
|
||||
# endif
|
||||
# endif
|
||||
|
||||
# ifndef S_ISSOCK
|
||||
# ifdef S_IFSOCK
|
||||
# define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK)
|
||||
# else
|
||||
# define S_ISSOCK(m) 0
|
||||
# endif
|
||||
# endif
|
||||
|
||||
|
||||
# ifndef S_TYPEISSEM
|
||||
# ifdef S_INSEM
|
||||
# define S_TYPEISSEM(p) (S_ISNAM ((p)->st_mode) && (p)->st_rdev == S_INSEM)
|
||||
# else
|
||||
# define S_TYPEISSEM(p) 0
|
||||
# endif
|
||||
# endif
|
||||
|
||||
# ifndef S_TYPEISSHM
|
||||
# ifdef S_INSHD
|
||||
# define S_TYPEISSHM(p) (S_ISNAM ((p)->st_mode) && (p)->st_rdev == S_INSHD)
|
||||
# else
|
||||
# define S_TYPEISSHM(p) 0
|
||||
# endif
|
||||
# endif
|
||||
|
||||
# ifndef S_TYPEISMQ
|
||||
# define S_TYPEISMQ(p) 0
|
||||
# endif
|
||||
|
||||
#endif /* FILE_TYPE_H */
|
||||
525
lib/fnmatch.c
525
lib/fnmatch.c
@@ -1,4 +1,5 @@
|
||||
/* Copyright 1991, 1992, 1993, 1996, 1997, 2000 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1991, 1992, 1993, 1996, 1997, 1998, 1999, 2000, 2001,
|
||||
2002 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -10,9 +11,9 @@
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software Foundation,
|
||||
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software Foundation,
|
||||
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
|
||||
#if HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
@@ -23,208 +24,362 @@
|
||||
# define _GNU_SOURCE 1
|
||||
#endif
|
||||
|
||||
#ifdef __GNUC__
|
||||
# define alloca __builtin_alloca
|
||||
# define HAVE_ALLOCA 1
|
||||
#else
|
||||
# if defined HAVE_ALLOCA_H || defined _LIBC
|
||||
# include <alloca.h>
|
||||
# else
|
||||
# ifdef _AIX
|
||||
# pragma alloca
|
||||
# else
|
||||
# ifndef alloca
|
||||
char *alloca ();
|
||||
# endif
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if ! defined __builtin_expect && __GNUC__ < 3
|
||||
# define __builtin_expect(expr, expected) (expr)
|
||||
#endif
|
||||
|
||||
#include <assert.h>
|
||||
#include <errno.h>
|
||||
#include <fnmatch.h>
|
||||
#include <ctype.h>
|
||||
|
||||
#if defined STDC_HEADERS || !defined isascii
|
||||
# define IN_CTYPE_DOMAIN(c) 1
|
||||
#if HAVE_STRING_H || defined _LIBC
|
||||
# include <string.h>
|
||||
#else
|
||||
# define IN_CTYPE_DOMAIN(c) isascii (c)
|
||||
# if HAVE_STRINGS_H
|
||||
# include <strings.h>
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#define ISUPPER(c) (IN_CTYPE_DOMAIN (c) && isupper (c))
|
||||
#if defined STDC_HEADERS || defined _LIBC
|
||||
# include <stddef.h>
|
||||
# include <stdlib.h>
|
||||
#endif
|
||||
|
||||
#define WIDE_CHAR_SUPPORT (HAVE_WCTYPE_H && HAVE_WCHAR_H && HAVE_BTOWC)
|
||||
|
||||
/* For platform which support the ISO C amendement 1 functionality we
|
||||
support user defined character classes. */
|
||||
#if defined _LIBC || WIDE_CHAR_SUPPORT
|
||||
/* Solaris 2.5 has a bug: <wchar.h> must be included before <wctype.h>. */
|
||||
# include <wchar.h>
|
||||
# include <wctype.h>
|
||||
#endif
|
||||
|
||||
/* We need some of the locale data (the collation sequence information)
|
||||
but there is no interface to get this information in general. Therefore
|
||||
we support a correct implementation only in glibc. */
|
||||
#ifdef _LIBC
|
||||
# include "../locale/localeinfo.h"
|
||||
# include "../locale/elem-hash.h"
|
||||
# include "../locale/coll-lookup.h"
|
||||
# include <shlib-compat.h>
|
||||
|
||||
# define CONCAT(a,b) __CONCAT(a,b)
|
||||
# define mbsinit __mbsinit
|
||||
# define mbsrtowcs __mbsrtowcs
|
||||
# define fnmatch __fnmatch
|
||||
extern int fnmatch (const char *pattern, const char *string, int flags);
|
||||
#endif
|
||||
|
||||
/* We often have to test for FNM_FILE_NAME and FNM_PERIOD being both set. */
|
||||
#define NO_LEADING_PERIOD(flags) \
|
||||
((flags & (FNM_FILE_NAME | FNM_PERIOD)) == (FNM_FILE_NAME | FNM_PERIOD))
|
||||
|
||||
/* Comment out all this code if we are using the GNU C Library, are not
|
||||
actually compiling the library itself, and have not detected a bug
|
||||
in the library. This code is part of the GNU C
|
||||
Library, but also included in many other GNU distributions. Compiling
|
||||
and linking in this code is a waste when using the GNU C library
|
||||
(especially if it is a shared library). Rather than having every GNU
|
||||
program understand `configure --with-gnu-libc' and omit the object files,
|
||||
it is simpler to just do this in the source for each such file. */
|
||||
|
||||
#if defined _LIBC || !defined __GNU_LIBRARY__ || !HAVE_FNMATCH_GNU
|
||||
|
||||
|
||||
#ifndef errno
|
||||
# if defined STDC_HEADERS || !defined isascii
|
||||
# define ISASCII(c) 1
|
||||
# else
|
||||
# define ISASCII(c) isascii(c)
|
||||
# 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
|
||||
/* The GNU C library provides support for user-defined character classes
|
||||
and the functions from ISO C amendement 1. */
|
||||
# ifdef CHARCLASS_NAME_MAX
|
||||
# define CHAR_CLASS_MAX_LENGTH CHARCLASS_NAME_MAX
|
||||
# else
|
||||
/* This shouldn't happen but some implementation might still have this
|
||||
problem. Use a reasonable default value. */
|
||||
# define CHAR_CLASS_MAX_LENGTH 256
|
||||
# endif
|
||||
|
||||
# ifdef _LIBC
|
||||
# define IS_CHAR_CLASS(string) __wctype (string)
|
||||
# else
|
||||
# define IS_CHAR_CLASS(string) wctype (string)
|
||||
# endif
|
||||
|
||||
# ifdef _LIBC
|
||||
# define ISWCTYPE(WC, WT) __iswctype (WC, WT)
|
||||
# else
|
||||
# define ISWCTYPE(WC, WT) iswctype (WC, WT)
|
||||
# endif
|
||||
|
||||
# if (HAVE_MBSTATE_T && HAVE_MBSRTOWCS) || _LIBC
|
||||
/* In this case we are implementing the multibyte character handling. */
|
||||
# define HANDLE_MULTIBYTE 1
|
||||
# endif
|
||||
|
||||
# else
|
||||
# define CHAR_CLASS_MAX_LENGTH 6 /* Namely, `xdigit'. */
|
||||
|
||||
# define IS_CHAR_CLASS(string) \
|
||||
(STREQ (string, "alpha") || STREQ (string, "upper") \
|
||||
|| STREQ (string, "lower") || STREQ (string, "digit") \
|
||||
|| STREQ (string, "alnum") || STREQ (string, "xdigit") \
|
||||
|| STREQ (string, "space") || STREQ (string, "print") \
|
||||
|| STREQ (string, "punct") || STREQ (string, "graph") \
|
||||
|| STREQ (string, "cntrl") || STREQ (string, "blank"))
|
||||
# endif
|
||||
|
||||
/* Avoid depending on library functions or files
|
||||
whose names are inconsistent. */
|
||||
|
||||
# if !defined _LIBC && !defined getenv && !HAVE_DECL_GETENV
|
||||
extern char *getenv ();
|
||||
# endif
|
||||
|
||||
# ifndef errno
|
||||
extern int errno;
|
||||
#endif
|
||||
# endif
|
||||
|
||||
/* Match STRING against the filename pattern PATTERN, returning zero if
|
||||
it matches, nonzero if not. */
|
||||
int
|
||||
fnmatch (const char *pattern, const char *string, int flags)
|
||||
{
|
||||
register const char *p = pattern, *n = string;
|
||||
register char c;
|
||||
/* Global variable. */
|
||||
static int posixly_correct;
|
||||
|
||||
# ifndef internal_function
|
||||
/* Inside GNU libc we mark some function in a special way. In other
|
||||
environments simply ignore the marking. */
|
||||
# define internal_function
|
||||
# endif
|
||||
|
||||
/* Note that this evaluates C many times. */
|
||||
#define FOLD(c) ((flags & FNM_CASEFOLD) && ISUPPER ((unsigned char) (c)) \
|
||||
? tolower ((unsigned char) (c)) \
|
||||
: (c))
|
||||
# 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 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
|
||||
# ifdef _LIBC
|
||||
# define BTOWC(C) __btowc (C)
|
||||
# else
|
||||
# define BTOWC(C) btowc (C)
|
||||
# endif
|
||||
# define STRLEN(S) strlen (S)
|
||||
# define STRCAT(D, S) strcat (D, S)
|
||||
# ifdef _LIBC
|
||||
# define MEMPCPY(D, S, N) __mempcpy (D, S, N)
|
||||
# else
|
||||
# if HAVE_MEMPCPY
|
||||
# define MEMPCPY(D, S, N) mempcpy (D, S, N)
|
||||
# else
|
||||
# define MEMPCPY(D, S, N) ((void *) ((char *) memcpy (D, S, N) + (N)))
|
||||
# endif
|
||||
# endif
|
||||
# define MEMCHR(S, C, N) memchr (S, C, N)
|
||||
# define STRCOLL(S1, S2) strcoll (S1, S2)
|
||||
# include "fnmatch_loop.c"
|
||||
|
||||
while ((c = *p++) != '\0')
|
||||
|
||||
# if HANDLE_MULTIBYTE
|
||||
# define FOLD(c) ((flags & FNM_CASEFOLD) ? towlower (c) : (c))
|
||||
# define CHAR wchar_t
|
||||
# define UCHAR wint_t
|
||||
# define INT wint_t
|
||||
# define FCT internal_fnwmatch
|
||||
# define EXT ext_wmatch
|
||||
# define END end_wpattern
|
||||
# define L(CS) L##CS
|
||||
# define BTOWC(C) (C)
|
||||
# ifdef _LIBC
|
||||
# define STRLEN(S) __wcslen (S)
|
||||
# define STRCAT(D, S) __wcscat (D, S)
|
||||
# define MEMPCPY(D, S, N) __wmempcpy (D, S, N)
|
||||
# else
|
||||
# define STRLEN(S) wcslen (S)
|
||||
# define STRCAT(D, S) wcscat (D, S)
|
||||
# if HAVE_WMEMPCPY
|
||||
# define MEMPCPY(D, S, N) wmempcpy (D, S, N)
|
||||
# else
|
||||
# define MEMPCPY(D, S, N) (wmemcpy (D, S, N) + (N))
|
||||
# endif
|
||||
# endif
|
||||
# define MEMCHR(S, C, N) wmemchr (S, C, N)
|
||||
# define STRCOLL(S1, S2) wcscoll (S1, S2)
|
||||
# define WIDE_CHAR_VERSION 1
|
||||
|
||||
# undef IS_CHAR_CLASS
|
||||
/* We have to convert the wide character string in a multibyte string. But
|
||||
we know that the character class names consist of alphanumeric characters
|
||||
from the portable character set, and since the wide character encoding
|
||||
for a member of the portable character set is the same code point as
|
||||
its single-byte encoding, we can use a simplified method to convert the
|
||||
string to a multibyte character string. */
|
||||
static wctype_t
|
||||
is_char_class (const wchar_t *wcs)
|
||||
{
|
||||
char s[CHAR_CLASS_MAX_LENGTH + 1];
|
||||
char *cp = s;
|
||||
|
||||
do
|
||||
{
|
||||
c = FOLD (c);
|
||||
|
||||
switch (c)
|
||||
/* Test for a printable character from the portable character set. */
|
||||
# ifdef _LIBC
|
||||
if (*wcs < 0x20 || *wcs > 0x7e
|
||||
|| *wcs == 0x24 || *wcs == 0x40 || *wcs == 0x60)
|
||||
return (wctype_t) 0;
|
||||
# else
|
||||
switch (*wcs)
|
||||
{
|
||||
case '?':
|
||||
if (*n == '\0')
|
||||
return FNM_NOMATCH;
|
||||
else if ((flags & FNM_FILE_NAME) && *n == '/')
|
||||
return FNM_NOMATCH;
|
||||
else if ((flags & FNM_PERIOD) && *n == '.' &&
|
||||
(n == string || ((flags & FNM_FILE_NAME) && n[-1] == '/')))
|
||||
return FNM_NOMATCH;
|
||||
case L' ': case L'!': case L'"': case L'#': case L'%':
|
||||
case L'&': case L'\'': case L'(': case L')': case L'*':
|
||||
case L'+': case L',': case L'-': case L'.': case L'/':
|
||||
case L'0': case L'1': case L'2': case L'3': case L'4':
|
||||
case L'5': case L'6': case L'7': case L'8': case L'9':
|
||||
case L':': case L';': case L'<': case L'=': case L'>':
|
||||
case L'?':
|
||||
case L'A': case L'B': case L'C': case L'D': case L'E':
|
||||
case L'F': case L'G': case L'H': case L'I': case L'J':
|
||||
case L'K': case L'L': case L'M': case L'N': case L'O':
|
||||
case L'P': case L'Q': case L'R': case L'S': case L'T':
|
||||
case L'U': case L'V': case L'W': case L'X': case L'Y':
|
||||
case L'Z':
|
||||
case L'[': case L'\\': case L']': case L'^': case L'_':
|
||||
case L'a': case L'b': case L'c': case L'd': case L'e':
|
||||
case L'f': case L'g': case L'h': case L'i': case L'j':
|
||||
case L'k': case L'l': case L'm': case L'n': case L'o':
|
||||
case L'p': case L'q': case L'r': case L's': case L't':
|
||||
case L'u': case L'v': case L'w': case L'x': case L'y':
|
||||
case L'z': case L'{': case L'|': case L'}': case L'~':
|
||||
break;
|
||||
|
||||
case '\\':
|
||||
if (!(flags & FNM_NOESCAPE))
|
||||
{
|
||||
c = *p++;
|
||||
if (c == '\0')
|
||||
/* Trailing \ loses. */
|
||||
return FNM_NOMATCH;
|
||||
c = FOLD (c);
|
||||
}
|
||||
if (FOLD (*n) != c)
|
||||
return FNM_NOMATCH;
|
||||
break;
|
||||
|
||||
case '*':
|
||||
if ((flags & FNM_PERIOD) && *n == '.' &&
|
||||
(n == string || ((flags & FNM_FILE_NAME) && n[-1] == '/')))
|
||||
return FNM_NOMATCH;
|
||||
|
||||
for (c = *p++; c == '?' || c == '*'; c = *p++)
|
||||
{
|
||||
if (c == '?')
|
||||
{
|
||||
/* A ? needs to match one character. */
|
||||
if (*n == '\0' || (*n == '/' && (flags & FNM_FILE_NAME)))
|
||||
/* There isn't another character; no match. */
|
||||
return FNM_NOMATCH;
|
||||
else
|
||||
/* One character of the string is consumed in matching
|
||||
this ? wildcard, so *??? won't match if there are
|
||||
less than three characters. */
|
||||
++n;
|
||||
}
|
||||
}
|
||||
|
||||
if (c == '\0')
|
||||
{
|
||||
if ((flags & (FNM_FILE_NAME | FNM_LEADING_DIR)) == FNM_FILE_NAME)
|
||||
for (; *n != '\0'; n++)
|
||||
if (*n == '/')
|
||||
return FNM_NOMATCH;
|
||||
return 0;
|
||||
}
|
||||
|
||||
{
|
||||
char c1 = (!(flags & FNM_NOESCAPE) && c == '\\') ? *p : c;
|
||||
c1 = FOLD (c1);
|
||||
for (--p; *n != '\0'; ++n)
|
||||
if ((c == '[' || FOLD (*n) == c1) &&
|
||||
fnmatch (p, n, flags & ~FNM_PERIOD) == 0)
|
||||
return 0;
|
||||
else if (*n == '/' && (flags & FNM_FILE_NAME))
|
||||
break;
|
||||
return FNM_NOMATCH;
|
||||
}
|
||||
|
||||
case '[':
|
||||
{
|
||||
/* Nonzero if the sense of the character class is inverted. */
|
||||
register int not;
|
||||
|
||||
if (*n == '\0')
|
||||
return FNM_NOMATCH;
|
||||
|
||||
if ((flags & FNM_PERIOD) && *n == '.' &&
|
||||
(n == string || ((flags & FNM_FILE_NAME) && n[-1] == '/')))
|
||||
return FNM_NOMATCH;
|
||||
|
||||
not = (*p == '!' || *p == '^');
|
||||
if (not)
|
||||
++p;
|
||||
|
||||
c = *p++;
|
||||
for (;;)
|
||||
{
|
||||
register char cstart = c, cend = c;
|
||||
|
||||
if (!(flags & FNM_NOESCAPE) && c == '\\')
|
||||
{
|
||||
if (*p == '\0')
|
||||
return FNM_NOMATCH;
|
||||
cstart = cend = *p++;
|
||||
}
|
||||
|
||||
cstart = cend = FOLD (cstart);
|
||||
|
||||
if (c == '\0')
|
||||
/* [ (unterminated) loses. */
|
||||
return FNM_NOMATCH;
|
||||
|
||||
c = *p++;
|
||||
c = FOLD (c);
|
||||
|
||||
if ((flags & FNM_FILE_NAME) && c == '/')
|
||||
/* [/] can never match. */
|
||||
return FNM_NOMATCH;
|
||||
|
||||
if (c == '-' && *p != ']')
|
||||
{
|
||||
cend = *p++;
|
||||
if (!(flags & FNM_NOESCAPE) && cend == '\\')
|
||||
cend = *p++;
|
||||
if (cend == '\0')
|
||||
return FNM_NOMATCH;
|
||||
cend = FOLD (cend);
|
||||
|
||||
c = *p++;
|
||||
}
|
||||
|
||||
if (FOLD (*n) >= cstart && FOLD (*n) <= cend)
|
||||
goto matched;
|
||||
|
||||
if (c == ']')
|
||||
break;
|
||||
}
|
||||
if (!not)
|
||||
return FNM_NOMATCH;
|
||||
break;
|
||||
|
||||
matched:;
|
||||
/* Skip the rest of the [...] that already matched. */
|
||||
while (c != ']')
|
||||
{
|
||||
if (c == '\0')
|
||||
/* [... (unterminated) loses. */
|
||||
return FNM_NOMATCH;
|
||||
|
||||
c = *p++;
|
||||
if (!(flags & FNM_NOESCAPE) && c == '\\')
|
||||
{
|
||||
if (*p == '\0')
|
||||
return FNM_NOMATCH;
|
||||
/* XXX 1003.2d11 is unclear if this is right. */
|
||||
++p;
|
||||
}
|
||||
}
|
||||
if (not)
|
||||
return FNM_NOMATCH;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
if (c != FOLD (*n))
|
||||
return FNM_NOMATCH;
|
||||
return (wctype_t) 0;
|
||||
}
|
||||
# endif
|
||||
|
||||
++n;
|
||||
/* Avoid overrunning the buffer. */
|
||||
if (cp == s + CHAR_CLASS_MAX_LENGTH)
|
||||
return (wctype_t) 0;
|
||||
|
||||
*cp++ = (char) *wcs++;
|
||||
}
|
||||
while (*wcs != L'\0');
|
||||
|
||||
if (*n == '\0')
|
||||
return 0;
|
||||
*cp = '\0';
|
||||
|
||||
if ((flags & FNM_LEADING_DIR) && *n == '/')
|
||||
/* The FNM_LEADING_DIR flag says that "foo*" matches "foobar/frobozz". */
|
||||
return 0;
|
||||
|
||||
return FNM_NOMATCH;
|
||||
|
||||
#undef FOLD
|
||||
# ifdef _LIBC
|
||||
return __wctype (s);
|
||||
# else
|
||||
return wctype (s);
|
||||
# endif
|
||||
}
|
||||
# define IS_CHAR_CLASS(string) is_char_class (string)
|
||||
|
||||
# include "fnmatch_loop.c"
|
||||
# endif
|
||||
|
||||
|
||||
int
|
||||
fnmatch (pattern, string, flags)
|
||||
const char *pattern;
|
||||
const char *string;
|
||||
int flags;
|
||||
{
|
||||
# if HANDLE_MULTIBYTE
|
||||
if (__builtin_expect (MB_CUR_MAX, 1) != 1)
|
||||
{
|
||||
mbstate_t ps;
|
||||
size_t n;
|
||||
wchar_t *wpattern;
|
||||
wchar_t *wstring;
|
||||
|
||||
/* Convert the strings into wide characters. */
|
||||
memset (&ps, '\0', sizeof (ps));
|
||||
n = mbsrtowcs (NULL, &pattern, 0, &ps);
|
||||
if (__builtin_expect (n, 0) == (size_t) -1)
|
||||
/* Something wrong.
|
||||
XXX Do we have to set `errno' to something which mbsrtows hasn't
|
||||
already done? */
|
||||
return -1;
|
||||
wpattern = (wchar_t *) alloca ((n + 1) * sizeof (wchar_t));
|
||||
assert (mbsinit (&ps));
|
||||
(void) mbsrtowcs (wpattern, &pattern, n + 1, &ps);
|
||||
|
||||
assert (mbsinit (&ps));
|
||||
n = mbsrtowcs (NULL, &string, 0, &ps);
|
||||
if (__builtin_expect (n, 0) == (size_t) -1)
|
||||
/* Something wrong.
|
||||
XXX Do we have to set `errno' to something which mbsrtows hasn't
|
||||
already done? */
|
||||
return -1;
|
||||
wstring = (wchar_t *) alloca ((n + 1) * sizeof (wchar_t));
|
||||
assert (mbsinit (&ps));
|
||||
(void) mbsrtowcs (wstring, &string, n + 1, &ps);
|
||||
|
||||
return internal_fnwmatch (wpattern, wstring, wstring + n,
|
||||
flags & FNM_PERIOD, flags);
|
||||
}
|
||||
# endif /* mbstate_t and mbsrtowcs or _LIBC. */
|
||||
|
||||
return internal_fnmatch (pattern, string, string + strlen (string),
|
||||
flags & FNM_PERIOD, flags);
|
||||
}
|
||||
|
||||
# ifdef _LIBC
|
||||
# undef fnmatch
|
||||
versioned_symbol (libc, __fnmatch, fnmatch, GLIBC_2_2_3);
|
||||
# if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_2_3)
|
||||
strong_alias (__fnmatch, __fnmatch_old)
|
||||
compat_symbol (libc, __fnmatch_old, fnmatch, GLIBC_2_0);
|
||||
# endif
|
||||
# endif
|
||||
|
||||
#endif /* _LIBC or not __GNU_LIBRARY__. */
|
||||
|
||||
@@ -1,69 +0,0 @@
|
||||
/* Copyright (C) 1991, 1992, 1993 Free Software Foundation, Inc.
|
||||
|
||||
NOTE: The canonical source of this file is maintained with the GNU C Library.
|
||||
Bugs can be reported to bug-glibc@prep.ai.mit.edu.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software Foundation,
|
||||
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
|
||||
#ifndef _FNMATCH_H
|
||||
|
||||
#define _FNMATCH_H 1
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#if defined (__cplusplus) || (defined (__STDC__) && __STDC__)
|
||||
#undef __P
|
||||
#define __P(protos) protos
|
||||
#else /* Not C++ or ANSI C. */
|
||||
#undef __P
|
||||
#define __P(protos) ()
|
||||
/* We can get away without defining `const' here only because in this file
|
||||
it is used only inside the prototype for `fnmatch', which is elided in
|
||||
non-ANSI C where `const' is problematical. */
|
||||
#endif /* C++ or ANSI C. */
|
||||
|
||||
|
||||
/* We #undef these before defining them because some losing systems
|
||||
(HP-UX A.08.07 for example) define these in <unistd.h>. */
|
||||
#undef FNM_PATHNAME
|
||||
#undef FNM_NOESCAPE
|
||||
#undef FNM_PERIOD
|
||||
|
||||
/* Bits set in the FLAGS argument to `fnmatch'. */
|
||||
#define FNM_PATHNAME (1 << 0) /* No wildcard can ever match `/'. */
|
||||
#define FNM_NOESCAPE (1 << 1) /* Backslashes don't quote special chars. */
|
||||
#define FNM_PERIOD (1 << 2) /* Leading `.' is matched only explicitly. */
|
||||
|
||||
#if !defined (_POSIX_C_SOURCE) || _POSIX_C_SOURCE < 2 || defined (_GNU_SOURCE)
|
||||
#define FNM_FILE_NAME FNM_PATHNAME /* Preferred GNU name. */
|
||||
#define FNM_LEADING_DIR (1 << 3) /* Ignore `/...' after a match. */
|
||||
#define FNM_CASEFOLD (1 << 4) /* Compare without regard to case. */
|
||||
#endif
|
||||
|
||||
/* Value returned by `fnmatch' if STRING does not match PATTERN. */
|
||||
#define FNM_NOMATCH 1
|
||||
|
||||
/* Match STRING against the filename pattern PATTERN,
|
||||
returning zero if it matches, FNM_NOMATCH if not. */
|
||||
extern int fnmatch __P ((const char *__pattern, const char *__string,
|
||||
int __flags));
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* fnmatch.h */
|
||||
80
lib/fnmatch_.h
Normal file
80
lib/fnmatch_.h
Normal file
@@ -0,0 +1,80 @@
|
||||
/* Copyright (C) 1991, 1992, 1993, 1996, 1997, 1998, 1999, 2001, 2002
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software Foundation,
|
||||
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
|
||||
#ifndef _FNMATCH_H
|
||||
# define _FNMATCH_H 1
|
||||
|
||||
# ifdef __cplusplus
|
||||
extern "C" {
|
||||
# endif
|
||||
|
||||
# if defined __cplusplus || (defined __STDC__ && __STDC__) || defined WINDOWS32
|
||||
# if !defined __GLIBC__ || !defined __P
|
||||
# undef __P
|
||||
# define __P(protos) protos
|
||||
# endif
|
||||
# else /* Not C++ or ANSI C. */
|
||||
# undef __P
|
||||
# define __P(protos) ()
|
||||
/* We can get away without defining `const' here only because in this file
|
||||
it is used only inside the prototype for `fnmatch', which is elided in
|
||||
non-ANSI C where `const' is problematical. */
|
||||
# endif /* C++ or ANSI C. */
|
||||
|
||||
# ifndef __const
|
||||
# define __const const
|
||||
# endif
|
||||
|
||||
/* We #undef these before defining them because some losing systems
|
||||
(HP-UX A.08.07 for example) define these in <unistd.h>. */
|
||||
# undef FNM_PATHNAME
|
||||
# undef FNM_NOESCAPE
|
||||
# undef FNM_PERIOD
|
||||
|
||||
/* Bits set in the FLAGS argument to `fnmatch'. */
|
||||
# define FNM_PATHNAME (1 << 0) /* No wildcard can ever match `/'. */
|
||||
# define FNM_NOESCAPE (1 << 1) /* Backslashes don't quote special chars. */
|
||||
# define FNM_PERIOD (1 << 2) /* Leading `.' is matched only explicitly. */
|
||||
|
||||
# if !defined _POSIX_C_SOURCE || _POSIX_C_SOURCE < 2 || defined _GNU_SOURCE
|
||||
# define FNM_FILE_NAME FNM_PATHNAME /* Preferred GNU name. */
|
||||
# define FNM_LEADING_DIR (1 << 3) /* Ignore `/...' after a match. */
|
||||
# define FNM_CASEFOLD (1 << 4) /* Compare without regard to case. */
|
||||
# define FNM_EXTMATCH (1 << 5) /* Use ksh-like extended matching. */
|
||||
# endif
|
||||
|
||||
/* Value returned by `fnmatch' if STRING does not match PATTERN. */
|
||||
# define FNM_NOMATCH 1
|
||||
|
||||
/* This value is returned if the implementation does not support
|
||||
`fnmatch'. Since this is not the case here it will never be
|
||||
returned but the conformance test suites still require the symbol
|
||||
to be defined. */
|
||||
# ifdef _XOPEN_SOURCE
|
||||
# define FNM_NOSYS (-1)
|
||||
# endif
|
||||
|
||||
/* Match NAME against the filename pattern PATTERN,
|
||||
returning zero if it matches, FNM_NOMATCH if not. */
|
||||
extern int fnmatch __P ((__const char *__pattern, __const char *__name,
|
||||
int __flags));
|
||||
|
||||
# ifdef __cplusplus
|
||||
}
|
||||
# endif
|
||||
|
||||
#endif /* fnmatch.h */
|
||||
1189
lib/fnmatch_loop.c
Normal file
1189
lib/fnmatch_loop.c
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,6 @@
|
||||
/* fsusage.c -- return space usage of mounted filesystems
|
||||
Copyright (C) 1991, 1992, 1996, 1998, 1999 Free Software Foundation, Inc.
|
||||
Copyright (C) 1991, 1992, 1996, 1998, 1999, 2002 Free Software
|
||||
Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -21,7 +22,15 @@
|
||||
|
||||
#if HAVE_INTTYPES_H
|
||||
# include <inttypes.h>
|
||||
#else
|
||||
# if HAVE_STDINT_H
|
||||
# include <stdint.h>
|
||||
# endif
|
||||
#endif
|
||||
#ifndef UINTMAX_MAX
|
||||
# define UINTMAX_MAX ((uintmax_t) -1)
|
||||
#endif
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include "fsusage.h"
|
||||
@@ -51,7 +60,7 @@ int statfs ();
|
||||
# include <sys/fs/s5param.h>
|
||||
#endif
|
||||
|
||||
#if defined (HAVE_SYS_FILSYS_H) && !defined (_CRAY)
|
||||
#if defined HAVE_SYS_FILSYS_H && !defined _CRAY
|
||||
# include <sys/filsys.h> /* SVR2 */
|
||||
#endif
|
||||
|
||||
@@ -74,9 +83,14 @@ int statvfs ();
|
||||
|
||||
/* Many space usage primitives use all 1 bits to denote a value that is
|
||||
not applicable or unknown. Propagate this information by returning
|
||||
a uintmax_t value that is all 1 bits if the argument is all 1 bits,
|
||||
even if the argument is unsigned and smaller than uintmax_t. */
|
||||
#define PROPAGATE_ALL_ONES(x) ((x) == -1 ? (uintmax_t) -1 : (uintmax_t) (x))
|
||||
a uintmax_t value that is all 1 bits if X is all 1 bits, even if X
|
||||
is unsigned and narrower than uintmax_t. */
|
||||
#define PROPAGATE_ALL_ONES(x) \
|
||||
((sizeof (x) < sizeof (uintmax_t) \
|
||||
&& (~ (x) == (sizeof (x) < sizeof (int) \
|
||||
? - (1 << (sizeof (x) * CHAR_BIT)) \
|
||||
: 0))) \
|
||||
? UINTMAX_MAX : (x))
|
||||
|
||||
/* Extract the top bit of X as an uintmax_t value. */
|
||||
#define EXTRACT_TOP_BIT(x) ((x) \
|
||||
@@ -162,7 +176,7 @@ get_fs_usage (const char *path, const char *disk, struct fs_usage *fsp)
|
||||
fsp->fsu_bavail = PROPAGATE_TOP_BIT (fsd.s_tfree);
|
||||
fsp->fsu_bavail_top_bit_set = EXTRACT_TOP_BIT (fsd.s_tfree) != 0;
|
||||
fsp->fsu_files = (fsd.s_isize == -1
|
||||
? (uintmax_t) -1
|
||||
? UINTMAX_MAX
|
||||
: (fsd.s_isize - 2) * INOPB * (fsd.s_type == Fs2b ? 2 : 1));
|
||||
fsp->fsu_ffree = PROPAGATE_ALL_ONES (fsd.s_tinode);
|
||||
|
||||
@@ -219,7 +233,7 @@ get_fs_usage (const char *path, const char *disk, struct fs_usage *fsp)
|
||||
/* Empirically, the block counts on most SVR3 and SVR3-derived
|
||||
systems seem to always be in terms of 512-byte blocks,
|
||||
no matter what value f_bsize has. */
|
||||
# if _AIX || defined(_CRAY)
|
||||
# if _AIX || defined _CRAY
|
||||
fsp->fsu_blocksize = PROPAGATE_ALL_ONES (fsd.f_bsize);
|
||||
# else
|
||||
fsp->fsu_blocksize = 512;
|
||||
@@ -235,12 +249,13 @@ get_fs_usage (const char *path, const char *disk, struct fs_usage *fsp)
|
||||
return -1;
|
||||
|
||||
/* f_frsize isn't guaranteed to be supported. */
|
||||
fsp->fsu_blocksize =
|
||||
PROPAGATE_ALL_ONES (fsd.f_frsize ? fsd.f_frsize : fsd.f_bsize);
|
||||
fsp->fsu_blocksize = (fsd.f_frsize
|
||||
? PROPAGATE_ALL_ONES (fsd.f_frsize)
|
||||
: PROPAGATE_ALL_ONES (fsd.f_bsize));
|
||||
|
||||
#endif /* STAT_STATVFS */
|
||||
|
||||
#if !defined(STAT_STATFS2_FS_DATA) && !defined(STAT_READ_FILSYS)
|
||||
#if !defined STAT_STATFS2_FS_DATA && !defined STAT_READ_FILSYS
|
||||
/* !Ultrix && !SVR2 */
|
||||
|
||||
fsp->fsu_blocks = PROPAGATE_ALL_ONES (fsd.f_blocks);
|
||||
@@ -255,7 +270,7 @@ get_fs_usage (const char *path, const char *disk, struct fs_usage *fsp)
|
||||
return 0;
|
||||
}
|
||||
|
||||
#if defined(_AIX) && defined(_I386)
|
||||
#if defined _AIX && defined _I386
|
||||
/* AIX PS/2 does not supply statfs. */
|
||||
|
||||
int
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
%{
|
||||
/* Parse a string into an internal time stamp.
|
||||
Copyright 1999, 2000 Free Software Foundation, Inc.
|
||||
Copyright (C) 1999, 2000, 2002 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -63,10 +63,9 @@
|
||||
- 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.
|
||||
- It's typically faster.
|
||||
Posix 1003.2-1992 section 2.5.2.1 page 50 lines 1556-1558 says that
|
||||
only '0' through '9' are digits. Prefer ISDIGIT to ISDIGIT_LOCALE unless
|
||||
it's important to use the locale's definition of `digit' even when the
|
||||
host does not conform to Posix. */
|
||||
POSIX says that only '0' through '9' are digits. Prefer ISDIGIT to
|
||||
ISDIGIT_LOCALE 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) (c) - '0' <= 9)
|
||||
|
||||
#if STDC_HEADERS || HAVE_STRING_H
|
||||
@@ -378,19 +377,19 @@ relunit:
|
||||
| tSNUMBER tDAY_UNIT
|
||||
{ PC.rel_day += $1.value * $2; }
|
||||
| tDAY_UNIT
|
||||
{ PC.rel_day += $1 }
|
||||
{ PC.rel_day += $1; }
|
||||
| tUNUMBER tHOUR_UNIT
|
||||
{ PC.rel_hour += $1.value * $2; }
|
||||
| tSNUMBER tHOUR_UNIT
|
||||
{ PC.rel_hour += $1.value * $2; }
|
||||
| tHOUR_UNIT
|
||||
{ PC.rel_hour += $1 }
|
||||
{ PC.rel_hour += $1; }
|
||||
| tUNUMBER tMINUTE_UNIT
|
||||
{ PC.rel_minutes += $1.value * $2; }
|
||||
| tSNUMBER tMINUTE_UNIT
|
||||
{ PC.rel_minutes += $1.value * $2; }
|
||||
| tMINUTE_UNIT
|
||||
{ PC.rel_minutes += $1 }
|
||||
{ PC.rel_minutes += $1; }
|
||||
| tUNUMBER tSEC_UNIT
|
||||
{ PC.rel_seconds += $1.value * $2; }
|
||||
| tSNUMBER tSEC_UNIT
|
||||
|
||||
319
lib/getopt.c
319
lib/getopt.c
@@ -2,7 +2,7 @@
|
||||
NOTE: getopt is now part of the C library, so if you don't know what
|
||||
"Keep this file name-space clean" means, talk to drepper@gnu.org
|
||||
before changing it!
|
||||
Copyright (C) 1987,88,89,90,91,92,93,94,95,96,98,99,2000,2001
|
||||
Copyright (C) 1987,88,89,90,91,92,93,94,95,96,98,99,2000,2001,2002
|
||||
Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
@@ -86,6 +86,13 @@
|
||||
# else
|
||||
# define _(msgid) (msgid)
|
||||
# endif
|
||||
# if defined _LIBC && defined USE_IN_LIBIO
|
||||
# include <wchar.h>
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifndef attribute_hidden
|
||||
# define attribute_hidden
|
||||
#endif
|
||||
|
||||
/* This version of `getopt' appears to the caller like standard Unix `getopt'
|
||||
@@ -131,7 +138,7 @@ int optind = 1;
|
||||
causes problems with re-calling getopt as programs generally don't
|
||||
know that. */
|
||||
|
||||
int __getopt_initialized;
|
||||
int __getopt_initialized attribute_hidden;
|
||||
|
||||
/* The next char to be scanned in the option-element
|
||||
in which the last option character we returned was found.
|
||||
@@ -250,35 +257,22 @@ static int first_nonopt;
|
||||
static int last_nonopt;
|
||||
|
||||
#ifdef _LIBC
|
||||
/* Stored original parameters.
|
||||
XXX This is no good solution. We should rather copy the args so
|
||||
that we can compare them later. But we must not use malloc(3). */
|
||||
extern int __libc_argc;
|
||||
extern char **__libc_argv;
|
||||
|
||||
/* Bash 2.0 gives us an environment variable containing flags
|
||||
indicating ARGV elements that should not be considered arguments. */
|
||||
|
||||
#ifdef USE_NONOPTION_FLAGS
|
||||
# ifdef USE_NONOPTION_FLAGS
|
||||
/* Defined in getopt_init.c */
|
||||
extern char *__getopt_nonoption_flags;
|
||||
|
||||
static int nonoption_flags_max_len;
|
||||
static int nonoption_flags_len;
|
||||
#endif
|
||||
|
||||
static int original_argc;
|
||||
static char *const *original_argv;
|
||||
|
||||
/* Make sure the environment variable bash 2.0 puts in the environment
|
||||
is valid for the getopt call we must make sure that the ARGV passed
|
||||
to getopt is that one passed to the process. */
|
||||
static void
|
||||
__attribute__ ((unused))
|
||||
store_args_and_env (int argc, char *const *argv)
|
||||
{
|
||||
/* XXX This is no good solution. We should rather copy the args so
|
||||
that we can compare them later. But we must not use malloc(3). */
|
||||
original_argc = argc;
|
||||
original_argv = argv;
|
||||
}
|
||||
# ifdef text_set_element
|
||||
text_set_element (__libc_subinit, store_args_and_env);
|
||||
# endif /* text_set_element */
|
||||
# endif
|
||||
|
||||
# ifdef USE_NONOPTION_FLAGS
|
||||
# define SWAP_FLAGS(ch1, ch2) \
|
||||
@@ -428,7 +422,7 @@ _getopt_initialize (argc, argv, optstring)
|
||||
|
||||
#if defined _LIBC && defined USE_NONOPTION_FLAGS
|
||||
if (posixly_correct == NULL
|
||||
&& argc == original_argc && argv == original_argv)
|
||||
&& argc == __libc_argc && argv == __libc_argv)
|
||||
{
|
||||
if (nonoption_flags_max_len == 0)
|
||||
{
|
||||
@@ -691,8 +685,26 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
|
||||
if (ambig && !exact)
|
||||
{
|
||||
if (print_errors)
|
||||
fprintf (stderr, _("%s: option `%s' is ambiguous\n"),
|
||||
argv[0], argv[optind]);
|
||||
{
|
||||
#if defined _LIBC && defined USE_IN_LIBIO
|
||||
char *buf;
|
||||
|
||||
if (__asprintf (&buf, _("%s: option `%s' is ambiguous\n"),
|
||||
argv[0], argv[optind]) >= 0)
|
||||
{
|
||||
|
||||
if (_IO_fwide (stderr, 0) > 0)
|
||||
__fwprintf (stderr, L"%s", buf);
|
||||
else
|
||||
fputs (buf, stderr);
|
||||
|
||||
free (buf);
|
||||
}
|
||||
#else
|
||||
fprintf (stderr, _("%s: option `%s' is ambiguous\n"),
|
||||
argv[0], argv[optind]);
|
||||
#endif
|
||||
}
|
||||
nextchar += strlen (nextchar);
|
||||
optind++;
|
||||
optopt = 0;
|
||||
@@ -713,16 +725,50 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
|
||||
{
|
||||
if (print_errors)
|
||||
{
|
||||
#if defined _LIBC && defined USE_IN_LIBIO
|
||||
char *buf;
|
||||
int n;
|
||||
#endif
|
||||
|
||||
if (argv[optind - 1][1] == '-')
|
||||
/* --option */
|
||||
fprintf (stderr,
|
||||
_("%s: option `--%s' doesn't allow an argument\n"),
|
||||
argv[0], pfound->name);
|
||||
{
|
||||
/* --option */
|
||||
#if defined _LIBC && defined USE_IN_LIBIO
|
||||
n = __asprintf (&buf, _("\
|
||||
%s: option `--%s' doesn't allow an argument\n"),
|
||||
argv[0], pfound->name);
|
||||
#else
|
||||
fprintf (stderr, _("\
|
||||
%s: option `--%s' doesn't allow an argument\n"),
|
||||
argv[0], pfound->name);
|
||||
#endif
|
||||
}
|
||||
else
|
||||
/* +option or -option */
|
||||
fprintf (stderr,
|
||||
_("%s: option `%c%s' doesn't allow an argument\n"),
|
||||
argv[0], argv[optind - 1][0], pfound->name);
|
||||
{
|
||||
/* +option or -option */
|
||||
#if defined _LIBC && defined USE_IN_LIBIO
|
||||
n = __asprintf (&buf, _("\
|
||||
%s: option `%c%s' doesn't allow an argument\n"),
|
||||
argv[0], argv[optind - 1][0],
|
||||
pfound->name);
|
||||
#else
|
||||
fprintf (stderr, _("\
|
||||
%s: option `%c%s' doesn't allow an argument\n"),
|
||||
argv[0], argv[optind - 1][0], pfound->name);
|
||||
#endif
|
||||
}
|
||||
|
||||
#if defined _LIBC && defined USE_IN_LIBIO
|
||||
if (n >= 0)
|
||||
{
|
||||
if (_IO_fwide (stderr, 0) > 0)
|
||||
__fwprintf (stderr, L"%s", buf);
|
||||
else
|
||||
fputs (buf, stderr);
|
||||
|
||||
free (buf);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
nextchar += strlen (nextchar);
|
||||
@@ -738,9 +784,27 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
|
||||
else
|
||||
{
|
||||
if (print_errors)
|
||||
fprintf (stderr,
|
||||
_("%s: option `%s' requires an argument\n"),
|
||||
argv[0], argv[optind - 1]);
|
||||
{
|
||||
#if defined _LIBC && defined USE_IN_LIBIO
|
||||
char *buf;
|
||||
|
||||
if (__asprintf (&buf, _("\
|
||||
%s: option `%s' requires an argument\n"),
|
||||
argv[0], argv[optind - 1]) >= 0)
|
||||
{
|
||||
if (_IO_fwide (stderr, 0) > 0)
|
||||
__fwprintf (stderr, L"%s", buf);
|
||||
else
|
||||
fputs (buf, stderr);
|
||||
|
||||
free (buf);
|
||||
}
|
||||
#else
|
||||
fprintf (stderr,
|
||||
_("%s: option `%s' requires an argument\n"),
|
||||
argv[0], argv[optind - 1]);
|
||||
#endif
|
||||
}
|
||||
nextchar += strlen (nextchar);
|
||||
optopt = pfound->val;
|
||||
return optstring[0] == ':' ? ':' : '?';
|
||||
@@ -766,14 +830,45 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
|
||||
{
|
||||
if (print_errors)
|
||||
{
|
||||
#if defined _LIBC && defined USE_IN_LIBIO
|
||||
char *buf;
|
||||
int n;
|
||||
#endif
|
||||
|
||||
if (argv[optind][1] == '-')
|
||||
/* --option */
|
||||
fprintf (stderr, _("%s: unrecognized option `--%s'\n"),
|
||||
argv[0], nextchar);
|
||||
{
|
||||
/* --option */
|
||||
#if defined _LIBC && defined USE_IN_LIBIO
|
||||
n = __asprintf (&buf, _("%s: unrecognized option `--%s'\n"),
|
||||
argv[0], nextchar);
|
||||
#else
|
||||
fprintf (stderr, _("%s: unrecognized option `--%s'\n"),
|
||||
argv[0], nextchar);
|
||||
#endif
|
||||
}
|
||||
else
|
||||
/* +option or -option */
|
||||
fprintf (stderr, _("%s: unrecognized option `%c%s'\n"),
|
||||
argv[0], argv[optind][0], nextchar);
|
||||
{
|
||||
/* +option or -option */
|
||||
#if defined _LIBC && defined USE_IN_LIBIO
|
||||
n = __asprintf (&buf, _("%s: unrecognized option `%c%s'\n"),
|
||||
argv[0], argv[optind][0], nextchar);
|
||||
#else
|
||||
fprintf (stderr, _("%s: unrecognized option `%c%s'\n"),
|
||||
argv[0], argv[optind][0], nextchar);
|
||||
#endif
|
||||
}
|
||||
|
||||
#if defined _LIBC && defined USE_IN_LIBIO
|
||||
if (n >= 0)
|
||||
{
|
||||
if (_IO_fwide (stderr, 0) > 0)
|
||||
__fwprintf (stderr, L"%s", buf);
|
||||
else
|
||||
fputs (buf, stderr);
|
||||
|
||||
free (buf);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
nextchar = (char *) "";
|
||||
optind++;
|
||||
@@ -796,13 +891,42 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
|
||||
{
|
||||
if (print_errors)
|
||||
{
|
||||
#if defined _LIBC && defined USE_IN_LIBIO
|
||||
char *buf;
|
||||
int n;
|
||||
#endif
|
||||
|
||||
if (posixly_correct)
|
||||
/* 1003.2 specifies the format of this message. */
|
||||
fprintf (stderr, _("%s: illegal option -- %c\n"),
|
||||
argv[0], c);
|
||||
{
|
||||
/* 1003.2 specifies the format of this message. */
|
||||
#if defined _LIBC && defined USE_IN_LIBIO
|
||||
n = __asprintf (&buf, _("%s: illegal option -- %c\n"),
|
||||
argv[0], c);
|
||||
#else
|
||||
fprintf (stderr, _("%s: illegal option -- %c\n"), argv[0], c);
|
||||
#endif
|
||||
}
|
||||
else
|
||||
fprintf (stderr, _("%s: invalid option -- %c\n"),
|
||||
argv[0], c);
|
||||
{
|
||||
#if defined _LIBC && defined USE_IN_LIBIO
|
||||
n = __asprintf (&buf, _("%s: invalid option -- %c\n"),
|
||||
argv[0], c);
|
||||
#else
|
||||
fprintf (stderr, _("%s: invalid option -- %c\n"), argv[0], c);
|
||||
#endif
|
||||
}
|
||||
|
||||
#if defined _LIBC && defined USE_IN_LIBIO
|
||||
if (n >= 0)
|
||||
{
|
||||
if (_IO_fwide (stderr, 0) > 0)
|
||||
__fwprintf (stderr, L"%s", buf);
|
||||
else
|
||||
fputs (buf, stderr);
|
||||
|
||||
free (buf);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
optopt = c;
|
||||
return '?';
|
||||
@@ -831,8 +955,24 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
|
||||
if (print_errors)
|
||||
{
|
||||
/* 1003.2 specifies the format of this message. */
|
||||
#if defined _LIBC && defined USE_IN_LIBIO
|
||||
char *buf;
|
||||
|
||||
if (__asprintf (&buf,
|
||||
_("%s: option requires an argument -- %c\n"),
|
||||
argv[0], c) >= 0)
|
||||
{
|
||||
if (_IO_fwide (stderr, 0) > 0)
|
||||
__fwprintf (stderr, L"%s", buf);
|
||||
else
|
||||
fputs (buf, stderr);
|
||||
|
||||
free (buf);
|
||||
}
|
||||
#else
|
||||
fprintf (stderr, _("%s: option requires an argument -- %c\n"),
|
||||
argv[0], c);
|
||||
#endif
|
||||
}
|
||||
optopt = c;
|
||||
if (optstring[0] == ':')
|
||||
@@ -878,8 +1018,25 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
|
||||
if (ambig && !exact)
|
||||
{
|
||||
if (print_errors)
|
||||
fprintf (stderr, _("%s: option `-W %s' is ambiguous\n"),
|
||||
argv[0], argv[optind]);
|
||||
{
|
||||
#if defined _LIBC && defined USE_IN_LIBIO
|
||||
char *buf;
|
||||
|
||||
if (__asprintf (&buf, _("%s: option `-W %s' is ambiguous\n"),
|
||||
argv[0], argv[optind]) >= 0)
|
||||
{
|
||||
if (_IO_fwide (stderr, 0) > 0)
|
||||
__fwprintf (stderr, L"%s", buf);
|
||||
else
|
||||
fputs (buf, stderr);
|
||||
|
||||
free (buf);
|
||||
}
|
||||
#else
|
||||
fprintf (stderr, _("%s: option `-W %s' is ambiguous\n"),
|
||||
argv[0], argv[optind]);
|
||||
#endif
|
||||
}
|
||||
nextchar += strlen (nextchar);
|
||||
optind++;
|
||||
return '?';
|
||||
@@ -896,9 +1053,27 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
|
||||
else
|
||||
{
|
||||
if (print_errors)
|
||||
fprintf (stderr, _("\
|
||||
{
|
||||
#if defined _LIBC && defined USE_IN_LIBIO
|
||||
char *buf;
|
||||
|
||||
if (__asprintf (&buf, _("\
|
||||
%s: option `-W %s' doesn't allow an argument\n"),
|
||||
argv[0], pfound->name);
|
||||
argv[0], pfound->name) >= 0)
|
||||
{
|
||||
if (_IO_fwide (stderr, 0) > 0)
|
||||
__fwprintf (stderr, L"%s", buf);
|
||||
else
|
||||
fputs (buf, stderr);
|
||||
|
||||
free (buf);
|
||||
}
|
||||
#else
|
||||
fprintf (stderr, _("\
|
||||
%s: option `-W %s' doesn't allow an argument\n"),
|
||||
argv[0], pfound->name);
|
||||
#endif
|
||||
}
|
||||
|
||||
nextchar += strlen (nextchar);
|
||||
return '?';
|
||||
@@ -911,9 +1086,27 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
|
||||
else
|
||||
{
|
||||
if (print_errors)
|
||||
fprintf (stderr,
|
||||
_("%s: option `%s' requires an argument\n"),
|
||||
argv[0], argv[optind - 1]);
|
||||
{
|
||||
#if defined _LIBC && defined USE_IN_LIBIO
|
||||
char *buf;
|
||||
|
||||
if (__asprintf (&buf, _("\
|
||||
%s: option `%s' requires an argument\n"),
|
||||
argv[0], argv[optind - 1]) >= 0)
|
||||
{
|
||||
if (_IO_fwide (stderr, 0) > 0)
|
||||
__fwprintf (stderr, L"%s", buf);
|
||||
else
|
||||
fputs (buf, stderr);
|
||||
|
||||
free (buf);
|
||||
}
|
||||
#else
|
||||
fprintf (stderr,
|
||||
_("%s: option `%s' requires an argument\n"),
|
||||
argv[0], argv[optind - 1]);
|
||||
#endif
|
||||
}
|
||||
nextchar += strlen (nextchar);
|
||||
return optstring[0] == ':' ? ':' : '?';
|
||||
}
|
||||
@@ -960,9 +1153,25 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
|
||||
if (print_errors)
|
||||
{
|
||||
/* 1003.2 specifies the format of this message. */
|
||||
#if defined _LIBC && defined USE_IN_LIBIO
|
||||
char *buf;
|
||||
|
||||
if (__asprintf (&buf, _("\
|
||||
%s: option requires an argument -- %c\n"),
|
||||
argv[0], c) >= 0)
|
||||
{
|
||||
if (_IO_fwide (stderr, 0) > 0)
|
||||
__fwprintf (stderr, L"%s", buf);
|
||||
else
|
||||
fputs (buf, stderr);
|
||||
|
||||
free (buf);
|
||||
}
|
||||
#else
|
||||
fprintf (stderr,
|
||||
_("%s: option requires an argument -- %c\n"),
|
||||
argv[0], c);
|
||||
#endif
|
||||
}
|
||||
optopt = c;
|
||||
if (optstring[0] == ':')
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* getopt_long and getopt_long_only entry points for GNU getopt.
|
||||
Copyright (C) 1987,88,89,90,91,92,93,94,96,97,98
|
||||
Copyright (C) 1987,88,89,90,91,92,93,94,96,97,98, 02
|
||||
Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
@@ -22,7 +22,11 @@
|
||||
#include <config.h>
|
||||
#endif
|
||||
|
||||
#include "getopt.h"
|
||||
#ifdef _LIBC
|
||||
# include <getopt.h>
|
||||
#else
|
||||
# include "getopt.h"
|
||||
#endif
|
||||
|
||||
#if !defined __STDC__ || !__STDC__
|
||||
/* This is a separate conditional since some stdc systems
|
||||
@@ -90,6 +94,10 @@ getopt_long_only (argc, argv, options, long_options, opt_index)
|
||||
return _getopt_internal (argc, argv, options, long_options, opt_index, 1);
|
||||
}
|
||||
|
||||
# ifdef _LIBC
|
||||
libc_hidden_def (getopt_long)
|
||||
libc_hidden_def (getopt_long_only)
|
||||
# endif
|
||||
|
||||
#endif /* Not ELIDE_CODE. */
|
||||
|
||||
|
||||
69
lib/gettext.h
Normal file
69
lib/gettext.h
Normal file
@@ -0,0 +1,69 @@
|
||||
/* Convenience header for conditional use of GNU <libintl.h>.
|
||||
Copyright (C) 1995-1998, 2000-2002 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU Library General Public License as published
|
||||
by the Free Software Foundation; either version 2, 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
||||
USA. */
|
||||
|
||||
#ifndef _LIBGETTEXT_H
|
||||
# define _LIBGETTEXT_H 1
|
||||
|
||||
/* NLS can be disabled through the configure --disable-nls option. */
|
||||
# if ENABLE_NLS
|
||||
|
||||
/* Get declarations of GNU message catalog functions. */
|
||||
# include <libintl.h>
|
||||
|
||||
# else
|
||||
|
||||
/* Solaris /usr/include/locale.h includes /usr/include/libintl.h, which
|
||||
chokes if dcgettext is defined as a macro. So include it now, to make
|
||||
later inclusions of <locale.h> a NOP. We don't include <libintl.h>
|
||||
as well because people using "gettext.h" will not include <libintl.h>,
|
||||
and also including <libintl.h> would fail on SunOS 4, whereas <locale.h>
|
||||
is OK. */
|
||||
# if defined(__sun)
|
||||
# include <locale.h>
|
||||
# endif
|
||||
|
||||
/* Disabled NLS.
|
||||
The casts to 'const char *' serve the purpose of producing warnings
|
||||
for invalid uses of the value returned from these functions.
|
||||
On pre-ANSI systems without 'const', the config.h file is supposed to
|
||||
contain "#define const". */
|
||||
# define gettext(Msgid) ((const char *) (Msgid))
|
||||
# define dgettext(Domainname, Msgid) ((const char *) (Msgid))
|
||||
# define dcgettext(Domainname, Msgid, Category) ((const char *) (Msgid))
|
||||
# define ngettext(Msgid1, Msgid2, N) \
|
||||
((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2))
|
||||
# define dngettext(Domainname, Msgid1, Msgid2, N) \
|
||||
((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2))
|
||||
# define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \
|
||||
((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2))
|
||||
# define textdomain(Domainname) ((const char *) (Domainname))
|
||||
# define bindtextdomain(Domainname, Dirname) ((const char *) (Dirname))
|
||||
# define bind_textdomain_codeset(Domainname, Codeset) ((const char *) (Codeset))
|
||||
|
||||
# endif
|
||||
|
||||
/* A pseudo function call that serves as a marker for the automated
|
||||
extraction of messages, but does not call gettext(). The run-time
|
||||
translation is done at a different place in the code.
|
||||
The argument, String, should be a literal string. Concatenated strings
|
||||
and other string expressions won't work.
|
||||
The macro's expansion is not parenthesized, so that it is suitable as
|
||||
initializer for static 'char[]' or 'const char[]' variables. */
|
||||
# define gettext_noop(String) String
|
||||
|
||||
#endif /* _LIBGETTEXT_H */
|
||||
46
lib/gettime.c
Normal file
46
lib/gettime.c
Normal file
@@ -0,0 +1,46 @@
|
||||
/* gettime -- get the system clock
|
||||
Copyright (C) 2002 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software Foundation,
|
||||
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
|
||||
/* Written by Paul Eggert. */
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#include "timespec.h"
|
||||
|
||||
/* Get the system time. */
|
||||
|
||||
int
|
||||
gettime (struct timespec *ts)
|
||||
{
|
||||
#if defined CLOCK_REALTIME && HAVE_CLOCK_GETTIME
|
||||
if (clock_gettime (CLOCK_REALTIME, ts) == 0)
|
||||
return 0;
|
||||
#endif
|
||||
|
||||
{
|
||||
struct timeval tv;
|
||||
int r = gettimeofday (&tv, 0);
|
||||
if (r == 0)
|
||||
{
|
||||
ts->tv_sec = tv.tv_sec;
|
||||
ts->tv_nsec = tv.tv_usec * 1000;
|
||||
}
|
||||
return r;
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
/* Work around the bug in some systems whereby gettimeofday clobbers the
|
||||
static buffer that localtime uses for it's return value. The gettimeofday
|
||||
function from Mac OS X 10.0.4, i.e. Darwin 1.3.7 has this problem.
|
||||
Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
Copyright (C) 2001, 2002 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -21,9 +21,10 @@
|
||||
|
||||
#include <config.h>
|
||||
|
||||
/* Disable the definition of gettimeofday (from config.h) so we can use
|
||||
the library version. */
|
||||
/* Disable the definitions of gettimeofday and localtime (from config.h)
|
||||
so we can use the library versions here. */
|
||||
#undef gettimeofday
|
||||
#undef localtime
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
@@ -42,6 +43,23 @@
|
||||
|
||||
static struct tm *localtime_buffer_addr;
|
||||
|
||||
/* This is a wrapper for localtime. It is used only on systems for which
|
||||
gettimeofday clobbers the static buffer used for localtime's result.
|
||||
|
||||
On the first call, record the address of the static buffer that
|
||||
localtime uses for its result. */
|
||||
|
||||
struct tm *
|
||||
rpl_localtime (const time_t *timep)
|
||||
{
|
||||
struct tm *tm = localtime (timep);
|
||||
|
||||
if (! localtime_buffer_addr)
|
||||
localtime_buffer_addr = tm;
|
||||
|
||||
return tm;
|
||||
}
|
||||
|
||||
/* This is a wrapper for gettimeofday. It is used only on systems for which
|
||||
gettimeofday clobbers the static buffer used for localtime's result.
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
/* hard-locale.c -- Determine whether a locale is hard.
|
||||
Copyright 1997, 1998, 1999 Free Software Foundation, Inc.
|
||||
|
||||
Copyright (C) 1997, 1998, 1999, 2002 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -19,41 +20,26 @@
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#if __GNUC__
|
||||
# define alloca __builtin_alloca
|
||||
#else
|
||||
# ifdef HAVE_ALLOCA_H
|
||||
# include <alloca.h>
|
||||
# else
|
||||
# ifdef _AIX
|
||||
# pragma alloca
|
||||
# else
|
||||
# ifdef _WIN32
|
||||
# include <malloc.h>
|
||||
# include <io.h>
|
||||
# else
|
||||
# ifndef alloca
|
||||
char *alloca ();
|
||||
# endif
|
||||
# endif
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if HAVE_LOCALE_H
|
||||
# include <locale.h>
|
||||
#endif
|
||||
|
||||
#if HAVE_STDLIB_H
|
||||
# include <stdlib.h>
|
||||
#endif
|
||||
|
||||
#if HAVE_STRING_H
|
||||
# include <string.h>
|
||||
#endif
|
||||
|
||||
#include "hard-locale.h"
|
||||
|
||||
/* Return nonzero if the current CATEGORY locale is hard, i.e. if you
|
||||
can't get away with assuming traditional C or POSIX behavior. */
|
||||
int
|
||||
hard_locale (int category)
|
||||
{
|
||||
#if ! (defined ENABLE_NLS && HAVE_SETLOCALE)
|
||||
#if ! HAVE_SETLOCALE
|
||||
return 0;
|
||||
#else
|
||||
|
||||
@@ -62,22 +48,28 @@ hard_locale (int category)
|
||||
|
||||
if (p)
|
||||
{
|
||||
# if defined __GLIBC__ && __GLIBC__ >= 2
|
||||
# if defined __GLIBC__ && 2 <= __GLIBC__
|
||||
if (strcmp (p, "C") == 0 || strcmp (p, "POSIX") == 0)
|
||||
hard = 0;
|
||||
# else
|
||||
char *locale = alloca (strlen (p) + 1);
|
||||
strcpy (locale, p);
|
||||
char *locale = malloc (strlen (p) + 1);
|
||||
if (locale)
|
||||
{
|
||||
strcpy (locale, p);
|
||||
|
||||
/* Temporarily set the locale to the "C" and "POSIX" locales to
|
||||
find their names, so that we can determine whether one or the
|
||||
other is the caller's locale. */
|
||||
if (((p = setlocale (category, "C")) && strcmp (p, locale) == 0)
|
||||
|| ((p = setlocale (category, "POSIX")) && strcmp (p, locale) == 0))
|
||||
hard = 0;
|
||||
/* Temporarily set the locale to the "C" and "POSIX" locales
|
||||
to find their names, so that we can determine whether one
|
||||
or the other is the caller's locale. */
|
||||
if (((p = setlocale (category, "C"))
|
||||
&& strcmp (p, locale) == 0)
|
||||
|| ((p = setlocale (category, "POSIX"))
|
||||
&& strcmp (p, locale) == 0))
|
||||
hard = 0;
|
||||
|
||||
/* Restore the caller's locale. */
|
||||
setlocale (category, locale);
|
||||
/* Restore the caller's locale. */
|
||||
setlocale (category, locale);
|
||||
free (locale);
|
||||
}
|
||||
# endif
|
||||
}
|
||||
|
||||
|
||||
11
lib/lchown.c
11
lib/lchown.c
@@ -1,5 +1,5 @@
|
||||
/* Provide a stub lchown function for systems that lack it.
|
||||
Copyright (C) 1998, 1999 Free Software Foundation, Inc.
|
||||
Copyright (C) 1998, 1999, 2002 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -30,8 +30,13 @@ extern int errno;
|
||||
#ifdef STAT_MACROS_BROKEN
|
||||
# undef S_ISLNK
|
||||
#endif
|
||||
#if !defined(S_ISLNK) && defined(S_IFLNK)
|
||||
# define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK)
|
||||
|
||||
#ifndef S_ISLNK
|
||||
# ifdef S_IFLNK
|
||||
# define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK)
|
||||
# else
|
||||
# define S_ISLNK(m) 0
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* Declare chown to avoid a warning. Don't include unistd.h,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* Determine a canonical name for the current locale's character encoding.
|
||||
|
||||
Copyright (C) 2000-2001 Free Software Foundation, Inc.
|
||||
Copyright (C) 2000-2002 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU Library General Public License as published
|
||||
@@ -42,7 +42,12 @@
|
||||
# define WIN32
|
||||
#endif
|
||||
|
||||
#ifndef WIN32
|
||||
#if defined __EMX__
|
||||
/* Assume EMX program runs on OS/2, even if compiled under DOS. */
|
||||
# define OS2
|
||||
#endif
|
||||
|
||||
#if !defined WIN32
|
||||
# if HAVE_LANGINFO_CODESET
|
||||
# include <langinfo.h>
|
||||
# else
|
||||
@@ -50,10 +55,19 @@
|
||||
# include <locale.h>
|
||||
# endif
|
||||
# endif
|
||||
#else /* WIN32 */
|
||||
#elif defined WIN32
|
||||
# define WIN32_LEAN_AND_MEAN
|
||||
# include <windows.h>
|
||||
#endif
|
||||
#if defined OS2
|
||||
# define INCL_DOS
|
||||
# include <os2.h>
|
||||
#endif
|
||||
|
||||
#if defined _WIN32 || defined __WIN32__ || defined __EMX__ || defined __DJGPP__
|
||||
/* Win32, OS/2, DOS */
|
||||
# define ISSLASH(C) ((C) == '/' || (C) == '\\')
|
||||
#endif
|
||||
|
||||
#ifndef DIRECTORY_SEPARATOR
|
||||
# define DIRECTORY_SEPARATOR '/'
|
||||
@@ -63,6 +77,11 @@
|
||||
# define ISSLASH(C) ((C) == DIRECTORY_SEPARATOR)
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_GETC_UNLOCKED
|
||||
# undef getc
|
||||
# define getc getc_unlocked
|
||||
#endif
|
||||
|
||||
/* The following static variable is declared 'volatile' to avoid a
|
||||
possible multithread problem in the function get_charset_aliases. If we
|
||||
are running in a threaded environment, and if two threads initialize
|
||||
@@ -86,7 +105,7 @@ get_charset_aliases ()
|
||||
cp = charset_aliases;
|
||||
if (cp == NULL)
|
||||
{
|
||||
#ifndef WIN32
|
||||
#if !defined WIN32
|
||||
FILE *fp;
|
||||
const char *dir = LIBDIR;
|
||||
const char *base = "charset.alias";
|
||||
@@ -138,19 +157,19 @@ get_charset_aliases ()
|
||||
continue;
|
||||
}
|
||||
ungetc (c, fp);
|
||||
if (fscanf(fp, "%50s %50s", buf1, buf2) < 2)
|
||||
if (fscanf (fp, "%50s %50s", buf1, buf2) < 2)
|
||||
break;
|
||||
l1 = strlen (buf1);
|
||||
l2 = strlen (buf2);
|
||||
if (res_size == 0)
|
||||
{
|
||||
res_size = l1 + 1 + l2 + 1;
|
||||
res_ptr = malloc (res_size + 1);
|
||||
res_ptr = (char *) malloc (res_size + 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
res_size += l1 + 1 + l2 + 1;
|
||||
res_ptr = realloc (res_ptr, res_size + 1);
|
||||
res_ptr = (char *) realloc (res_ptr, res_size + 1);
|
||||
}
|
||||
if (res_ptr == NULL)
|
||||
{
|
||||
@@ -174,14 +193,16 @@ get_charset_aliases ()
|
||||
if (file_name != NULL)
|
||||
free (file_name);
|
||||
|
||||
#else /* WIN32 */
|
||||
#else
|
||||
|
||||
/* To avoid the troubles of installing a separate file in the same
|
||||
directory as the DLL and of retrieving the DLL's directory at
|
||||
runtime, simply inline the aliases here. */
|
||||
|
||||
# if defined WIN32
|
||||
cp = "CP936" "\0" "GBK" "\0"
|
||||
"CP1361" "\0" "JOHAB" "\0";
|
||||
# endif
|
||||
#endif
|
||||
|
||||
charset_aliases = cp;
|
||||
@@ -205,7 +226,7 @@ locale_charset ()
|
||||
const char *codeset;
|
||||
const char *aliases;
|
||||
|
||||
#ifndef WIN32
|
||||
#if !(defined WIN32 || defined OS2)
|
||||
|
||||
# if HAVE_LANGINFO_CODESET
|
||||
|
||||
@@ -242,7 +263,7 @@ locale_charset ()
|
||||
|
||||
# endif
|
||||
|
||||
#else /* WIN32 */
|
||||
#elif defined WIN32
|
||||
|
||||
static char buf[2 + 10 + 1];
|
||||
|
||||
@@ -250,6 +271,59 @@ locale_charset ()
|
||||
sprintf (buf, "CP%u", GetACP ());
|
||||
codeset = buf;
|
||||
|
||||
#elif defined OS2
|
||||
|
||||
const char *locale;
|
||||
static char buf[2 + 10 + 1];
|
||||
ULONG cp[3];
|
||||
ULONG cplen;
|
||||
|
||||
/* Allow user to override the codeset, as set in the operating system,
|
||||
with standard language environment variables. */
|
||||
locale = getenv ("LC_ALL");
|
||||
if (locale == NULL || locale[0] == '\0')
|
||||
{
|
||||
locale = getenv ("LC_CTYPE");
|
||||
if (locale == NULL || locale[0] == '\0')
|
||||
locale = getenv ("LANG");
|
||||
}
|
||||
if (locale != NULL && locale[0] != '\0')
|
||||
{
|
||||
/* If the locale name contains an encoding after the dot, return it. */
|
||||
const char *dot = strchr (locale, '.');
|
||||
|
||||
if (dot != NULL)
|
||||
{
|
||||
const char *modifier;
|
||||
|
||||
dot++;
|
||||
/* Look for the possible @... trailer and remove it, if any. */
|
||||
modifier = strchr (dot, '@');
|
||||
if (modifier == NULL)
|
||||
return dot;
|
||||
if (modifier - dot < sizeof (buf))
|
||||
{
|
||||
memcpy (buf, dot, modifier - dot);
|
||||
buf [modifier - dot] = '\0';
|
||||
return buf;
|
||||
}
|
||||
}
|
||||
|
||||
/* Resolve through the charset.alias file. */
|
||||
codeset = locale;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* OS/2 has a function returning the locale's codepage as a number. */
|
||||
if (DosQueryCp (sizeof (cp), cp, &cplen))
|
||||
codeset = "";
|
||||
else
|
||||
{
|
||||
sprintf (buf, "CP%u", cp[0]);
|
||||
codeset = buf;
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
if (codeset == NULL)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* makepath.c -- Ensure that a directory path exists.
|
||||
Copyright (C) 1990, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
|
||||
Copyright (C) 1990, 1997, 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -46,7 +46,7 @@ char *alloca ();
|
||||
# undef S_ISDIR
|
||||
#endif
|
||||
|
||||
#if !defined(S_ISDIR) && defined(S_IFDIR)
|
||||
#if !defined S_ISDIR && defined S_IFDIR
|
||||
# define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
|
||||
#endif
|
||||
|
||||
@@ -311,7 +311,7 @@ make_path (const char *argpath,
|
||||
|
||||
if ((owner != (uid_t) -1 || group != (gid_t) -1)
|
||||
&& chown (basename_dir, owner, group)
|
||||
#if defined(AFS) && defined (EPERM)
|
||||
#if defined AFS && defined EPERM
|
||||
&& errno != EPERM
|
||||
#endif
|
||||
)
|
||||
@@ -338,7 +338,7 @@ make_path (const char *argpath,
|
||||
stat and mkdir process O(n^2) file name components. */
|
||||
if (do_chdir && chdir (basename_dir) < 0)
|
||||
{
|
||||
error (0, errno, _("cannot chdir to directory, %s"),
|
||||
error (0, errno, _("cannot chdir to directory %s"),
|
||||
quote (dirpath));
|
||||
CLEANUP;
|
||||
return 1;
|
||||
@@ -355,6 +355,9 @@ make_path (const char *argpath,
|
||||
if (!do_chdir)
|
||||
basename_dir = dirpath;
|
||||
|
||||
/* Done creating leading directories. Restore original umask. */
|
||||
umask (oldmask);
|
||||
|
||||
/* We're done making leading directories.
|
||||
Create the final component of the path. */
|
||||
|
||||
@@ -364,9 +367,6 @@ make_path (const char *argpath,
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* Done creating directories. Restore original umask. */
|
||||
umask (oldmask);
|
||||
|
||||
if (verbose_fmt_string != NULL)
|
||||
error (0, 0, verbose_fmt_string, quote (dirpath));
|
||||
|
||||
@@ -392,7 +392,8 @@ make_path (const char *argpath,
|
||||
if ((mode & ~S_IRWXUGO)
|
||||
&& chmod (basename_dir, mode))
|
||||
{
|
||||
error (0, errno, _("cannot change permissions of %s"), quote (dirpath));
|
||||
error (0, errno, _("cannot change permissions of %s"),
|
||||
quote (dirpath));
|
||||
retval = 1;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* Locale-specific memory comparison.
|
||||
Copyright 1999 Free Software Foundation, Inc.
|
||||
Copyright 1999, 2002 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -21,6 +21,11 @@
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#include <errno.h>
|
||||
#ifndef errno
|
||||
extern int errno;
|
||||
#endif
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
#if HAVE_STRING_H
|
||||
@@ -30,7 +35,8 @@
|
||||
/* Compare S1 (with length S1LEN) and S2 (with length S2LEN) according
|
||||
to the LC_COLLATE locale. S1 and S2 do not overlap, and are not
|
||||
adjacent. Temporarily modify the bytes after S1 and S2, but
|
||||
restore their original contents before returning. */
|
||||
restore their original contents before returning. Set errno to an
|
||||
error number if there is an error, and to zero otherwise. */
|
||||
int
|
||||
memcoll (char *s1, size_t s1len, char *s2, size_t s2len)
|
||||
{
|
||||
@@ -41,7 +47,7 @@ memcoll (char *s1, size_t s1len, char *s2, size_t s2len)
|
||||
s1[s1len++] = '\0';
|
||||
s2[s2len++] = '\0';
|
||||
|
||||
while (! (diff = strcoll (s1, s2)))
|
||||
while (! (errno = 0, (diff = strcoll (s1, s2)) || errno))
|
||||
{
|
||||
/* strcoll found no difference, but perhaps it was fooled by NUL
|
||||
characters in the data. Work around this problem by advancing
|
||||
|
||||
58
lib/mktime.c
58
lib/mktime.c
@@ -1,22 +1,22 @@
|
||||
/* Convert a `struct tm' to a time_t value.
|
||||
Copyright (C) 1993, 94, 95, 96, 97, 98, 99 Free Software Foundation, Inc.
|
||||
Copyright (C) 1993-1999, 2002 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Paul Eggert (eggert@twinsun.com).
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the
|
||||
License, or (at your option) any later version.
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Library General Public License for more details.
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
|
||||
/* Define this to have a standalone program to test this implementation of
|
||||
mktime. */
|
||||
@@ -49,6 +49,7 @@
|
||||
# include <stdio.h>
|
||||
# if STDC_HEADERS
|
||||
# include <stdlib.h>
|
||||
# include <string.h>
|
||||
# endif
|
||||
/* Make it work even if the system's libc has its own mktime routine. */
|
||||
# define mktime my_mktime
|
||||
@@ -236,6 +237,9 @@ __mktime_internal (struct tm *tp,
|
||||
int year_requested = tp->tm_year;
|
||||
int isdst = tp->tm_isdst;
|
||||
|
||||
/* 1 if the previous probe was DST. */
|
||||
int dst2;
|
||||
|
||||
/* Ensure that mon is in range, and set year accordingly. */
|
||||
int mon_remainder = mon % 12;
|
||||
int negative_mon_remainder = mon_remainder < 0;
|
||||
@@ -254,6 +258,13 @@ __mktime_internal (struct tm *tp,
|
||||
+ mday - 1);
|
||||
|
||||
int sec_requested = sec;
|
||||
|
||||
/* Only years after 1970 are defined.
|
||||
If year is 69, it might still be representable due to
|
||||
timezone differences. */
|
||||
if (year < 69)
|
||||
return -1;
|
||||
|
||||
#if LEAP_SECONDS_POSSIBLE
|
||||
/* Handle out-of-range seconds specially,
|
||||
since ydhms_tm_diff assumes every minute has 60 seconds. */
|
||||
@@ -270,20 +281,24 @@ __mktime_internal (struct tm *tp,
|
||||
tm.tm_yday = tm.tm_hour = tm.tm_min = tm.tm_sec = 0;
|
||||
t0 = ydhms_tm_diff (year, yday, hour, min, sec, &tm);
|
||||
|
||||
for (t = t1 = t2 = t0 + *offset;
|
||||
for (t = t1 = t2 = t0 + *offset, dst2 = 0;
|
||||
(dt = ydhms_tm_diff (year, yday, hour, min, sec,
|
||||
ranged_convert (convert, &t, &tm)));
|
||||
t1 = t2, t2 = t, t += dt)
|
||||
t1 = t2, t2 = t, t += dt, dst2 = tm.tm_isdst != 0)
|
||||
if (t == t1 && t != t2
|
||||
&& (isdst < 0 || tm.tm_isdst < 0
|
||||
|| (isdst != 0) != (tm.tm_isdst != 0)))
|
||||
&& (tm.tm_isdst < 0
|
||||
|| (isdst < 0
|
||||
? dst2 <= (tm.tm_isdst != 0)
|
||||
: (isdst != 0) != (tm.tm_isdst != 0))))
|
||||
/* We can't possibly find a match, as we are oscillating
|
||||
between two values. The requested time probably falls
|
||||
within a spring-forward gap of size DT. Follow the common
|
||||
practice in this case, which is to return a time that is DT
|
||||
away from the requested time, preferring a time whose
|
||||
tm_isdst differs from the requested value. In practice,
|
||||
this is more useful than returning -1. */
|
||||
tm_isdst differs from the requested value. (If no tm_isdst
|
||||
was requested and only one of the two values has a nonzero
|
||||
tm_isdst, prefer that value.) In practice, this is more
|
||||
useful than returning -1. */
|
||||
break;
|
||||
else if (--remaining_probes == 0)
|
||||
return -1;
|
||||
@@ -357,6 +372,14 @@ __mktime_internal (struct tm *tp,
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (year == 69)
|
||||
{
|
||||
/* If year was 69, need to check whether the time was representable
|
||||
or not. */
|
||||
if (t < 0 || t > 2 * 24 * 60 * 60)
|
||||
return -1;
|
||||
}
|
||||
|
||||
*tp = tm;
|
||||
return t;
|
||||
}
|
||||
@@ -382,6 +405,11 @@ mktime (tp)
|
||||
#ifdef weak_alias
|
||||
weak_alias (mktime, timelocal)
|
||||
#endif
|
||||
|
||||
#ifdef _LIBC
|
||||
libc_hidden_def (mktime)
|
||||
libc_hidden_weak (timelocal)
|
||||
#endif
|
||||
|
||||
#if DEBUG
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* mountlist.c -- return a list of mounted filesystems
|
||||
Copyright (C) 1991, 1992, 1997-2001 Free Software Foundation, Inc.
|
||||
Copyright (C) 1991, 1992, 1997-2002 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -136,6 +136,7 @@ extern int errno;
|
||||
# include <sys/mntent.h>
|
||||
#endif
|
||||
|
||||
#undef MNT_IGNORE
|
||||
#if defined MNTOPT_IGNORE && defined HAVE_HASMNTOPT
|
||||
# define MNT_IGNORE(M) hasmntopt ((M), MNTOPT_IGNORE)
|
||||
#else
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* mountlist.h -- declarations for list of mounted filesystems
|
||||
Copyright (C) 1991, 1992, 1998, 2000, 2001 Free Software Foundation, Inc.
|
||||
Copyright (C) 1991, 1992, 1998, 2000-2002 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -39,8 +39,7 @@ struct mount_entry *read_filesystem_list PARAMS ((int need_fs_type));
|
||||
|
||||
#ifndef ME_DUMMY
|
||||
# define ME_DUMMY(Fs_name, Fs_type) \
|
||||
(!strcmp (Fs_type, "auto") \
|
||||
|| !strcmp (Fs_type, "autofs") \
|
||||
(!strcmp (Fs_type, "autofs") \
|
||||
/* for Irix 6.5 */ \
|
||||
|| !strcmp (Fs_type, "ignore"))
|
||||
#endif
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* Provide a replacement for the POSIX nanosleep function.
|
||||
Copyright (C) 1999, 2000 Free Software Foundation, Inc.
|
||||
Copyright (C) 1999, 2000, 2002 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -43,7 +43,7 @@ extern int errno;
|
||||
# define SIGCONT SIGTERM
|
||||
#endif
|
||||
|
||||
#include "nanosleep.h"
|
||||
#include "timespec.h"
|
||||
|
||||
static int suspended;
|
||||
int first_call = 1;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* obstack.c - subroutines used implicitly by object stack macros
|
||||
Copyright (C) 1988-1994,96,97,98,99,2000,2001 Free Software Foundation, Inc.
|
||||
Copyright (C) 1988-1994, 1996-2001, 2002 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library. Its master source is NOT part of
|
||||
the C library, however. The master source lives in /gd/gnu/lib.
|
||||
|
||||
@@ -22,7 +22,11 @@
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#include "obstack.h"
|
||||
#ifdef _LIBC
|
||||
# include <obstack.h>
|
||||
#else
|
||||
# include "obstack.h"
|
||||
#endif
|
||||
|
||||
/* NOTE BEFORE MODIFYING THIS FILE: This version number must be
|
||||
incremented whenever callers compiled using an old obstack.h can no
|
||||
@@ -338,6 +342,9 @@ _obstack_newchunk (h, length)
|
||||
/* The new chunk certainly contains no empty object yet. */
|
||||
h->maybe_empty_object = 0;
|
||||
}
|
||||
# ifdef _LIBC
|
||||
libc_hidden_def (_obstack_newchunk)
|
||||
# endif
|
||||
|
||||
/* Return nonzero if object OBJ has been allocated from obstack H.
|
||||
This is here for debugging.
|
||||
@@ -468,9 +475,8 @@ _obstack_memory_used (h)
|
||||
# define _(Str) (Str)
|
||||
# endif
|
||||
# endif
|
||||
# if defined _LIBC && defined USE_IN_LIBIO
|
||||
# ifdef _LIBC
|
||||
# include <libio/iolibio.h>
|
||||
# define fputs(s, f) _IO_fputs (s, f)
|
||||
# endif
|
||||
|
||||
# ifndef __attribute__
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
/* path-concat.c -- concatenate two arbitrary pathnames
|
||||
Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
|
||||
|
||||
Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free
|
||||
Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -121,7 +123,7 @@ char *
|
||||
xpath_concat (const char *dir, const char *base, char **base_in_result)
|
||||
{
|
||||
char *res = path_concat (dir, base, base_in_result);
|
||||
if (res)
|
||||
return res;
|
||||
xalloc_die ();
|
||||
if (! res)
|
||||
xalloc_die ();
|
||||
return res;
|
||||
}
|
||||
|
||||
208
lib/posixtm.c
208
lib/posixtm.c
@@ -1,5 +1,5 @@
|
||||
/* Parse dates for touch and date.
|
||||
Copyright (C) 1989, 1990, 1991, 1998, 2000, 2001 Free Software Foundation Inc.
|
||||
Copyright (C) 1989, 1990, 1991, 1998, 2000-2002 Free Software Foundation Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -22,6 +22,12 @@
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#if HAVE_STDBOOL_H
|
||||
# include <stdbool.h>
|
||||
#else
|
||||
typedef enum {false = 0, true = 1} bool;
|
||||
#endif
|
||||
|
||||
#include <stdio.h>
|
||||
#if HAVE_STDLIB_H
|
||||
# include <stdlib.h>
|
||||
@@ -46,15 +52,11 @@
|
||||
- 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.
|
||||
- It's typically faster.
|
||||
Posix 1003.2-1992 section 2.5.2.1 page 50 lines 1556-1558 says that
|
||||
only '0' through '9' are digits. Prefer ISDIGIT to isdigit unless
|
||||
it's important to use the locale's definition of `digit' even when the
|
||||
host does not conform to Posix. */
|
||||
POSIX says that only '0' through '9' are digits. Prefer ISDIGIT to
|
||||
ISDIGIT_LOCALE 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) (c) - '0' <= 9)
|
||||
|
||||
/* The return value. */
|
||||
static struct tm t;
|
||||
|
||||
time_t mktime ();
|
||||
|
||||
/*
|
||||
@@ -64,7 +66,7 @@ time_t mktime ();
|
||||
8, 10, or 12 digits, followed by optional .ss
|
||||
(PDS_LEADING_YEAR | PDS_CENTURY | PDS_SECONDS)
|
||||
|
||||
touch mmddhhmm[YY] FILE... (obsolescent)
|
||||
touch mmddhhmm[YY] FILE... (obsoleted by POSIX 1003.1-2001)
|
||||
8 or 10 digits
|
||||
(PDS_TRAILING_YEAR)
|
||||
|
||||
@@ -75,25 +77,23 @@ time_t mktime ();
|
||||
*/
|
||||
|
||||
static int
|
||||
year (const int *digit_pair, size_t n, int allow_century)
|
||||
year (struct tm *tm, const int *digit_pair, size_t n, int allow_century)
|
||||
{
|
||||
switch (n)
|
||||
{
|
||||
case 1:
|
||||
t.tm_year = *digit_pair;
|
||||
tm->tm_year = *digit_pair;
|
||||
/* Deduce the century based on the year.
|
||||
See POSIX.2 section 4.63.3. */
|
||||
POSIX requires that 00-68 be interpreted as 2000-2068,
|
||||
and that 69-99 be interpreted as 1969-1999. */
|
||||
if (digit_pair[0] <= 68)
|
||||
t.tm_year += 100;
|
||||
tm->tm_year += 100;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
if (!allow_century)
|
||||
return 1;
|
||||
t.tm_year = digit_pair[0] * 100 + digit_pair[1];
|
||||
if (t.tm_year < 1900)
|
||||
return 1;
|
||||
t.tm_year -= 1900;
|
||||
tm->tm_year = digit_pair[0] * 100 + digit_pair[1] - 1900;
|
||||
break;
|
||||
|
||||
case 0:
|
||||
@@ -104,7 +104,9 @@ year (const int *digit_pair, size_t n, int allow_century)
|
||||
/* Use current year. */
|
||||
time (&now);
|
||||
tmp = localtime (&now);
|
||||
t.tm_year = tmp->tm_year;
|
||||
if (! tmp)
|
||||
return 1;
|
||||
tm->tm_year = tmp->tm_year;
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -116,7 +118,7 @@ year (const int *digit_pair, size_t n, int allow_century)
|
||||
}
|
||||
|
||||
static int
|
||||
posix_time_parse (const char *s, unsigned int syntax_bits)
|
||||
posix_time_parse (struct tm *tm, const char *s, unsigned int syntax_bits)
|
||||
{
|
||||
const char *dot = NULL;
|
||||
int pair[6];
|
||||
@@ -151,44 +153,30 @@ posix_time_parse (const char *s, unsigned int syntax_bits)
|
||||
p = pair;
|
||||
if (syntax_bits & PDS_LEADING_YEAR)
|
||||
{
|
||||
if (year (p, len - 4, syntax_bits & PDS_CENTURY))
|
||||
if (year (tm, p, len - 4, syntax_bits & PDS_CENTURY))
|
||||
return 1;
|
||||
p += len - 4;
|
||||
len = 4;
|
||||
}
|
||||
|
||||
/* Handle 8 digits worth of `MMDDhhmm'. */
|
||||
if (*p < 1 || *p > 12)
|
||||
return 1;
|
||||
t.tm_mon = *p - 1;
|
||||
++p; --len;
|
||||
|
||||
if (*p < 1 || *p > 31)
|
||||
return 1;
|
||||
t.tm_mday = *p;
|
||||
++p; --len;
|
||||
|
||||
if (*p < 0 || *p > 23)
|
||||
return 1;
|
||||
t.tm_hour = *p;
|
||||
++p; --len;
|
||||
|
||||
if (*p < 0 || *p > 59)
|
||||
return 1;
|
||||
t.tm_min = *p;
|
||||
++p; --len;
|
||||
tm->tm_mon = *p++ - 1;
|
||||
tm->tm_mday = *p++;
|
||||
tm->tm_hour = *p++;
|
||||
tm->tm_min = *p++;
|
||||
len -= 4;
|
||||
|
||||
/* Handle any trailing year. */
|
||||
if (syntax_bits & PDS_TRAILING_YEAR)
|
||||
{
|
||||
if (year (p, len, syntax_bits & PDS_CENTURY))
|
||||
if (year (tm, p, len, syntax_bits & PDS_CENTURY))
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* Handle seconds. */
|
||||
if (!dot)
|
||||
{
|
||||
t.tm_sec = 0;
|
||||
tm->tm_sec = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -199,34 +187,51 @@ posix_time_parse (const char *s, unsigned int syntax_bits)
|
||||
return 1;
|
||||
seconds = 10 * (dot[0] - '0') + dot[1] - '0';
|
||||
|
||||
if (seconds < 0 || seconds > 61)
|
||||
return 1;
|
||||
t.tm_sec = seconds;
|
||||
tm->tm_sec = seconds;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Parse a POSIX-style date and return it, or (time_t)-1 for an error. */
|
||||
/* Parse a POSIX-style date, returning true if successful. */
|
||||
|
||||
time_t
|
||||
posixtime (const char *s, unsigned int syntax_bits)
|
||||
bool
|
||||
posixtime (time_t *p, const char *s, unsigned int syntax_bits)
|
||||
{
|
||||
t.tm_isdst = -1;
|
||||
if (posix_time_parse (s, syntax_bits))
|
||||
return (time_t)-1;
|
||||
struct tm tm0;
|
||||
struct tm tm1;
|
||||
struct tm const *tm;
|
||||
time_t t;
|
||||
|
||||
if (posix_time_parse (&tm0, s, syntax_bits))
|
||||
return false;
|
||||
|
||||
tm1 = tm0;
|
||||
tm1.tm_isdst = -1;
|
||||
t = mktime (&tm1);
|
||||
|
||||
if (t != (time_t) -1)
|
||||
tm = &tm1;
|
||||
else
|
||||
return mktime (&t);
|
||||
}
|
||||
{
|
||||
/* mktime returns -1 for errors, but -1 is also a valid time_t
|
||||
value. Check whether an error really occurred. */
|
||||
tm = localtime (&t);
|
||||
if (! tm)
|
||||
return false;
|
||||
}
|
||||
|
||||
/* Parse a POSIX-style date and return it, or NULL for an error. */
|
||||
/* Reject dates like "September 31" and times like "25:61". */
|
||||
if ((tm0.tm_year ^ tm->tm_year)
|
||||
| (tm0.tm_mon ^ tm->tm_mon)
|
||||
| (tm0.tm_mday ^ tm->tm_mday)
|
||||
| (tm0.tm_hour ^ tm->tm_hour)
|
||||
| (tm0.tm_min ^ tm->tm_min)
|
||||
| (tm0.tm_sec ^ tm->tm_sec))
|
||||
return false;
|
||||
|
||||
struct tm *
|
||||
posixtm (const char *s, unsigned int syntax_bits)
|
||||
{
|
||||
if (posixtime (s, syntax_bits) == -1)
|
||||
return NULL;
|
||||
return &t;
|
||||
*p = t;
|
||||
return true;
|
||||
}
|
||||
|
||||
#ifdef TEST_POSIXTIME
|
||||
@@ -234,20 +239,58 @@ posixtm (const char *s, unsigned int syntax_bits)
|
||||
Test mainly with syntax_bits == 13
|
||||
(aka: (PDS_LEADING_YEAR | PDS_CENTURY | PDS_SECONDS))
|
||||
|
||||
BEGIN-DATA
|
||||
1112131415 13 1323807300 Tue Dec 13 14:15:00 2011
|
||||
1112131415.16 13 1323807316 Tue Dec 13 14:15:16 2011
|
||||
201112131415.16 13 1323807316 Tue Dec 13 14:15:16 2011
|
||||
191112131415.16 13 -1 ***
|
||||
203712131415.16 13 2144348116 Sun Dec 13 14:15:16 2037
|
||||
3712131415.16 13 2144348116 Sun Dec 13 14:15:16 2037
|
||||
6812131415.16 13 -1 ***
|
||||
6912131415.16 13 -1 ***
|
||||
7012131415.16 13 29967316 Sun Dec 13 14:15:16 1970
|
||||
12131415.16 13 913580116 Sun Dec 13 14:15:16 1998
|
||||
This test data assumes Universal Time, e.g., TZ="UTC0".
|
||||
|
||||
1213141599 2 945116100 Mon Dec 13 14:15:00 1999
|
||||
1213141500 2 976738500 Wed Dec 13 14:15:00 2000
|
||||
This test data also assumes that time_t is signed and is at least
|
||||
39 bits wide, so that it can represent all years from 0000 through
|
||||
9999. A host with 32-bit signed time_t can represent only time
|
||||
stamps in the range 1901-12-13 20:45:52 through 2038-01-18
|
||||
03:14:07 UTC, assuming POSIX time_t with no leap seconds, so test
|
||||
cases outside this range will not work on such a host.
|
||||
|
||||
Also, the first two lines of test data assume that the current
|
||||
year is 2002.
|
||||
|
||||
BEGIN-DATA
|
||||
12131415.16 13 1039788916 Fri Dec 13 14:15:16 2002
|
||||
12131415.16 13 1039788916 Fri Dec 13 14:15:16 2002
|
||||
000001010000.00 13 -62167132800 Sun Jan 1 00:00:00 0000
|
||||
190112132045.52 13 -2147483648 Fri Dec 13 20:45:52 1901
|
||||
190112132045.53 13 -2147483647 Fri Dec 13 20:45:53 1901
|
||||
190112132046.52 13 -2147483588 Fri Dec 13 20:46:52 1901
|
||||
190112132145.52 13 -2147480048 Fri Dec 13 21:45:52 1901
|
||||
190112142045.52 13 -2147397248 Sat Dec 14 20:45:52 1901
|
||||
190201132045.52 13 -2144805248 Mon Jan 13 20:45:52 1902
|
||||
196912312359.59 13 -1 Wed Dec 31 23:59:59 1969
|
||||
197001010000.00 13 0 Thu Jan 1 00:00:00 1970
|
||||
197001010000.01 13 1 Thu Jan 1 00:00:01 1970
|
||||
197001010001.00 13 60 Thu Jan 1 00:01:00 1970
|
||||
197001010100.00 13 3600 Thu Jan 1 01:00:00 1970
|
||||
197001020000.00 13 86400 Fri Jan 2 00:00:00 1970
|
||||
197002010000.00 13 2678400 Sun Feb 1 00:00:00 1970
|
||||
197101010000.00 13 31536000 Fri Jan 1 00:00:00 1971
|
||||
197001000000.00 13 * *
|
||||
197000010000.00 13 * *
|
||||
197001010000.60 13 * *
|
||||
197001010060.00 13 * *
|
||||
197001012400.00 13 * *
|
||||
197001320000.00 13 * *
|
||||
197013010000.00 13 * *
|
||||
203801190314.06 13 2147483646 Tue Jan 19 03:14:06 2038
|
||||
203801190314.07 13 2147483647 Tue Jan 19 03:14:07 2038
|
||||
203801190314.08 13 2147483648 Tue Jan 19 03:14:08 2038
|
||||
999912312359.59 13 253402300799 Fri Dec 31 23:59:59 9999
|
||||
1112131415 13 1323785700 Tue Dec 13 14:15:00 2011
|
||||
1112131415.16 13 1323785716 Tue Dec 13 14:15:16 2011
|
||||
201112131415.16 13 1323785716 Tue Dec 13 14:15:16 2011
|
||||
191112131415.16 13 -1831974284 Wed Dec 13 14:15:16 1911
|
||||
203712131415.16 13 2144326516 Sun Dec 13 14:15:16 2037
|
||||
3712131415.16 13 2144326516 Sun Dec 13 14:15:16 2037
|
||||
6812131415.16 13 3122633716 Thu Dec 13 14:15:16 2068
|
||||
6912131415.16 13 -1590284 Sat Dec 13 14:15:16 1969
|
||||
7012131415.16 13 29945716 Sun Dec 13 14:15:16 1970
|
||||
1213141599 2 945094500 Mon Dec 13 14:15:00 1999
|
||||
1213141500 2 976716900 Wed Dec 13 14:15:00 2000
|
||||
END-DATA
|
||||
|
||||
*/
|
||||
@@ -265,13 +308,24 @@ main ()
|
||||
char time_str[MAX_BUFF_LEN];
|
||||
unsigned int syntax_bits;
|
||||
time_t t;
|
||||
char *result;
|
||||
sscanf (buff, "%s %u", time_str, &syntax_bits);
|
||||
t = posixtime (time_str, syntax_bits);
|
||||
result = (t == (time_t) -1 ? "***" : ctime (&t));
|
||||
printf ("%d %s\n", (int) t, result);
|
||||
if (sscanf (buff, "%s %u", time_str, &syntax_bits) != 2)
|
||||
printf ("*\n");
|
||||
else
|
||||
{
|
||||
printf ("%-15s %2u ", time_str, syntax_bits);
|
||||
if (posixtime (&t, time_str, syntax_bits))
|
||||
printf ("%12ld %s", (long) t, ctime (&t));
|
||||
else
|
||||
printf ("%12s %s", "*", "*\n");
|
||||
}
|
||||
}
|
||||
exit (0);
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
Local Variables:
|
||||
compile-command: "gcc -DTEST_POSIXTIME -DHAVE_CONFIG_H -I.. -g -O -Wall -W posixtm.c"
|
||||
End:
|
||||
*/
|
||||
|
||||
@@ -15,10 +15,7 @@
|
||||
# endif
|
||||
# endif
|
||||
|
||||
time_t
|
||||
posixtime PARAMS ((const char *s, unsigned int syntax_bits));
|
||||
|
||||
struct tm *
|
||||
posixtm PARAMS ((const char *s, unsigned int syntax_bits));
|
||||
bool
|
||||
posixtime PARAMS ((time_t *p, const char *s, unsigned int syntax_bits));
|
||||
|
||||
#endif
|
||||
|
||||
58
lib/posixver.c
Normal file
58
lib/posixver.c
Normal file
@@ -0,0 +1,58 @@
|
||||
/* Which POSIX version to conform to, for utilities.
|
||||
|
||||
Copyright (C) 2002 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU Library 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
||||
USA. */
|
||||
|
||||
/* Written by Paul Eggert. */
|
||||
|
||||
#if HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#include <limits.h>
|
||||
|
||||
#include <stdlib.h>
|
||||
#if !HAVE_DECL_GETENV && !defined getenv
|
||||
char *getenv ();
|
||||
#endif
|
||||
|
||||
#if HAVE_UNISTD_H
|
||||
# include <unistd.h>
|
||||
#endif
|
||||
#ifndef _POSIX2_VERSION
|
||||
# define _POSIX2_VERSION 0
|
||||
#endif
|
||||
|
||||
/* The POSIX version that utilities should conform to. The default is
|
||||
specified by the system. */
|
||||
|
||||
int
|
||||
posix2_version (void)
|
||||
{
|
||||
long int v = _POSIX2_VERSION;
|
||||
char const *s = getenv ("_POSIX2_VERSION");
|
||||
|
||||
if (s && *s)
|
||||
{
|
||||
char *e;
|
||||
long int i = strtol (s, &e, 10);
|
||||
if (! *e)
|
||||
v = i;
|
||||
}
|
||||
|
||||
return v < INT_MIN ? INT_MIN : v < INT_MAX ? v : INT_MAX;
|
||||
}
|
||||
1
lib/posixver.h
Normal file
1
lib/posixver.h
Normal file
@@ -0,0 +1 @@
|
||||
int posix2_version (void);
|
||||
@@ -1,5 +1,5 @@
|
||||
/* quotearg.c - quote arguments for output
|
||||
Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
|
||||
Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -301,6 +301,16 @@ quotearg_buffer_restyled (char *buffer, size_t buffersize,
|
||||
c = arg[i];
|
||||
switch (c)
|
||||
{
|
||||
case '\0':
|
||||
if (backslash_escapes)
|
||||
{
|
||||
STORE ('\\');
|
||||
STORE ('0');
|
||||
STORE ('0');
|
||||
c = '0';
|
||||
}
|
||||
break;
|
||||
|
||||
case '?':
|
||||
switch (quoting_style)
|
||||
{
|
||||
@@ -527,14 +537,15 @@ quotearg_buffer (char *buffer, size_t buffersize,
|
||||
p->style, p);
|
||||
}
|
||||
|
||||
/* Use storage slot N to return a quoted version of the string ARG.
|
||||
/* Use storage slot N to return a quoted version of argument ARG.
|
||||
ARG is of size ARGSIZE, but if that is -1, ARG is a null-terminated string.
|
||||
OPTIONS specifies the quoting options.
|
||||
The returned value points to static storage that can be
|
||||
reused by the next call to this function with the same value of N.
|
||||
N must be nonnegative. N is deliberately declared with type "int"
|
||||
to allow for future extensions (using negative values). */
|
||||
static char *
|
||||
quotearg_n_options (int n, char const *arg,
|
||||
quotearg_n_options (int n, char const *arg, size_t argsize,
|
||||
struct quoting_options const *options)
|
||||
{
|
||||
/* Preallocate a slot 0 buffer, so that the caller can always quote
|
||||
@@ -575,13 +586,13 @@ quotearg_n_options (int n, char const *arg,
|
||||
{
|
||||
size_t size = slotvec[n].size;
|
||||
char *val = slotvec[n].val;
|
||||
size_t qsize = quotearg_buffer (val, size, arg, (size_t) -1, options);
|
||||
size_t qsize = quotearg_buffer (val, size, arg, argsize, options);
|
||||
|
||||
if (size <= qsize)
|
||||
{
|
||||
slotvec[n].size = size = qsize + 1;
|
||||
slotvec[n].val = val = xrealloc (val == slot0 ? 0 : val, size);
|
||||
quotearg_buffer (val, size, arg, (size_t) -1, options);
|
||||
quotearg_buffer (val, size, arg, argsize, options);
|
||||
}
|
||||
|
||||
return val;
|
||||
@@ -591,7 +602,7 @@ quotearg_n_options (int n, char const *arg,
|
||||
char *
|
||||
quotearg_n (int n, char const *arg)
|
||||
{
|
||||
return quotearg_n_options (n, arg, &default_quoting_options);
|
||||
return quotearg_n_options (n, arg, (size_t) -1, &default_quoting_options);
|
||||
}
|
||||
|
||||
char *
|
||||
@@ -600,13 +611,29 @@ quotearg (char const *arg)
|
||||
return quotearg_n (0, arg);
|
||||
}
|
||||
|
||||
/* Return quoting options for STYLE, with no extra quoting. */
|
||||
static struct quoting_options
|
||||
quoting_options_from_style (enum quoting_style style)
|
||||
{
|
||||
struct quoting_options o;
|
||||
o.style = style;
|
||||
memset (o.quote_these_too, 0, sizeof o.quote_these_too);
|
||||
return o;
|
||||
}
|
||||
|
||||
char *
|
||||
quotearg_n_style (int n, enum quoting_style s, char const *arg)
|
||||
{
|
||||
struct quoting_options o;
|
||||
o.style = s;
|
||||
memset (o.quote_these_too, 0, sizeof o.quote_these_too);
|
||||
return quotearg_n_options (n, arg, &o);
|
||||
struct quoting_options const o = quoting_options_from_style (s);
|
||||
return quotearg_n_options (n, arg, (size_t) -1, &o);
|
||||
}
|
||||
|
||||
char *
|
||||
quotearg_n_style_mem (int n, enum quoting_style s,
|
||||
char const *arg, size_t argsize)
|
||||
{
|
||||
struct quoting_options const o = quoting_options_from_style (s);
|
||||
return quotearg_n_options (n, arg, argsize, &o);
|
||||
}
|
||||
|
||||
char *
|
||||
@@ -621,7 +648,7 @@ quotearg_char (char const *arg, char ch)
|
||||
struct quoting_options options;
|
||||
options = default_quoting_options;
|
||||
set_char_quoting (&options, ch, 1);
|
||||
return quotearg_n_options (0, arg, &options);
|
||||
return quotearg_n_options (0, arg, (size_t) -1, &options);
|
||||
}
|
||||
|
||||
char *
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* quotearg.h - quote arguments for output
|
||||
Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
|
||||
Copyright (C) 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -98,6 +98,11 @@ char *quotearg PARAMS ((char const *arg));
|
||||
This is like quotearg_n (N, ARG), except that it uses S with no other
|
||||
options to specify the quoting method. */
|
||||
char *quotearg_n_style PARAMS ((int n, enum quoting_style s, char const *arg));
|
||||
/* Use style S and storage slot N to return a quoted version of the
|
||||
argument ARG of size ARGSIZE. This is like quotearg_n_style
|
||||
(N, S, ARG), except it can quote null bytes. */
|
||||
char *quotearg_n_style_mem PARAMS ((int n, enum quoting_style s,
|
||||
char const *arg, size_t argsize));
|
||||
|
||||
/* Equivalent to quotearg_n_style (0, S, ARG). */
|
||||
char *quotearg_style PARAMS ((enum quoting_style s, char const *arg));
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* Declarations for GNU's read utmp module.
|
||||
Copyright (C) 1992-2001 Free Software Foundation, Inc.
|
||||
Copyright (C) 1992-2002 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -30,6 +30,12 @@
|
||||
|
||||
# include <sys/types.h>
|
||||
|
||||
/* AIX 4.3.3 has both utmp.h and utmpx.h, but only struct utmp
|
||||
has the ut_exit member. */
|
||||
# if HAVE_UTMPX_H && HAVE_UTMP_H && HAVE_STRUCT_UTMP_UT_EXIT && ! HAVE_STRUCT_UTMPX_UT_EXIT
|
||||
# undef HAVE_UTMPX_H
|
||||
# endif
|
||||
|
||||
# ifdef HAVE_UTMPX_H
|
||||
# ifdef HAVE_UTMP_H
|
||||
/* HPUX 10.20 needs utmp.h, for the definition of e.g., UTMP_FILE. */
|
||||
@@ -44,6 +50,27 @@
|
||||
# ifdef HAVE_UTMPXNAME
|
||||
# define UTMP_NAME_FUNCTION utmpxname
|
||||
# endif
|
||||
|
||||
# if HAVE_STRUCT_UTMPX_UT_EXIT_E_TERMINATION
|
||||
# define UT_EXIT_E_TERMINATION(U) ((U)->ut_exit.e_termination)
|
||||
# else
|
||||
# if HAVE_STRUCT_UTMPX_UT_EXIT_UT_TERMINATION
|
||||
# define UT_EXIT_E_TERMINATION(U) ((U)->ut_exit.ut_termination)
|
||||
# else
|
||||
# define UT_EXIT_E_TERMINATION(U) 0
|
||||
# endif
|
||||
# endif
|
||||
|
||||
# if HAVE_STRUCT_UTMPX_UT_EXIT_E_EXIT
|
||||
# define UT_EXIT_E_EXIT(U) ((U)->ut_exit.e_exit)
|
||||
# else
|
||||
# if HAVE_STRUCT_UTMPX_UT_EXIT_UT_EXIT
|
||||
# define UT_EXIT_E_EXIT(U) ((U)->ut_exit.ut_exit)
|
||||
# else
|
||||
# define UT_EXIT_E_EXIT(U) 0
|
||||
# endif
|
||||
# endif
|
||||
|
||||
# else
|
||||
# include <utmp.h>
|
||||
# if !HAVE_DECL_GETUTENT
|
||||
@@ -57,6 +84,27 @@
|
||||
# ifdef HAVE_UTMPNAME
|
||||
# define UTMP_NAME_FUNCTION utmpname
|
||||
# endif
|
||||
|
||||
# if HAVE_STRUCT_UTMP_UT_EXIT_E_TERMINATION
|
||||
# define UT_EXIT_E_TERMINATION(U) ((U)->ut_exit.e_termination)
|
||||
# else
|
||||
# if HAVE_STRUCT_UTMP_UT_EXIT_UT_TERMINATION
|
||||
# define UT_EXIT_E_TERMINATION(U) ((U)->ut_exit.ut_termination)
|
||||
# else
|
||||
# define UT_EXIT_E_TERMINATION(U) 0
|
||||
# endif
|
||||
# endif
|
||||
|
||||
# if HAVE_STRUCT_UTMP_UT_EXIT_E_EXIT
|
||||
# define UT_EXIT_E_EXIT(U) ((U)->ut_exit.e_exit)
|
||||
# else
|
||||
# if HAVE_STRUCT_UTMP_UT_EXIT_UT_EXIT
|
||||
# define UT_EXIT_E_EXIT(U) ((U)->ut_exit.ut_exit)
|
||||
# else
|
||||
# define UT_EXIT_E_EXIT(U) 0
|
||||
# endif
|
||||
# endif
|
||||
|
||||
# endif
|
||||
|
||||
/* Accessor macro for the member named ut_user or ut_name. */
|
||||
@@ -69,9 +117,6 @@
|
||||
# undef UT_USER
|
||||
# define UT_USER(Utmp) ((Utmp)->ut_name)
|
||||
# endif
|
||||
# if defined HAVE_STRUCT_UTMPX_UT_TYPE
|
||||
# define UT_TYPE(Utmp) ((Utmp)->ut_type)
|
||||
# endif
|
||||
|
||||
# else
|
||||
|
||||
@@ -82,12 +127,25 @@
|
||||
# undef UT_USER
|
||||
# define UT_USER(Utmp) Utmp->ut_name
|
||||
# endif
|
||||
# if defined HAVE_STRUCT_UTMP_UT_TYPE
|
||||
# define UT_TYPE(Utmp) ((Utmp)->ut_type)
|
||||
# endif
|
||||
|
||||
# endif
|
||||
|
||||
# define HAVE_STRUCT_XTMP_UT_EXIT \
|
||||
(HAVE_STRUCT_UTMP_UT_EXIT \
|
||||
|| HAVE_STRUCT_UTMPX_UT_EXIT)
|
||||
|
||||
# define HAVE_STRUCT_XTMP_UT_ID \
|
||||
(HAVE_STRUCT_UTMP_UT_ID \
|
||||
|| HAVE_STRUCT_UTMPX_UT_ID)
|
||||
|
||||
# define HAVE_STRUCT_XTMP_UT_PID \
|
||||
(HAVE_STRUCT_UTMP_UT_PID \
|
||||
|| HAVE_STRUCT_UTMPX_UT_PID)
|
||||
|
||||
# define HAVE_STRUCT_XTMP_UT_TYPE \
|
||||
(HAVE_STRUCT_UTMP_UT_TYPE \
|
||||
|| HAVE_STRUCT_UTMPX_UT_TYPE)
|
||||
|
||||
typedef struct UTMP_STRUCT_NAME STRUCT_UTMP;
|
||||
|
||||
# include <time.h>
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
/* Work around the bug in some systems whereby rename fails when the source
|
||||
path has a trailing slash. The rename from SunOS 4.1.1_U1 has this bug.
|
||||
Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
path has a trailing slash. The rename functions of SunOS 4.1.1_U1 and
|
||||
mips-dec-ultrix4.4 have this bug.
|
||||
Copyright (C) 2001, 2002 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* safe-read.c -- an interface to read that retries after interrupts
|
||||
Copyright (C) 1993, 1994, 1998 Free Software Foundation, Inc.
|
||||
Copyright (C) 1993, 1994, 1998, 2002 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -21,6 +21,7 @@
|
||||
#endif
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#if HAVE_UNISTD_H
|
||||
# include <unistd.h>
|
||||
@@ -34,15 +35,25 @@ extern int errno;
|
||||
#include "safe-read.h"
|
||||
|
||||
/* Read LEN bytes at PTR from descriptor DESC, retrying if interrupted.
|
||||
Return the actual number of bytes read, zero for EOF, or negative
|
||||
for an error. */
|
||||
Return the actual number of bytes read, zero upon EOF,
|
||||
or SAFE_READ_ERROR upon error.
|
||||
Abort if LEN is SAFE_READ_ERROR (aka `(size_t) -1').
|
||||
|
||||
ssize_t
|
||||
WARNING: although both LEN and the return value are of type size_t,
|
||||
the range of the return value is restricted -- by virtue of being
|
||||
returned from read(2) -- and will never be larger than SSIZE_MAX,
|
||||
with the exception of SAFE_READ_ERROR, of course.
|
||||
So don't test `safe_read (..., N) == N' unless you're sure that
|
||||
N <= SSIZE_MAX. */
|
||||
|
||||
size_t
|
||||
safe_read (int desc, void *ptr, size_t len)
|
||||
{
|
||||
ssize_t n_chars;
|
||||
|
||||
if (len <= 0)
|
||||
if (len == SAFE_READ_ERROR)
|
||||
abort ();
|
||||
if (len == 0)
|
||||
return len;
|
||||
|
||||
#ifdef EINTR
|
||||
|
||||
@@ -6,5 +6,7 @@
|
||||
# endif
|
||||
#endif
|
||||
|
||||
ssize_t
|
||||
#define SAFE_READ_ERROR ((size_t) -1)
|
||||
|
||||
size_t
|
||||
safe_read PARAMS ((int desc, void *ptr, size_t len));
|
||||
|
||||
43
lib/settime.c
Normal file
43
lib/settime.c
Normal file
@@ -0,0 +1,43 @@
|
||||
/* settime -- set the system clock
|
||||
Copyright (C) 2002 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software Foundation,
|
||||
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
|
||||
/* Written by Paul Eggert. */
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#include "timespec.h"
|
||||
|
||||
/* Set the system time. */
|
||||
|
||||
int
|
||||
settime (struct timespec const *ts)
|
||||
{
|
||||
#if defined CLOCK_REALTIME && HAVE_CLOCK_SETTIME
|
||||
if (clock_settime (CLOCK_REALTIME, ts) == 0)
|
||||
return 0;
|
||||
#endif
|
||||
|
||||
{
|
||||
struct timeval tv;
|
||||
|
||||
tv.tv_sec = ts->tv_sec;
|
||||
tv.tv_usec = ts->tv_nsec / 1000;
|
||||
return settimeofday (&tv, 0);
|
||||
}
|
||||
}
|
||||
346
lib/sig2str.c
Normal file
346
lib/sig2str.c
Normal file
@@ -0,0 +1,346 @@
|
||||
/* sig2str.c -- convert between signal names and numbers
|
||||
|
||||
Copyright (C) 2002 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software Foundation,
|
||||
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
|
||||
/* Written by Paul Eggert. */
|
||||
|
||||
#if HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#include <limits.h>
|
||||
#include <signal.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "sig2str.h"
|
||||
|
||||
#ifndef SIGRTMIN
|
||||
# define SIGRTMIN 0
|
||||
# undef SIGRTMAX
|
||||
#endif
|
||||
#ifndef SIGRTMAX
|
||||
# define SIGRTMAX (SIGRTMIN - 1)
|
||||
#endif
|
||||
|
||||
#define NUMNAME(name) { SIG##name, #name }
|
||||
|
||||
/* Signal names and numbers. Put the preferred name first. */
|
||||
static struct numname { int num; char const name[8]; } numname_table[] =
|
||||
{
|
||||
/* Signals required by POSIX 1003.1-2001 base, listed in
|
||||
traditional numeric order. */
|
||||
#ifdef SIGHUP
|
||||
NUMNAME (HUP),
|
||||
#endif
|
||||
#ifdef SIGINT
|
||||
NUMNAME (INT),
|
||||
#endif
|
||||
#ifdef SIGQUIT
|
||||
NUMNAME (QUIT),
|
||||
#endif
|
||||
#ifdef SIGILL
|
||||
NUMNAME (ILL),
|
||||
#endif
|
||||
#ifdef SIGTRAP
|
||||
NUMNAME (TRAP),
|
||||
#endif
|
||||
#ifdef SIGABRT
|
||||
NUMNAME (ABRT),
|
||||
#endif
|
||||
#ifdef SIGFPE
|
||||
NUMNAME (FPE),
|
||||
#endif
|
||||
#ifdef SIGKILL
|
||||
NUMNAME (KILL),
|
||||
#endif
|
||||
#ifdef SIGBUS
|
||||
NUMNAME (BUS),
|
||||
#endif
|
||||
#ifdef SIGSEGV
|
||||
NUMNAME (SEGV),
|
||||
#endif
|
||||
#ifdef SIGPIPE
|
||||
NUMNAME (PIPE),
|
||||
#endif
|
||||
#ifdef SIGALRM
|
||||
NUMNAME (ALRM),
|
||||
#endif
|
||||
#ifdef SIGTERM
|
||||
NUMNAME (TERM),
|
||||
#endif
|
||||
#ifdef SIGUSR1
|
||||
NUMNAME (USR1),
|
||||
#endif
|
||||
#ifdef SIGUSR2
|
||||
NUMNAME (USR2),
|
||||
#endif
|
||||
#ifdef SIGCHLD
|
||||
NUMNAME (CHLD),
|
||||
#endif
|
||||
#ifdef SIGURG
|
||||
NUMNAME (URG),
|
||||
#endif
|
||||
#ifdef SIGSTOP
|
||||
NUMNAME (STOP),
|
||||
#endif
|
||||
#ifdef SIGTSTP
|
||||
NUMNAME (TSTP),
|
||||
#endif
|
||||
#ifdef SIGCONT
|
||||
NUMNAME (CONT),
|
||||
#endif
|
||||
#ifdef SIGTTIN
|
||||
NUMNAME (TTIN),
|
||||
#endif
|
||||
#ifdef SIGTTOU
|
||||
NUMNAME (TTOU),
|
||||
#endif
|
||||
|
||||
/* Signals required by POSIX 1003.1-2001 with the XSI extension. */
|
||||
#ifdef SIGSYS
|
||||
NUMNAME (SYS),
|
||||
#endif
|
||||
#ifdef SIGPOLL
|
||||
NUMNAME (POLL),
|
||||
#endif
|
||||
#ifdef SIGVTALRM
|
||||
NUMNAME (VTALRM),
|
||||
#endif
|
||||
#ifdef SIGPROF
|
||||
NUMNAME (PROF),
|
||||
#endif
|
||||
#ifdef SIGXCPU
|
||||
NUMNAME (XCPU),
|
||||
#endif
|
||||
#ifdef SIGXFSZ
|
||||
NUMNAME (XFSZ),
|
||||
#endif
|
||||
|
||||
/* Unix Version 7. */
|
||||
#ifdef SIGIOT
|
||||
NUMNAME (IOT), /* Older name for ABRT. */
|
||||
#endif
|
||||
#ifdef SIGEMT
|
||||
NUMNAME (EMT),
|
||||
#endif
|
||||
|
||||
/* USG Unix. */
|
||||
#ifdef SIGPHONE
|
||||
NUMNAME (PHONE),
|
||||
#endif
|
||||
#ifdef SIGWIND
|
||||
NUMNAME (WIND),
|
||||
#endif
|
||||
|
||||
/* Unix System V. */
|
||||
#ifdef SIGCLD
|
||||
NUMNAME (CLD),
|
||||
#endif
|
||||
#ifdef SIGPWR
|
||||
NUMNAME (PWR),
|
||||
#endif
|
||||
|
||||
/* GNU/Linux 2.2 and Solaris 8. */
|
||||
#ifdef SIGCANCEL
|
||||
NUMNAME (CANCEL),
|
||||
#endif
|
||||
#ifdef SIGLWP
|
||||
NUMNAME (LWP),
|
||||
#endif
|
||||
#ifdef SIGWAITING
|
||||
NUMNAME (WAITING),
|
||||
#endif
|
||||
#ifdef SIGFREEZE
|
||||
NUMNAME (FREEZE),
|
||||
#endif
|
||||
#ifdef SIGTHAW
|
||||
NUMNAME (THAW),
|
||||
#endif
|
||||
#ifdef SIGLOST
|
||||
NUMNAME (LOST),
|
||||
#endif
|
||||
#ifdef SIGWINCH
|
||||
NUMNAME (WINCH),
|
||||
#endif
|
||||
|
||||
/* GNU/Linux 2.2. */
|
||||
#ifdef SIGINFO
|
||||
NUMNAME (INFO),
|
||||
#endif
|
||||
#ifdef SIGIO
|
||||
NUMNAME (IO),
|
||||
#endif
|
||||
#ifdef SIGSTKFLT
|
||||
NUMNAME (STKFLT),
|
||||
#endif
|
||||
|
||||
/* AIX 5L. */
|
||||
#ifdef SIGDANGER
|
||||
NUMNAME (DANGER),
|
||||
#endif
|
||||
#ifdef SIGGRANT
|
||||
NUMNAME (GRANT),
|
||||
#endif
|
||||
#ifdef SIGMIGRATE
|
||||
NUMNAME (MIGRATE),
|
||||
#endif
|
||||
#ifdef SIGMSG
|
||||
NUMNAME (MSG),
|
||||
#endif
|
||||
#ifdef SIGPRE
|
||||
NUMNAME (PRE),
|
||||
#endif
|
||||
#ifdef SIGRETRACT
|
||||
NUMNAME (RETRACT),
|
||||
#endif
|
||||
#ifdef SIGSAK
|
||||
NUMNAME (SAK),
|
||||
#endif
|
||||
#ifdef SIGSOUND
|
||||
NUMNAME (SOUND),
|
||||
#endif
|
||||
|
||||
/* Older AIX versions. */
|
||||
#ifdef SIGALRM1
|
||||
NUMNAME (ALRM1), /* unknown; taken from Bash 2.05 */
|
||||
#endif
|
||||
#ifdef SIGKAP
|
||||
NUMNAME (KAP), /* Older name for SIGGRANT. */
|
||||
#endif
|
||||
#ifdef SIGVIRT
|
||||
NUMNAME (VIRT), /* unknown; taken from Bash 2.05 */
|
||||
#endif
|
||||
#ifdef SIGWINDOW
|
||||
NUMNAME (WINDOW), /* Older name for SIGWINCH. */
|
||||
#endif
|
||||
|
||||
/* BeOS */
|
||||
#ifdef SIGKILLTHR
|
||||
NUMNAME (KILLTHR),
|
||||
#endif
|
||||
|
||||
/* Older HP-UX versions. */
|
||||
#ifdef SIGDIL
|
||||
NUMNAME (DIL),
|
||||
#endif
|
||||
|
||||
/* Korn shell and Bash, of uncertain vintage. */
|
||||
{ 0, "EXIT" }
|
||||
};
|
||||
|
||||
#define NUMNAME_ENTRIES (sizeof numname_table / sizeof numname_table[0])
|
||||
|
||||
/* 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.
|
||||
- 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
|
||||
of `digit' even when the host does not conform to POSIX. */
|
||||
#define ISDIGIT(c) ((unsigned) (c) - '0' <= 9)
|
||||
|
||||
/* Convert the signal name SIGNAME to a signal number. Return the
|
||||
signal number if successful, -1 otherwise. */
|
||||
|
||||
static int
|
||||
str2signum (char const *signame)
|
||||
{
|
||||
if (ISDIGIT (*signame))
|
||||
{
|
||||
char *endp;
|
||||
long int n = strtol (signame, &endp, 10);
|
||||
if (! *endp && n <= SIGNUM_BOUND)
|
||||
return n;
|
||||
}
|
||||
else
|
||||
{
|
||||
size_t i;
|
||||
for (i = 0; i < NUMNAME_ENTRIES; i++)
|
||||
if (strcmp (numname_table[i].name, signame) == 0)
|
||||
return numname_table[i].num;
|
||||
|
||||
{
|
||||
char *endp;
|
||||
int rtmin = SIGRTMIN;
|
||||
int rtmax = SIGRTMAX;
|
||||
|
||||
if (0 < rtmin && strncmp (signame, "RTMIN", 5) == 0)
|
||||
{
|
||||
long int n = strtol (signame + 5, &endp, 10);
|
||||
if (! *endp && 0 <= n && n <= rtmax - rtmin)
|
||||
return rtmin + n;
|
||||
}
|
||||
else if (0 < rtmax && strncmp (signame, "RTMAX", 5) == 0)
|
||||
{
|
||||
long int n = strtol (signame + 5, &endp, 10);
|
||||
if (! *endp && rtmin - rtmax <= n && n <= 0)
|
||||
return rtmax + n;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Convert the signal name SIGNAME to the signal number *SIGNUM.
|
||||
Return 0 if successful, -1 otherwise. */
|
||||
|
||||
int
|
||||
str2sig (char const *signame, int *signum)
|
||||
{
|
||||
*signum = str2signum (signame);
|
||||
return *signum < 0 ? -1 : 0;
|
||||
}
|
||||
|
||||
/* Convert SIGNUM to a signal name in SIGNAME. SIGNAME must point to
|
||||
a buffer of at least SIG2STR_MAX bytes. Return 0 if successful, -1
|
||||
otherwise. */
|
||||
|
||||
int
|
||||
sig2str (int signum, char *signame)
|
||||
{
|
||||
size_t i;
|
||||
for (i = 0; i < NUMNAME_ENTRIES; i++)
|
||||
if (numname_table[i].num == signum)
|
||||
{
|
||||
strcpy (signame, numname_table[i].name);
|
||||
return 0;
|
||||
}
|
||||
|
||||
{
|
||||
int rtmin = SIGRTMIN;
|
||||
int rtmax = SIGRTMAX;
|
||||
|
||||
if (! (rtmin <= signum && signum <= rtmax))
|
||||
return -1;
|
||||
|
||||
if (signum <= rtmin + (rtmax - rtmin) / 2)
|
||||
{
|
||||
int delta = signum - rtmin;
|
||||
sprintf (signame, delta ? "RTMIN+%d" : "RTMIN", delta);
|
||||
}
|
||||
else
|
||||
{
|
||||
int delta = rtmax - signum;
|
||||
sprintf (signame, delta ? "RTMAX-%d" : "RTMAX", delta);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
47
lib/sig2str.h
Normal file
47
lib/sig2str.h
Normal file
@@ -0,0 +1,47 @@
|
||||
/* sig2str.h -- convert between signal names and numbers
|
||||
|
||||
Copyright (C) 2002 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software Foundation,
|
||||
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
|
||||
/* Written by Paul Eggert. */
|
||||
|
||||
/* Include <signal.h> before including this file. */
|
||||
|
||||
/* Don't override system declarations of SIG2STR_MAX, sig2str, str2sig. */
|
||||
#ifndef SIG2STR_MAX
|
||||
|
||||
/* Upper bound on the string length of an integer converted to string.
|
||||
302 / 1000 is ceil (log10 (2.0)). Subtract 1 for the sign bit;
|
||||
add 1 for integer division truncation; add 1 more for a minus sign. */
|
||||
# define INT_STRLEN_BOUND(t) ((sizeof (t) * CHAR_BIT - 1) * 302 / 1000 + 2)
|
||||
|
||||
/* Size of a buffer needed to hold a signal name like "HUP". */
|
||||
# define SIG2STR_MAX (sizeof "SIGRTMAX" + INT_STRLEN_BOUND (int) - 1)
|
||||
|
||||
int sig2str (int, char *);
|
||||
int str2sig (char const *, int *);
|
||||
|
||||
#endif
|
||||
|
||||
/* An upper bound on signal numbers allowed by the system. */
|
||||
|
||||
#if defined _sys_nsig
|
||||
# define SIGNUM_BOUND (_sys_nsig - 1)
|
||||
#elif defined NSIG
|
||||
# define SIGNUM_BOUND (NSIG - 1)
|
||||
#else
|
||||
# define SIGNUM_BOUND 64
|
||||
#endif
|
||||
@@ -1,5 +1,5 @@
|
||||
/* Find the length of STRING, but scan at most MAXLEN characters.
|
||||
Copyright (C) 1996, 1997, 1998, 2000, 2001 Free Software Foundation, Inc.
|
||||
Copyright (C) 1996, 1997, 1998, 2000-2002 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
@@ -25,7 +25,11 @@
|
||||
# if !STDC_HEADERS && HAVE_MEMORY_H
|
||||
# include <memory.h>
|
||||
# endif
|
||||
/* Temporarily redefine strnlen so that an inconsistent prototype
|
||||
(on at least AIX4.3.2.0 w/gcc-2.95.3) doesn't cause trouble. */
|
||||
# define strnlen system_strnlen
|
||||
# include <string.h>
|
||||
# undef strnlen
|
||||
#else
|
||||
# include <strings.h>
|
||||
#endif
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* Compare strings while treating digits characters numerically.
|
||||
Copyright (C) 1997, 2000 Free Software Foundation, Inc.
|
||||
Copyright (C) 1997, 2000, 2002 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Jean-François Bignolles <bignolle@ecoledoc.ibp.fr>, 1997.
|
||||
|
||||
@@ -41,10 +41,9 @@
|
||||
- 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.
|
||||
- It's typically faster.
|
||||
Posix 1003.2-1992 section 2.5.2.1 page 50 lines 1556-1558 says that
|
||||
only '0' through '9' are digits. Prefer ISDIGIT to isdigit unless
|
||||
it's important to use the locale's definition of `digit' even when the
|
||||
host does not conform to Posix. */
|
||||
POSIX says that only '0' through '9' are digits. Prefer ISDIGIT to
|
||||
ISDIGIT_LOCALE 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) (c) - '0' <= 9)
|
||||
|
||||
#undef __strverscmp
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
/* Copyright (C) 2000 Free Software Foundation, Inc.
|
||||
/* timespec -- System time interface
|
||||
|
||||
Copyright (C) 2000, 2002 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -14,8 +16,8 @@
|
||||
along with this program; if not, write to the Free Software Foundation,
|
||||
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
|
||||
#if ! defined NANOSLEEP_H
|
||||
# define NANOSLEEP_H
|
||||
#if ! defined TIMESPEC_H
|
||||
# define TIMESPEC_H
|
||||
|
||||
/* You must include config.h before including this file. */
|
||||
|
||||
@@ -40,10 +42,19 @@ struct timespec
|
||||
};
|
||||
# endif
|
||||
|
||||
# ifdef ST_MTIM_NSEC
|
||||
# define TIMESPEC_NS(timespec) ((timespec).ST_MTIM_NSEC)
|
||||
# else
|
||||
# define TIMESPEC_NS(timespec) 0
|
||||
# endif
|
||||
|
||||
# if ! HAVE_DECL_NANOSLEEP
|
||||
/* Don't specify a prototype here. Some systems (e.g., OSF) declare
|
||||
nanosleep with a conflicting one (const-less first parameter). */
|
||||
int nanosleep ();
|
||||
# endif
|
||||
|
||||
int gettime (struct timespec *);
|
||||
int settime (struct timespec const *);
|
||||
|
||||
#endif
|
||||
123
lib/unicodeio.c
123
lib/unicodeio.c
@@ -1,6 +1,6 @@
|
||||
/* Unicode character output to streams with locale dependent encoding.
|
||||
|
||||
Copyright (C) 2000, 2001 Free Software Foundation, Inc.
|
||||
Copyright (C) 2000-2002 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU Library General Public License as published
|
||||
@@ -19,6 +19,9 @@
|
||||
|
||||
/* Written by Bruno Haible <haible@clisp.cons.org>. */
|
||||
|
||||
/* Note: This file requires the locale_charset() function. See in
|
||||
libiconv-1.7/libcharset/INTEGRATE for how to obtain it. */
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
#endif
|
||||
@@ -47,11 +50,13 @@ extern int errno;
|
||||
|
||||
#if ENABLE_NLS
|
||||
# include <libintl.h>
|
||||
# define _(Text) gettext (Text)
|
||||
#else
|
||||
# define _(Text) Text
|
||||
# define gettext(Text) Text
|
||||
#endif
|
||||
#define _(Text) gettext (Text)
|
||||
#define N_(Text) Text
|
||||
|
||||
/* Specification. */
|
||||
#include "unicodeio.h"
|
||||
|
||||
/* When we pass a Unicode character to iconv(), we must pass it in a
|
||||
@@ -105,10 +110,19 @@ utf8_wctomb (unsigned char *r, unsigned int wc)
|
||||
/* Luckily, the encoding's name is platform independent. */
|
||||
#define UTF8_NAME "UTF-8"
|
||||
|
||||
/* Outputs the Unicode character CODE to the output stream STREAM.
|
||||
/* Converts the Unicode character CODE to its multibyte representation
|
||||
in the current locale and calls the SUCCESS callback on the resulting
|
||||
byte sequence. If an error occurs, invokes the FAILURE callback instead,
|
||||
passing it CODE and an English error string.
|
||||
Returns whatever the callback returned.
|
||||
Assumes that the locale doesn't change between two calls. */
|
||||
void
|
||||
print_unicode_char (FILE *stream, unsigned int code)
|
||||
long
|
||||
unicode_to_mb (unsigned int code,
|
||||
long (*success) PARAMS ((const char *buf, size_t buflen,
|
||||
void *callback_arg)),
|
||||
long (*failure) PARAMS ((unsigned int code, const char *msg,
|
||||
void *callback_arg)),
|
||||
void *callback_arg)
|
||||
{
|
||||
static int initialized;
|
||||
static int is_utf8;
|
||||
@@ -130,31 +144,32 @@ print_unicode_char (FILE *stream, unsigned int code)
|
||||
{
|
||||
utf8_to_local = iconv_open (charset, UTF8_NAME);
|
||||
if (utf8_to_local == (iconv_t)(-1))
|
||||
{
|
||||
/* For an unknown encoding, assume ASCII. */
|
||||
utf8_to_local = iconv_open ("ASCII", UTF8_NAME);
|
||||
if (utf8_to_local == (iconv_t)(-1))
|
||||
error (1, 0,
|
||||
_("cannot output U+%04X: iconv function not usable"),
|
||||
code);
|
||||
}
|
||||
/* For an unknown encoding, assume ASCII. */
|
||||
utf8_to_local = iconv_open ("ASCII", UTF8_NAME);
|
||||
}
|
||||
#endif
|
||||
initialized = 1;
|
||||
}
|
||||
|
||||
/* Test whether the utf8_to_local converter is available at all. */
|
||||
if (!is_utf8)
|
||||
{
|
||||
#if HAVE_ICONV
|
||||
if (utf8_to_local == (iconv_t)(-1))
|
||||
return failure (code, N_("iconv function not usable"), callback_arg);
|
||||
#else
|
||||
return failure (code, N_("iconv function not available"), callback_arg);
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Convert the character to UTF-8. */
|
||||
count = utf8_wctomb ((unsigned char *) inbuf, code);
|
||||
if (count < 0)
|
||||
error (1, 0, _("U+%04X: character out of range"), code);
|
||||
return failure (code, N_("character out of range"), callback_arg);
|
||||
|
||||
if (is_utf8)
|
||||
{
|
||||
fwrite (inbuf, 1, count, stream);
|
||||
}
|
||||
else
|
||||
{
|
||||
#if HAVE_ICONV
|
||||
if (!is_utf8)
|
||||
{
|
||||
char outbuf[25];
|
||||
const char *inptr;
|
||||
size_t inbytesleft;
|
||||
@@ -177,8 +192,7 @@ print_unicode_char (FILE *stream, unsigned int code)
|
||||
|| (res > 0 && code != 0 && outptr - outbuf == 1 && *outbuf == '\0')
|
||||
# endif
|
||||
)
|
||||
error (1, res == (size_t)(-1) ? errno : 0,
|
||||
_("cannot convert U+%04X to local character set"), code);
|
||||
return failure (code, NULL, callback_arg);
|
||||
|
||||
/* Avoid glibc-2.1 bug and Solaris 2.7 bug. */
|
||||
# if defined _LIBICONV_VERSION \
|
||||
@@ -187,14 +201,63 @@ print_unicode_char (FILE *stream, unsigned int code)
|
||||
/* Get back to the initial shift state. */
|
||||
res = iconv (utf8_to_local, NULL, NULL, &outptr, &outbytesleft);
|
||||
if (res == (size_t)(-1))
|
||||
error (1, errno, _("cannot convert U+%04X to local character set"),
|
||||
code);
|
||||
return failure (code, NULL, callback_arg);
|
||||
# endif
|
||||
|
||||
fwrite (outbuf, 1, outptr - outbuf, stream);
|
||||
#else
|
||||
error (1, 0, _("cannot output U+%04X: iconv function not available"),
|
||||
code);
|
||||
#endif
|
||||
return success (outbuf, outptr - outbuf, callback_arg);
|
||||
}
|
||||
#endif
|
||||
|
||||
/* At this point, is_utf8 is true, so no conversion is needed. */
|
||||
return success (inbuf, count, callback_arg);
|
||||
}
|
||||
|
||||
/* Simple success callback that outputs the converted string.
|
||||
The STREAM is passed as callback_arg. */
|
||||
long
|
||||
fwrite_success_callback (const char *buf, size_t buflen, void *callback_arg)
|
||||
{
|
||||
FILE *stream = (FILE *) callback_arg;
|
||||
|
||||
fwrite (buf, 1, buflen, stream);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Simple failure callback that displays an error and exits. */
|
||||
static long
|
||||
exit_failure_callback (unsigned int code, const char *msg, void *callback_arg)
|
||||
{
|
||||
if (msg == NULL)
|
||||
error (1, 0, _("cannot convert U+%04X to local character set"), code);
|
||||
else
|
||||
error (1, 0, _("cannot convert U+%04X to local character set: %s"), code,
|
||||
gettext (msg));
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Simple failure callback that displays a fallback representation in plain
|
||||
ASCII, using the same notation as ISO C99 strings. */
|
||||
static long
|
||||
fallback_failure_callback (unsigned int code, const char *msg, void *callback_arg)
|
||||
{
|
||||
FILE *stream = (FILE *) callback_arg;
|
||||
|
||||
if (code < 0x10000)
|
||||
fprintf (stream, "\\u%04X", code);
|
||||
else
|
||||
fprintf (stream, "\\U%08X", code);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Outputs the Unicode character CODE to the output stream STREAM.
|
||||
Upon failure, exit if exit_on_error is true, otherwise output a fallback
|
||||
notation. */
|
||||
void
|
||||
print_unicode_char (FILE *stream, unsigned int code, int exit_on_error)
|
||||
{
|
||||
unicode_to_mb (code, fwrite_success_callback,
|
||||
exit_on_error
|
||||
? exit_failure_callback
|
||||
: fallback_failure_callback,
|
||||
stream);
|
||||
}
|
||||
|
||||
@@ -1,3 +1,22 @@
|
||||
/* Unicode character output to streams with locale dependent encoding.
|
||||
|
||||
Copyright (C) 2000-2002 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU Library General Public License as published
|
||||
by the Free Software Foundation; either version 2, 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
||||
USA. */
|
||||
|
||||
#ifndef UNICODEIO_H
|
||||
# define UNICODEIO_H
|
||||
|
||||
@@ -11,7 +30,15 @@
|
||||
# endif
|
||||
# endif
|
||||
|
||||
/* Outputs the Unicode character CODE to the output stream STREAM. */
|
||||
extern void print_unicode_char PARAMS((FILE *stream, unsigned int code));
|
||||
/* Outputs the Unicode character CODE to the output stream STREAM.
|
||||
Upon failure, exit if exit_on_error is true, otherwise output a fallback
|
||||
notation. */
|
||||
extern void print_unicode_char PARAMS ((FILE *stream, unsigned int code,
|
||||
int exit_on_error));
|
||||
|
||||
/* Simple success callback that outputs the converted string.
|
||||
The STREAM is passed as callback_arg. */
|
||||
extern long fwrite_success_callback PARAMS ((const char *buf, size_t buflen,
|
||||
void *callback_arg));
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* userspec.c -- Parse a user and group string.
|
||||
Copyright (C) 1989-1992, 1997, 1998, 2000 Free Software Foundation, Inc.
|
||||
Copyright (C) 1989-1992, 1997, 1998, 2000, 2002 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -134,10 +134,9 @@ struct group *getgrgid ();
|
||||
- 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.
|
||||
- It's typically faster.
|
||||
Posix 1003.2-1992 section 2.5.2.1 page 50 lines 1556-1558 says that
|
||||
only '0' through '9' are digits. Prefer ISDIGIT to isdigit unless
|
||||
it's important to use the locale's definition of `digit' even when the
|
||||
host does not conform to Posix. */
|
||||
POSIX says that only '0' through '9' are digits. Prefer ISDIGIT to
|
||||
ISDIGIT_LOCALE 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) (c) - '0' <= 9)
|
||||
|
||||
#ifndef strdup
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* xmalloc.c -- malloc with out of memory checking
|
||||
Copyright (C) 1990-1999, 2000 Free Software Foundation, Inc.
|
||||
Copyright (C) 1990-1999, 2000, 2002 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -46,12 +46,12 @@ void free ();
|
||||
# define EXIT_FAILURE 1
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_DONE_WORKING_MALLOC_CHECK
|
||||
"you must run the autoconf test for a properly working malloc -- see malloc.m4"
|
||||
#ifndef HAVE_MALLOC
|
||||
"you must run the autoconf test for a properly working malloc"
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_DONE_WORKING_REALLOC_CHECK
|
||||
"you must run the autoconf test for a properly working realloc --see realloc.m4"
|
||||
#ifndef HAVE_REALLOC
|
||||
"you must run the autoconf test for a properly working realloc"
|
||||
#endif
|
||||
|
||||
/* Exit value when the requested amount of memory is not available.
|
||||
|
||||
70
lib/xmemcoll.c
Normal file
70
lib/xmemcoll.c
Normal file
@@ -0,0 +1,70 @@
|
||||
/* Locale-specific memory comparison.
|
||||
Copyright (C) 2002 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software Foundation,
|
||||
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
|
||||
/* Contributed by Paul Eggert <eggert@twinsun.com>. */
|
||||
|
||||
#if HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#include <errno.h>
|
||||
#ifndef errno
|
||||
extern int errno;
|
||||
#endif
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
#if ENABLE_NLS
|
||||
# include <libintl.h>
|
||||
# define _(Text) gettext (Text)
|
||||
#else
|
||||
# define _(Text) Text
|
||||
#endif
|
||||
|
||||
#include "error.h"
|
||||
#include "memcoll.h"
|
||||
#include "quotearg.h"
|
||||
#include "xmemcoll.h"
|
||||
|
||||
/* Exit value when xmemcoll fails.
|
||||
The caller may set it to some other value. */
|
||||
int xmemcoll_exit_failure = EXIT_FAILURE;
|
||||
|
||||
/* Compare S1 (with length S1LEN) and S2 (with length S2LEN) according
|
||||
to the LC_COLLATE locale. S1 and S2 do not overlap, and are not
|
||||
adjacent. Temporarily modify the bytes after S1 and S2, but
|
||||
restore their original contents before returning. Report an error
|
||||
and exit if there is an error. */
|
||||
|
||||
int
|
||||
xmemcoll (char *s1, size_t s1len, char *s2, size_t s2len)
|
||||
{
|
||||
int diff = memcoll (s1, s1len, s2, s2len);
|
||||
int collation_errno = errno;
|
||||
|
||||
if (collation_errno)
|
||||
{
|
||||
error (0, collation_errno, _("string comparison failed"));
|
||||
error (0, 0, _("Set LC_ALL='C' to work around the problem."));
|
||||
error (xmemcoll_exit_failure, 0,
|
||||
_("The strings compared were %s and %s."),
|
||||
quotearg_n_style_mem (0, locale_quoting_style, s1, s1len),
|
||||
quotearg_n_style_mem (1, locale_quoting_style, s2, s2len));
|
||||
}
|
||||
|
||||
return diff;
|
||||
}
|
||||
2
lib/xmemcoll.h
Normal file
2
lib/xmemcoll.h
Normal file
@@ -0,0 +1,2 @@
|
||||
extern int xmemcoll_exit_failure;
|
||||
int xmemcoll (char *, size_t, char *, size_t);
|
||||
199
lib/xnanosleep.c
Normal file
199
lib/xnanosleep.c
Normal file
@@ -0,0 +1,199 @@
|
||||
/* xnanosleep.c -- a more convenient interface to nanosleep
|
||||
Copyright (C) 2002 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software Foundation,
|
||||
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
|
||||
/* Mostly written (for sleep.c) by Paul Eggert.
|
||||
Factored out (creating this file) by Jim Meyering. */
|
||||
|
||||
#if HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#include <stdio.h>
|
||||
#include <assert.h>
|
||||
#include <errno.h>
|
||||
#include <sys/types.h>
|
||||
#include <time.h>
|
||||
|
||||
#define USE_CLOCK_GETTIME (defined CLOCK_REALTIME && HAVE_CLOCK_GETTIME)
|
||||
#if ! USE_CLOCK_GETTIME
|
||||
# include <sys/time.h>
|
||||
#endif
|
||||
|
||||
#ifndef CHAR_BIT
|
||||
# define CHAR_BIT 8
|
||||
#endif
|
||||
|
||||
/* The extra casts work around common compiler bugs. */
|
||||
#define TYPE_SIGNED(t) (! ((t) 0 < (t) -1))
|
||||
/* The outer cast is needed to work around a bug in Cray C 5.0.3.0.
|
||||
It is necessary at least when t == time_t. */
|
||||
#define TYPE_MINIMUM(t) ((t) (TYPE_SIGNED (t) \
|
||||
? ~ (t) 0 << (sizeof (t) * CHAR_BIT - 1) : (t) 0))
|
||||
#define TYPE_MAXIMUM(t) ((t) (~ (t) 0 - TYPE_MINIMUM (t)))
|
||||
|
||||
#ifndef TIME_T_MAX
|
||||
# define TIME_T_MAX TYPE_MAXIMUM (time_t)
|
||||
#endif
|
||||
|
||||
#include "timespec.h"
|
||||
#include "xalloc.h"
|
||||
#include "xnanosleep.h"
|
||||
#include "xstrtod.h"
|
||||
|
||||
/* Subtract the `struct timespec' values X and Y,
|
||||
storing the difference in DIFF.
|
||||
Return 1 if the difference is positive, otherwise 0.
|
||||
Derived from code in the GNU libc manual. */
|
||||
|
||||
static int
|
||||
timespec_subtract (struct timespec *diff,
|
||||
const struct timespec *x, struct timespec *y)
|
||||
{
|
||||
/* Perform the carry for the later subtraction by updating Y. */
|
||||
if (x->tv_nsec < y->tv_nsec)
|
||||
{
|
||||
int nsec = (y->tv_nsec - x->tv_nsec) / 1000000000 + 1;
|
||||
y->tv_nsec -= 1000000000 * nsec;
|
||||
y->tv_sec += nsec;
|
||||
}
|
||||
|
||||
if (1000000000 < x->tv_nsec - y->tv_nsec)
|
||||
{
|
||||
int nsec = (y->tv_nsec - x->tv_nsec) / 1000000000;
|
||||
y->tv_nsec += 1000000000 * nsec;
|
||||
y->tv_sec -= nsec;
|
||||
}
|
||||
|
||||
/* Compute the time remaining to wait.
|
||||
`tv_nsec' is certainly positive. */
|
||||
diff->tv_sec = x->tv_sec - y->tv_sec;
|
||||
diff->tv_nsec = x->tv_nsec - y->tv_nsec;
|
||||
|
||||
/* Return 1 if result is positive. */
|
||||
return y->tv_sec < x->tv_sec;
|
||||
}
|
||||
|
||||
struct timespec *
|
||||
clock_get_realtime (struct timespec *ts)
|
||||
{
|
||||
int fail;
|
||||
#if USE_CLOCK_GETTIME
|
||||
fail = clock_gettime (CLOCK_REALTIME, ts);
|
||||
#else
|
||||
struct timeval tv;
|
||||
fail = gettimeofday (&tv, NULL);
|
||||
if (!fail)
|
||||
{
|
||||
ts->tv_sec = tv.tv_sec;
|
||||
ts->tv_nsec = 1000 * tv.tv_usec;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (fail)
|
||||
return NULL;
|
||||
|
||||
return ts;
|
||||
}
|
||||
|
||||
/* Sleep until the time (call it WAKE_UP_TIME) specified as
|
||||
SECONDS seconds after the time this function is called.
|
||||
SECONDS must be non-negative. If SECONDS is so large that
|
||||
it is not representable as a `struct timespec', then use
|
||||
the maximum value for that interval. Return -1 on failure
|
||||
(setting errno), 0 on success. */
|
||||
|
||||
int
|
||||
xnanosleep (double seconds)
|
||||
{
|
||||
int overflow;
|
||||
double ns;
|
||||
struct timespec ts_start;
|
||||
struct timespec ts_sleep;
|
||||
struct timespec ts_stop;
|
||||
|
||||
assert (0 <= seconds);
|
||||
|
||||
if (clock_get_realtime (&ts_start) == NULL)
|
||||
return -1;
|
||||
|
||||
/* Separate whole seconds from nanoseconds.
|
||||
Be careful to detect any overflow. */
|
||||
ts_sleep.tv_sec = seconds;
|
||||
ns = 1e9 * (seconds - ts_sleep.tv_sec);
|
||||
overflow = ! (ts_sleep.tv_sec <= seconds && 0 <= ns && ns <= 1e9);
|
||||
ts_sleep.tv_nsec = ns;
|
||||
|
||||
/* Round up to the next whole number, if necessary, so that we
|
||||
always sleep for at least the requested amount of time. Assuming
|
||||
the default rounding mode, we don't have to worry about the
|
||||
rounding error when computing 'ns' above, since the error won't
|
||||
cause 'ns' to drop below an integer boundary. */
|
||||
ts_sleep.tv_nsec += (ts_sleep.tv_nsec < ns);
|
||||
|
||||
/* Normalize the interval length. nanosleep requires this. */
|
||||
if (1000000000 <= ts_sleep.tv_nsec)
|
||||
{
|
||||
time_t t = ts_sleep.tv_sec + 1;
|
||||
|
||||
/* Detect integer overflow. */
|
||||
overflow |= (t < ts_sleep.tv_sec);
|
||||
|
||||
ts_sleep.tv_sec = t;
|
||||
ts_sleep.tv_nsec -= 1000000000;
|
||||
}
|
||||
|
||||
/* Compute the time until which we should sleep. */
|
||||
ts_stop.tv_sec = ts_start.tv_sec + ts_sleep.tv_sec;
|
||||
ts_stop.tv_nsec = ts_start.tv_nsec + ts_sleep.tv_nsec;
|
||||
if (1000000000 <= ts_stop.tv_nsec)
|
||||
{
|
||||
++ts_stop.tv_sec;
|
||||
ts_stop.tv_nsec -= 1000000000;
|
||||
}
|
||||
|
||||
/* Detect integer overflow. */
|
||||
overflow |= (ts_stop.tv_sec < ts_start.tv_sec
|
||||
|| (ts_stop.tv_sec == ts_start.tv_sec
|
||||
&& ts_stop.tv_nsec < ts_start.tv_nsec));
|
||||
|
||||
if (overflow)
|
||||
{
|
||||
/* Fix ts_sleep and ts_stop, which may be garbage due to overflow. */
|
||||
ts_sleep.tv_sec = ts_stop.tv_sec = TIME_T_MAX;
|
||||
ts_sleep.tv_nsec = ts_stop.tv_nsec = 999999999;
|
||||
}
|
||||
|
||||
while (nanosleep (&ts_sleep, NULL) != 0)
|
||||
{
|
||||
if (errno != EINTR)
|
||||
return -1;
|
||||
|
||||
/* POSIX.1-2001 requires that when a process is suspended, then
|
||||
resumed, nanosleep (A, B) returns -1, sets errno to EINTR,
|
||||
and sets *B to the time remaining at the point of resumption.
|
||||
However, some versions of the Linux kernel incorrectly return
|
||||
the time remaining at the point of suspension. Work around
|
||||
this bug by computing the remaining time here, rather than by
|
||||
relying on nanosleep's computation. */
|
||||
|
||||
if (! timespec_subtract (&ts_sleep, &ts_stop,
|
||||
clock_get_realtime (&ts_start)))
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
1
lib/xnanosleep.h
Normal file
1
lib/xnanosleep.h
Normal file
@@ -0,0 +1 @@
|
||||
int xnanosleep (double);
|
||||
12
lib/xstat.in
12
lib/xstat.in
@@ -4,7 +4,7 @@
|
||||
/* Work around the bug in some systems whereby @xstat@ succeeds when
|
||||
given the zero-length file name argument. The @xstat@ from SunOS4.1.4
|
||||
has this bug.
|
||||
Copyright (C) 1997-2001 Free Software Foundation, Inc.
|
||||
Copyright (C) 1997-2002 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -31,6 +31,7 @@
|
||||
extern int errno;
|
||||
#endif
|
||||
@BEGIN_LSTAT_ONLY@
|
||||
#include <string.h>
|
||||
|
||||
#if HAVE_STDLIB_H
|
||||
# include <stdlib.h>
|
||||
@@ -39,8 +40,13 @@ extern int errno;
|
||||
#ifdef STAT_MACROS_BROKEN
|
||||
# undef S_ISLNK
|
||||
#endif
|
||||
#if !defined(S_ISLNK) && defined(S_IFLNK)
|
||||
# define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK)
|
||||
|
||||
#ifndef S_ISLNK
|
||||
# ifdef S_IFLNK
|
||||
# define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK)
|
||||
# else
|
||||
# define S_ISLNK(m) 0
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_DECL_FREE
|
||||
|
||||
296
m4/ChangeLog
296
m4/ChangeLog
@@ -1,3 +1,299 @@
|
||||
2002-10-12 Paul Eggert <eggert@twionsun.com>
|
||||
|
||||
* jm-macros.m4 (jm_CHECK_ALL_HEADERS): Remove fenv.h.
|
||||
|
||||
2002-09-29 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* gettext.m4 (AM_INTL_SUBDIR): Don't require gt_HEADER_INTTYPES_H.
|
||||
It's not necessary with autoconf-2.54.
|
||||
|
||||
2002-09-28 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* getgroups.m4 (jm_FUNC_GETGROUPS): Rewrite to use AC_FUNC_GETGROUPS
|
||||
and (if needed) to call AC_LIBOBJ and to set GETGROUPS_LIB.
|
||||
* jm-macros.m4 (jm_MACROS): Don't set GETGROUPS_LIB here; now it's
|
||||
done via getgroups.m4's wrapper function.
|
||||
|
||||
* strerror_r.m4: Remove file -- now it's part of autoconf-2.54.
|
||||
Reported by Akim Demaille.
|
||||
|
||||
2002-09-25 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* gettext.m4: Upgrade to gettext-0.11.5.
|
||||
|
||||
2002-09-07 Bruno Haible <bruno@clisp.org>
|
||||
|
||||
* host-os.m4 (UTILS_HOST_OS): Add a case for freebsd*-gnu*.
|
||||
|
||||
2002-09-17 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* jm-macros.m4 (jm_MACROS): Require gt_INTTYPES_PRI.
|
||||
* inttypes-pri.m4 (gt_INTTYPES_PRI): New file, mostly from gettext.
|
||||
|
||||
2002-09-16 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* prereq.m4: Forbid symbols matching ^jm_[A-Z].
|
||||
(jm_PREREQ_QUOTEARG): Add jm_FUNC_MEMCMP.
|
||||
From Akim Demaille.
|
||||
|
||||
* error.m4 (jm_PREREQ_ERROR): Check for libintl.h.
|
||||
Reported by Akim Demaille.
|
||||
|
||||
2002-09-13 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* jm-macros.m4 (jm_MACROS): Require autoconf-2.54.
|
||||
|
||||
2002-09-09 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* getloadavg.m4: Remove file -- now it's part of autoconf-2.53c.
|
||||
* jm-macros.m4: Use AC_CONFIG_LIBOBJ_DIR(lib) to tell the new
|
||||
AC_FUNC_GETLOADAVG where to find getloadavg.c.
|
||||
|
||||
2002-09-03 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* gnu-source.m4: Remove file -- now it's part of autoconf-2.53c.
|
||||
* mbstate_t.m4: Likewise.
|
||||
* fnmatch.m4: Likewise.
|
||||
|
||||
2002-08-05 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* jm-winsz1.m4: Also change use of $am_cv_sys_posix_termios
|
||||
to $ac_cv_sys_posix_termios. Reported by Andreas Schwab.
|
||||
|
||||
2002-08-03 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* jm-winsz1.m4: Require AC_SYS_POSIX_TERMIOS, not AM_SYS_POSIX_TERMIOS.
|
||||
Reported by mkc@mathdogs.com.
|
||||
|
||||
2002-08-01 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* prereq.m4 (jm_PREREQ_TEMPNAME): lib/tempname.c may use uintmax_t,
|
||||
so require jm_AC_TYPE_UINTMAX_T. Patch by Joe Orton.
|
||||
|
||||
2002-07-28 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* jm-macros.m4: Don't require jm_FUNC_READDIR.
|
||||
* readdir.m4 (jm_FUNC_READDIR): Remove file/macro. No longer needed.
|
||||
|
||||
2002-07-27 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* prereq.m4 (jm_PREREQ_READUTMP): Don't check just
|
||||
`struct utmpx.ut_exit' and `struct utmp.ut_exit'. Instead, check
|
||||
all combinations of utmp/utmpx and ut_termination/e_termination
|
||||
and ut_exit/e_exit.
|
||||
|
||||
2002-07-23 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* c-bs-a.m4 (AC_C_BACKSLASH_A): Remove file, now that autoconf
|
||||
provides this macro.
|
||||
|
||||
2002-07-20 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* intdiv0.m4: New file. From gettex-0.11.3.
|
||||
|
||||
* jm-macros.m4: Require autoconf-2.53b.
|
||||
Use new macros AC_FUNC_MALLOC and AC_FUNC_REALLOC,
|
||||
in place of jm_-prefixed ones. Thanks, Akim!
|
||||
* malloc.m4: Remove file, now that autoconf provides this macro.
|
||||
* realloc.m4: Likewise.
|
||||
|
||||
2002-07-18 gettextize <bug-gnu-gettext@gnu.org>
|
||||
|
||||
* gettext.m4: Upgrade to gettext-0.11.3.
|
||||
* iconv.m4: Upgrade to gettext-0.11.3.
|
||||
* isc-posix.m4: Upgrade to gettext-0.11.3.
|
||||
* lcmessage.m4: Upgrade to gettext-0.11.3.
|
||||
* lib-link.m4: Upgrade to gettext-0.11.3.
|
||||
|
||||
2002-07-17 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* boottime.m4: New file. Extracted from sh-utils' configure.ac
|
||||
and extended to work also with *BSD systems.
|
||||
|
||||
2002-07-15 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
FreeBSD support for uname and uptime.
|
||||
* jm-macros.m4 (jm_MACROS): Check for the sysctl function.
|
||||
(jm_CHECK_ALL_HEADERS): Check for sys/sysctl.h.
|
||||
Suggestion from Bruno Haible.
|
||||
|
||||
2002-06-11 Paul Eggert <eggert@twinsun.com>
|
||||
|
||||
* fnmatch.m4 (_AC_LIBOBJ_FNMATCH): Check for btowc.
|
||||
|
||||
2002-06-22 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* c-stack.m4: New file, from diffutils-2.8.2.
|
||||
* prereq.m4 (jm_PREREQ): Add jm_PREREQ_C_STACK.
|
||||
|
||||
* jm-macros.m4 (jm_CHECK_ALL_TYPES): Don't require AC__GNU_SOURCE,
|
||||
now that configure.ac uses AC_GNU_SOURCE.
|
||||
(jm_MACROS): Rename: jm_FUNC_FNMATCH to AC_FUNC_FNMATCH_GNU.
|
||||
* prereq.m4 (jm_PREREQ_EXCLUDE): Likewise, wrt jm_FUNC_FNMATCH.
|
||||
|
||||
Update to latest tools. Suggestions from Paul Eggert.
|
||||
* stdbool.m4: New file, from diffutils-2.8.2.
|
||||
* gnu-source.m4: Update from diffutils-2.8.2.
|
||||
* fnmatch.m4: Likewise.
|
||||
* prereq.m4: Change each use of AC_CHECK_HEADERS(stdbool.h)
|
||||
to AC_HEADER_STDBOOL
|
||||
|
||||
2002-06-21 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* c-bs-a.m4: Add comment, from diffutils-2.8.2.
|
||||
* mbrtowc.m4: Likewise.
|
||||
|
||||
* mbstate_t.m4: Update from diffutils-2.8.2.
|
||||
* mbswidth.m4: Reflect name change:
|
||||
s/AC_MBSTATE_T/AC_TYPE_MBSTATE_T.
|
||||
* prereq.m4 (jm_PREREQ_QUOTEARG): Likewise.
|
||||
|
||||
* lib-link.m4: Update from gettext-0.11.2.
|
||||
* gettext.m4: Likewise.
|
||||
|
||||
* jm-macros.m4 (jm_CHECK_ALL_HEADERS): Check for hurd.h.
|
||||
From Alfred M. Szmidt.
|
||||
|
||||
2002-05-19 Paul Eggert <eggert@twinsun.com>
|
||||
|
||||
* jm-macros.m4 (jm_CHECK_ALL_TYPES): Check for st_author.
|
||||
|
||||
2002-06-07 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* prereq.m4 (jm_PREREQ_STAT): Check for sys/param.h and sys/mount.h.
|
||||
They're needed at least for NetBSD 1.5.2.
|
||||
($statxfs_includes): Include those same headers.
|
||||
($statxfs_includes): Include sys/vfs.h if available.
|
||||
($statxfs_includes): Likewise for sys/statvfs.h.
|
||||
Check for the following members in both structs statfs and statvfs:
|
||||
f_basetype, f_type, f_fsid.__val, f_namemax, f_namelen.
|
||||
|
||||
2002-06-01 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* d-type.m4 (jm_CHECK_TYPE_STRUCT_DIRENT_D_TYPE): Rename macro:
|
||||
s/D_TYPE_IN_DIRENT/HAVE_STRUCT_DIRENT_D_TYPE/.
|
||||
|
||||
2002-05-28 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* readdir.m4 (jm_FUNC_READDIR): Undefine `mkdir', not `rmdir'.
|
||||
Reported by Volker Borchert.
|
||||
|
||||
2002-05-27 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* gettimeofday.m4 (AC_FUNC_GETTIMEOFDAY_CLOBBER): Also replace
|
||||
localtime.
|
||||
|
||||
* readdir.m4 (jm_FUNC_READDIR): Undefine `rmdir' so we don't try to
|
||||
use the replacement function; it wouldn't resolve at link time.
|
||||
Reported by Volker Borchert.
|
||||
|
||||
2002-04-30 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* prereq.m4 (jm_PREREQ): Add jm_PREREQ_STAT.
|
||||
|
||||
2002-04-29 Paul Eggert <eggert@twinsun.com>
|
||||
|
||||
* prereq.m4 (jm_PREREQ_HARD_LOCALE): Check for stdlib.h.
|
||||
Do not check for alloca.h (no longer used) or stdbool.h (was never
|
||||
used?). Add AM_C_PROTOTYPES since hard-locale.h uses it.
|
||||
|
||||
2002-04-28 Paul Eggert <eggert@twinsun.com>
|
||||
|
||||
* prereq.m4 (jm_PREREQ_SIG2STR): Remove; all callers changed.
|
||||
|
||||
2002-04-29 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* jm-macros.m4 (jm_MACROS): Remove use of AC_FUNC_STRNLEN.
|
||||
* prereq.m4: Add jm_PREREQ_STRNLEN.
|
||||
Use AC_FUNC_STRNLEN here instead.
|
||||
|
||||
* jm-macros.m4: Don't AC_REQUIRE([AC_PROG_CC_STDC]).
|
||||
With autoconf-2.53a, it's part of AC_PROG_CC.
|
||||
|
||||
2002-04-28 Paul Eggert <eggert@twinsun.com>
|
||||
|
||||
* jm-macros.m4 (jm_MACROS): Add AC_REPLACE_FUNCS(sig2str).
|
||||
* prereq.m4 (jm_PREREQ): Add jm_PREREQ_SIG2STR.
|
||||
|
||||
2002-04-24 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* prereq.m4 (jm_PREREQ_HARD_LOCALE): New macro.
|
||||
(jm_PREREQ): Use it.
|
||||
|
||||
* getloadavg.m4: Check for these headers: locale.h unistd.h
|
||||
mach/mach.h fcntl.h.
|
||||
Check for this function: setlocale.
|
||||
|
||||
2002-04-16 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* prereq.m4 (jm_PREREQ_READUTMP): Also check for these members:
|
||||
ut_pid, ut_id, ut_exit.
|
||||
|
||||
2002-04-12 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* ls-mntd-fs.m4 (checking for getmntinfo function...): Remove now-bogus
|
||||
check for f_type in sys/mount.h. Instead, just test for the existence
|
||||
of the getmntinfo function. Needed for Darwin 5.3.
|
||||
|
||||
* dirfd.m4 (UTILS_FUNC_DIRFD): Also detect when dirfd is a macro.
|
||||
This is necessary at least on Darwin 5.3.
|
||||
|
||||
* jm-macros.m4: Don't AC_REPLACE(strnlen), now that we use
|
||||
AC_FUNC_STRNLEN. Otherwise, we'd end up putting two copies of strnlen.o
|
||||
in the library, and that makes some versions of ranlib object.
|
||||
|
||||
2002-04-09 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* malloc.m4: (jm_FUNC_MALLOC): Change the `checking ...' message
|
||||
to be more precise. Rather than saying we're checking whether the
|
||||
function `works', say what we're testing.
|
||||
* realloc.m4 (jm_FUNC_REALLOC): Likewise.
|
||||
Reported by Bruno Haible.
|
||||
|
||||
2002-02-27 Paul Eggert <eggert@twinsun.com>
|
||||
|
||||
* jm-macros.m4 (jm_MACROS): Do not replace stime; no longer used.
|
||||
Check for clock_settime.
|
||||
|
||||
2002-02-25 Paul Eggert <eggert@twinsun.com>
|
||||
|
||||
* acl.m4: New file.
|
||||
* jm-macros.m4 (jm_MACROS): Require AC_FUNC_ACL.
|
||||
Do not check for acl or sys/acl.h, as AC_FUNC_ACL does that now.
|
||||
|
||||
2002-02-16 gettextize <bug-gnu-gettext@gnu.org>
|
||||
|
||||
* codeset.m4: Upgrade to gettext-0.11.
|
||||
* gettext.m4: Upgrade to gettext-0.11.
|
||||
* glibc21.m4: Upgrade to gettext-0.11.
|
||||
* iconv.m4: Upgrade to gettext-0.11.
|
||||
* isc-posix.m4: Upgrade to gettext-0.11.
|
||||
* lcmessage.m4: Upgrade to gettext-0.11.
|
||||
* lib-ld.m4: New file, from gettext-0.11.
|
||||
* lib-link.m4: New file, from gettext-0.11.
|
||||
* lib-prefix.m4: New file, from gettext-0.11.
|
||||
* progtest.m4: Upgrade to gettext-0.11.
|
||||
|
||||
2002-02-15 Paul Eggert <eggert@twinsun.com>
|
||||
|
||||
* m4/prereq.m4 (jm_PREREQ_POSIXVER): New macro.
|
||||
(jm_PREREQ): Use it.
|
||||
|
||||
2002-01-26 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* jm-macros.m4 (jm_MACROS): Require autoconf-2.52g.
|
||||
* strnlen.m4: Remove file, now that it's part of autoconf.
|
||||
|
||||
2002-01-22 Paul Eggert <eggert@twinsun.com>
|
||||
|
||||
* jm-macros.m4 (jm_MACROS): Require AC_FUNC_FSEEKO.
|
||||
|
||||
2002-01-19 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* jm-macros.m4 (jm_MACROS): Use AC_FUNC_STRNLEN.
|
||||
Remove useless quotes: DF_PROG="df".
|
||||
* strnlen.m4: New file.
|
||||
|
||||
2001-12-14 Jim Meyering <meyering@lucent.com>
|
||||
|
||||
* jm-macros.m4 (jm_MACROS): Check for iswspace.
|
||||
|
||||
@@ -3,10 +3,12 @@
|
||||
##m4-files-begin
|
||||
EXTRA_DIST = \
|
||||
README jm-glibc-io.m4 jm-glibc-io.m4n Makefile.am.in \
|
||||
acl.m4 \
|
||||
afs.m4 \
|
||||
assert.m4 \
|
||||
bison.m4 \
|
||||
c-bs-a.m4 \
|
||||
boottime.m4 \
|
||||
c-stack.m4 \
|
||||
check-decl.m4 \
|
||||
chown.m4 \
|
||||
codeset.m4 \
|
||||
@@ -15,7 +17,6 @@ d-type.m4 \
|
||||
dirfd.m4 \
|
||||
dos.m4 \
|
||||
error.m4 \
|
||||
fnmatch.m4 \
|
||||
fpending.m4 \
|
||||
fstypename.m4 \
|
||||
fsusage.m4 \
|
||||
@@ -23,15 +24,15 @@ ftruncate.m4 \
|
||||
getcwd.m4 \
|
||||
getgroups.m4 \
|
||||
getline.m4 \
|
||||
getloadavg.m4 \
|
||||
gettext.m4 \
|
||||
gettimeofday.m4 \
|
||||
glibc.m4 \
|
||||
glibc21.m4 \
|
||||
gnu-source.m4 \
|
||||
group-member.m4 \
|
||||
host-os.m4 \
|
||||
iconv.m4 \
|
||||
intdiv0.m4 \
|
||||
inttypes-pri.m4 \
|
||||
inttypes.m4 \
|
||||
isc-posix.m4 \
|
||||
jm-glibc-io.m4 \
|
||||
@@ -42,13 +43,14 @@ jm-winsz2.m4 \
|
||||
lchown.m4 \
|
||||
lcmessage.m4 \
|
||||
lib-check.m4 \
|
||||
lib-ld.m4 \
|
||||
lib-link.m4 \
|
||||
lib-prefix.m4 \
|
||||
link-follow.m4 \
|
||||
longlong.m4 \
|
||||
ls-mntd-fs.m4 \
|
||||
lstat.m4 \
|
||||
malloc.m4 \
|
||||
mbrtowc.m4 \
|
||||
mbstate_t.m4 \
|
||||
mbswidth.m4 \
|
||||
memcmp.m4 \
|
||||
mkdir-slash.m4 \
|
||||
@@ -58,8 +60,6 @@ perl.m4 \
|
||||
prereq.m4 \
|
||||
progtest.m4 \
|
||||
putenv.m4 \
|
||||
readdir.m4 \
|
||||
realloc.m4 \
|
||||
regex.m4 \
|
||||
rename.m4 \
|
||||
rmdir-errno.m4 \
|
||||
@@ -67,7 +67,7 @@ search-libs.m4 \
|
||||
st_dm_mode.m4 \
|
||||
st_mtim.m4 \
|
||||
stat.m4 \
|
||||
strerror_r.m4 \
|
||||
stdbool.m4 \
|
||||
strftime.m4 \
|
||||
timespec.m4 \
|
||||
unlink-busy.m4 \
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user