Compare commits
395 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f674e5fc9c |
||
|
|
eb04a0fe33 |
||
|
|
0615d97b81 |
||
|
|
0095d94d91 |
||
|
|
20976b8be8 |
||
|
|
c493f607ab | ||
|
|
c3c18147bd |
||
|
|
e454479c5c |
||
|
|
a0b27bcd5f |
||
|
|
386bf34c2e |
||
|
|
fdfe50c891 |
||
|
|
f0604fd61a |
||
|
|
ec87f84093 |
||
|
|
c71c8701f4 | ||
|
|
e847b805f8 | ||
|
|
ddff633d0f | ||
|
|
a6d9263e25 | ||
|
|
8080f5a15a |
||
|
|
968cac099d |
||
|
|
e3b928358b |
||
|
|
d3137f0cd0 |
||
|
|
a09814d13c | ||
|
|
6cd5ce1d7e |
||
|
|
e02261a471 |
||
|
|
7c8ffed470 | ||
|
|
ba7b19b5bf | ||
|
|
1421739c0c |
||
|
|
56dd448b26 |
||
|
|
a91df5db11 |
||
|
|
245be9f408 |
||
|
|
f6a44b3f1f | ||
|
|
fd8859df68 | ||
|
|
bf7dfdb2ce |
||
|
|
b851cbdafc |
||
|
|
bf0817f5a5 |
||
|
|
21acecbf27 | ||
|
|
6e05a62913 | ||
|
|
3040113a7a | ||
|
|
1c60283cdf | ||
|
|
f33a14f44f | ||
|
|
6bd7dce39d |
||
|
|
cce55f8f56 | ||
|
|
24c306d28d | ||
|
|
2c4d4b8151 | ||
|
|
43d181cda7 | ||
|
|
f8035e385d | ||
|
|
ea41467a56 | ||
|
|
9d850274b1 | ||
|
|
ad57d2b8e8 | ||
|
|
31230267ea | ||
|
|
cd953e11dd | ||
|
|
23b297bf58 | ||
|
|
f3c6ff7e2c | ||
|
|
4dcaf08c8b | ||
|
|
26b2c3ae54 | ||
|
|
e0f6afe5e6 | ||
|
|
2158b83433 | ||
|
|
f672fec436 | ||
|
|
cc30dec8eb | ||
|
|
9325dbbef7 | ||
|
|
1f19874524 | ||
|
|
c25beef1ca | ||
|
|
d00a2dffe1 | ||
|
|
dddf06a3e5 | ||
|
|
a39a95cf1a | ||
|
|
97967f71c8 | ||
|
|
59649f0733 | ||
|
|
4a2b84513e | ||
|
|
baf6440388 | ||
|
|
67dacdf0ad | ||
|
|
b55ae3bd16 | ||
|
|
37018cae6e | ||
|
|
9482c160b7 | ||
|
|
1250da8dfb | ||
|
|
c05b5f83e5 | ||
|
|
a0cb772e6f | ||
|
|
d21fd8df0d | ||
|
|
9666248b72 | ||
|
|
18d8c0abc1 | ||
|
|
ce3b866d19 | ||
|
|
3a336cf37e | ||
|
|
56555a47f2 | ||
|
|
e4decc2688 | ||
|
|
e680748e28 | ||
|
|
32fb61705f | ||
|
|
e3402b5fd4 | ||
|
|
1737e5c81f | ||
|
|
6b50cb9fc4 | ||
|
|
c822f6b1c0 | ||
|
|
4bd3080a00 | ||
|
|
7afd521be2 | ||
|
|
d5245cc71c | ||
|
|
581c05ccb4 | ||
|
|
44351906c7 | ||
|
|
f0b46ff947 | ||
|
|
1a18f20c40 | ||
|
|
4af0c9fc89 | ||
|
|
3a62768287 | ||
|
|
f4b85e63ba | ||
|
|
441f1d7519 | ||
|
|
5d08d14bbc | ||
|
|
fe6d386d13 | ||
|
|
27d47106a2 | ||
|
|
6d3ccf4f6f | ||
|
|
fac4ffd39e | ||
|
|
3426965b81 | ||
|
|
5d12163012 | ||
|
|
d72df4e29b | ||
|
|
1f6e0df263 | ||
|
|
bce50ab523 | ||
|
|
2f7b3e0a8c | ||
|
|
f4a53e34d0 | ||
|
|
d27f8523e2 | ||
|
|
9ed5d5b0f9 | ||
|
|
acfa9e81ec | ||
|
|
44b7afa142 | ||
|
|
4a6bfcaa46 | ||
|
|
b7eb17e7ee | ||
|
|
eadc061798 | ||
|
|
b0dc3833bf | ||
|
|
46d49783fe | ||
|
|
00f87f4b88 | ||
|
|
3dbfd57eac | ||
|
|
3957dee9a4 | ||
|
|
788bd804ff | ||
|
|
4f1cea8bda | ||
|
|
664c64dec9 | ||
|
|
5cd3289cea | ||
|
|
16fe71f18e | ||
|
|
07291932a7 | ||
|
|
2bc851a491 | ||
|
|
5637e2b274 | ||
|
|
30ec1629e9 | ||
|
|
df169bbdad | ||
|
|
990cf47f04 | ||
|
|
d3d47dee12 | ||
|
|
5decf6eab4 | ||
|
|
9cc8a839e2 | ||
|
|
71b79ae180 | ||
|
|
7c7259b187 | ||
|
|
abb9bb783a | ||
|
|
333a307888 | ||
|
|
822c7685b5 | ||
|
|
cf6dd7194c | ||
|
|
868a615b18 | ||
|
|
a38fffab2a | ||
|
|
d01deda0a2 | ||
|
|
d83775a947 | ||
|
|
44ebc66935 | ||
|
|
79b09b54df | ||
|
|
dd90a0a24b | ||
|
|
36ef66d59d | ||
|
|
359784bfb0 | ||
|
|
d507a7b94c | ||
|
|
7995abc6ec | ||
|
|
e9599c8226 |
||
|
|
4a8582e246 | ||
|
|
5d3dc8fdbd | ||
|
|
fd470b54bc | ||
|
|
79fe59c7fc | ||
|
|
d51b521e30 | ||
|
|
7effe141a5 | ||
|
|
0cb3deb32b | ||
|
|
02030dc915 | ||
|
|
ab7465c4fa | ||
|
|
bb681e6c30 | ||
|
|
2d00e2bb9a | ||
|
|
3490621545 | ||
|
|
d2d5d5d057 | ||
|
|
353860c35c | ||
|
|
8401ff18e3 | ||
|
|
28658db744 | ||
|
|
8fd1881fe2 | ||
|
|
8d02212742 | ||
|
|
6f16afd4a6 | ||
|
|
fde94e2609 | ||
|
|
34aa759415 | ||
|
|
28873d6a70 | ||
|
|
e0b67f5aa9 | ||
|
|
b9d157d0ce | ||
|
|
e00cb1843f | ||
|
|
e0567d54a7 | ||
|
|
3d65658099 | ||
|
|
4ceb7222e4 | ||
|
|
7a7c1a231c | ||
|
|
bc25708240 | ||
|
|
f1a024cc09 | ||
|
|
5e77c9c1c9 | ||
|
|
5e261ae9b9 | ||
|
|
e128603381 | ||
|
|
b3b3da0cdf | ||
|
|
c168f3b343 | ||
|
|
a4f03c6bc0 | ||
|
|
59a39fa268 | ||
|
|
8d346246a7 | ||
|
|
8d9eac4093 | ||
|
|
3ed22ec3e8 | ||
|
|
21de8b5251 | ||
|
|
380647993e | ||
|
|
0e3a55d8dc | ||
|
|
39f7c7c836 | ||
|
|
adf19d29ec | ||
|
|
8b01f2371c | ||
|
|
6cf6cd48dd | ||
|
|
d3849ced08 | ||
|
|
9551d101b0 | ||
|
|
fe09c9cd04 | ||
|
|
3bf1e52ff3 | ||
|
|
3792f36ae5 | ||
|
|
e207ff79a3 | ||
|
|
7d9e8632f3 | ||
|
|
0a63fa44ae | ||
|
|
34ffa2ef55 | ||
|
|
ee3bfc24ca | ||
|
|
0433f98b1b | ||
|
|
3b6df16a3d | ||
|
|
46ebf91d5f | ||
|
|
50e40c5f2b | ||
|
|
28edec2fbc | ||
|
|
8236de4f4b | ||
|
|
ffecc6b864 | ||
|
|
45ce637bf4 | ||
|
|
b0302efc50 | ||
|
|
96a98c054d | ||
|
|
06a5ca2716 | ||
|
|
593569e76b | ||
|
|
5440a2d9db | ||
|
|
67395a7505 | ||
|
|
cd5c4ef355 | ||
|
|
ab00e1ea64 | ||
|
|
eccec8ba45 | ||
|
|
7d9c9afa38 | ||
|
|
11e5aa1d55 | ||
|
|
01067b2813 | ||
|
|
452aa4a7e3 | ||
|
|
c553cab787 | ||
|
|
63c57dca19 | ||
|
|
7f1720d9a2 | ||
|
|
1f6f388ba3 | ||
|
|
32b1e5a154 | ||
|
|
8e9b3fd0aa | ||
|
|
49c29b4069 | ||
|
|
5dc61e9dc1 | ||
|
|
5fb9bc4700 | ||
|
|
f0951fecac | ||
|
|
c7c3ee3fab | ||
|
|
2ad92d25c0 | ||
|
|
cfbfd8c490 | ||
|
|
7b7a0554fb | ||
|
|
3775f446fe | ||
|
|
1f9b908a99 | ||
|
|
42e4196fc0 | ||
|
|
1b318dd805 | ||
|
|
138c00f55f | ||
|
|
58ee24949f | ||
|
|
e2395bc17f | ||
|
|
7adccbb026 | ||
|
|
0ea2ae6357 | ||
|
|
75d03ceef1 | ||
|
|
0006fec2f3 | ||
|
|
ac62214984 | ||
|
|
2f8deb0379 | ||
|
|
cae27396ec | ||
|
|
89879aa209 | ||
|
|
f7c8684e5e | ||
|
|
734e24e1b2 | ||
|
|
f5e87bdc05 | ||
|
|
df0e53f22d | ||
|
|
9c33d82fb4 | ||
|
|
8246976bb3 | ||
|
|
2af6179bec | ||
|
|
8d24562387 | ||
|
|
136250677d | ||
|
|
1240520fa1 | ||
|
|
156e6cc237 | ||
|
|
d700b52311 | ||
|
|
55f7ecdd4a | ||
|
|
72a0b599c4 | ||
|
|
be3c926a11 | ||
|
|
b3c0c98841 | ||
|
|
02d5a162e7 | ||
|
|
dc1142233b | ||
|
|
e241867dd1 | ||
|
|
ff51f0cc5e | ||
|
|
ef63c71412 | ||
|
|
963813cd96 | ||
|
|
40bc313160 | ||
|
|
45bd042713 | ||
|
|
9b303ebcee | ||
|
|
31d3fdd040 | ||
|
|
d6d7448c6a | ||
|
|
83c13991c9 | ||
|
|
7a1c1f8975 | ||
|
|
94edc2ddc8 | ||
|
|
f1ce0c9000 | ||
|
|
9268947eab | ||
|
|
bbc81312d7 | ||
|
|
6f9637e525 | ||
|
|
a504f0affe | ||
|
|
8ff0950897 | ||
|
|
3a87513acc | ||
|
|
a1f9baa6b8 | ||
|
|
bb33bc40ad | ||
|
|
595c0722d7 | ||
|
|
a6b6d0c94b | ||
|
|
b9de06b267 | ||
|
|
cc8ce57be2 | ||
|
|
3e3be79dfd | ||
|
|
6f1fcbc4c6 | ||
|
|
afe488cc19 | ||
|
|
bf6c8ea752 | ||
|
|
9b2b941682 | ||
|
|
32c6651930 | ||
|
|
0dcc5a0d5e | ||
|
|
bce5991c5f | ||
|
|
e8fe3e1cf6 | ||
|
|
1ad7b8db0f | ||
|
|
3da08655cd | ||
|
|
b87f1b2dfc | ||
|
|
ed5396d91e | ||
|
|
f0b6f85aff | ||
|
|
7bbf86f2fe | ||
|
|
c7a1b74c04 | ||
|
|
1ad51b6276 | ||
|
|
76ade64f4b | ||
|
|
c3f2f52e74 | ||
|
|
9c597e4334 | ||
|
|
bad02099bd | ||
|
|
bdd83b2e69 | ||
|
|
1801957473 | ||
|
|
1812652505 | ||
|
|
970e32111e | ||
|
|
c7f6c7b9f6 | ||
|
|
4c4be9e1c9 | ||
|
|
9ae2bc3ca1 | ||
|
|
3be440dcae | ||
|
|
04d73f0952 | ||
|
|
c9e9ece7a3 | ||
|
|
3b194abd70 | ||
|
|
5089cf4365 | ||
|
|
85ea3f49e4 | ||
|
|
11aeb4e734 | ||
|
|
c767e7c27a | ||
|
|
d9f99cf09b | ||
|
|
7e4f1a381e | ||
|
|
ca6f66d311 | ||
|
|
72f2f9f3eb | ||
|
|
c718b5ec2a | ||
|
|
edc2e6afec | ||
|
|
5580b508e3 | ||
|
|
8b177c8f26 | ||
|
|
fa6f383f16 | ||
|
|
7ee630cc50 | ||
|
|
89d1aa92a0 | ||
|
|
0c6cba0357 | ||
|
|
28e1367cfe | ||
|
|
5427c82f63 | ||
|
|
1a367d9c9a | ||
|
|
bfd5cf1204 | ||
|
|
315471e18a | ||
|
|
618e468330 | ||
|
|
9a7f541e9b | ||
|
|
6972fb24fa | ||
|
|
bb1a465686 | ||
|
|
1618770344 | ||
|
|
58683bf9af | ||
|
|
ec52e39a79 | ||
|
|
0af510e40c | ||
|
|
09220fef36 | ||
|
|
56e501f901 | ||
|
|
26e34c1ce3 | ||
|
|
ad3d42ec4f | ||
|
|
33b6b75afa | ||
|
|
29106aca87 | ||
|
|
7f6231bff1 | ||
|
|
377a7b8082 | ||
|
|
d910089c7d | ||
|
|
04f29fa71b | ||
|
|
586a3174f1 | ||
|
|
3c275d96b3 | ||
|
|
f531c8b978 | ||
|
|
f6278cea7c | ||
|
|
240f408e81 | ||
|
|
cdb1602dfe | ||
|
|
59d9061232 | ||
|
|
c9499bdd25 | ||
|
|
a8f8a59fc2 | ||
|
|
cb9359bd04 | ||
|
|
fbca36cbd7 | ||
|
|
b5f9200448 | ||
|
|
a68f226c74 | ||
|
|
6ff9fce161 | ||
|
|
9938e5be66 | ||
|
|
4afb5b057d | ||
|
|
c9c477adae |
41 changed files with 4413 additions and 5305 deletions
5
.gitignore
vendored
5
.gitignore
vendored
|
|
@ -1,3 +1,2 @@
|
||||||
/coreutils-8.10.tar.xz
|
/coreutils-[0-9.]*.tar.xz
|
||||||
/coreutils-8.11.tar.xz
|
/coreutils-[0-9.]*.tar.xz.sig
|
||||||
/coreutils-8.12.tar.xz
|
|
||||||
|
|
|
||||||
7
STAGE1-coreutils
Normal file
7
STAGE1-coreutils
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
srpm coreutils
|
||||||
|
mcd $BUILDDIR/$1
|
||||||
|
(cd $SRC/${1}-*/ ; autoreconf -vif)
|
||||||
|
$SRC/${1}-*/configure $TCONFIGARGS --disable-pam
|
||||||
|
notparallel
|
||||||
|
make $J man1_MANS= V=1
|
||||||
|
make $J man1_MANS= install DESTDIR=${ROOTFS}
|
||||||
|
|
@ -1,18 +0,0 @@
|
||||||
--- coreutils-5.92/src/date.c.langinfo 2005-09-16 09:06:57.000000000 +0100
|
|
||||||
+++ coreutils-5.92/src/date.c 2005-10-24 18:09:16.000000000 +0100
|
|
||||||
@@ -451,14 +451,7 @@
|
|
||||||
format = DATE_FMT_LANGINFO ();
|
|
||||||
if (! *format)
|
|
||||||
{
|
|
||||||
- /* Do not wrap the following literal format string with _(...).
|
|
||||||
- For example, suppose LC_ALL is unset, LC_TIME=POSIX,
|
|
||||||
- and LANG="ko_KR". In that case, POSIX says that LC_TIME
|
|
||||||
- determines the format and contents of date and time strings
|
|
||||||
- written by date, which means "date" must generate output
|
|
||||||
- using the POSIX locale; but adding _() would cause "date"
|
|
||||||
- to use a Korean translation of the format. */
|
|
||||||
- format = "%a %b %e %H:%M:%S %Z %Y";
|
|
||||||
+ format = dcgettext(NULL, N_("%a %b %e %H:%M:%S %Z %Y"), LC_TIME);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
@ -1,109 +0,0 @@
|
||||||
diff -urNp coreutils-8.4-orig/gnulib-tests/gnulib.mk coreutils-8.4/gnulib-tests/gnulib.mk
|
|
||||||
--- coreutils-8.4-orig/gnulib-tests/gnulib.mk 2010-01-13 22:01:30.000000000 +0100
|
|
||||||
+++ coreutils-8.4/gnulib-tests/gnulib.mk 2010-01-14 10:28:17.000000000 +0100
|
|
||||||
@@ -256,9 +256,9 @@ EXTRA_DIST += nap.h test-chown.h test-ch
|
|
||||||
|
|
||||||
## begin gnulib module cloexec-tests
|
|
||||||
|
|
||||||
-TESTS += test-cloexec
|
|
||||||
-check_PROGRAMS += test-cloexec
|
|
||||||
-EXTRA_DIST += test-cloexec.c macros.h
|
|
||||||
+#TESTS += test-cloexec
|
|
||||||
+#check_PROGRAMS += test-cloexec
|
|
||||||
+#EXTRA_DIST += test-cloexec.c macros.h
|
|
||||||
|
|
||||||
## end gnulib module cloexec-tests
|
|
||||||
|
|
||||||
@@ -332,9 +332,9 @@ EXTRA_DIST += test-dirname.c
|
|
||||||
|
|
||||||
## begin gnulib module dup2-tests
|
|
||||||
|
|
||||||
-TESTS += test-dup2
|
|
||||||
-check_PROGRAMS += test-dup2
|
|
||||||
-EXTRA_DIST += test-dup2.c signature.h macros.h
|
|
||||||
+#TESTS += test-dup2
|
|
||||||
+#check_PROGRAMS += test-dup2
|
|
||||||
+#EXTRA_DIST += test-dup2.c signature.h macros.h
|
|
||||||
|
|
||||||
## end gnulib module dup2-tests
|
|
||||||
|
|
||||||
@@ -376,9 +376,9 @@ EXTRA_DIST += test-exclude.c test-exclud
|
|
||||||
|
|
||||||
## begin gnulib module fchdir-tests
|
|
||||||
|
|
||||||
-TESTS += test-fchdir
|
|
||||||
-check_PROGRAMS += test-fchdir
|
|
||||||
-EXTRA_DIST += test-fchdir.c signature.h macros.h
|
|
||||||
+#TESTS += test-fchdir
|
|
||||||
+#check_PROGRAMS += test-fchdir
|
|
||||||
+#EXTRA_DIST += test-fchdir.c signature.h macros.h
|
|
||||||
|
|
||||||
## end gnulib module fchdir-tests
|
|
||||||
|
|
||||||
@@ -855,10 +855,10 @@ EXTRA_DIST += $(top_srcdir)/build-aux/li
|
|
||||||
|
|
||||||
## begin gnulib module linkat-tests
|
|
||||||
|
|
||||||
-TESTS += test-linkat
|
|
||||||
-check_PROGRAMS += test-linkat
|
|
||||||
-test_linkat_LDADD = $(LDADD) @LIBINTL@
|
|
||||||
-EXTRA_DIST += test-link.h test-linkat.c signature.h macros.h
|
|
||||||
+#TESTS += test-linkat
|
|
||||||
+#check_PROGRAMS += test-linkat
|
|
||||||
+#test_linkat_LDADD = $(LDADD) @LIBINTL@
|
|
||||||
+#EXTRA_DIST += test-link.h test-linkat.c signature.h macros.h
|
|
||||||
|
|
||||||
## end gnulib module linkat-tests
|
|
||||||
|
|
||||||
@@ -1532,9 +1532,9 @@ EXTRA_DIST += test-uname.c signature.h m
|
|
||||||
|
|
||||||
## begin gnulib module unistd-safer-tests
|
|
||||||
|
|
||||||
-TESTS += test-dup-safer
|
|
||||||
-check_PROGRAMS += test-dup-safer
|
|
||||||
-EXTRA_DIST += test-dup-safer.c macros.h
|
|
||||||
+#TESTS += test-dup-safer
|
|
||||||
+#check_PROGRAMS += test-dup-safer
|
|
||||||
+#EXTRA_DIST += test-dup-safer.c macros.h
|
|
||||||
|
|
||||||
## end gnulib module unistd-safer-tests
|
|
||||||
|
|
||||||
@@ -1644,10 +1644,10 @@ EXTRA_DIST += test-usleep.c signature.h
|
|
||||||
|
|
||||||
## begin gnulib module utimens-tests
|
|
||||||
|
|
||||||
-TESTS += test-utimens
|
|
||||||
-check_PROGRAMS += test-utimens
|
|
||||||
-test_utimens_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME) @LIBINTL@
|
|
||||||
-EXTRA_DIST += nap.h test-futimens.h test-lutimens.h test-utimens.h test-utimens-common.h test-utimens.c macros.h
|
|
||||||
+#TESTS += test-utimens
|
|
||||||
+#check_PROGRAMS += test-utimens
|
|
||||||
+#test_utimens_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME) @LIBINTL@
|
|
||||||
+#EXTRA_DIST += nap.h test-futimens.h test-lutimens.h test-utimens.h test-utimens-common.h test-utimens.c macros.h
|
|
||||||
|
|
||||||
## end gnulib module utimens-tests
|
|
||||||
|
|
||||||
|
|
||||||
diff -urNp coreutils-8.4-orig/tests/Makefile.am coreutils-8.4/tests/Makefile.am
|
|
||||||
--- coreutils-8.4-orig/tests/Makefile.am 2010-01-03 18:06:20.000000000 +0100
|
|
||||||
+++ coreutils-8.4/tests/Makefile.am 2010-01-14 10:28:17.000000000 +0100
|
|
||||||
@@ -79,7 +79,6 @@ TESTS = \
|
|
||||||
rm/ext3-perf \
|
|
||||||
rm/cycle \
|
|
||||||
cp/link-heap \
|
|
||||||
- tail-2/inotify-hash-abuse \
|
|
||||||
tail-2/inotify-hash-abuse2 \
|
|
||||||
tail-2/F-vs-missing \
|
|
||||||
tail-2/F-vs-rename \
|
|
||||||
diff -urNp coreutils-8.4-orig/tests/touch/no-dereference coreutils-8.4/tests/touch/no-dereference
|
|
||||||
--- coreutils-8.4-orig/tests/touch/no-dereference 2010-01-12 15:36:17.000000000 +0100
|
|
||||||
+++ coreutils-8.4/tests/touch/no-dereference 2010-01-14 10:28:17.000000000 +0100
|
|
||||||
@@ -46,6 +46,8 @@ test -f nowhere && fail=1
|
|
||||||
grep '^#define HAVE_UTIMENSAT 1' "$CONFIG_HEADER" > /dev/null ||
|
|
||||||
grep '^#define HAVE_LUTIMES 1' "$CONFIG_HEADER" > /dev/null ||
|
|
||||||
skip_test_ 'this system lacks the utimensat function'
|
|
||||||
+grep '^#define HAVE_WORKINGKOJI 1' "$CONFIG_HEADER" > /dev/null ||
|
|
||||||
+ skip_test_ 'rest of the test disabled due to koji lack of utimensat function'
|
|
||||||
|
|
||||||
# Changing time of dangling symlink is okay.
|
|
||||||
# Skip the test if this fails, but the error text corresponds to
|
|
||||||
|
|
@ -1,13 +0,0 @@
|
||||||
diff -urNp coreutils-6.12-orig/src/md5sum.c coreutils-6.12/src/md5sum.c
|
|
||||||
--- coreutils-6.12-orig/src/md5sum.c 2008-05-26 08:40:33.000000000 +0200
|
|
||||||
+++ coreutils-6.12/src/md5sum.c 2008-10-21 16:07:28.000000000 +0200
|
|
||||||
@@ -175,6 +175,9 @@ With no FILE, or when FILE is -, read st
|
|
||||||
fputs (_("\
|
|
||||||
-t, --text read in text mode (default)\n\
|
|
||||||
"), stdout);
|
|
||||||
+ fputs (_("\
|
|
||||||
+ Note: There is no difference between binary and text mode option on GNU system.\n\
|
|
||||||
+"), stdout);
|
|
||||||
fputs (_("\
|
|
||||||
\n\
|
|
||||||
The following three options are useful only when verifying checksums:\n\
|
|
||||||
|
|
@ -1,12 +0,0 @@
|
||||||
diff -urNp coreutils-7.4-orig/src/stty.c coreutils-7.4/src/stty.c
|
|
||||||
--- coreutils-7.4-orig/src/stty.c 2009-04-24 14:41:19.000000000 +0200
|
|
||||||
+++ coreutils-7.4/src/stty.c 2009-06-11 10:15:41.000000000 +0200
|
|
||||||
@@ -1001,7 +1001,7 @@ main (int argc, char **argv)
|
|
||||||
spurious difference in an uninitialized portion of the structure. */
|
|
||||||
DECLARE_ZEROED_AGGREGATE (struct termios, new_mode);
|
|
||||||
|
|
||||||
- if (tcsetattr (STDIN_FILENO, TCSADRAIN, &mode))
|
|
||||||
+ if (tcsetattr (STDIN_FILENO, TCSANOW, &mode))
|
|
||||||
error (EXIT_FAILURE, errno, "%s", device_name);
|
|
||||||
|
|
||||||
/* POSIX (according to Zlotnick's book) tcsetattr returns zero if
|
|
||||||
|
|
@ -1,49 +0,0 @@
|
||||||
diff -urNp coreutils-8.2-orig/src/uname.c coreutils-8.2/src/uname.c
|
|
||||||
--- coreutils-8.2-orig/src/uname.c 2009-09-23 10:25:44.000000000 +0200
|
|
||||||
+++ coreutils-8.2/src/uname.c 2009-12-19 09:09:11.663607110 +0100
|
|
||||||
@@ -301,7 +301,7 @@ main (int argc, char **argv)
|
|
||||||
|
|
||||||
if (toprint & PRINT_PROCESSOR)
|
|
||||||
{
|
|
||||||
- char const *element = unknown;
|
|
||||||
+ char *element = unknown;
|
|
||||||
#if HAVE_SYSINFO && defined SI_ARCHITECTURE
|
|
||||||
{
|
|
||||||
static char processor[257];
|
|
||||||
@@ -308,6 +308,12 @@ main (int argc, char **argv)
|
|
||||||
if (0 <= sysinfo (SI_ARCHITECTURE, processor, sizeof processor))
|
|
||||||
element = processor;
|
|
||||||
}
|
|
||||||
+#else
|
|
||||||
+ {
|
|
||||||
+ struct utsname u;
|
|
||||||
+ uname(&u);
|
|
||||||
+ element = u.machine;
|
|
||||||
+ }
|
|
||||||
#endif
|
|
||||||
#ifdef UNAME_PROCESSOR
|
|
||||||
if (element == unknown)
|
|
||||||
@@ -351,7 +357,7 @@ main (int argc, char **argv)
|
|
||||||
|
|
||||||
if (toprint & PRINT_HARDWARE_PLATFORM)
|
|
||||||
{
|
|
||||||
- char const *element = unknown;
|
|
||||||
+ char *element = unknown;
|
|
||||||
#if HAVE_SYSINFO && defined SI_PLATFORM
|
|
||||||
{
|
|
||||||
static char hardware_platform[257];
|
|
||||||
@@ -353,6 +359,14 @@ main (int argc, char **argv)
|
|
||||||
hardware_platform, sizeof hardware_platform))
|
|
||||||
element = hardware_platform;
|
|
||||||
}
|
|
||||||
+#else
|
|
||||||
+ {
|
|
||||||
+ struct utsname u;
|
|
||||||
+ uname(&u);
|
|
||||||
+ element = u.machine;
|
|
||||||
+ if(strlen(element)==4 && element[0]=='i' && element[2]=='8' && element[3]=='6')
|
|
||||||
+ element[1]='3';
|
|
||||||
+ }
|
|
||||||
#endif
|
|
||||||
#ifdef UNAME_HARDWARE_PLATFORM
|
|
||||||
if (element == unknown)
|
|
||||||
26
coreutils-8.26-selinuxenable.patch
Normal file
26
coreutils-8.26-selinuxenable.patch
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
From 6880c3dc9098b3337612850d1500b474aeb944ca Mon Sep 17 00:00:00 2001
|
||||||
|
From: Kamil Dudka <kdudka@redhat.com>
|
||||||
|
Date: Tue, 29 Aug 2017 17:33:51 +0200
|
||||||
|
Subject: [PATCH] require_selinux_(): use selinuxenabled(8) if available
|
||||||
|
|
||||||
|
---
|
||||||
|
init.cfg | 3 +++
|
||||||
|
1 file changed, 3 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/init.cfg b/init.cfg
|
||||||
|
index af6b581..f887b3a 100644
|
||||||
|
--- a/init.cfg
|
||||||
|
+++ b/init.cfg
|
||||||
|
@@ -114,6 +114,9 @@ require_selinux_()
|
||||||
|
grep 'selinuxfs$' /proc/filesystems > /dev/null \
|
||||||
|
|| skip_ "this system lacks SELinux support"
|
||||||
|
|
||||||
|
+ # use the 'selinuxenabled' utility if available
|
||||||
|
+ selinuxenabled; [ $? = 1 ] && skip_ "SELinux is disabled"
|
||||||
|
+
|
||||||
|
# Independent of whether SELinux is enabled system-wide,
|
||||||
|
# the current file system may lack SELinux support.
|
||||||
|
# Also the current build may have SELinux support disabled.
|
||||||
|
--
|
||||||
|
2.9.5
|
||||||
|
|
||||||
29
coreutils-8.26-test-lock.patch
Normal file
29
coreutils-8.26-test-lock.patch
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
From 0d04ee8ddedb2bf33d64f148f246a3b7ec4fef21 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Kamil Dudka <kdudka@redhat.com>
|
||||||
|
Date: Mon, 23 Jan 2017 12:35:41 +0100
|
||||||
|
Subject: [PATCH] test-lock: disable the rwlock test
|
||||||
|
|
||||||
|
It hangs indefinitely if the system rwlock implementation does not
|
||||||
|
prevent writer starvation (and glibc does not implement it).
|
||||||
|
|
||||||
|
Bug: http://www.mail-archive.com/bug-gnulib@gnu.org/msg33017.html
|
||||||
|
---
|
||||||
|
gnulib-tests/test-lock.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/gnulib-tests/test-lock.c b/gnulib-tests/test-lock.c
|
||||||
|
index aa6de27..5af0a6c 100644
|
||||||
|
--- a/gnulib-tests/test-lock.c
|
||||||
|
+++ b/gnulib-tests/test-lock.c
|
||||||
|
@@ -42,7 +42,7 @@
|
||||||
|
Uncomment some of these, to verify that all tests crash if no locking
|
||||||
|
is enabled. */
|
||||||
|
#define DO_TEST_LOCK 1
|
||||||
|
-#define DO_TEST_RWLOCK 1
|
||||||
|
+#define DO_TEST_RWLOCK 0
|
||||||
|
#define DO_TEST_RECURSIVE_LOCK 1
|
||||||
|
#define DO_TEST_ONCE 1
|
||||||
|
|
||||||
|
--
|
||||||
|
2.7.4
|
||||||
|
|
||||||
100
coreutils-8.32-DIR_COLORS.patch
Normal file
100
coreutils-8.32-DIR_COLORS.patch
Normal file
|
|
@ -0,0 +1,100 @@
|
||||||
|
From bca11e30e8a6281a8cbddc9fb196dd86ab09c955 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Kamil Dudka <kdudka@redhat.com>
|
||||||
|
Date: Fri, 17 Jun 2016 16:58:18 +0200
|
||||||
|
Subject: [PATCH] downstream changes to default DIR_COLORS
|
||||||
|
|
||||||
|
---
|
||||||
|
DIR_COLORS | 9 ++++++++-
|
||||||
|
DIR_COLORS.lightbgcolor | 21 +++++++++++++++------
|
||||||
|
2 files changed, 23 insertions(+), 7 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/DIR_COLORS b/DIR_COLORS
|
||||||
|
index 540f6cd..b4785b6 100644
|
||||||
|
--- a/DIR_COLORS
|
||||||
|
+++ b/DIR_COLORS
|
||||||
|
@@ -1,3 +1,7 @@
|
||||||
|
+# This file goes in the /etc directory, and must be world readable.
|
||||||
|
+# You can override the system defaults by making a copy of this file
|
||||||
|
+# as ~/.dir_colors
|
||||||
|
+
|
||||||
|
# Configuration file for dircolors, a utility to help you set the
|
||||||
|
# LS_COLORS environment variable used by GNU ls with the --color option.
|
||||||
|
|
||||||
|
@@ -11,6 +15,9 @@
|
||||||
|
|
||||||
|
# Global config options can be specified before TERM or COLORTERM entries
|
||||||
|
|
||||||
|
+# For compatibility, the pattern "^COLOR.*none" is recognized as a way to
|
||||||
|
+# disable colorization. See https://bugzilla.redhat.com/1349579 for details.
|
||||||
|
+
|
||||||
|
# ===================================================================
|
||||||
|
# Terminal filters
|
||||||
|
# ===================================================================
|
||||||
|
@@ -70,7 +77,7 @@ DOOR 01;35 # door
|
||||||
|
BLK 40;33;01 # block device driver
|
||||||
|
CHR 40;33;01 # character device driver
|
||||||
|
ORPHAN 40;31;01 # symlink to nonexistent file, or non-stat'able file ...
|
||||||
|
-MISSING 00 # ... and the files they point to
|
||||||
|
+MISSING 01;37;41 # ... and the files they point to
|
||||||
|
SETUID 37;41 # regular file that is setuid (u+s)
|
||||||
|
SETGID 30;43 # regular file that is setgid (g+s)
|
||||||
|
CAPABILITY 00 # regular file with capability (very expensive to lookup)
|
||||||
|
diff --git a/DIR_COLORS.lightbgcolor b/DIR_COLORS.lightbgcolor
|
||||||
|
index e3b0ec3..39a0a4c 100644
|
||||||
|
--- a/DIR_COLORS.lightbgcolor
|
||||||
|
+++ b/DIR_COLORS.lightbgcolor
|
||||||
|
@@ -1,3 +1,9 @@
|
||||||
|
+# Configuration file for the color ls utility - modified for lighter backgrounds
|
||||||
|
+
|
||||||
|
+# This file goes in the /etc directory, and must be world readable.
|
||||||
|
+# You can override the system defaults by making a copy of this file
|
||||||
|
+# as ~/.dir_colors
|
||||||
|
+
|
||||||
|
# Configuration file for dircolors, a utility to help you set the
|
||||||
|
# LS_COLORS environment variable used by GNU ls with the --color option.
|
||||||
|
|
||||||
|
@@ -11,6 +17,9 @@
|
||||||
|
|
||||||
|
# Global config options can be specified before TERM or COLORTERM entries
|
||||||
|
|
||||||
|
+# For compatibility, the pattern "^COLOR.*none" is recognized as a way to
|
||||||
|
+# disable colorization. See https://bugzilla.redhat.com/1349579 for details.
|
||||||
|
+
|
||||||
|
# ===================================================================
|
||||||
|
# Terminal filters
|
||||||
|
# ===================================================================
|
||||||
|
@@ -60,17 +69,17 @@ TERM xterm*
|
||||||
|
#NORMAL 00 # no color code at all
|
||||||
|
#FILE 00 # regular file: use no color at all
|
||||||
|
RESET 0 # reset to "normal" color
|
||||||
|
-DIR 01;34 # directory
|
||||||
|
-LINK 01;36 # symbolic link. (If you set this to 'target' instead of a
|
||||||
|
+DIR 00;34 # directory
|
||||||
|
+LINK 00;36 # symbolic link. (If you set this to 'target' instead of a
|
||||||
|
# numerical value, the color is as for the file pointed to.)
|
||||||
|
MULTIHARDLINK 00 # regular file with more than one link
|
||||||
|
FIFO 40;33 # pipe
|
||||||
|
-SOCK 01;35 # socket
|
||||||
|
-DOOR 01;35 # door
|
||||||
|
+SOCK 00;35 # socket
|
||||||
|
+DOOR 00;35 # door
|
||||||
|
BLK 40;33;01 # block device driver
|
||||||
|
CHR 40;33;01 # character device driver
|
||||||
|
ORPHAN 40;31;01 # symlink to nonexistent file, or non-stat'able file ...
|
||||||
|
-MISSING 00 # ... and the files they point to
|
||||||
|
+MISSING 01;37;41 # ... and the files they point to
|
||||||
|
SETUID 37;41 # regular file that is setuid (u+s)
|
||||||
|
SETGID 30;43 # regular file that is setgid (g+s)
|
||||||
|
CAPABILITY 00 # regular file with capability (very expensive to lookup)
|
||||||
|
@@ -79,7 +88,7 @@ OTHER_WRITABLE 34;42 # dir that is other-writable (o+w) and not sticky
|
||||||
|
STICKY 37;44 # dir with the sticky bit set (+t) and not other-writable
|
||||||
|
|
||||||
|
# This is for regular files with execute permission:
|
||||||
|
-EXEC 01;32
|
||||||
|
+EXEC 00;32
|
||||||
|
|
||||||
|
# ===================================================================
|
||||||
|
# File extension attributes
|
||||||
|
--
|
||||||
|
2.49.0
|
||||||
|
|
||||||
|
|
@ -1,12 +0,0 @@
|
||||||
diff -urNp coreutils-8.4-orig/doc/coreutils.texi coreutils-8.4/doc/coreutils.texi
|
|
||||||
--- coreutils-8.4-orig/doc/coreutils.texi 2011-01-07 15:01:18.575654333 +0100
|
|
||||||
+++ coreutils-8.4/doc/coreutils.texi 2011-01-07 15:05:38.791655243 +0100
|
|
||||||
@@ -9058,6 +9058,8 @@ incorrect. @xref{Directory Setuid and S
|
|
||||||
set-user-ID and set-group-ID bits of directories are inherited unless
|
|
||||||
overridden in this way.
|
|
||||||
|
|
||||||
+Note: The @option{--mode},@option{-m} option only applies to the right-most directories listed on the command line. When combined with @option{--parents}, @option{-p} option, any parent directories are created with @samp{u+wx} modified by umask.
|
|
||||||
+
|
|
||||||
@item -p
|
|
||||||
@itemx --parents
|
|
||||||
@opindex -p
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
diff -urNp coreutils-8.4-orig/src/Makefile.am coreutils-8.4/src/Makefile.am
|
|
||||||
--- coreutils-8.4-orig/src/Makefile.am 2010-09-03 17:34:43.399747649 +0200
|
|
||||||
+++ coreutils-8.4/src/Makefile.am 2010-09-03 17:36:13.005765125 +0200
|
|
||||||
@@ -367,6 +367,7 @@ factor_LDADD += $(LIB_GMP)
|
|
||||||
|
|
||||||
# for crypt and pam
|
|
||||||
su_LDADD += $(LIB_CRYPT) $(PAM_LIBS)
|
|
||||||
+su_LDFLAGS = -pie -Wl,-z,relro,-z,now
|
|
||||||
|
|
||||||
# for various ACL functions
|
|
||||||
copy_LDADD += $(LIB_ACL)
|
|
||||||
|
|
@ -1,13 +0,0 @@
|
||||||
diff -urNp coreutils-8.5-orig/src/dircolors.hin coreutils-8.5/src/dircolors.hin
|
|
||||||
--- coreutils-8.5-orig/src/dircolors.hin 2010-04-20 21:52:04.000000000 +0200
|
|
||||||
+++ coreutils-8.5/src/dircolors.hin 2010-07-22 16:18:41.978036926 +0200
|
|
||||||
@@ -127,6 +127,9 @@ EXEC 01;32
|
|
||||||
.deb 01;31
|
|
||||||
.rpm 01;31
|
|
||||||
.jar 01;31
|
|
||||||
+.war 01;31
|
|
||||||
+.ear 01;31
|
|
||||||
+.sar 01;31
|
|
||||||
.rar 01;31
|
|
||||||
.ace 01;31
|
|
||||||
.zoo 01;31
|
|
||||||
|
|
@ -1,428 +0,0 @@
|
||||||
From ea2d050b1952feb99f86c98255280beb6e589d8c Mon Sep 17 00:00:00 2001
|
|
||||||
From: Ludwig Nussel <ludwig.nussel@suse.de>
|
|
||||||
Date: Tue, 17 Aug 2010 13:21:44 +0200
|
|
||||||
Subject: [PATCH 1/7] pam support for su
|
|
||||||
|
|
||||||
---
|
|
||||||
configure.ac | 14 +++
|
|
||||||
src/Makefile.am | 4 +-
|
|
||||||
src/su.c | 266 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-
|
|
||||||
3 files changed, 278 insertions(+), 6 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/configure.ac b/configure.ac
|
|
||||||
index b07a52b..1fb5839 100644
|
|
||||||
--- a/configure.ac
|
|
||||||
+++ b/configure.ac
|
|
||||||
@@ -128,6 +128,20 @@ fi
|
|
||||||
|
|
||||||
AC_FUNC_FORK
|
|
||||||
|
|
||||||
+AC_ARG_ENABLE(pam, AS_HELP_STRING([--disable-pam],
|
|
||||||
+ [Disable PAM support in su (default=auto)]), , [enable_pam=yes])
|
|
||||||
+if test "x$enable_pam" != xno; then
|
|
||||||
+ AC_CHECK_LIB([pam], [pam_start], [enable_pam=yes], [enable_pam=no])
|
|
||||||
+ AC_CHECK_LIB([pam_misc], [misc_conv], [:], [enable_pam=no])
|
|
||||||
+ if test "x$enable_pam" != xno; then
|
|
||||||
+ AC_DEFINE(USE_PAM, 1, [Define if you want to use PAM])
|
|
||||||
+ PAM_LIBS="-lpam -lpam_misc"
|
|
||||||
+ AC_SUBST(PAM_LIBS)
|
|
||||||
+ fi
|
|
||||||
+fi
|
|
||||||
+AC_MSG_CHECKING([whether to enable PAM support in su])
|
|
||||||
+AC_MSG_RESULT([$enable_pam])
|
|
||||||
+
|
|
||||||
optional_bin_progs=
|
|
||||||
AC_CHECK_FUNCS([chroot],
|
|
||||||
gl_ADD_PROG([optional_bin_progs], [chroot]))
|
|
||||||
diff --git a/src/Makefile.am b/src/Makefile.am
|
|
||||||
index db5359b..154a5ed 100644
|
|
||||||
--- a/src/Makefile.am
|
|
||||||
+++ b/src/Makefile.am
|
|
||||||
@@ -363,8 +363,8 @@ factor_LDADD += $(LIB_GMP)
|
|
||||||
# for getloadavg
|
|
||||||
uptime_LDADD += $(GETLOADAVG_LIBS)
|
|
||||||
|
|
||||||
-# for crypt
|
|
||||||
-su_LDADD += $(LIB_CRYPT)
|
|
||||||
+# for crypt and pam
|
|
||||||
+su_LDADD += $(LIB_CRYPT) $(PAM_LIBS)
|
|
||||||
|
|
||||||
# for various ACL functions
|
|
||||||
copy_LDADD += $(LIB_ACL)
|
|
||||||
diff --git a/src/su.c b/src/su.c
|
|
||||||
index f8f5b61..811aad7 100644
|
|
||||||
--- a/src/su.c
|
|
||||||
+++ b/src/su.c
|
|
||||||
@@ -37,6 +37,16 @@
|
|
||||||
restricts who can su to UID 0 accounts. RMS considers that to
|
|
||||||
be fascist.
|
|
||||||
|
|
||||||
+#ifdef USE_PAM
|
|
||||||
+
|
|
||||||
+ Actually, with PAM, su has nothing to do with whether or not a
|
|
||||||
+ wheel group is enforced by su. RMS tries to restrict your access
|
|
||||||
+ to a su which implements the wheel group, but PAM considers that
|
|
||||||
+ to be fascist, and gives the user/sysadmin the opportunity to
|
|
||||||
+ enforce a wheel group by proper editing of /etc/pam.d/su
|
|
||||||
+
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
Compile-time options:
|
|
||||||
-DSYSLOG_SUCCESS Log successful su's (by default, to root) with syslog.
|
|
||||||
-DSYSLOG_FAILURE Log failed su's (by default, to root) with syslog.
|
|
||||||
@@ -52,6 +62,13 @@
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <pwd.h>
|
|
||||||
#include <grp.h>
|
|
||||||
+#ifdef USE_PAM
|
|
||||||
+#include <security/pam_appl.h>
|
|
||||||
+#include <security/pam_misc.h>
|
|
||||||
+#include <signal.h>
|
|
||||||
+#include <sys/wait.h>
|
|
||||||
+#include <sys/fsuid.h>
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
#include "system.h"
|
|
||||||
#include "getpass.h"
|
|
||||||
@@ -111,7 +128,9 @@
|
|
||||||
/* The user to become if none is specified. */
|
|
||||||
#define DEFAULT_USER "root"
|
|
||||||
|
|
||||||
+#ifndef USE_PAM
|
|
||||||
char *crypt (char const *key, char const *salt);
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
static void run_shell (char const *, char const *, char **, size_t)
|
|
||||||
ATTRIBUTE_NORETURN;
|
|
||||||
@@ -125,6 +144,11 @@ static bool simulate_login;
|
|
||||||
/* If true, change some environment vars to indicate the user su'd to. */
|
|
||||||
static bool change_environment;
|
|
||||||
|
|
||||||
+#ifdef USE_PAM
|
|
||||||
+static bool _pam_session_opened;
|
|
||||||
+static bool _pam_cred_established;
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
static struct option const longopts[] =
|
|
||||||
{
|
|
||||||
{"command", required_argument, NULL, 'c'},
|
|
||||||
@@ -200,7 +224,164 @@ log_su (struct passwd const *pw, bool successful)
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
+#ifdef USE_PAM
|
|
||||||
+#define PAM_SERVICE_NAME PROGRAM_NAME
|
|
||||||
+#define PAM_SERVICE_NAME_L PROGRAM_NAME "-l"
|
|
||||||
+static sig_atomic_t volatile caught_signal = false;
|
|
||||||
+static pam_handle_t *pamh = NULL;
|
|
||||||
+static int retval;
|
|
||||||
+static struct pam_conv conv =
|
|
||||||
+{
|
|
||||||
+ misc_conv,
|
|
||||||
+ NULL
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+#define PAM_BAIL_P(a) \
|
|
||||||
+ if (retval) \
|
|
||||||
+ { \
|
|
||||||
+ pam_end (pamh, retval); \
|
|
||||||
+ a; \
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+static void
|
|
||||||
+cleanup_pam (int retcode)
|
|
||||||
+{
|
|
||||||
+ if (_pam_session_opened)
|
|
||||||
+ pam_close_session (pamh, 0);
|
|
||||||
+
|
|
||||||
+ if (_pam_cred_established)
|
|
||||||
+ pam_setcred (pamh, PAM_DELETE_CRED | PAM_SILENT);
|
|
||||||
+
|
|
||||||
+ pam_end(pamh, retcode);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+/* Signal handler for parent process. */
|
|
||||||
+static void
|
|
||||||
+su_catch_sig (int sig)
|
|
||||||
+{
|
|
||||||
+ caught_signal = true;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+/* Export env variables declared by PAM modules. */
|
|
||||||
+static void
|
|
||||||
+export_pamenv (void)
|
|
||||||
+{
|
|
||||||
+ char **env;
|
|
||||||
+
|
|
||||||
+ /* This is a copy but don't care to free as we exec later anyways. */
|
|
||||||
+ env = pam_getenvlist (pamh);
|
|
||||||
+ while (env && *env)
|
|
||||||
+ {
|
|
||||||
+ if (putenv (*env) != 0)
|
|
||||||
+ xalloc_die ();
|
|
||||||
+ env++;
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static void
|
|
||||||
+create_watching_parent (void)
|
|
||||||
+{
|
|
||||||
+ pid_t child;
|
|
||||||
+ sigset_t ourset;
|
|
||||||
+ int status = 0;
|
|
||||||
+
|
|
||||||
+ retval = pam_open_session (pamh, 0);
|
|
||||||
+ if (retval != PAM_SUCCESS)
|
|
||||||
+ {
|
|
||||||
+ cleanup_pam (retval);
|
|
||||||
+ error (EXIT_FAILURE, 0, _("cannot not open session: %s"),
|
|
||||||
+ pam_strerror (pamh, retval));
|
|
||||||
+ }
|
|
||||||
+ else
|
|
||||||
+ _pam_session_opened = 1;
|
|
||||||
+
|
|
||||||
+ child = fork ();
|
|
||||||
+ if (child == (pid_t) -1)
|
|
||||||
+ {
|
|
||||||
+ cleanup_pam (PAM_ABORT);
|
|
||||||
+ error (EXIT_FAILURE, errno, _("cannot create child process"));
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ /* the child proceeds to run the shell */
|
|
||||||
+ if (child == 0)
|
|
||||||
+ return;
|
|
||||||
+
|
|
||||||
+ /* In the parent watch the child. */
|
|
||||||
+
|
|
||||||
+ /* su without pam support does not have a helper that keeps
|
|
||||||
+ sitting on any directory so let's go to /. */
|
|
||||||
+ if (chdir ("/") != 0)
|
|
||||||
+ error (0, errno, _("warning: cannot change directory to %s"), "/");
|
|
||||||
+
|
|
||||||
+ sigfillset (&ourset);
|
|
||||||
+ if (sigprocmask (SIG_BLOCK, &ourset, NULL))
|
|
||||||
+ {
|
|
||||||
+ error (0, errno, _("cannot block signals"));
|
|
||||||
+ caught_signal = true;
|
|
||||||
+ }
|
|
||||||
+ if (!caught_signal)
|
|
||||||
+ {
|
|
||||||
+ struct sigaction action;
|
|
||||||
+ action.sa_handler = su_catch_sig;
|
|
||||||
+ sigemptyset (&action.sa_mask);
|
|
||||||
+ action.sa_flags = 0;
|
|
||||||
+ sigemptyset (&ourset);
|
|
||||||
+ if (sigaddset (&ourset, SIGTERM)
|
|
||||||
+ || sigaddset (&ourset, SIGALRM)
|
|
||||||
+ || sigaction (SIGTERM, &action, NULL)
|
|
||||||
+ || sigprocmask (SIG_UNBLOCK, &ourset, NULL))
|
|
||||||
+ {
|
|
||||||
+ error (0, errno, _("cannot set signal handler"));
|
|
||||||
+ caught_signal = true;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ if (!caught_signal)
|
|
||||||
+ {
|
|
||||||
+ pid_t pid;
|
|
||||||
+ for (;;)
|
|
||||||
+ {
|
|
||||||
+ pid = waitpid (child, &status, WUNTRACED);
|
|
||||||
+
|
|
||||||
+ if (pid != (pid_t)-1 && WIFSTOPPED (status))
|
|
||||||
+ {
|
|
||||||
+ kill (getpid (), SIGSTOP);
|
|
||||||
+ /* once we get here, we must have resumed */
|
|
||||||
+ kill (pid, SIGCONT);
|
|
||||||
+ }
|
|
||||||
+ else
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
+ if (pid != (pid_t)-1)
|
|
||||||
+ if (WIFSIGNALED (status))
|
|
||||||
+ status = WTERMSIG (status) + 128;
|
|
||||||
+ else
|
|
||||||
+ status = WEXITSTATUS (status);
|
|
||||||
+ else
|
|
||||||
+ status = 1;
|
|
||||||
+ }
|
|
||||||
+ else
|
|
||||||
+ status = 1;
|
|
||||||
+
|
|
||||||
+ if (caught_signal)
|
|
||||||
+ {
|
|
||||||
+ fprintf (stderr, _("\nSession terminated, killing shell..."));
|
|
||||||
+ kill (child, SIGTERM);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ cleanup_pam (PAM_SUCCESS);
|
|
||||||
+
|
|
||||||
+ if (caught_signal)
|
|
||||||
+ {
|
|
||||||
+ sleep (2);
|
|
||||||
+ kill (child, SIGKILL);
|
|
||||||
+ fprintf (stderr, _(" ...killed.\n"));
|
|
||||||
+ }
|
|
||||||
+ exit (status);
|
|
||||||
+}
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
/* Ask the user for a password.
|
|
||||||
+ If PAM is in use, let PAM ask for the password if necessary.
|
|
||||||
Return true if the user gives the correct password for entry PW,
|
|
||||||
false if not. Return true without asking for a password if run by UID 0
|
|
||||||
or if PW has an empty password. */
|
|
||||||
@@ -208,10 +389,52 @@ log_su (struct passwd const *pw, bool successful)
|
|
||||||
static bool
|
|
||||||
correct_password (const struct passwd *pw)
|
|
||||||
{
|
|
||||||
+#ifdef USE_PAM
|
|
||||||
+ const struct passwd *lpw;
|
|
||||||
+ const char *cp;
|
|
||||||
+
|
|
||||||
+ retval = pam_start (simulate_login ? PAM_SERVICE_NAME_L : PAM_SERVICE_NAME,
|
|
||||||
+ pw->pw_name, &conv, &pamh);
|
|
||||||
+ PAM_BAIL_P (return false);
|
|
||||||
+
|
|
||||||
+ if (isatty (0) && (cp = ttyname (0)) != NULL)
|
|
||||||
+ {
|
|
||||||
+ const char *tty;
|
|
||||||
+
|
|
||||||
+ if (strncmp (cp, "/dev/", 5) == 0)
|
|
||||||
+ tty = cp + 5;
|
|
||||||
+ else
|
|
||||||
+ tty = cp;
|
|
||||||
+ retval = pam_set_item (pamh, PAM_TTY, tty);
|
|
||||||
+ PAM_BAIL_P (return false);
|
|
||||||
+ }
|
|
||||||
+#if 0 /* Manpage discourages use of getlogin. */
|
|
||||||
+ cp = getlogin ();
|
|
||||||
+ if (!(cp && *cp && (lpw = getpwnam (cp)) != NULL && lpw->pw_uid == getuid ()))
|
|
||||||
+#endif
|
|
||||||
+ lpw = getpwuid (getuid ());
|
|
||||||
+ if (lpw && lpw->pw_name)
|
|
||||||
+ {
|
|
||||||
+ retval = pam_set_item (pamh, PAM_RUSER, (const void *) lpw->pw_name);
|
|
||||||
+ PAM_BAIL_P (return false);
|
|
||||||
+ }
|
|
||||||
+ retval = pam_authenticate (pamh, 0);
|
|
||||||
+ PAM_BAIL_P (return false);
|
|
||||||
+ retval = pam_acct_mgmt (pamh, 0);
|
|
||||||
+ if (retval == PAM_NEW_AUTHTOK_REQD)
|
|
||||||
+ {
|
|
||||||
+ /* Password has expired. Offer option to change it. */
|
|
||||||
+ retval = pam_chauthtok (pamh, PAM_CHANGE_EXPIRED_AUTHTOK);
|
|
||||||
+ PAM_BAIL_P (return false);
|
|
||||||
+ }
|
|
||||||
+ PAM_BAIL_P (return false);
|
|
||||||
+ /* Must be authenticated if this point was reached. */
|
|
||||||
+ return true;
|
|
||||||
+#else /* !USE_PAM */
|
|
||||||
char *unencrypted, *encrypted, *correct;
|
|
||||||
#if HAVE_GETSPNAM && HAVE_STRUCT_SPWD_SP_PWDP
|
|
||||||
/* Shadow passwd stuff for SVR3 and maybe other systems. */
|
|
||||||
- struct spwd *sp = getspnam (pw->pw_name);
|
|
||||||
+ const struct spwd *sp = getspnam (pw->pw_name);
|
|
||||||
|
|
||||||
endspent ();
|
|
||||||
if (sp)
|
|
||||||
@@ -232,6 +455,7 @@ correct_password (const struct passwd *pw)
|
|
||||||
encrypted = crypt (unencrypted, correct);
|
|
||||||
memset (unencrypted, 0, strlen (unencrypted));
|
|
||||||
return STREQ (encrypted, correct);
|
|
||||||
+#endif /* !USE_PAM */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Update `environ' for the new shell based on PW, with SHELL being
|
|
||||||
@@ -274,19 +498,41 @@ modify_environment (const struct passwd *pw, const char *shell)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+#ifdef USE_PAM
|
|
||||||
+ export_pamenv ();
|
|
||||||
+#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Become the user and group(s) specified by PW. */
|
|
||||||
|
|
||||||
static void
|
|
||||||
-change_identity (const struct passwd *pw)
|
|
||||||
+init_groups (const struct passwd *pw)
|
|
||||||
{
|
|
||||||
#ifdef HAVE_INITGROUPS
|
|
||||||
errno = 0;
|
|
||||||
if (initgroups (pw->pw_name, pw->pw_gid) == -1)
|
|
||||||
- error (EXIT_CANCELED, errno, _("cannot set groups"));
|
|
||||||
+ {
|
|
||||||
+#ifdef USE_PAM
|
|
||||||
+ cleanup_pam (PAM_ABORT);
|
|
||||||
+#endif
|
|
||||||
+ error (EXIT_FAILURE, errno, _("cannot set groups"));
|
|
||||||
+ }
|
|
||||||
endgrent ();
|
|
||||||
#endif
|
|
||||||
+
|
|
||||||
+#ifdef USE_PAM
|
|
||||||
+ retval = pam_setcred (pamh, PAM_ESTABLISH_CRED);
|
|
||||||
+ if (retval != PAM_SUCCESS)
|
|
||||||
+ error (EXIT_FAILURE, 0, "%s", pam_strerror (pamh, retval));
|
|
||||||
+ else
|
|
||||||
+ _pam_cred_established = 1;
|
|
||||||
+#endif
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static void
|
|
||||||
+change_identity (const struct passwd *pw)
|
|
||||||
+{
|
|
||||||
if (setgid (pw->pw_gid))
|
|
||||||
error (EXIT_CANCELED, errno, _("cannot set group id"));
|
|
||||||
if (setuid (pw->pw_uid))
|
|
||||||
@@ -500,9 +746,21 @@ main (int argc, char **argv)
|
|
||||||
shell = NULL;
|
|
||||||
}
|
|
||||||
shell = xstrdup (shell ? shell : pw->pw_shell);
|
|
||||||
- modify_environment (pw, shell);
|
|
||||||
+
|
|
||||||
+ init_groups (pw);
|
|
||||||
+
|
|
||||||
+#ifdef USE_PAM
|
|
||||||
+ create_watching_parent ();
|
|
||||||
+ /* Now we're in the child. */
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
change_identity (pw);
|
|
||||||
+
|
|
||||||
+ /* Set environment after pam_open_session, which may put KRB5CCNAME
|
|
||||||
+ into the pam_env, etc. */
|
|
||||||
+
|
|
||||||
+ modify_environment (pw, shell);
|
|
||||||
+
|
|
||||||
if (simulate_login && chdir (pw->pw_dir) != 0)
|
|
||||||
error (0, errno, _("warning: cannot change directory to %s"), pw->pw_dir);
|
|
||||||
|
|
||||||
--
|
|
||||||
1.7.1
|
|
||||||
diff -urNp coreutils-8.7-orig/doc/coreutils.texi coreutils-8.7/doc/coreutils.texi
|
|
||||||
--- coreutils-8.7-orig/doc/coreutils.texi 2010-11-15 12:47:03.529922880 +0100
|
|
||||||
+++ coreutils-8.7/doc/coreutils.texi 2010-11-15 12:49:55.945171380 +0100
|
|
||||||
@@ -15180,7 +15180,9 @@ the exit status of @var{command} otherwi
|
|
||||||
|
|
||||||
@command{su} allows one user to temporarily become another user. It runs a
|
|
||||||
command (often an interactive shell) with the real and effective user
|
|
||||||
-ID, group ID, and supplemental groups of a given @var{user}. Synopsis:
|
|
||||||
+ID, group ID, and supplemental groups of a given @var{user}. When the -l
|
|
||||||
+option is given, the su-l PAM file is used instead of the default su PAM file.
|
|
||||||
+Synopsis:
|
|
||||||
|
|
||||||
@example
|
|
||||||
su [@var{option}]@dots{} [@var{user} [@var{arg}]@dots{}]
|
|
||||||
@@ -15259,7 +15261,8 @@ environment variables except @env{TERM},
|
|
||||||
(which are set, even for the super-user, as described above), and set
|
|
||||||
@env{PATH} to a compiled-in default value. Change to @var{user}'s home
|
|
||||||
directory. Prepend @samp{-} to the shell's name, intended to make it
|
|
||||||
-read its login startup file(s).
|
|
||||||
+read its login startup file(s). When this option is given, /etc/pam.d/su-l
|
|
||||||
+PAM file is used instead of the default one.
|
|
||||||
|
|
||||||
@item -m
|
|
||||||
@itemx -p
|
|
||||||
|
|
@ -1,342 +0,0 @@
|
||||||
diff -urNp coreutils-8.7-orig/AUTHORS coreutils-8.7/AUTHORS
|
|
||||||
--- coreutils-8.7-orig/AUTHORS 2010-10-11 19:35:11.000000000 +0200
|
|
||||||
+++ coreutils-8.7/AUTHORS 2010-11-15 10:08:04.222078001 +0100
|
|
||||||
@@ -65,6 +65,7 @@ readlink: Dmitry V. Levin
|
|
||||||
rm: Paul Rubin, David MacKenzie, Richard M. Stallman, Jim Meyering
|
|
||||||
rmdir: David MacKenzie
|
|
||||||
runcon: Russell Coker
|
|
||||||
+runuser: David MacKenzie, Dan Walsh
|
|
||||||
seq: Ulrich Drepper
|
|
||||||
sha1sum: Ulrich Drepper, Scott Miller, David Madore
|
|
||||||
sha224sum: Ulrich Drepper, Scott Miller, David Madore
|
|
||||||
diff -urNp coreutils-8.7-orig/man/help2man coreutils-8.7/man/help2man
|
|
||||||
--- coreutils-8.7-orig/man/help2man 2010-10-11 19:35:11.000000000 +0200
|
|
||||||
+++ coreutils-8.7/man/help2man 2010-11-15 10:08:51.331054884 +0100
|
|
||||||
@@ -555,6 +555,9 @@ while (length)
|
|
||||||
$include{$sect} .= $content;
|
|
||||||
}
|
|
||||||
|
|
||||||
+# There is no info documentation for runuser (shared with su).
|
|
||||||
+$opt_no_info = 1 if $program eq 'runuser';
|
|
||||||
+
|
|
||||||
# Refer to the real documentation.
|
|
||||||
unless ($opt_no_info)
|
|
||||||
{
|
|
||||||
diff -urNp coreutils-8.7-orig/man/Makefile.am coreutils-8.7/man/Makefile.am
|
|
||||||
--- coreutils-8.7-orig/man/Makefile.am 2010-10-11 19:35:11.000000000 +0200
|
|
||||||
+++ coreutils-8.7/man/Makefile.am 2010-11-15 10:09:21.768922182 +0100
|
|
||||||
@@ -94,6 +94,7 @@ readlink.1: $(common_dep) $(srcdir)/read
|
|
||||||
rm.1: $(common_dep) $(srcdir)/rm.x ../src/rm.c
|
|
||||||
rmdir.1: $(common_dep) $(srcdir)/rmdir.x ../src/rmdir.c
|
|
||||||
runcon.1: $(common_dep) $(srcdir)/runcon.x ../src/runcon.c
|
|
||||||
+runuser.1: $(common_dep) $(srcdir)/runuser.x ../src/su.c
|
|
||||||
seq.1: $(common_dep) $(srcdir)/seq.x ../src/seq.c
|
|
||||||
sha1sum.1: $(common_dep) $(srcdir)/sha1sum.x ../src/md5sum.c
|
|
||||||
sha224sum.1: $(common_dep) $(srcdir)/sha224sum.x ../src/md5sum.c
|
|
||||||
diff -urNp coreutils-8.7-orig/man/runuser.x coreutils-8.7/man/runuser.x
|
|
||||||
--- coreutils-8.7-orig/man/runuser.x 1970-01-01 01:00:00.000000000 +0100
|
|
||||||
+++ coreutils-8.7/man/runuser.x 2010-11-15 10:09:57.437939015 +0100
|
|
||||||
@@ -0,0 +1,12 @@
|
|
||||||
+[NAME]
|
|
||||||
+runuser \- run a shell with substitute user and group IDs
|
|
||||||
+[DESCRIPTION]
|
|
||||||
+.\" Add any additional description here
|
|
||||||
+[SEE ALSO]
|
|
||||||
+.TP
|
|
||||||
+More detailed Texinfo documentation could be found by command
|
|
||||||
+.TP
|
|
||||||
+\t\fBinfo coreutils \(aqsu invocation\(aq\fR\t
|
|
||||||
+.TP
|
|
||||||
+since the command \fBrunuser\fR is trimmed down version of command \fBsu\fR.
|
|
||||||
+.br
|
|
||||||
diff -urNp coreutils-8.7-orig/README coreutils-8.7/README
|
|
||||||
--- coreutils-8.7-orig/README 2010-10-11 19:35:11.000000000 +0200
|
|
||||||
+++ coreutils-8.7/README 2010-11-15 10:10:43.002922253 +0100
|
|
||||||
@@ -12,10 +12,10 @@ The programs that can be built with this
|
|
||||||
factor false fmt fold groups head hostid hostname id install join kill
|
|
||||||
link ln logname ls md5sum mkdir mkfifo mknod mktemp mv nice nl nohup
|
|
||||||
nproc od paste pathchk pinky pr printenv printf ptx pwd readlink rm rmdir
|
|
||||||
- runcon seq sha1sum sha224sum sha256sum sha384sum sha512sum shred shuf
|
|
||||||
- sleep sort split stat stdbuf stty su sum sync tac tail tee test timeout
|
|
||||||
- touch tr true truncate tsort tty uname unexpand uniq unlink uptime users
|
|
||||||
- vdir wc who whoami yes
|
|
||||||
+ runcon runuser seq sha1sum sha224sum sha256sum sha384sum sha512sum shred
|
|
||||||
+ shuf sleep sort split stat stdbuf stty su sum sync tac tail tee test
|
|
||||||
+ timeout touch tr true truncate 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.
|
|
||||||
|
|
||||||
diff -urNp coreutils-8.7-orig/src/Makefile.am coreutils-8.7/src/Makefile.am
|
|
||||||
--- coreutils-8.7-orig/src/Makefile.am 2010-11-15 10:07:07.339171659 +0100
|
|
||||||
+++ coreutils-8.7/src/Makefile.am 2010-11-15 10:12:14.847094550 +0100
|
|
||||||
@@ -100,6 +100,7 @@ EXTRA_PROGRAMS = \
|
|
||||||
rm \
|
|
||||||
rmdir \
|
|
||||||
runcon \
|
|
||||||
+ runuser \
|
|
||||||
seq \
|
|
||||||
sha1sum \
|
|
||||||
sha224sum \
|
|
||||||
@@ -300,6 +301,10 @@ cp_LDADD += $(copy_LDADD)
|
|
||||||
ginstall_LDADD += $(copy_LDADD)
|
|
||||||
mv_LDADD += $(copy_LDADD)
|
|
||||||
|
|
||||||
+runuser_SOURCES = su.c
|
|
||||||
+runuser_CFLAGS = -DRUNUSER -DAUTHORS="\"David MacKenzie, Dan Walsh\""
|
|
||||||
+runuser_LDADD = $(LDADD) $(LIB_CRYPT) $(PAM_LIBS)
|
|
||||||
+
|
|
||||||
remove_LDADD =
|
|
||||||
mv_LDADD += $(remove_LDADD)
|
|
||||||
rm_LDADD += $(remove_LDADD)
|
|
||||||
@@ -395,7 +400,7 @@ RELEASE_YEAR = \
|
|
||||||
`sed -n '/.*COPYRIGHT_YEAR = \([0-9][0-9][0-9][0-9]\) };/s//\1/p' \
|
|
||||||
$(top_srcdir)/lib/version-etc.c`
|
|
||||||
|
|
||||||
-all-local: su$(EXEEXT)
|
|
||||||
+all-local: su$(EXEEXT) runuser
|
|
||||||
|
|
||||||
installed_su = $(DESTDIR)$(bindir)/`echo su|sed '$(transform)'`
|
|
||||||
|
|
||||||
diff -urNp coreutils-8.7-orig/src/su.c coreutils-8.7/src/su.c
|
|
||||||
--- coreutils-8.7-orig/src/su.c 2010-11-15 10:07:07.372933288 +0100
|
|
||||||
+++ coreutils-8.7/src/su.c 2010-11-15 10:42:12.569159230 +0100
|
|
||||||
@@ -100,9 +100,15 @@
|
|
||||||
#include "error.h"
|
|
||||||
|
|
||||||
/* The official name of this program (e.g., no `g' prefix). */
|
|
||||||
+#ifndef RUNUSER
|
|
||||||
#define PROGRAM_NAME "su"
|
|
||||||
+#else
|
|
||||||
+#define PROGRAM_NAME "runuser"
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
+#ifndef AUTHORS
|
|
||||||
#define AUTHORS proper_name ("David MacKenzie")
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
#if HAVE_PATHS_H
|
|
||||||
# include <paths.h>
|
|
||||||
@@ -140,6 +146,9 @@
|
|
||||||
#ifndef USE_PAM
|
|
||||||
char *crypt (char const *key, char const *salt);
|
|
||||||
#endif
|
|
||||||
+#ifndef CHECKPASSWD
|
|
||||||
+#define CHECKPASSWD 1
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
static void run_shell (char const *, char const *, char **, size_t)
|
|
||||||
ATTRIBUTE_NORETURN;
|
|
||||||
@@ -169,6 +178,10 @@ static struct option const longopts[] =
|
|
||||||
{"login", no_argument, NULL, 'l'},
|
|
||||||
{"preserve-environment", no_argument, NULL, 'p'},
|
|
||||||
{"shell", required_argument, NULL, 's'},
|
|
||||||
+#ifdef RUNUSER
|
|
||||||
+ {"group", required_argument, NULL, 'g'},
|
|
||||||
+ {"supp-group", required_argument, NULL, 'G'},
|
|
||||||
+#endif
|
|
||||||
{GETOPT_HELP_OPTION_DECL},
|
|
||||||
{GETOPT_VERSION_OPTION_DECL},
|
|
||||||
{NULL, 0, NULL, 0}
|
|
||||||
@@ -444,6 +457,11 @@ correct_password (const struct passwd *p
|
|
||||||
retval = pam_set_item (pamh, PAM_RUSER, (const void *) lpw->pw_name);
|
|
||||||
PAM_BAIL_P (return false);
|
|
||||||
}
|
|
||||||
+#ifdef RUNUSER
|
|
||||||
+ if (getuid() != geteuid())
|
|
||||||
+ /* safety net: deny operation if we are suid by accident */
|
|
||||||
+ error(EXIT_FAILURE, 1, "runuser may not be setuid");
|
|
||||||
+#else
|
|
||||||
retval = pam_authenticate (pamh, 0);
|
|
||||||
PAM_BAIL_P (return false);
|
|
||||||
retval = pam_acct_mgmt (pamh, 0);
|
|
||||||
@@ -454,6 +472,7 @@ correct_password (const struct passwd *p
|
|
||||||
PAM_BAIL_P (return false);
|
|
||||||
}
|
|
||||||
PAM_BAIL_P (return false);
|
|
||||||
+#endif
|
|
||||||
/* Must be authenticated if this point was reached. */
|
|
||||||
return true;
|
|
||||||
#else /* !USE_PAM */
|
|
||||||
@@ -533,11 +552,22 @@ modify_environment (const struct passwd
|
|
||||||
/* Become the user and group(s) specified by PW. */
|
|
||||||
|
|
||||||
static void
|
|
||||||
-init_groups (const struct passwd *pw)
|
|
||||||
+init_groups (const struct passwd *pw
|
|
||||||
+#ifdef RUNUSER
|
|
||||||
+ , gid_t *groups, int num_groups
|
|
||||||
+#endif
|
|
||||||
+ )
|
|
||||||
{
|
|
||||||
#ifdef HAVE_INITGROUPS
|
|
||||||
+ int rc = 0;
|
|
||||||
errno = 0;
|
|
||||||
- if (initgroups (pw->pw_name, pw->pw_gid) == -1)
|
|
||||||
+#ifdef RUNUSER
|
|
||||||
+ if (num_groups)
|
|
||||||
+ rc = setgroups(num_groups, groups);
|
|
||||||
+ else
|
|
||||||
+#endif
|
|
||||||
+ rc = initgroups(pw->pw_name, pw->pw_gid);
|
|
||||||
+ if (rc == -1)
|
|
||||||
{
|
|
||||||
#ifdef USE_PAM
|
|
||||||
cleanup_pam (PAM_ABORT);
|
|
||||||
@@ -639,6 +669,28 @@ usage (int status)
|
|
||||||
else
|
|
||||||
{
|
|
||||||
printf (_("Usage: %s [OPTION]... [-] [USER [ARG]...]\n"), program_name);
|
|
||||||
+#ifdef RUNUSER
|
|
||||||
+ printf (_("\
|
|
||||||
+Change the effective user id and group id to that of USER. Only session PAM\n\
|
|
||||||
+hooks are run, and there is no password prompt. This command is useful only\n\
|
|
||||||
+when run as the root user. If run as a non-root user without privilege\n\
|
|
||||||
+to set user ID, the command will fail as the binary is not setuid.\n\
|
|
||||||
+As %s doesn't run auth and account PAM hooks, it runs with lower overhead\n\
|
|
||||||
+than su.\n\
|
|
||||||
+\n\
|
|
||||||
+ -, -l, --login make the shell a login shell, uses runuser-l\n\
|
|
||||||
+ PAM file instead of default one\n\
|
|
||||||
+ -g --group=group specify the primary group\n\
|
|
||||||
+ -G --supp-group=group specify a supplemental group\n\
|
|
||||||
+ -c, --command=COMMAND pass a single COMMAND to the shell with -c\n\
|
|
||||||
+ --session-command=COMMAND pass a single COMMAND to the shell with -c\n\
|
|
||||||
+ and do not create a new session\n\
|
|
||||||
+ -f, --fast pass -f to the shell (for csh or tcsh)\n\
|
|
||||||
+ -m, --preserve-environment do not reset environment variables\n\
|
|
||||||
+ -p same as -m\n\
|
|
||||||
+ -s, --shell=SHELL run SHELL if /etc/shells allows it\n\
|
|
||||||
+"), program_name);
|
|
||||||
+#else
|
|
||||||
fputs (_("\
|
|
||||||
Change the effective user id and group id to that of USER.\n\
|
|
||||||
\n\
|
|
||||||
@@ -651,6 +703,7 @@ Change the effective user id and group i
|
|
||||||
-p same as -m\n\
|
|
||||||
-s, --shell=SHELL run SHELL if /etc/shells allows it\n\
|
|
||||||
"), stdout);
|
|
||||||
+#endif
|
|
||||||
fputs (HELP_OPTION_DESCRIPTION, stdout);
|
|
||||||
fputs (VERSION_OPTION_DESCRIPTION, stdout);
|
|
||||||
fputs (_("\
|
|
||||||
@@ -672,6 +725,12 @@ main (int argc, char **argv)
|
|
||||||
char *shell = NULL;
|
|
||||||
struct passwd *pw;
|
|
||||||
struct passwd pw_copy;
|
|
||||||
+#ifdef RUNUSER
|
|
||||||
+ struct group *gr;
|
|
||||||
+ gid_t groups[NGROUPS_MAX];
|
|
||||||
+ int num_supp_groups = 0;
|
|
||||||
+ int use_gid = 0;
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
initialize_main (&argc, &argv);
|
|
||||||
set_program_name (argv[0]);
|
|
||||||
@@ -686,7 +745,11 @@ main (int argc, char **argv)
|
|
||||||
simulate_login = false;
|
|
||||||
change_environment = true;
|
|
||||||
|
|
||||||
- while ((optc = getopt_long (argc, argv, "c:flmps:", longopts, NULL)) != -1)
|
|
||||||
+ while ((optc = getopt_long (argc, argv, "c:flmps:"
|
|
||||||
+#ifdef RUNUSER
|
|
||||||
+ "g:G:"
|
|
||||||
+#endif
|
|
||||||
+ , longopts, NULL)) != -1)
|
|
||||||
{
|
|
||||||
switch (optc)
|
|
||||||
{
|
|
||||||
@@ -716,6 +779,28 @@ main (int argc, char **argv)
|
|
||||||
shell = optarg;
|
|
||||||
break;
|
|
||||||
|
|
||||||
+#ifdef RUNUSER
|
|
||||||
+ case 'g':
|
|
||||||
+ gr = getgrnam(optarg);
|
|
||||||
+ if (!gr)
|
|
||||||
+ error (EXIT_FAILURE, 0, _("group %s does not exist"), optarg);
|
|
||||||
+ use_gid = 1;
|
|
||||||
+ groups[0] = gr->gr_gid;
|
|
||||||
+ break;
|
|
||||||
+
|
|
||||||
+ case 'G':
|
|
||||||
+ num_supp_groups++;
|
|
||||||
+ if (num_supp_groups >= NGROUPS_MAX)
|
|
||||||
+ error (EXIT_FAILURE, 0,
|
|
||||||
+ _("Can't specify more than %d supplemental groups"),
|
|
||||||
+ NGROUPS_MAX - 1);
|
|
||||||
+ gr = getgrnam(optarg);
|
|
||||||
+ if (!gr)
|
|
||||||
+ error (EXIT_FAILURE, 0, _("group %s does not exist"), optarg);
|
|
||||||
+ groups[num_supp_groups] = gr->gr_gid;
|
|
||||||
+ break;
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
case_GETOPT_HELP_CHAR;
|
|
||||||
|
|
||||||
case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
|
|
||||||
@@ -754,7 +839,20 @@ main (int argc, char **argv)
|
|
||||||
: DEFAULT_SHELL);
|
|
||||||
endpwent ();
|
|
||||||
|
|
||||||
- if (!correct_password (pw))
|
|
||||||
+#ifdef RUNUSER
|
|
||||||
+ if (num_supp_groups && !use_gid)
|
|
||||||
+ {
|
|
||||||
+ pw->pw_gid = groups[1];
|
|
||||||
+ memmove (groups, groups + 1, sizeof(gid_t) * num_supp_groups);
|
|
||||||
+ }
|
|
||||||
+ else if (use_gid)
|
|
||||||
+ {
|
|
||||||
+ pw->pw_gid = groups[0];
|
|
||||||
+ num_supp_groups++;
|
|
||||||
+ }
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
+ if (CHECKPASSWD && !correct_password (pw))
|
|
||||||
{
|
|
||||||
#ifdef SYSLOG_FAILURE
|
|
||||||
log_su (pw, false);
|
|
||||||
@@ -784,7 +882,11 @@ main (int argc, char **argv)
|
|
||||||
}
|
|
||||||
shell = xstrdup (shell ? shell : pw->pw_shell);
|
|
||||||
|
|
||||||
- init_groups (pw);
|
|
||||||
+ init_groups (pw
|
|
||||||
+#ifdef RUNUSER
|
|
||||||
+ , groups, num_supp_groups
|
|
||||||
+#endif
|
|
||||||
+ );
|
|
||||||
|
|
||||||
#ifdef USE_PAM
|
|
||||||
create_watching_parent ();
|
|
||||||
diff -urNp coreutils-8.7-orig/tests/misc/help-version coreutils-8.7/tests/misc/help-version
|
|
||||||
--- coreutils-8.7-orig/tests/misc/help-version 2010-10-11 19:35:11.000000000 +0200
|
|
||||||
+++ coreutils-8.7/tests/misc/help-version 2010-11-15 10:45:18.473682325 +0100
|
|
||||||
@@ -32,6 +32,7 @@ expected_failure_status_nohup=125
|
|
||||||
expected_failure_status_stdbuf=125
|
|
||||||
expected_failure_status_su=125
|
|
||||||
expected_failure_status_timeout=125
|
|
||||||
+expected_failure_status_runuser=125
|
|
||||||
expected_failure_status_printenv=2
|
|
||||||
expected_failure_status_tty=3
|
|
||||||
expected_failure_status_sort=2
|
|
||||||
@@ -209,6 +210,7 @@ seq_setup () { args=10; }
|
|
||||||
sleep_setup () { args=0; }
|
|
||||||
su_setup () { args=--version; }
|
|
||||||
stdbuf_setup () { args="-oL true"; }
|
|
||||||
+runuser_setup () { args=--version; }
|
|
||||||
timeout_setup () { args=--version; }
|
|
||||||
|
|
||||||
# I'd rather not run sync, since it spins up disks that I've
|
|
||||||
diff -urNp coreutils-8.7-orig/tests/misc/invalid-opt coreutils-8.7/tests/misc/invalid-opt
|
|
||||||
--- coreutils-8.7-orig/tests/misc/invalid-opt 2010-10-11 19:35:11.000000000 +0200
|
|
||||||
+++ coreutils-8.7/tests/misc/invalid-opt 2010-11-15 10:45:46.451938873 +0100
|
|
||||||
@@ -37,6 +37,7 @@ my %exit_status =
|
|
||||||
sort => 2,
|
|
||||||
stdbuf => 125,
|
|
||||||
su => 125,
|
|
||||||
+ runuser => 125,
|
|
||||||
test => 0,
|
|
||||||
timeout => 125,
|
|
||||||
true => 0,
|
|
||||||
28
coreutils-9.9-fix-cut-test-aarch64.patch
Normal file
28
coreutils-9.9-fix-cut-test-aarch64.patch
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
From 95044cb5eaea83d02f768feb5ab79fcf5e6ad782 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?P=C3=A1draig=20Brady?= <P@draigBrady.com>
|
||||||
|
Date: Mon, 22 Dec 2025 17:12:48 +0000
|
||||||
|
Subject: [PATCH] tests: avoid false failure due to ulimit on aarch64
|
||||||
|
|
||||||
|
* tests/cut/cut-huge-range.sh: Add an extra 1MiB headroom,
|
||||||
|
which was seen with aarch64.
|
||||||
|
Reported at https://bugzilla.redhat.com/2424302
|
||||||
|
|
||||||
|
Cherry-picked-by: Lukáš Zaoral <lzaoral@redhat.com>
|
||||||
|
Upstream-commit: 95044cb5eaea83d02f768feb5ab79fcf5e6ad782
|
||||||
|
---
|
||||||
|
tests/cut/cut-huge-range.sh | 1 +
|
||||||
|
1 file changed, 1 insertion(+)
|
||||||
|
|
||||||
|
diff --git a/tests/cut/cut-huge-range.sh b/tests/cut/cut-huge-range.sh
|
||||||
|
index 4bd1b129d8..98d7e8f0b9 100755
|
||||||
|
--- a/tests/cut/cut-huge-range.sh
|
||||||
|
+++ b/tests/cut/cut-huge-range.sh
|
||||||
|
@@ -22,6 +22,7 @@ getlimits_
|
||||||
|
|
||||||
|
vm=$(get_min_ulimit_v_ returns_ 0 cut -b1 /dev/null) \
|
||||||
|
|| skip_ 'shell lacks ulimit, or ASAN enabled'
|
||||||
|
+vm=$(($vm+1000)) # https://bugzilla.redhat.com/2424302
|
||||||
|
|
||||||
|
# Ensure we can cut up to our sentinel value.
|
||||||
|
# Don't use expr to subtract one,
|
||||||
|
|
||||||
169
coreutils-9.9-gnulib-c23.patch
Normal file
169
coreutils-9.9-gnulib-c23.patch
Normal file
|
|
@ -0,0 +1,169 @@
|
||||||
|
From 891761bca1aa78336e5b18c121075b6e4696c5d4 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Paul Eggert <eggert@cs.ucla.edu>
|
||||||
|
Date: Sun, 23 Nov 2025 00:50:40 -0800
|
||||||
|
Subject: [PATCH] Port to C23 qualifier-generic fns like strchr
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
This ports Gnulib to strict C23 platforms that reject code
|
||||||
|
like ‘char *q = strchr (P, 'x');’ when P is a pointer to const,
|
||||||
|
because in C23 strchr is a qualifier-generic function so
|
||||||
|
strchr (P, 'x') returns char const *.
|
||||||
|
This patch does not attempt to do the following two things,
|
||||||
|
which might be useful in the future:
|
||||||
|
1. When compiling on non-C23 platforms, check user code for
|
||||||
|
portability to platforms that define qualifier-generic functions.
|
||||||
|
2. Port Gnulib to platforms that have qualifier-generic functions
|
||||||
|
not listed in the C23 standard, e.g., strchrnul. I don’t know
|
||||||
|
of any such platforms.
|
||||||
|
* lib/mbschr.c (mbschr):
|
||||||
|
* lib/memchr2.c (memchr2):
|
||||||
|
Port to C23, where functions like strchr are qualifier-generic.
|
||||||
|
* lib/c++defs.h (_GL_FUNCDECL_SYS_NAME): New macro.
|
||||||
|
* lib/c++defs.h (_GL_FUNCDECL_SYS):
|
||||||
|
* lib/stdlib.in.h (bsearch):
|
||||||
|
Use it, to prevent C23 names like strchr from acting like macros.
|
||||||
|
* lib/string.in.h (memchr, strchr, strpbrk, strrchr):
|
||||||
|
Do not #undef when GNULIB_POSIXCHECK is defined, as this could
|
||||||
|
cause conforming C23 code to fail to conform. It’s not clear why
|
||||||
|
_GL_WARN_ON_USE_CXX; perhaps it was needed but isn’t any more?
|
||||||
|
But for now, limit the removal of #undef to these four functions
|
||||||
|
where #undeffing is clearly undesirable in C23.
|
||||||
|
* lib/wchar.in.h (wmemchr): Parenthesize function name in decl,
|
||||||
|
to prevent it from acting like a macro.
|
||||||
|
|
||||||
|
Cherry-picked-by: Lukáš Zaoral <lzaoral@redhat.com>
|
||||||
|
Upstream-commit: df17f4f37ed3ca373d23ad42eae51122bdb96626
|
||||||
|
---
|
||||||
|
lib/c++defs.h | 12 +++++++++++-
|
||||||
|
lib/mbschr.c | 2 +-
|
||||||
|
lib/memchr2.c | 2 +-
|
||||||
|
lib/stdlib.in.h | 6 +++---
|
||||||
|
lib/string.in.h | 4 ----
|
||||||
|
lib/wchar.in.h | 2 +-
|
||||||
|
6 files changed, 17 insertions(+), 11 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/lib/c++defs.h b/lib/c++defs.h
|
||||||
|
index b77979a..7384457 100644
|
||||||
|
--- a/lib/c++defs.h
|
||||||
|
+++ b/lib/c++defs.h
|
||||||
|
@@ -127,6 +127,16 @@
|
||||||
|
#define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters,...) \
|
||||||
|
_GL_EXTERN_C_FUNC __VA_ARGS__ rettype rpl_func parameters
|
||||||
|
|
||||||
|
+/* _GL_FUNCDECL_SYS_NAME (func) expands to plain func if C++, and to
|
||||||
|
+ parenthsized func otherwise. Parenthesization is needed in C23 if
|
||||||
|
+ the function is like strchr and so is a qualifier-generic macro
|
||||||
|
+ that expands to something more complicated. */
|
||||||
|
+#ifdef __cplusplus
|
||||||
|
+# define _GL_FUNCDECL_SYS_NAME(func) func
|
||||||
|
+#else
|
||||||
|
+# define _GL_FUNCDECL_SYS_NAME(func) (func)
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
/* _GL_FUNCDECL_SYS (func, rettype, parameters, [attributes]);
|
||||||
|
declares the system function, named func, with the given prototype,
|
||||||
|
consisting of return type, parameters, and attributes.
|
||||||
|
@@ -139,7 +149,7 @@
|
||||||
|
_GL_FUNCDECL_SYS (posix_openpt, int, (int flags), _GL_ATTRIBUTE_NODISCARD);
|
||||||
|
*/
|
||||||
|
#define _GL_FUNCDECL_SYS(func,rettype,parameters,...) \
|
||||||
|
- _GL_EXTERN_C_FUNC __VA_ARGS__ rettype func parameters
|
||||||
|
+ _GL_EXTERN_C_FUNC __VA_ARGS__ rettype _GL_FUNCDECL_SYS_NAME (func) parameters
|
||||||
|
|
||||||
|
/* _GL_CXXALIAS_RPL (func, rettype, parameters);
|
||||||
|
declares a C++ alias called GNULIB_NAMESPACE::func
|
||||||
|
diff --git a/lib/mbschr.c b/lib/mbschr.c
|
||||||
|
index c9e14b5..6582134 100644
|
||||||
|
--- a/lib/mbschr.c
|
||||||
|
+++ b/lib/mbschr.c
|
||||||
|
@@ -65,5 +65,5 @@ mbschr (const char *string, int c)
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
- return strchr (string, c);
|
||||||
|
+ return (char *) strchr (string, c);
|
||||||
|
}
|
||||||
|
diff --git a/lib/memchr2.c b/lib/memchr2.c
|
||||||
|
index 7493823..d7724ae 100644
|
||||||
|
--- a/lib/memchr2.c
|
||||||
|
+++ b/lib/memchr2.c
|
||||||
|
@@ -55,7 +55,7 @@ memchr2 (void const *s, int c1_in, int c2_in, size_t n)
|
||||||
|
c2 = (unsigned char) c2_in;
|
||||||
|
|
||||||
|
if (c1 == c2)
|
||||||
|
- return memchr (s, c1, n);
|
||||||
|
+ return (void *) memchr (s, c1, n);
|
||||||
|
|
||||||
|
/* Handle the first few bytes by reading one byte at a time.
|
||||||
|
Do this until VOID_PTR is aligned on a longword boundary. */
|
||||||
|
diff --git a/lib/stdlib.in.h b/lib/stdlib.in.h
|
||||||
|
index bef0aaa..fd0e1e0 100644
|
||||||
|
--- a/lib/stdlib.in.h
|
||||||
|
+++ b/lib/stdlib.in.h
|
||||||
|
@@ -224,9 +224,9 @@ _GL_INLINE_HEADER_BEGIN
|
||||||
|
|
||||||
|
/* Declarations for ISO C N3322. */
|
||||||
|
#if defined __GNUC__ && __GNUC__ >= 15 && !defined __clang__
|
||||||
|
-_GL_EXTERN_C void *bsearch (const void *__key,
|
||||||
|
- const void *__base, size_t __nmemb, size_t __size,
|
||||||
|
- int (*__compare) (const void *, const void *))
|
||||||
|
+_GL_EXTERN_C void *_GL_FUNCDECL_SYS_NAME (bsearch)
|
||||||
|
+ (const void *__key, const void *__base, size_t __nmemb, size_t __size,
|
||||||
|
+ int (*__compare) (const void *, const void *))
|
||||||
|
_GL_ATTRIBUTE_NONNULL_IF_NONZERO (2, 3) _GL_ARG_NONNULL ((5));
|
||||||
|
_GL_EXTERN_C void qsort (void *__base, size_t __nmemb, size_t __size,
|
||||||
|
int (*__compare) (const void *, const void *))
|
||||||
|
diff --git a/lib/string.in.h b/lib/string.in.h
|
||||||
|
index fdcdd21..8b56acf 100644
|
||||||
|
--- a/lib/string.in.h
|
||||||
|
+++ b/lib/string.in.h
|
||||||
|
@@ -409,7 +409,6 @@ _GL_CXXALIASWARN1 (memchr, void const *,
|
||||||
|
_GL_CXXALIASWARN (memchr);
|
||||||
|
# endif
|
||||||
|
#elif defined GNULIB_POSIXCHECK
|
||||||
|
-# undef memchr
|
||||||
|
/* Assume memchr is always declared. */
|
||||||
|
_GL_WARN_ON_USE (memchr, "memchr has platform-specific bugs - "
|
||||||
|
"use gnulib module memchr for portability" );
|
||||||
|
@@ -674,7 +673,6 @@ _GL_WARN_ON_USE (stpncpy, "stpncpy is unportable - "
|
||||||
|
#if defined GNULIB_POSIXCHECK
|
||||||
|
/* strchr() does not work with multibyte strings if the locale encoding is
|
||||||
|
GB18030 and the character to be searched is a digit. */
|
||||||
|
-# undef strchr
|
||||||
|
/* Assume strchr is always declared. */
|
||||||
|
_GL_WARN_ON_USE_CXX (strchr,
|
||||||
|
const char *, char *, (const char *, int),
|
||||||
|
@@ -981,7 +979,6 @@ _GL_CXXALIASWARN (strpbrk);
|
||||||
|
Even in this simple case, it does not work with multibyte strings if the
|
||||||
|
locale encoding is GB18030 and one of the characters to be searched is a
|
||||||
|
digit. */
|
||||||
|
-# undef strpbrk
|
||||||
|
_GL_WARN_ON_USE_CXX (strpbrk,
|
||||||
|
const char *, char *, (const char *, const char *),
|
||||||
|
"strpbrk cannot work correctly on character strings "
|
||||||
|
@@ -1011,7 +1008,6 @@ _GL_WARN_ON_USE (strspn, "strspn cannot work correctly on character strings "
|
||||||
|
#if defined GNULIB_POSIXCHECK
|
||||||
|
/* strrchr() does not work with multibyte strings if the locale encoding is
|
||||||
|
GB18030 and the character to be searched is a digit. */
|
||||||
|
-# undef strrchr
|
||||||
|
/* Assume strrchr is always declared. */
|
||||||
|
_GL_WARN_ON_USE_CXX (strrchr,
|
||||||
|
const char *, char *, (const char *, int),
|
||||||
|
diff --git a/lib/wchar.in.h b/lib/wchar.in.h
|
||||||
|
index ab602a2..6be4515 100644
|
||||||
|
--- a/lib/wchar.in.h
|
||||||
|
+++ b/lib/wchar.in.h
|
||||||
|
@@ -301,7 +301,7 @@ _GL_EXTERN_C int wcsncmp (const wchar_t *__s1, const wchar_t *__s2, size_t __n)
|
||||||
|
_GL_ATTRIBUTE_NONNULL_IF_NONZERO (1, 3)
|
||||||
|
_GL_ATTRIBUTE_NONNULL_IF_NONZERO (2, 3);
|
||||||
|
# ifndef __cplusplus
|
||||||
|
-_GL_EXTERN_C wchar_t *wmemchr (const wchar_t *__s, wchar_t __wc, size_t __n)
|
||||||
|
+_GL_EXTERN_C wchar_t *(wmemchr) (const wchar_t *__s, wchar_t __wc, size_t __n)
|
||||||
|
_GL_ATTRIBUTE_NONNULL_IF_NONZERO (1, 3);
|
||||||
|
# endif
|
||||||
|
_GL_EXTERN_C wchar_t *wmemset (wchar_t *__s, wchar_t __wc, size_t __n)
|
||||||
|
--
|
||||||
|
2.52.0
|
||||||
|
|
||||||
|
|
@ -1,244 +0,0 @@
|
||||||
# Configuration file for the color ls utility
|
|
||||||
# Synchronized with coreutils 8.5 dircolors
|
|
||||||
# This file goes in the /etc directory, and must be world readable.
|
|
||||||
# You can copy this file to .dir_colors in your $HOME directory to override
|
|
||||||
# the system defaults.
|
|
||||||
|
|
||||||
# COLOR needs one of these arguments: 'tty' colorizes output to ttys, but not
|
|
||||||
# pipes. 'all' adds color characters to all output. 'none' shuts colorization
|
|
||||||
# off.
|
|
||||||
COLOR tty
|
|
||||||
|
|
||||||
# Extra command line options for ls go here.
|
|
||||||
# Basically these ones are:
|
|
||||||
# -F = show '/' for dirs, '*' for executables, etc.
|
|
||||||
# -T 0 = don't trust tab spacing when formatting ls output.
|
|
||||||
OPTIONS -F -T 0
|
|
||||||
|
|
||||||
# Below, there should be one TERM entry for each termtype that is colorizable
|
|
||||||
TERM Eterm
|
|
||||||
TERM ansi
|
|
||||||
TERM color-xterm
|
|
||||||
TERM con132x25
|
|
||||||
TERM con132x30
|
|
||||||
TERM con132x43
|
|
||||||
TERM con132x60
|
|
||||||
TERM con80x25
|
|
||||||
TERM con80x28
|
|
||||||
TERM con80x30
|
|
||||||
TERM con80x43
|
|
||||||
TERM con80x50
|
|
||||||
TERM con80x60
|
|
||||||
TERM cons25
|
|
||||||
TERM console
|
|
||||||
TERM cygwin
|
|
||||||
TERM dtterm
|
|
||||||
TERM eterm-color
|
|
||||||
TERM gnome
|
|
||||||
TERM gnome-256color
|
|
||||||
TERM jfbterm
|
|
||||||
TERM konsole
|
|
||||||
TERM kterm
|
|
||||||
TERM linux
|
|
||||||
TERM linux-c
|
|
||||||
TERM mach-color
|
|
||||||
TERM mlterm
|
|
||||||
TERM putty
|
|
||||||
TERM rxvt
|
|
||||||
TERM rxvt-256color
|
|
||||||
TERM rxvt-cygwin
|
|
||||||
TERM rxvt-cygwin-native
|
|
||||||
TERM rxvt-unicode
|
|
||||||
TERM rxvt-unicode-256color
|
|
||||||
TERM rxvt-unicode256
|
|
||||||
TERM screen
|
|
||||||
TERM screen-256color
|
|
||||||
TERM screen-256color-bce
|
|
||||||
TERM screen-bce
|
|
||||||
TERM screen-w
|
|
||||||
TERM screen.rxvt
|
|
||||||
TERM screen.linux
|
|
||||||
TERM terminator
|
|
||||||
TERM vt100
|
|
||||||
TERM xterm
|
|
||||||
TERM xterm-16color
|
|
||||||
TERM xterm-256color
|
|
||||||
TERM xterm-88color
|
|
||||||
TERM xterm-color
|
|
||||||
TERM xterm-debian
|
|
||||||
|
|
||||||
# EIGHTBIT, followed by '1' for on, '0' for off. (8-bit output)
|
|
||||||
EIGHTBIT 1
|
|
||||||
|
|
||||||
# Below are the color init strings for the basic file types. A color init
|
|
||||||
# string consists of one or more of the following numeric codes:
|
|
||||||
# Attribute codes:
|
|
||||||
# 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed
|
|
||||||
# Text color codes:
|
|
||||||
# 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white
|
|
||||||
# Background color codes:
|
|
||||||
# 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white
|
|
||||||
#NORMAL 00 # no color code at all
|
|
||||||
#FILE 00 # normal file, use no color at all
|
|
||||||
RESET 0 # reset to "normal" color
|
|
||||||
DIR 01;34 # directory
|
|
||||||
LINK 01;36 # symbolic link (If you set this to 'target' instead of a
|
|
||||||
# numerical value, the color is as for the file pointed to.)
|
|
||||||
MULTIHARDLINK 00 # regular file with more than one link
|
|
||||||
FIFO 40;33 # pipe
|
|
||||||
SOCK 01;35 # socket
|
|
||||||
DOOR 01;35 # door
|
|
||||||
BLK 40;33;01 # block device driver
|
|
||||||
CHR 40;33;01 # character device driver
|
|
||||||
ORPHAN 40;31;01 # symlink to nonexistent file, or non-stat'able file
|
|
||||||
MISSING 01;05;37;41 # ... and the files they point to
|
|
||||||
SETUID 37;41 # file that is setuid (u+s)
|
|
||||||
SETGID 30;43 # file that is setgid (g+s)
|
|
||||||
CAPABILITY 30;41 # file with capability
|
|
||||||
STICKY_OTHER_WRITABLE 30;42 # dir that is sticky and other-writable (+t,o+w)
|
|
||||||
OTHER_WRITABLE 34;42 # dir that is other-writable (o+w) and not sticky
|
|
||||||
STICKY 37;44 # dir with the sticky bit set (+t) and not other-writable
|
|
||||||
|
|
||||||
# This is for files with execute permission:
|
|
||||||
EXEC 01;32
|
|
||||||
|
|
||||||
# List any file extensions like '.gz' or '.tar' that you would like ls
|
|
||||||
# to colorize below. Put the extension, a space, and the color init string.
|
|
||||||
# (and any comments you want to add after a '#')
|
|
||||||
# executables (bright green)
|
|
||||||
#.cmd 01;32
|
|
||||||
#.exe 01;32
|
|
||||||
#.com 01;32
|
|
||||||
#.btm 01;32
|
|
||||||
#.bat 01;32
|
|
||||||
#.sh 01;32
|
|
||||||
#.csh 01;32
|
|
||||||
# archives or compressed (bright red)
|
|
||||||
.tar 01;31
|
|
||||||
.tgz 01;31
|
|
||||||
.arj 01;31
|
|
||||||
.taz 01;31
|
|
||||||
.lzh 01;31
|
|
||||||
.lzma 01;31
|
|
||||||
.tlz 01;31
|
|
||||||
.txz 01;31
|
|
||||||
.zip 01;31
|
|
||||||
.z 01;31
|
|
||||||
.Z 01;31
|
|
||||||
.dz 01;31
|
|
||||||
.gz 01;31
|
|
||||||
.lz 01;31
|
|
||||||
.xz 01;31
|
|
||||||
.bz2 01;31
|
|
||||||
.tbz 01;31
|
|
||||||
.tbz2 01;31
|
|
||||||
.bz 01;31
|
|
||||||
.tz 01;31
|
|
||||||
.deb 01;31
|
|
||||||
.rpm 01;31
|
|
||||||
.jar 01;31
|
|
||||||
.war 01;31
|
|
||||||
.ear 01;31
|
|
||||||
.sar 01;31
|
|
||||||
.rar 01;31
|
|
||||||
.ace 01;31
|
|
||||||
.zoo 01;31
|
|
||||||
.cpio 01;31
|
|
||||||
.7z 01;31
|
|
||||||
.rz 01;31
|
|
||||||
|
|
||||||
# image formats (magenta)
|
|
||||||
.jpg 01;35
|
|
||||||
.jpeg 01;35
|
|
||||||
.gif 01;35
|
|
||||||
.bmp 01;35
|
|
||||||
.pbm 01;35
|
|
||||||
.pgm 01;35
|
|
||||||
.ppm 01;35
|
|
||||||
.tga 01;35
|
|
||||||
.xbm 01;35
|
|
||||||
.xpm 01;35
|
|
||||||
.tif 01;35
|
|
||||||
.tiff 01;35
|
|
||||||
.png 01;35
|
|
||||||
.svg 01;35
|
|
||||||
.svgz 01;35
|
|
||||||
.mng 01;35
|
|
||||||
.pcx 01;35
|
|
||||||
.mov 01;35
|
|
||||||
.mpg 01;35
|
|
||||||
.mpeg 01;35
|
|
||||||
.m2v 01;35
|
|
||||||
.mkv 01;35
|
|
||||||
.ogm 01;35
|
|
||||||
.mp4 01;35
|
|
||||||
.m4v 01;35
|
|
||||||
.mp4v 01;35
|
|
||||||
.vob 01;35
|
|
||||||
.qt 01;35
|
|
||||||
.nuv 01;35
|
|
||||||
.wmv 01;35
|
|
||||||
.asf 01;35
|
|
||||||
.rm 01;35
|
|
||||||
.rmvb 01;35
|
|
||||||
.flc 01;35
|
|
||||||
.avi 01;35
|
|
||||||
.fli 01;35
|
|
||||||
.flv 01;35
|
|
||||||
.gl 01;35
|
|
||||||
.dl 01;35
|
|
||||||
.xcf 01;35
|
|
||||||
.xwd 01;35
|
|
||||||
.yuv 01;35
|
|
||||||
.cgm 01;35
|
|
||||||
.emf 01;35
|
|
||||||
|
|
||||||
# http://wiki.xiph.org/index.php/MIME_Types_and_File_Extensions
|
|
||||||
.axv 01;35
|
|
||||||
.anx 01;35
|
|
||||||
.ogv 01;35
|
|
||||||
.ogx 01;35
|
|
||||||
|
|
||||||
# audio formats (cyan)
|
|
||||||
.aac 01;36
|
|
||||||
.au 01;36
|
|
||||||
.flac 01;36
|
|
||||||
.mid 01;36
|
|
||||||
.midi 01;36
|
|
||||||
.mka 01;36
|
|
||||||
.mp3 01;36
|
|
||||||
.mpc 01;36
|
|
||||||
.ogg 01;36
|
|
||||||
.ra 01;36
|
|
||||||
.wav 01;36
|
|
||||||
|
|
||||||
# http://wiki.xiph.org/index.php/MIME_Types_and_File_Extensions
|
|
||||||
.axa 01;36
|
|
||||||
.oga 01;36
|
|
||||||
.spx 01;36
|
|
||||||
.xspf 01;36
|
|
||||||
|
|
||||||
# colorize basic documents (brown)
|
|
||||||
.pdf 00;33
|
|
||||||
.ps 00;33
|
|
||||||
.ps.gz 00;33
|
|
||||||
.txt 00;33
|
|
||||||
.patch 00;33
|
|
||||||
.diff 00;33
|
|
||||||
.log 00;33
|
|
||||||
.tex 00;33
|
|
||||||
.xls 00;33
|
|
||||||
.xlsx 00;33
|
|
||||||
.ppt 00;33
|
|
||||||
.pptx 00;33
|
|
||||||
.rtf 00;33
|
|
||||||
.doc 00;33
|
|
||||||
.docx 00;33
|
|
||||||
.odt 00;33
|
|
||||||
.ods 00;33
|
|
||||||
.odp 00;33
|
|
||||||
.xml 00;33
|
|
||||||
.epub 00;33
|
|
||||||
.abw 00;33
|
|
||||||
.html 00;33
|
|
||||||
.wpd 00;33
|
|
||||||
|
|
@ -1,217 +0,0 @@
|
||||||
# Configuration file for the 256color ls utility
|
|
||||||
# This file goes in the /etc directory, and must be world readable.
|
|
||||||
# Synchronized with coreutils 8.5 dircolors
|
|
||||||
# You can copy this file to .dir_colors in your $HOME directory to override
|
|
||||||
# the system defaults.
|
|
||||||
# In the case that you are not satisfied with supplied colors, please
|
|
||||||
# submit your color configuration or attach your file with colors readable
|
|
||||||
# on ALL color background schemas (white,gray,black) to RedHat Bugzilla
|
|
||||||
# ticket on https://bugzilla.redhat.com/show_bug.cgi?id=429121 . TIA.
|
|
||||||
# Please just keep ls color conventions from 8 color scheme.
|
|
||||||
|
|
||||||
# COLOR needs one of these arguments: 'tty' colorizes output to ttys, but not
|
|
||||||
# pipes. 'all' adds color characters to all output. 'none' shuts colorization
|
|
||||||
# off.
|
|
||||||
COLOR tty
|
|
||||||
|
|
||||||
# Extra command line options for ls go here.
|
|
||||||
# Basically these ones are:
|
|
||||||
# -F = show '/' for dirs, '*' for executables, etc.
|
|
||||||
# -T 0 = don't trust tab spacing when formatting ls output.
|
|
||||||
OPTIONS -F -T 0
|
|
||||||
|
|
||||||
# Below, there should be one TERM entry for each termtype that is colorizable
|
|
||||||
TERM putty-256color
|
|
||||||
TERM rxvt-256color
|
|
||||||
TERM rxvt-unicode-256color
|
|
||||||
TERM rxvt-unicode256
|
|
||||||
TERM screen-256color
|
|
||||||
TERM xterm-256color
|
|
||||||
TERM gnome-256color
|
|
||||||
|
|
||||||
# EIGHTBIT, followed by '1' for on, '0' for off. (8-bit output)
|
|
||||||
EIGHTBIT 1
|
|
||||||
|
|
||||||
# Below are the color init strings for the basic file types. A color init
|
|
||||||
# string consists of one or more of the following numeric codes:
|
|
||||||
# Attribute codes:
|
|
||||||
# 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed
|
|
||||||
# Text color(8 colors mode) codes:
|
|
||||||
# 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white
|
|
||||||
# Background color(8 colors mode) codes:
|
|
||||||
# 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white
|
|
||||||
# Text color(256 colors mode) codes:
|
|
||||||
# Valid syntax for text 256color is 38;5;<color number> , where color number
|
|
||||||
# is number between 0 and 255.
|
|
||||||
# You may find following command useful to search the best one for you:
|
|
||||||
# for ((x=0; x<=255; x++));do echo -e "${x}:\033[38;5;${x}mcolor\033[000m";done
|
|
||||||
# Background color(256 colors mode) codes:
|
|
||||||
# Valid syntax for background 256color is 48;5;<color number> , where
|
|
||||||
# color number is number between 0 and 255.
|
|
||||||
# You may find following command useful to search the best one for you:
|
|
||||||
# for ((x=0; x<=255; x++));do echo -e "${x}:\033[48;5;${x}mcolor\033[000m";done
|
|
||||||
|
|
||||||
#NORMAL 00 # global default, no color code at all
|
|
||||||
#FILE 00 # normal file, use no color at all
|
|
||||||
RESET 0 # reset to "normal" color
|
|
||||||
DIR 38;5;27 # directory
|
|
||||||
LINK 38;5;51 # symbolic link (If you set this to 'target' instead of a
|
|
||||||
# numerical value, the color is as for the file pointed to.)
|
|
||||||
MULTIHARDLINK 44;38;5;15 # regular file with more than one link
|
|
||||||
FIFO 40;38;5;11 # pipe
|
|
||||||
SOCK 38;5;13 # socket
|
|
||||||
DOOR 38;5;5 # door
|
|
||||||
BLK 48;5;232;38;5;11 # block device driver
|
|
||||||
CHR 48;5;232;38;5;3 # character device driver
|
|
||||||
ORPHAN 48;5;232;38;5;9 # symlink to nonexistent file, or non-stat'able file
|
|
||||||
MISSING 05;48;5;232;38;5;15 # ... and the files they point to
|
|
||||||
SETUID 48;5;196;38;5;15 # file that is setuid (u+s)
|
|
||||||
SETGID 48;5;11;38;5;16 # file that is setgid (g+s)
|
|
||||||
CAPABILITY 48;5;196;38;5;226 # file with capability
|
|
||||||
STICKY_OTHER_WRITABLE 48;5;10;38;5;16 # dir that is sticky and other-writable (+t,o+w)
|
|
||||||
OTHER_WRITABLE 48;5;10;38;5;21 # dir that is other-writable (o+w) and not sticky
|
|
||||||
STICKY 48;5;21;38;5;15 # dir with the sticky bit set (+t) and not other-writable
|
|
||||||
|
|
||||||
# This is for files with execute permission:
|
|
||||||
EXEC 38;5;34
|
|
||||||
|
|
||||||
# List any file extensions like '.gz' or '.tar' that you would like ls
|
|
||||||
# to colorize below. Put the extension, a space, and the color init string.
|
|
||||||
# (and any comments you want to add after a '#')
|
|
||||||
# executables (bright green)
|
|
||||||
#.cmd 38;5;34
|
|
||||||
#.exe 38;5;34
|
|
||||||
#.com 38;5;34
|
|
||||||
#.btm 38;5;34
|
|
||||||
#.bat 38;5;34
|
|
||||||
#.sh 38;5;34
|
|
||||||
#.csh 38;5;34
|
|
||||||
# archives or compressed (bright red)
|
|
||||||
.tar 38;5;9
|
|
||||||
.tgz 38;5;9
|
|
||||||
.arj 38;5;9
|
|
||||||
.taz 38;5;9
|
|
||||||
.lzh 38;5;9
|
|
||||||
.lzma 38;5;9
|
|
||||||
.tlz 38;5;9
|
|
||||||
.txz 38;5;9
|
|
||||||
.zip 38;5;9
|
|
||||||
.z 38;5;9
|
|
||||||
.Z 38;5;9
|
|
||||||
.dz 38;5;9
|
|
||||||
.gz 38;5;9
|
|
||||||
.lz 38;5;9
|
|
||||||
.xz 38;5;9
|
|
||||||
.bz2 38;5;9
|
|
||||||
.tbz 38;5;9
|
|
||||||
.tbz2 38;5;9
|
|
||||||
.bz 38;5;9
|
|
||||||
.tz 38;5;9
|
|
||||||
.deb 38;5;9
|
|
||||||
.rpm 38;5;9
|
|
||||||
.jar 38;5;9
|
|
||||||
.war 38;5;9
|
|
||||||
.ear 38;5;9
|
|
||||||
.sar 38;5;9
|
|
||||||
.rar 38;5;9
|
|
||||||
.ace 38;5;9
|
|
||||||
.zoo 38;5;9
|
|
||||||
.cpio 38;5;9
|
|
||||||
.7z 38;5;9
|
|
||||||
.rz 38;5;9
|
|
||||||
|
|
||||||
# image formats (magenta)
|
|
||||||
.jpg 38;5;13
|
|
||||||
.jpeg 38;5;13
|
|
||||||
.gif 38;5;13
|
|
||||||
.bmp 38;5;13
|
|
||||||
.pbm 38;5;13
|
|
||||||
.pgm 38;5;13
|
|
||||||
.ppm 38;5;13
|
|
||||||
.tga 38;5;13
|
|
||||||
.xbm 38;5;13
|
|
||||||
.xpm 38;5;13
|
|
||||||
.tif 38;5;13
|
|
||||||
.tiff 38;5;13
|
|
||||||
.png 38;5;13
|
|
||||||
.svg 38;5;13
|
|
||||||
.svgz 38;5;13
|
|
||||||
.mng 38;5;13
|
|
||||||
.pcx 38;5;13
|
|
||||||
.mov 38;5;13
|
|
||||||
.mpg 38;5;13
|
|
||||||
.mpeg 38;5;13
|
|
||||||
.m2v 38;5;13
|
|
||||||
.mkv 38;5;13
|
|
||||||
.ogm 38;5;13
|
|
||||||
.mp4 38;5;13
|
|
||||||
.m4v 38;5;13
|
|
||||||
.mp4v 38;5;13
|
|
||||||
.vob 38;5;13
|
|
||||||
.qt 38;5;13
|
|
||||||
.nuv 38;5;13
|
|
||||||
.wmv 38;5;13
|
|
||||||
.asf 38;5;13
|
|
||||||
.rm 38;5;13
|
|
||||||
.rmvb 38;5;13
|
|
||||||
.flc 38;5;13
|
|
||||||
.avi 38;5;13
|
|
||||||
.fli 38;5;13
|
|
||||||
.flv 38;5;13
|
|
||||||
.gl 38;5;13
|
|
||||||
.dl 38;5;13
|
|
||||||
.xcf 38;5;13
|
|
||||||
.xwd 38;5;13
|
|
||||||
.yuv 38;5;13
|
|
||||||
.cgm 38;5;13
|
|
||||||
.emf 38;5;13
|
|
||||||
|
|
||||||
# http://wiki.xiph.org/index.php/MIME_Types_and_File_Extensions
|
|
||||||
.axv 38;5;13
|
|
||||||
.anx 38;5;13
|
|
||||||
.ogv 38;5;13
|
|
||||||
.ogx 38;5;13
|
|
||||||
|
|
||||||
# audio formats (cyan)
|
|
||||||
.aac 38;5;45
|
|
||||||
.au 38;5;45
|
|
||||||
.flac 38;5;45
|
|
||||||
.mid 38;5;45
|
|
||||||
.midi 38;5;45
|
|
||||||
.mka 38;5;45
|
|
||||||
.mp3 38;5;45
|
|
||||||
.mpc 38;5;45
|
|
||||||
.ogg 38;5;45
|
|
||||||
.ra 38;5;45
|
|
||||||
.wav 38;5;45
|
|
||||||
|
|
||||||
# http://wiki.xiph.org/index.php/MIME_Types_and_File_Extensions
|
|
||||||
.axa 38;5;45
|
|
||||||
.oga 38;5;45
|
|
||||||
.spx 38;5;45
|
|
||||||
.xspf 38;5;45
|
|
||||||
|
|
||||||
# colorize basic documents as well (brown)
|
|
||||||
.pdf 00;33
|
|
||||||
.ps 00;33
|
|
||||||
.ps.gz 00;33
|
|
||||||
.txt 00;33
|
|
||||||
.patch 00;33
|
|
||||||
.diff 00;33
|
|
||||||
.log 00;33
|
|
||||||
.tex 00;33
|
|
||||||
.xls 00;33
|
|
||||||
.xlsx 00;33
|
|
||||||
.ppt 00;33
|
|
||||||
.pptx 00;33
|
|
||||||
.rtf 00;33
|
|
||||||
.doc 00;33
|
|
||||||
.docx 00;33
|
|
||||||
.odt 00;33
|
|
||||||
.ods 00;33
|
|
||||||
.odp 00;33
|
|
||||||
.xml 00;33
|
|
||||||
.epub 00;33
|
|
||||||
.abw 00;33
|
|
||||||
.html 00;33
|
|
||||||
.wpd 00;33
|
|
||||||
|
|
@ -1,220 +0,0 @@
|
||||||
# Configuration file for the color ls utility - modified for gray backgrounds
|
|
||||||
# Synchronized with coreutils 8.5 dircolors
|
|
||||||
# This file goes in the /etc directory, and must be world readable.
|
|
||||||
# You can copy this file to .dir_colors in your $HOME directory to override
|
|
||||||
# the system defaults.
|
|
||||||
|
|
||||||
# COLOR needs one of these arguments: 'tty' colorizes output to ttys, but not
|
|
||||||
# pipes. 'all' adds color characters to all output. 'none' shuts colorization
|
|
||||||
# off.
|
|
||||||
COLOR tty
|
|
||||||
|
|
||||||
# Extra command line options for ls go here.
|
|
||||||
# Basically these ones are:
|
|
||||||
# -F = show '/' for dirs, '*' for executables, etc.
|
|
||||||
# -T 0 = don't trust tab spacing when formatting ls output.
|
|
||||||
OPTIONS -F -T 0
|
|
||||||
|
|
||||||
# Below, there should be one TERM entry for each termtype that is colorizable
|
|
||||||
TERM linux
|
|
||||||
TERM console
|
|
||||||
TERM con132x25
|
|
||||||
TERM con132x30
|
|
||||||
TERM con132x43
|
|
||||||
TERM con132x60
|
|
||||||
TERM con80x25
|
|
||||||
TERM con80x28
|
|
||||||
TERM con80x30
|
|
||||||
TERM con80x43
|
|
||||||
TERM con80x50
|
|
||||||
TERM con80x60
|
|
||||||
TERM cons25
|
|
||||||
TERM xterm
|
|
||||||
TERM xterm-16color
|
|
||||||
TERM xterm-88color
|
|
||||||
TERM xterm-256color
|
|
||||||
TERM rxvt
|
|
||||||
TERM rxvt-256color
|
|
||||||
TERM rxvt-unicode
|
|
||||||
TERM rxvt-unicode-256color
|
|
||||||
TERM rxvt-unicode256
|
|
||||||
TERM xterm-color
|
|
||||||
TERM color-xterm
|
|
||||||
TERM vt100
|
|
||||||
TERM dtterm
|
|
||||||
TERM color_xterm
|
|
||||||
|
|
||||||
# EIGHTBIT, followed by '1' for on, '0' for off. (8-bit output)
|
|
||||||
EIGHTBIT 1
|
|
||||||
|
|
||||||
# Below are the color init strings for the basic file types. A color init
|
|
||||||
# string consists of one or more of the following numeric codes:
|
|
||||||
# Attribute codes:
|
|
||||||
# 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed
|
|
||||||
# Text color codes:
|
|
||||||
# 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white
|
|
||||||
# Background color codes:
|
|
||||||
# 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white
|
|
||||||
#NORMAL 00 # no color code at all
|
|
||||||
#FILE 00 # normal file, use no color at all
|
|
||||||
RESET 0
|
|
||||||
DIR 00;34 # directory
|
|
||||||
LINK 00;36 # symbolic link (If you set this to 'target' instead of a
|
|
||||||
# numerical value, the color is as for the file pointed to.)
|
|
||||||
MULTIHARDLINK 00 # regular file with more than one link
|
|
||||||
FIFO 40;33 # pipe
|
|
||||||
SOCK 00;35 # socket
|
|
||||||
DOOR 00;35 # door
|
|
||||||
BLK 40;33;01 # block device driver
|
|
||||||
CHR 40;33;01 # character device driver
|
|
||||||
ORPHAN 40;31;01 # symlink to nonexistent file, or non-stat'able file
|
|
||||||
MISSING 01;05;37;41 # ... and the files they point to
|
|
||||||
SETUID 37;41 # file that is setuid (u+s)
|
|
||||||
SETGID 30;43 # file that is setgid (g+s)
|
|
||||||
CAPABILITY 30;41 # file with capability
|
|
||||||
STICKY_OTHER_WRITABLE 30;42 # dir that is sticky and other-writable (+t,o+w)
|
|
||||||
OTHER_WRITABLE 34;42 # dir that is other-writable (o+w) and not sticky
|
|
||||||
STICKY 37;44 # dir with the sticky bit set (+t) and not other-writable
|
|
||||||
|
|
||||||
|
|
||||||
# This is for files with execute permission:
|
|
||||||
EXEC 00;32
|
|
||||||
|
|
||||||
# List any file extensions like '.gz' or '.tar' that you would like ls
|
|
||||||
# to colorize below. Put the extension, a space, and the color init string.
|
|
||||||
# (and any comments you want to add after a '#')
|
|
||||||
#.cmd 00;32 # executables (green)
|
|
||||||
#.exe 00;32
|
|
||||||
#.com 00;32
|
|
||||||
#.btm 00;32
|
|
||||||
#.bat 00;32
|
|
||||||
#.sh 00;32
|
|
||||||
#.csh 00;32
|
|
||||||
# archives or compressed (red)
|
|
||||||
.tar 00;31
|
|
||||||
.tgz 00;31
|
|
||||||
.arj 00;31
|
|
||||||
.taz 00;31
|
|
||||||
.lzh 00;31
|
|
||||||
.lzma 00;31
|
|
||||||
.tlz 00;31
|
|
||||||
.txz 00;31
|
|
||||||
.zip 00;31
|
|
||||||
.z 00;31
|
|
||||||
.Z 00;31
|
|
||||||
.dz 00;31
|
|
||||||
.gz 00;31
|
|
||||||
.lz 00;31
|
|
||||||
.xz 00;31
|
|
||||||
.bz2 00;31
|
|
||||||
.tbz 00;31
|
|
||||||
.tbz2 00;31
|
|
||||||
.bz 00;31
|
|
||||||
.tz 00;31
|
|
||||||
.deb 00;31
|
|
||||||
.rpm 00;31
|
|
||||||
.jar 00;31
|
|
||||||
.war 00;31
|
|
||||||
.ear 00;31
|
|
||||||
.sar 00;31
|
|
||||||
.rar 00;31
|
|
||||||
.ace 00;31
|
|
||||||
.zoo 00;31
|
|
||||||
.cpio 00;31
|
|
||||||
.7z 00;31
|
|
||||||
.rz 00;31
|
|
||||||
# image formats (magenta)
|
|
||||||
.jpg 00;35
|
|
||||||
.jpeg 00;35
|
|
||||||
.gif 00;35
|
|
||||||
.bmp 00;35
|
|
||||||
.pbm 00;35
|
|
||||||
.pgm 00;35
|
|
||||||
.ppm 00;35
|
|
||||||
.tga 00;35
|
|
||||||
.xbm 00;35
|
|
||||||
.xpm 00;35
|
|
||||||
.tif 00;35
|
|
||||||
.tiff 00;35
|
|
||||||
.png 00;35
|
|
||||||
.svg 00;35
|
|
||||||
.svgz 00;35
|
|
||||||
.mng 00;35
|
|
||||||
.pcx 00;35
|
|
||||||
.mov 00;35
|
|
||||||
.mpg 00;35
|
|
||||||
.mpeg 00;35
|
|
||||||
.m2v 00;35
|
|
||||||
.mkv 00;35
|
|
||||||
.ogm 00;35
|
|
||||||
.mp4 00;35
|
|
||||||
.m4v 00;35
|
|
||||||
.mp4v 00;35
|
|
||||||
.vob 00;35
|
|
||||||
.qt 00;35
|
|
||||||
.nuv 00;35
|
|
||||||
.wmv 00;35
|
|
||||||
.asf 00;35
|
|
||||||
.rm 00;35
|
|
||||||
.rmvb 00;35
|
|
||||||
.flc 00;35
|
|
||||||
.avi 00;35
|
|
||||||
.fli 00;35
|
|
||||||
.flv 00;35
|
|
||||||
.gl 00;35
|
|
||||||
.dl 00;35
|
|
||||||
.xcf 00;35
|
|
||||||
.xwd 00;35
|
|
||||||
.yuv 00;35
|
|
||||||
.cgm 00;35
|
|
||||||
.emf 00;35
|
|
||||||
|
|
||||||
# http://wiki.xiph.org/index.php/MIME_Types_and_File_Extensions
|
|
||||||
.axv 00;35
|
|
||||||
.anx 00;35
|
|
||||||
.ogv 00;35
|
|
||||||
.ogx 00;35
|
|
||||||
|
|
||||||
# audio formats (cyan)
|
|
||||||
.aac 00;36
|
|
||||||
.au 00;36
|
|
||||||
.flac 00;36
|
|
||||||
.mid 00;36
|
|
||||||
.midi 00;36
|
|
||||||
.mka 00;36
|
|
||||||
.mp3 00;36
|
|
||||||
.mpc 00;36
|
|
||||||
.ogg 00;36
|
|
||||||
.ra 00;36
|
|
||||||
.wav 00;36
|
|
||||||
|
|
||||||
# http://wiki.xiph.org/index.php/MIME_Types_and_File_Extensions
|
|
||||||
.axa 00;36
|
|
||||||
.oga 00;36
|
|
||||||
.spx 00;36
|
|
||||||
.xspf 00;36
|
|
||||||
|
|
||||||
# colorize basic documents (brown)
|
|
||||||
.pdf 00;33
|
|
||||||
.ps 00;33
|
|
||||||
.ps.gz 00;33
|
|
||||||
.txt 00;33
|
|
||||||
.patch 00;33
|
|
||||||
.diff 00;33
|
|
||||||
.log 00;33
|
|
||||||
.tex 00;33
|
|
||||||
.xls 00;33
|
|
||||||
.xlsx 00;33
|
|
||||||
.ppt 00;33
|
|
||||||
.pptx 00;33
|
|
||||||
.rtf 00;33
|
|
||||||
.doc 00;33
|
|
||||||
.docx 00;33
|
|
||||||
.odt 00;33
|
|
||||||
.ods 00;33
|
|
||||||
.odp 00;33
|
|
||||||
.xml 00;33
|
|
||||||
.epub 00;33
|
|
||||||
.abw 00;33
|
|
||||||
.html 00;33
|
|
||||||
.wpd 00;33
|
|
||||||
|
|
@ -1,4 +1,6 @@
|
||||||
#! /bin/csh -f
|
# skip everything for non-interactive shells
|
||||||
|
if (! $?prompt) exit
|
||||||
|
|
||||||
# color-ls initialization
|
# color-ls initialization
|
||||||
if ( $?USER_LS_COLORS ) then
|
if ( $?USER_LS_COLORS ) then
|
||||||
if ( "$USER_LS_COLORS" != "" ) then
|
if ( "$USER_LS_COLORS" != "" ) then
|
||||||
|
|
@ -11,34 +13,49 @@ endif
|
||||||
alias ll 'ls -l'
|
alias ll 'ls -l'
|
||||||
alias l. 'ls -d .*'
|
alias l. 'ls -d .*'
|
||||||
set COLORS=/etc/DIR_COLORS
|
set COLORS=/etc/DIR_COLORS
|
||||||
|
|
||||||
if ($?TERM) then
|
if ($?TERM) then
|
||||||
if ( -e "/etc/DIR_COLORS.$TERM" ) then
|
if ( -e "/etc/DIR_COLORS.$TERM" ) then
|
||||||
set COLORS="/etc/DIR_COLORS.$TERM"
|
set COLORS="/etc/DIR_COLORS.$TERM"
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
if ( -e "/etc/DIR_COLORS.256color" ) then
|
|
||||||
if ( "`tty -s && tput colors`" == "256" ) then
|
|
||||||
set COLORS=/etc/DIR_COLORS.256color
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
if ( -f ~/.dircolors ) set COLORS=~/.dircolors
|
if ( -f ~/.dircolors ) set COLORS=~/.dircolors
|
||||||
if ( -f ~/.dir_colors ) set COLORS=~/.dir_colors
|
if ( -f ~/.dir_colors ) set COLORS=~/.dir_colors
|
||||||
if ($?TERM) then
|
if ($?TERM) then
|
||||||
if ( -f ~/.dircolors."$TERM" ) set COLORS=~/.dircolors."$TERM"
|
if ( -f ~/.dircolors."$TERM" ) set COLORS=~/.dircolors."$TERM"
|
||||||
if ( -f ~/.dir_colors."$TERM" ) set COLORS=~/.dir_colors."$TERM"
|
if ( -f ~/.dir_colors."$TERM" ) set COLORS=~/.dir_colors."$TERM"
|
||||||
endif
|
endif
|
||||||
|
set INCLUDE="`/usr/bin/cat "$COLORS" | /usr/bin/grep '^INCLUDE' | /usr/bin/cut -d ' ' -f2-`"
|
||||||
|
|
||||||
if ( ! -e "$COLORS" ) exit
|
if ( ! -e "$COLORS" ) exit
|
||||||
|
|
||||||
eval "`dircolors -c $COLORS`"
|
set _tmp="`/usr/bin/mktemp .colorlsXXX -q --tmpdir=/tmp`"
|
||||||
|
#if mktemp fails, exit when include was active, otherwise use $COLORS file
|
||||||
|
if ( "$_tmp" == '' ) then
|
||||||
|
if ( "$INCLUDE" == '' ) then
|
||||||
|
eval "`/usr/bin/dircolors -c $COLORS`"
|
||||||
|
endif
|
||||||
|
goto cleanup
|
||||||
|
endif
|
||||||
|
|
||||||
|
if ( "$INCLUDE" != '' ) /usr/bin/cat "$INCLUDE" >> $_tmp
|
||||||
|
/usr/bin/grep -v '^INCLUDE' "$COLORS" >> $_tmp
|
||||||
|
|
||||||
|
eval "`/usr/bin/dircolors -c $_tmp`"
|
||||||
|
|
||||||
|
/usr/bin/rm -f $_tmp
|
||||||
|
|
||||||
if ( "$LS_COLORS" == '' ) exit
|
if ( "$LS_COLORS" == '' ) exit
|
||||||
set color_none=`sed -n '/^COLOR.*none/Ip' < $COLORS`
|
cleanup:
|
||||||
|
set color_none=`/usr/bin/sed -n '/^COLOR.*none/Ip' < $COLORS`
|
||||||
if ( "$color_none" != '' ) then
|
if ( "$color_none" != '' ) then
|
||||||
unset color_none
|
unset color_none
|
||||||
exit
|
exit
|
||||||
endif
|
endif
|
||||||
unset color_none
|
unset color_none
|
||||||
|
unset _tmp
|
||||||
|
unset INCLUDE
|
||||||
|
unset COLORS
|
||||||
|
|
||||||
finish:
|
finish:
|
||||||
alias ll 'ls -l --color=auto'
|
alias ll 'ls -l --color=auto'
|
||||||
|
|
|
||||||
|
|
@ -1,40 +1,53 @@
|
||||||
# color-ls initialization
|
# color-ls initialization
|
||||||
|
|
||||||
|
# Skip all for noninteractive shells.
|
||||||
|
[ ! -t 0 ] && return
|
||||||
|
|
||||||
#when USER_LS_COLORS defined do not override user LS_COLORS, but use them.
|
#when USER_LS_COLORS defined do not override user LS_COLORS, but use them.
|
||||||
if [ -z "$USER_LS_COLORS" ]; then
|
if [ -z "$USER_LS_COLORS" ]; then
|
||||||
|
|
||||||
alias ll='ls -l' 2>/dev/null
|
alias ll='ls -l' 2>/dev/null
|
||||||
alias l.='ls -d .*' 2>/dev/null
|
alias l.='ls -d .*' 2>/dev/null
|
||||||
|
|
||||||
|
INCLUDE=
|
||||||
# Skip the rest for noninteractive shells.
|
|
||||||
[ -z "$PS1" ] && return
|
|
||||||
|
|
||||||
COLORS=
|
COLORS=
|
||||||
|
|
||||||
for colors in "$HOME/.dir_colors.$TERM" "$HOME/.dircolors.$TERM" \
|
for colors in "$HOME/.dir_colors.$TERM" "$HOME/.dircolors.$TERM" \
|
||||||
"$HOME/.dir_colors" "$HOME/.dircolors"; do
|
"$HOME/.dir_colors" "$HOME/.dircolors"; do
|
||||||
[ -e "$colors" ] && COLORS="$colors" && break
|
[ -e "$colors" ] && COLORS="$colors" && \
|
||||||
|
INCLUDE="`/usr/bin/cat "$COLORS" | /usr/bin/grep '^INCLUDE' | /usr/bin/cut -d ' ' -f2-`" && \
|
||||||
|
break
|
||||||
done
|
done
|
||||||
|
|
||||||
[ -z "$COLORS" ] && [ -e "/etc/DIR_COLORS.256color" ] && \
|
[ -z "$COLORS" ] && [ -e "/etc/DIR_COLORS.$TERM" ] && \
|
||||||
[ "x`tty -s && tput colors 2>/dev/null`" = "x256" ] && \
|
COLORS="/etc/DIR_COLORS.$TERM"
|
||||||
COLORS="/etc/DIR_COLORS.256color"
|
|
||||||
|
|
||||||
if [ -z "$COLORS" ]; then
|
[ -z "$COLORS" ] && [ -e "/etc/DIR_COLORS" ] && \
|
||||||
for colors in "/etc/DIR_COLORS.$TERM" "/etc/DIR_COLORS" ; do
|
COLORS="/etc/DIR_COLORS"
|
||||||
[ -e "$colors" ] && COLORS="$colors" && break
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Existence of $COLORS already checked above.
|
# Existence of $COLORS already checked above.
|
||||||
[ -n "$COLORS" ] || return
|
[ -n "$COLORS" ] || return
|
||||||
|
|
||||||
eval "`dircolors --sh "$COLORS" 2>/dev/null`"
|
if [ -e "$INCLUDE" ];
|
||||||
|
then
|
||||||
|
TMP="`/usr/bin/mktemp .colorlsXXX -q --tmpdir=/tmp`"
|
||||||
|
[ -z "$TMP" ] && return
|
||||||
|
|
||||||
|
/usr/bin/cat "$INCLUDE" >> $TMP
|
||||||
|
/usr/bin/grep -v '^INCLUDE' "$COLORS" >> $TMP
|
||||||
|
|
||||||
|
eval "`/usr/bin/dircolors --sh $TMP 2>/dev/null`"
|
||||||
|
/usr/bin/rm -f $TMP
|
||||||
|
else
|
||||||
|
eval "`/usr/bin/dircolors --sh $COLORS 2>/dev/null`"
|
||||||
|
fi
|
||||||
|
|
||||||
[ -z "$LS_COLORS" ] && return
|
[ -z "$LS_COLORS" ] && return
|
||||||
grep -qi "^COLOR.*none" $COLORS >/dev/null 2>/dev/null && return
|
/usr/bin/grep -qi "^COLOR.*none" $COLORS >/dev/null 2>/dev/null && return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
unset TMP COLORS INCLUDE
|
||||||
|
|
||||||
alias ll='ls -l --color=auto' 2>/dev/null
|
alias ll='ls -l --color=auto' 2>/dev/null
|
||||||
alias l.='ls -d .* --color=auto' 2>/dev/null
|
alias l.='ls -d .* --color=auto' 2>/dev/null
|
||||||
alias ls='ls --color=auto' 2>/dev/null
|
alias ls='ls --color=auto' 2>/dev/null
|
||||||
|
|
|
||||||
|
|
@ -1,64 +1,77 @@
|
||||||
diff -urNp coreutils-8.11-orig/doc/coreutils.texi coreutils-8.11/doc/coreutils.texi
|
From 91be1a584108a6a3d96f64382bbf206c4213b3db Mon Sep 17 00:00:00 2001
|
||||||
--- coreutils-8.11-orig/doc/coreutils.texi 2011-04-12 12:07:43.000000000 +0200
|
From: Kamil Dudka <kdudka@redhat.com>
|
||||||
+++ coreutils-8.11/doc/coreutils.texi 2011-04-14 09:53:43.764309420 +0200
|
Date: Mon, 29 Mar 2010 17:20:34 +0000
|
||||||
@@ -10409,6 +10409,13 @@ pseudo-file-systems, such as automounter
|
Subject: [PATCH] coreutils-df-direct.patch
|
||||||
Scale sizes by @var{size} before printing them (@pxref{Block size}).
|
|
||||||
For example, @option{-BG} prints sizes in units of 1,073,741,824 bytes.
|
---
|
||||||
|
doc/coreutils.texi | 7 ++++++
|
||||||
|
src/df.c | 34 ++++++++++++++++++++++++++--
|
||||||
|
tests/df/direct.sh | 55 ++++++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
3 files changed, 94 insertions(+), 2 deletions(-)
|
||||||
|
create mode 100755 tests/df/direct.sh
|
||||||
|
|
||||||
|
diff --git a/doc/coreutils.texi b/doc/coreutils.texi
|
||||||
|
index b420606..0ccb368 100644
|
||||||
|
--- a/doc/coreutils.texi
|
||||||
|
+++ b/doc/coreutils.texi
|
||||||
|
@@ -12597,6 +12597,13 @@ some systems (notably Solaris), doing this yields more up to date results,
|
||||||
|
but in general this option makes @command{df} much slower, especially when
|
||||||
|
there are many or very busy file systems.
|
||||||
|
|
||||||
+@itemx --direct
|
+@item --direct
|
||||||
+@opindex --direct
|
+@opindex --direct
|
||||||
+@cindex direct statfs for a file
|
+@cindex direct statfs for a file
|
||||||
+Do not resolve mount point and show statistics directly for a file. It can be
|
+Do not resolve mount point and show statistics directly for a file. It can be
|
||||||
+especially useful for NFS mount points if there is a boundary between two
|
+especially useful for NFS mount points if there is a boundary between two
|
||||||
+storage policies behind the mount point.
|
+storage policies behind the mount point.
|
||||||
+
|
+
|
||||||
@itemx --total
|
@item --total
|
||||||
@opindex --total
|
@opindex --total
|
||||||
@cindex grand total of disk size, usage and available space
|
@cindex grand total of file system size, usage and available space
|
||||||
diff -urNp coreutils-8.11-orig/src/df.c coreutils-8.11/src/df.c
|
diff --git a/src/df.c b/src/df.c
|
||||||
--- coreutils-8.11-orig/src/df.c 2011-04-12 12:07:43.000000000 +0200
|
index 75e638c..ef9f0a7 100644
|
||||||
+++ coreutils-8.11/src/df.c 2011-04-14 10:37:44.208308771 +0200
|
--- a/src/df.c
|
||||||
@@ -112,6 +112,9 @@ static bool print_type;
|
+++ b/src/df.c
|
||||||
|
@@ -121,6 +121,9 @@ static bool print_type;
|
||||||
/* If true, print a grand total at the end. */
|
/* If true, print a grand total at the end. */
|
||||||
static bool print_grand_total;
|
static bool print_grand_total;
|
||||||
|
|
||||||
+/* If true, show statistics for a file instead of mount point. */
|
+/* If true, show statistics for a file instead of mount point. */
|
||||||
+static bool direct_statfs;
|
+static bool direct_statfs;
|
||||||
+
|
+
|
||||||
/* Grand total data. */
|
/* Grand total data. */
|
||||||
static struct fs_usage grand_fsu;
|
static struct fs_usage grand_fsu;
|
||||||
|
|
||||||
@@ -166,13 +169,15 @@ static size_t nrows;
|
@@ -248,13 +251,15 @@ enum
|
||||||
enum
|
|
||||||
{
|
|
||||||
NO_SYNC_OPTION = CHAR_MAX + 1,
|
NO_SYNC_OPTION = CHAR_MAX + 1,
|
||||||
- SYNC_OPTION
|
SYNC_OPTION,
|
||||||
+ SYNC_OPTION,
|
TOTAL_OPTION,
|
||||||
|
- OUTPUT_OPTION
|
||||||
|
+ OUTPUT_OPTION,
|
||||||
+ DIRECT_OPTION
|
+ DIRECT_OPTION
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct option const long_options[] =
|
static struct option const long_options[] =
|
||||||
{
|
{
|
||||||
{"all", no_argument, NULL, 'a'},
|
{"all", no_argument, nullptr, 'a'},
|
||||||
{"block-size", required_argument, NULL, 'B'},
|
{"block-size", required_argument, nullptr, 'B'},
|
||||||
+ {"direct", no_argument, NULL, DIRECT_OPTION},
|
+ {"direct", no_argument, nullptr, DIRECT_OPTION},
|
||||||
{"inodes", no_argument, NULL, 'i'},
|
{"inodes", no_argument, nullptr, 'i'},
|
||||||
{"human-readable", no_argument, NULL, 'h'},
|
{"human-readable", no_argument, nullptr, 'h'},
|
||||||
{"si", no_argument, NULL, 'H'},
|
{"si", no_argument, nullptr, 'H'},
|
||||||
@@ -259,7 +264,11 @@ get_header (void)
|
@@ -571,7 +576,10 @@ get_header (void)
|
||||||
}
|
for (idx_t col = 0; col < ncolumns; col++)
|
||||||
|
{
|
||||||
|
char *cell;
|
||||||
|
- char const *header = _(columns[col]->caption);
|
||||||
|
+ char const *header = (columns[col]->field == TARGET_FIELD
|
||||||
|
+ && direct_statfs)?
|
||||||
|
+ _("File") :
|
||||||
|
+ _(columns[col]->caption);
|
||||||
|
|
||||||
char *cell = NULL;
|
if (columns[col]->field == SIZE_FIELD
|
||||||
- char const *header = _(headers[field][header_mode]);
|
&& (header_mode == DEFAULT_MODE
|
||||||
+
|
@@ -1446,6 +1454,17 @@ get_point (char const *point, const struct stat *statp)
|
||||||
+ char const *header = (field == MNT_FIELD && direct_statfs)?
|
|
||||||
+ _("File") :
|
|
||||||
+ _(headers[field][header_mode]);
|
|
||||||
+
|
|
||||||
if (!header)
|
|
||||||
header = _(headers[field][DEFAULT_MODE]);
|
|
||||||
|
|
||||||
@@ -757,6 +766,17 @@ get_point (const char *point, const stru
|
|
||||||
static void
|
static void
|
||||||
get_entry (char const *name, struct stat const *statp)
|
get_entry (char const *name, struct stat const *statp)
|
||||||
{
|
{
|
||||||
|
|
@ -66,25 +79,25 @@ diff -urNp coreutils-8.11-orig/src/df.c coreutils-8.11/src/df.c
|
||||||
+ {
|
+ {
|
||||||
+ char *resolved = canonicalize_file_name (name);
|
+ char *resolved = canonicalize_file_name (name);
|
||||||
+ if (resolved)
|
+ if (resolved)
|
||||||
+ {
|
+ {
|
||||||
+ get_dev (NULL, resolved, NULL, NULL, false, false, NULL);
|
+ get_dev (NULL, resolved, name, NULL, NULL, false, false, NULL, false);
|
||||||
+ free (resolved);
|
+ free (resolved);
|
||||||
+ return;
|
+ return;
|
||||||
+ }
|
+ }
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
if ((S_ISBLK (statp->st_mode) || S_ISCHR (statp->st_mode))
|
if ((S_ISBLK (statp->st_mode) || S_ISCHR (statp->st_mode))
|
||||||
&& get_disk (name))
|
&& get_device (name))
|
||||||
return;
|
return;
|
||||||
@@ -825,6 +845,7 @@ Mandatory arguments to long options are
|
@@ -1516,6 +1535,7 @@ or all file systems by default.\n\
|
||||||
-B, --block-size=SIZE scale sizes by SIZE before printing them. E.g.,\n\
|
-B, --block-size=SIZE scale sizes by SIZE before printing them; e.g.,\n\
|
||||||
`-BM' prints sizes in units of 1,048,576 bytes.\n\
|
'-BM' prints sizes in units of 1,048,576 bytes;\n\
|
||||||
See SIZE format below.\n\
|
see SIZE format below\n\
|
||||||
+ --direct show statistics for a file instead of mount point\n\
|
+ --direct show statistics for a file instead of mount point\n\
|
||||||
--total produce a grand total\n\
|
-h, --human-readable print sizes in powers of 1024 (e.g., 1023M)\n\
|
||||||
-h, --human-readable print sizes in human readable format (e.g., 1K 234M 2G)\
|
-H, --si print sizes in powers of 1000 (e.g., 1.1G)\n\
|
||||||
\n\
|
"), stdout);
|
||||||
@@ -901,6 +922,9 @@ main (int argc, char **argv)
|
@@ -1610,6 +1630,9 @@ main (int argc, char **argv)
|
||||||
xstrtol_fatal (e, oi, c, long_options, optarg);
|
xstrtol_fatal (e, oi, c, long_options, optarg);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
@ -92,25 +105,27 @@ diff -urNp coreutils-8.11-orig/src/df.c coreutils-8.11/src/df.c
|
||||||
+ direct_statfs = true;
|
+ direct_statfs = true;
|
||||||
+ break;
|
+ break;
|
||||||
case 'i':
|
case 'i':
|
||||||
inode_format = true;
|
if (header_mode == OUTPUT_MODE)
|
||||||
break;
|
{
|
||||||
@@ -961,6 +985,13 @@ main (int argc, char **argv)
|
@@ -1706,6 +1729,13 @@ main (int argc, char **argv)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
+ if (direct_statfs && show_local_fs)
|
+ if (direct_statfs && show_local_fs)
|
||||||
+ {
|
+ {
|
||||||
+ error (0, 0, _("options --direct and --local (-l) are mutually "
|
+ error (0, 0, _("options --direct and --local (-l) are mutually "
|
||||||
+ "exclusive"));
|
+ "exclusive"));
|
||||||
+ usage (EXIT_FAILURE);
|
+ usage (EXIT_FAILURE);
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
if (human_output_opts == -1)
|
if (human_output_opts == -1)
|
||||||
{
|
{
|
||||||
if (posix_format)
|
if (posix_format)
|
||||||
diff -urNp coreutils-8.11-orig/tests/df/direct coreutils-8.11/tests/df/direct
|
diff --git a/tests/df/direct.sh b/tests/df/direct.sh
|
||||||
--- coreutils-8.11-orig/tests/df/direct 1970-01-01 01:00:00.000000000 +0100
|
new file mode 100755
|
||||||
+++ coreutils-8.11/tests/df/direct 2011-04-14 09:53:43.767400034 +0200
|
index 0000000..8e4cfb8
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/tests/df/direct.sh
|
||||||
@@ -0,0 +1,55 @@
|
@@ -0,0 +1,55 @@
|
||||||
+#!/bin/sh
|
+#!/bin/sh
|
||||||
+# Ensure "df --direct" works as documented
|
+# Ensure "df --direct" works as documented
|
||||||
|
|
@ -133,7 +148,7 @@ diff -urNp coreutils-8.11-orig/tests/df/direct coreutils-8.11/tests/df/direct
|
||||||
+. "${srcdir=.}/init.sh"; path_prepend_ ../src
|
+. "${srcdir=.}/init.sh"; path_prepend_ ../src
|
||||||
+print_ver_ df
|
+print_ver_ df
|
||||||
+
|
+
|
||||||
+df || skip_test_ "df fails"
|
+df || skip_ "df fails"
|
||||||
+
|
+
|
||||||
+DIR=`pwd` || framework_failure
|
+DIR=`pwd` || framework_failure
|
||||||
+FILE="$DIR/file"
|
+FILE="$DIR/file"
|
||||||
|
|
@ -167,14 +182,6 @@ diff -urNp coreutils-8.11-orig/tests/df/direct coreutils-8.11/tests/df/direct
|
||||||
+compare file_out file_exp || fail=1
|
+compare file_out file_exp || fail=1
|
||||||
+
|
+
|
||||||
+Exit $fail
|
+Exit $fail
|
||||||
diff -urNp coreutils-8.11-orig/tests/Makefile.am coreutils-8.11/tests/Makefile.am
|
--
|
||||||
--- coreutils-8.11-orig/tests/Makefile.am 2011-04-14 09:53:13.666324768 +0200
|
2.52.0
|
||||||
+++ coreutils-8.11/tests/Makefile.am 2011-04-14 09:53:43.768432620 +0200
|
|
||||||
@@ -362,6 +362,7 @@ TESTS = \
|
|
||||||
dd/stderr \
|
|
||||||
dd/unblock \
|
|
||||||
dd/unblock-sync \
|
|
||||||
+ df/direct \
|
|
||||||
df/total-verify \
|
|
||||||
du/2g \
|
|
||||||
du/8gb \
|
|
||||||
|
|
|
||||||
|
|
@ -1,86 +0,0 @@
|
||||||
diff --git a/lib/getugroups.c b/lib/getugroups.c
|
|
||||||
index 299bae6..8ece29b 100644
|
|
||||||
--- a/lib/getugroups.c
|
|
||||||
+++ b/lib/getugroups.c
|
|
||||||
@@ -19,6 +19,9 @@
|
|
||||||
|
|
||||||
#include <config.h>
|
|
||||||
|
|
||||||
+/* We do not need this code if getgrouplist(3) is available. */
|
|
||||||
+#ifndef HAVE_GETGROUPLIST
|
|
||||||
+
|
|
||||||
#include "getugroups.h"
|
|
||||||
|
|
||||||
#include <errno.h>
|
|
||||||
@@ -123,3 +126,4 @@ getugroups (int maxcount, gid_t *grouplist, char const *username,
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* HAVE_GRP_H */
|
|
||||||
+#endif /* have getgrouplist */
|
|
||||||
diff --git a/lib/mgetgroups.c b/lib/mgetgroups.c
|
|
||||||
index 76474c2..0a9d221 100644
|
|
||||||
--- a/lib/mgetgroups.c
|
|
||||||
+++ b/lib/mgetgroups.c
|
|
||||||
@@ -115,9 +115,17 @@ mgetgroups (char const *username, gid_t gid, gid_t **groups)
|
|
||||||
/* else no username, so fall through and use getgroups. */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
- max_n_groups = (username
|
|
||||||
- ? getugroups (0, NULL, username, gid)
|
|
||||||
- : getgroups (0, NULL));
|
|
||||||
+ if (!username)
|
|
||||||
+ max_n_groups = getgroups(0, NULL);
|
|
||||||
+ else
|
|
||||||
+ {
|
|
||||||
+#ifdef HAVE_GETGROUPLIST
|
|
||||||
+ max_n_groups = 0;
|
|
||||||
+ getgrouplist (username, gid, NULL, &max_n_groups);
|
|
||||||
+#else
|
|
||||||
+ max_n_groups = getugroups (0, NULL, username, gid);
|
|
||||||
+#endif
|
|
||||||
+ }
|
|
||||||
|
|
||||||
/* If we failed to count groups because there is no supplemental
|
|
||||||
group support, then return an array containing just GID.
|
|
||||||
@@ -139,10 +147,25 @@ mgetgroups (char const *username, gid_t gid, gid_t **groups)
|
|
||||||
if (g == NULL)
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
- ng = (username
|
|
||||||
- ? getugroups (max_n_groups, g, username, gid)
|
|
||||||
- : getgroups (max_n_groups - (gid != (gid_t) -1),
|
|
||||||
- g + (gid != (gid_t) -1)));
|
|
||||||
+ if (!username)
|
|
||||||
+ ng = getgroups (max_n_groups - (gid != (gid_t)-1), g + (gid != (gid_t)-1));
|
|
||||||
+ else
|
|
||||||
+ {
|
|
||||||
+#ifdef HAVE_GETGROUPLIST
|
|
||||||
+ int e;
|
|
||||||
+ ng = max_n_groups;
|
|
||||||
+ while ((e = getgrouplist (username, gid, g, &ng)) == -1
|
|
||||||
+ && ng > max_n_groups)
|
|
||||||
+ {
|
|
||||||
+ max_n_groups = ng;
|
|
||||||
+ g = xrealloc (g, max_n_groups * sizeof (GETGROUPS_T));
|
|
||||||
+ }
|
|
||||||
+ if (e == -1)
|
|
||||||
+ ng = -1;
|
|
||||||
+#else
|
|
||||||
+ ng = getugroups (max_n_groups, g, username, gid);
|
|
||||||
+#endif
|
|
||||||
+ }
|
|
||||||
|
|
||||||
if (ng < 0)
|
|
||||||
{
|
|
||||||
diff --git a/m4/jm-macros.m4 b/m4/jm-macros.m4
|
|
||||||
index 62777c7..5180243 100644
|
|
||||||
--- a/m4/jm-macros.m4
|
|
||||||
+++ b/m4/jm-macros.m4
|
|
||||||
@@ -78,6 +78,7 @@ AC_DEFUN([coreutils_MACROS],
|
|
||||||
fchown \
|
|
||||||
fchmod \
|
|
||||||
ftruncate \
|
|
||||||
+ getgrouplist \
|
|
||||||
iswspace \
|
|
||||||
mkfifo \
|
|
||||||
mbrlen \
|
|
||||||
4506
coreutils-i18n.patch
4506
coreutils-i18n.patch
File diff suppressed because it is too large
Load diff
312
coreutils-keyring.gpg
Normal file
312
coreutils-keyring.gpg
Normal file
|
|
@ -0,0 +1,312 @@
|
||||||
|
Release GPG keyring of coreutils group.
|
||||||
|
|
||||||
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
|
|
||||||
|
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
|
||||||
|
0rQiUMOhZHJhaWcgQnJhZHkgPHBicmFkeUByZWRoYXQuY29tPokCHwQwAQIACQUC
|
||||||
|
Vp+cpgIdIAAKCRDfb9lxMGA32UftD/9jYqsCfNAzb0vhDOaU1AchzaQa1pIKEjoL
|
||||||
|
6d4AMeXFSBpMi4nYJpN+rmM8DAzcbenBcSoIqecdfENp3mY+hI8mYdnMiVpldsro
|
||||||
|
EAl/SDxY6//pPd0Dnmoe6sNodBB2uwHxhQi9ubz72iWX5WiKP8+OUAj91cLMl9nK
|
||||||
|
IYfcHy3iinSRqT02JP33DGDwsHCoAMmp59g6AHnf0sjCtZEtK79MtKiKTkUdMazP
|
||||||
|
VGs81x1jCO2kvvmy0fDZxkGuyso0inae2hsaMSqqoga5lC0jQanFIXSEkLZgJglj
|
||||||
|
LmiWPO0IGHPFth/e//51atGUmpdd2ufQ/QVoxSnQKRFQ98eO/SQ75bO5vbE8dGv8
|
||||||
|
oX9S3M9NjKOY9VnXC/JDyMXt2aMDs9tqSo22lJuT2Wq20wM5hlszxKI7c9QphnuH
|
||||||
|
yPNtszzXo1+5/UEuCNIQoe59MoscGmx7GN5WvlENaixGg7tzpZ+wdftN7BUcpJfC
|
||||||
|
gsEQurHzPEIomlszp3xraX0G84plClas13Ie8CIVM7UPbF0Cwx6XwhryjaDTkq3f
|
||||||
|
+mjQXtNJQk487q8cc9dxplslXiDqBYVngV+oDKOjrqc5PXSQm2M8EYRn9SXuFnT8
|
||||||
|
iF5SkuFYtgOEj3KNZ04ZB1I7AQebylS2LGwWan8yWJSAs22eR9urWBVpmre6GUGZ
|
||||||
|
fo7YBdOvbLQiUMOhZHJhaWcgQnJhZHkgPHBpeGVsYmVhdEBnbnUub3JnPokCOAQT
|
||||||
|
AQIAIgUCTnyAtAIbAwYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQ32/ZcTBg
|
||||||
|
N9moHg/+Mjq/O1RnNg7kdUjRK1wOflym7itgE8kq4G55EJvLSxo6wIgd7ZKUj+cv
|
||||||
|
X+iXQpGRc3bicpNTsKcW6EjDtyg+VCSWD7qJ3EtwxVf9mN3bIqWSVwP0k8kc1N+t
|
||||||
|
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
|
||||||
|
ELphkzjc6eM3CaOZ73u4GVXotheeUabUHQ==
|
||||||
|
=drvb
|
||||||
|
-----END PGP PUBLIC KEY BLOCK-----
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
--- coreutils-5.2.1/src/who.c.overflow 2005-05-25 09:59:06.000000000 +0100
|
|
||||||
+++ coreutils-5.2.1/src/who.c 2005-05-25 10:00:31.000000000 +0100
|
|
||||||
@@ -75,7 +75,7 @@
|
|
||||||
# define UT_TYPE_NEW_TIME(U) false
|
|
||||||
#endif
|
|
||||||
|
|
||||||
-#define IDLESTR_LEN 6
|
|
||||||
+#define IDLESTR_LEN 10
|
|
||||||
|
|
||||||
#if HAVE_STRUCT_XTMP_UT_PID
|
|
||||||
# define PIDSTR_DECL_AND_INIT(Var, Utmp_ent) \
|
|
||||||
65
coreutils-python3.patch
Normal file
65
coreutils-python3.patch
Normal file
|
|
@ -0,0 +1,65 @@
|
||||||
|
From 8927d505ecb5334f09c48ef98ef1f464f581d0f7 Mon Sep 17 00:00:00 2001
|
||||||
|
From: rpm-build <rpm-build>
|
||||||
|
Date: Tue, 2 Apr 2024 14:11:26 +0100
|
||||||
|
Subject: [PATCH] coreutils-python3.patch
|
||||||
|
|
||||||
|
---
|
||||||
|
init.cfg | 4 ++--
|
||||||
|
tests/d_type-check | 2 +-
|
||||||
|
tests/du/move-dir-while-traversing.sh | 6 +++---
|
||||||
|
3 files changed, 6 insertions(+), 6 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/init.cfg b/init.cfg
|
||||||
|
index ac05f7b..26d9516 100644
|
||||||
|
--- a/init.cfg
|
||||||
|
+++ b/init.cfg
|
||||||
|
@@ -601,10 +601,10 @@ seek_data_capable_()
|
||||||
|
# Skip the current test if "." lacks d_type support.
|
||||||
|
require_dirent_d_type_()
|
||||||
|
{
|
||||||
|
- python < /dev/null \
|
||||||
|
+ python3 < /dev/null \
|
||||||
|
|| skip_ python missing: assuming no d_type support
|
||||||
|
|
||||||
|
- python "$abs_srcdir"/tests/d_type-check \
|
||||||
|
+ python3 "$abs_srcdir"/tests/d_type-check \
|
||||||
|
|| skip_ requires d_type support
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/tests/d_type-check b/tests/d_type-check
|
||||||
|
index 1a2f76f..42d3924 100644
|
||||||
|
--- a/tests/d_type-check
|
||||||
|
+++ b/tests/d_type-check
|
||||||
|
@@ -1,4 +1,4 @@
|
||||||
|
-#!/usr/bin/python
|
||||||
|
+#!/usr/bin/python3
|
||||||
|
# Exit 0 if "." and "./tempfile" have useful d_type information, else 1.
|
||||||
|
# Intended to exit 0 only on Linux/GNU systems.
|
||||||
|
import os
|
||||||
|
diff --git a/tests/du/move-dir-while-traversing.sh b/tests/du/move-dir-while-traversing.sh
|
||||||
|
index adf482b..cf9214a 100755
|
||||||
|
--- a/tests/du/move-dir-while-traversing.sh
|
||||||
|
+++ b/tests/du/move-dir-while-traversing.sh
|
||||||
|
@@ -21,8 +21,8 @@ print_ver_ du
|
||||||
|
require_trap_signame_
|
||||||
|
|
||||||
|
# We use a python-inotify script, so...
|
||||||
|
-python -m pyinotify -h > /dev/null \
|
||||||
|
- || skip_ 'python inotify package not installed'
|
||||||
|
+python3 -m pyinotify -h > /dev/null \
|
||||||
|
+ || skip_ 'python3 inotify package not installed'
|
||||||
|
|
||||||
|
# Move a directory "up" while du is processing its sub-directories.
|
||||||
|
# While du is processing a hierarchy .../B/C/D/... this script
|
||||||
|
@@ -33,7 +33,7 @@ python -m pyinotify -h > /dev/null \
|
||||||
|
# rename syscall before du finishes processing the subtree under D/.
|
||||||
|
|
||||||
|
cat <<'EOF' > inotify-watch-for-dir-access.py
|
||||||
|
-#!/usr/bin/env python
|
||||||
|
+#!/usr/bin/env python3
|
||||||
|
import pyinotify as pn
|
||||||
|
import os,sys
|
||||||
|
|
||||||
|
--
|
||||||
|
2.51.0
|
||||||
|
|
||||||
|
|
@ -1,4 +0,0 @@
|
||||||
#%PAM-1.0
|
|
||||||
auth include runuser
|
|
||||||
session optional pam_keyinit.so force revoke
|
|
||||||
session include runuser
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
#%PAM-1.0
|
|
||||||
auth sufficient pam_rootok.so
|
|
||||||
session optional pam_keyinit.so revoke
|
|
||||||
session required pam_limits.so
|
|
||||||
session required pam_unix.so
|
|
||||||
|
|
@ -1,669 +0,0 @@
|
||||||
diff -urNp coreutils-8.11-orig/configure.ac coreutils-8.11/configure.ac
|
|
||||||
--- coreutils-8.11-orig/configure.ac 2011-04-14 11:05:27.511308852 +0200
|
|
||||||
+++ coreutils-8.11/configure.ac 2011-04-14 11:06:05.481433832 +0200
|
|
||||||
@@ -132,6 +132,13 @@ if test "$gl_gcc_warnings" = yes; then
|
|
||||||
AC_SUBST([GNULIB_TEST_WARN_CFLAGS])
|
|
||||||
fi
|
|
||||||
|
|
||||||
+dnl Give the chance to enable SELINUX
|
|
||||||
+AC_ARG_ENABLE(selinux, dnl
|
|
||||||
+[ --enable-selinux Enable use of the SELINUX libraries],
|
|
||||||
+[AC_DEFINE(WITH_SELINUX, 1, [Define if you want to use SELINUX])
|
|
||||||
+LIB_SELINUX="-lselinux"
|
|
||||||
+AC_SUBST(LIB_SELINUX)])
|
|
||||||
+
|
|
||||||
AC_FUNC_FORK
|
|
||||||
|
|
||||||
AC_ARG_ENABLE(pam, AS_HELP_STRING([--disable-pam],
|
|
||||||
diff -urNp coreutils-8.11-orig/man/chcon.x coreutils-8.11/man/chcon.x
|
|
||||||
--- coreutils-8.11-orig/man/chcon.x 2009-09-01 13:01:16.000000000 +0200
|
|
||||||
+++ coreutils-8.11/man/chcon.x 2011-04-14 11:06:05.482433878 +0200
|
|
||||||
@@ -1,4 +1,4 @@
|
|
||||||
[NAME]
|
|
||||||
-chcon \- change file security context
|
|
||||||
+chcon \- change file SELinux security context
|
|
||||||
[DESCRIPTION]
|
|
||||||
.\" Add any additional description here
|
|
||||||
diff -urNp coreutils-8.11-orig/man/runcon.x coreutils-8.11/man/runcon.x
|
|
||||||
--- coreutils-8.11-orig/man/runcon.x 2009-09-01 13:01:16.000000000 +0200
|
|
||||||
+++ coreutils-8.11/man/runcon.x 2011-04-14 11:06:05.483445779 +0200
|
|
||||||
@@ -1,5 +1,5 @@
|
|
||||||
[NAME]
|
|
||||||
-runcon \- run command with specified security context
|
|
||||||
+runcon \- run command with specified SELinux security context
|
|
||||||
[DESCRIPTION]
|
|
||||||
Run COMMAND with completely-specified CONTEXT, or with current or
|
|
||||||
transitioned security context modified by one or more of LEVEL,
|
|
||||||
diff -urNp coreutils-8.11-orig/src/chcon.c coreutils-8.11/src/chcon.c
|
|
||||||
--- coreutils-8.11-orig/src/chcon.c 2011-02-19 18:17:03.000000000 +0100
|
|
||||||
+++ coreutils-8.11/src/chcon.c 2011-04-14 11:06:05.489434075 +0200
|
|
||||||
@@ -356,7 +356,7 @@ Usage: %s [OPTION]... CONTEXT FILE...\n\
|
|
||||||
"),
|
|
||||||
program_name, program_name, program_name);
|
|
||||||
fputs (_("\
|
|
||||||
-Change the security context of each FILE to CONTEXT.\n\
|
|
||||||
+Change the SELinux security context of each FILE to CONTEXT.\n\
|
|
||||||
With --reference, change the security context of each FILE to that of RFILE.\n\
|
|
||||||
\n\
|
|
||||||
-h, --no-dereference affect symbolic links instead of any referenced file\n\
|
|
||||||
diff -urNp coreutils-8.11-orig/src/copy.c coreutils-8.11/src/copy.c
|
|
||||||
--- coreutils-8.11-orig/src/copy.c 2011-04-12 12:07:43.000000000 +0200
|
|
||||||
+++ coreutils-8.11/src/copy.c 2011-04-14 11:06:05.485433752 +0200
|
|
||||||
@@ -2179,6 +2179,8 @@ copy_internal (char const *src_name, cha
|
|
||||||
{
|
|
||||||
/* Here, we are crossing a file system boundary and cp's -x option
|
|
||||||
is in effect: so don't copy the contents of this directory. */
|
|
||||||
+ if (x->preserve_security_context)
|
|
||||||
+ restore_default_fscreatecon_or_die ();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
diff -urNp coreutils-8.11-orig/src/copy.h coreutils-8.11/src/copy.h
|
|
||||||
--- coreutils-8.11-orig/src/copy.h 2011-02-19 18:17:03.000000000 +0100
|
|
||||||
+++ coreutils-8.11/src/copy.h 2011-04-14 11:06:05.487340225 +0200
|
|
||||||
@@ -158,6 +158,9 @@ struct cp_options
|
|
||||||
bool preserve_mode;
|
|
||||||
bool preserve_timestamps;
|
|
||||||
|
|
||||||
+ /* If true, attempt to set specified security context */
|
|
||||||
+ bool set_security_context;
|
|
||||||
+
|
|
||||||
/* Enabled for mv, and for cp by the --preserve=links option.
|
|
||||||
If true, attempt to preserve in the destination files any
|
|
||||||
logical hard links between the source files. If used with cp's
|
|
||||||
diff -urNp coreutils-8.11-orig/src/cp.c coreutils-8.11/src/cp.c
|
|
||||||
--- coreutils-8.11-orig/src/cp.c 2011-02-19 18:17:03.000000000 +0100
|
|
||||||
+++ coreutils-8.11/src/cp.c 2011-04-14 11:06:05.488433894 +0200
|
|
||||||
@@ -141,6 +141,7 @@ static struct option const long_opts[] =
|
|
||||||
{"target-directory", required_argument, NULL, 't'},
|
|
||||||
{"update", no_argument, NULL, 'u'},
|
|
||||||
{"verbose", no_argument, NULL, 'v'},
|
|
||||||
+ {"context", required_argument, NULL, 'Z'},
|
|
||||||
{GETOPT_HELP_OPTION_DECL},
|
|
||||||
{GETOPT_VERSION_OPTION_DECL},
|
|
||||||
{NULL, 0, NULL, 0}
|
|
||||||
@@ -204,6 +205,9 @@ Mandatory arguments to long options are
|
|
||||||
all\n\
|
|
||||||
"), stdout);
|
|
||||||
fputs (_("\
|
|
||||||
+ -c same as --preserve=context\n\
|
|
||||||
+"), stdout);
|
|
||||||
+ fputs (_("\
|
|
||||||
--no-preserve=ATTR_LIST don't preserve the specified attributes\n\
|
|
||||||
--parents use full source file name under DIRECTORY\n\
|
|
||||||
"), stdout);
|
|
||||||
@@ -230,6 +234,7 @@ Mandatory arguments to long options are
|
|
||||||
destination file is missing\n\
|
|
||||||
-v, --verbose explain what is being done\n\
|
|
||||||
-x, --one-file-system stay on this file system\n\
|
|
||||||
+ -Z, --context=CONTEXT set security context of copy to CONTEXT\n\
|
|
||||||
"), stdout);
|
|
||||||
fputs (HELP_OPTION_DESCRIPTION, stdout);
|
|
||||||
fputs (VERSION_OPTION_DESCRIPTION, stdout);
|
|
||||||
@@ -786,6 +791,7 @@ cp_option_init (struct cp_options *x)
|
|
||||||
x->preserve_timestamps = false;
|
|
||||||
x->preserve_security_context = false;
|
|
||||||
x->require_preserve_context = false;
|
|
||||||
+ x->set_security_context = false;
|
|
||||||
x->preserve_xattr = false;
|
|
||||||
x->reduce_diagnostics = false;
|
|
||||||
x->require_preserve_xattr = false;
|
|
||||||
@@ -933,7 +939,7 @@ main (int argc, char **argv)
|
|
||||||
we'll actually use backup_suffix_string. */
|
|
||||||
backup_suffix_string = getenv ("SIMPLE_BACKUP_SUFFIX");
|
|
||||||
|
|
||||||
- while ((c = getopt_long (argc, argv, "abdfHilLnprst:uvxPRS:T",
|
|
||||||
+ while ((c = getopt_long (argc, argv, "abcdfHilLnprst:uvxPRS:TZ:",
|
|
||||||
long_opts, NULL))
|
|
||||||
!= -1)
|
|
||||||
{
|
|
||||||
@@ -981,6 +987,16 @@ main (int argc, char **argv)
|
|
||||||
copy_contents = true;
|
|
||||||
break;
|
|
||||||
|
|
||||||
+ case 'c':
|
|
||||||
+ if ( x.set_security_context ) {
|
|
||||||
+ (void) fprintf(stderr, "%s: cannot force target context and preserve it\n", argv[0]);
|
|
||||||
+ exit( 1 );
|
|
||||||
+ }
|
|
||||||
+ else if (selinux_enabled) {
|
|
||||||
+ x.preserve_security_context = true;
|
|
||||||
+ x.require_preserve_context = true;
|
|
||||||
+ }
|
|
||||||
+ break;
|
|
||||||
case 'd':
|
|
||||||
x.preserve_links = true;
|
|
||||||
x.dereference = DEREF_NEVER;
|
|
||||||
@@ -1090,6 +1106,27 @@ main (int argc, char **argv)
|
|
||||||
x.one_file_system = true;
|
|
||||||
break;
|
|
||||||
|
|
||||||
+
|
|
||||||
+ case 'Z':
|
|
||||||
+ /* politely decline if we're not on a selinux-enabled kernel. */
|
|
||||||
+ if( !selinux_enabled ) {
|
|
||||||
+ fprintf( stderr, "Warning: ignoring --context (-Z). "
|
|
||||||
+ "It requires a SELinux enabled kernel.\n" );
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
+ if ( x.preserve_security_context ) {
|
|
||||||
+ (void) fprintf(stderr, "%s: cannot force target context to '%s' and preserve it\n", argv[0], optarg);
|
|
||||||
+ exit( 1 );
|
|
||||||
+ }
|
|
||||||
+ x.set_security_context = true;
|
|
||||||
+ /* if there's a security_context given set new path
|
|
||||||
+ components to that context, too */
|
|
||||||
+ if ( setfscreatecon(optarg) < 0 ) {
|
|
||||||
+ (void) fprintf(stderr, _("cannot set default security context %s\n"), optarg);
|
|
||||||
+ exit( 1 );
|
|
||||||
+ }
|
|
||||||
+ break;
|
|
||||||
+
|
|
||||||
case 'S':
|
|
||||||
make_backups = true;
|
|
||||||
backup_suffix_string = optarg;
|
|
||||||
diff -urNp coreutils-8.11-orig/src/id.c coreutils-8.11/src/id.c
|
|
||||||
--- coreutils-8.11-orig/src/id.c 2011-02-19 18:17:03.000000000 +0100
|
|
||||||
+++ coreutils-8.11/src/id.c 2011-04-14 11:06:05.490435340 +0200
|
|
||||||
@@ -107,7 +107,7 @@ int
|
|
||||||
main (int argc, char **argv)
|
|
||||||
{
|
|
||||||
int optc;
|
|
||||||
- int selinux_enabled = (is_selinux_enabled () > 0);
|
|
||||||
+ bool selinux_enabled = (is_selinux_enabled () > 0);
|
|
||||||
|
|
||||||
/* If true, output the list of all group IDs. -G */
|
|
||||||
bool just_group_list = false;
|
|
||||||
diff -urNp coreutils-8.11-orig/src/install.c coreutils-8.11/src/install.c
|
|
||||||
--- coreutils-8.11-orig/src/install.c 2011-04-12 12:07:43.000000000 +0200
|
|
||||||
+++ coreutils-8.11/src/install.c 2011-04-14 11:07:58.333433706 +0200
|
|
||||||
@@ -261,6 +261,7 @@ cp_option_init (struct cp_options *x)
|
|
||||||
x->data_copy_required = true;
|
|
||||||
x->require_preserve = false;
|
|
||||||
x->require_preserve_context = false;
|
|
||||||
+ x->set_security_context = false;
|
|
||||||
x->require_preserve_xattr = false;
|
|
||||||
x->recursive = false;
|
|
||||||
x->sparse_mode = SPARSE_AUTO;
|
|
||||||
@@ -622,7 +623,7 @@ Mandatory arguments to long options are
|
|
||||||
-v, --verbose print the name of each directory as it is created\n\
|
|
||||||
"), stdout);
|
|
||||||
fputs (_("\
|
|
||||||
- --preserve-context preserve SELinux security context\n\
|
|
||||||
+ -P, --preserve-context preserve SELinux security context\n\
|
|
||||||
-Z, --context=CONTEXT set SELinux security context of files and directories\
|
|
||||||
\n\
|
|
||||||
"), stdout);
|
|
||||||
@@ -765,7 +766,7 @@ main (int argc, char **argv)
|
|
||||||
we'll actually use backup_suffix_string. */
|
|
||||||
backup_suffix_string = getenv ("SIMPLE_BACKUP_SUFFIX");
|
|
||||||
|
|
||||||
- while ((optc = getopt_long (argc, argv, "bcCsDdg:m:o:pt:TvS:Z:", long_options,
|
|
||||||
+ while ((optc = getopt_long (argc, argv, "bcCsDdg:m:o:pPt:TvS:Z:", long_options,
|
|
||||||
NULL)) != -1)
|
|
||||||
{
|
|
||||||
switch (optc)
|
|
||||||
@@ -835,6 +836,7 @@ main (int argc, char **argv)
|
|
||||||
no_target_directory = true;
|
|
||||||
break;
|
|
||||||
|
|
||||||
+ case 'P':
|
|
||||||
case PRESERVE_CONTEXT_OPTION:
|
|
||||||
if ( ! selinux_enabled)
|
|
||||||
{
|
|
||||||
@@ -842,6 +844,10 @@ main (int argc, char **argv)
|
|
||||||
"this kernel is not SELinux-enabled"));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
+ if ( x.set_security_context ) {
|
|
||||||
+ (void) fprintf(stderr, "%s: cannot force target context and preserve it\n", argv[0]);
|
|
||||||
+ exit( 1 );
|
|
||||||
+ }
|
|
||||||
x.preserve_security_context = true;
|
|
||||||
use_default_selinux_context = false;
|
|
||||||
break;
|
|
||||||
@@ -853,6 +859,7 @@ main (int argc, char **argv)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
scontext = optarg;
|
|
||||||
+ x.set_security_context = true;
|
|
||||||
use_default_selinux_context = false;
|
|
||||||
break;
|
|
||||||
case_GETOPT_HELP_CHAR;
|
|
||||||
diff -urNp coreutils-8.11-orig/src/ls.c coreutils-8.11/src/ls.c
|
|
||||||
--- coreutils-8.11-orig/src/ls.c 2011-04-12 12:07:43.000000000 +0200
|
|
||||||
+++ coreutils-8.11/src/ls.c 2011-04-14 11:06:05.498436329 +0200
|
|
||||||
@@ -159,7 +159,8 @@ enum filetype
|
|
||||||
symbolic_link,
|
|
||||||
sock,
|
|
||||||
whiteout,
|
|
||||||
- arg_directory
|
|
||||||
+ arg_directory,
|
|
||||||
+ command_line
|
|
||||||
};
|
|
||||||
|
|
||||||
/* Display letters and indicators for each filetype.
|
|
||||||
@@ -276,6 +277,7 @@ static void queue_directory (char const
|
|
||||||
static void sort_files (void);
|
|
||||||
static void parse_ls_color (void);
|
|
||||||
void usage (int status);
|
|
||||||
+static void print_scontext_format (const struct fileinfo *f);
|
|
||||||
|
|
||||||
/* Initial size of hash table.
|
|
||||||
Most hierarchies are likely to be shallower than this. */
|
|
||||||
@@ -345,7 +347,7 @@ static struct pending *pending_dirs;
|
|
||||||
|
|
||||||
static struct timespec current_time;
|
|
||||||
|
|
||||||
-static bool print_scontext;
|
|
||||||
+static int print_scontext = 0;
|
|
||||||
static char UNKNOWN_SECURITY_CONTEXT[] = "?";
|
|
||||||
|
|
||||||
/* Whether any of the files has an ACL. This affects the width of the
|
|
||||||
@@ -385,7 +387,9 @@ enum format
|
|
||||||
one_per_line, /* -1 */
|
|
||||||
many_per_line, /* -C */
|
|
||||||
horizontal, /* -x */
|
|
||||||
- with_commas /* -m */
|
|
||||||
+ with_commas, /* -m */
|
|
||||||
+ security_format, /* -Z */
|
|
||||||
+ invalid_format
|
|
||||||
};
|
|
||||||
|
|
||||||
static enum format format;
|
|
||||||
@@ -787,6 +791,9 @@ enum
|
|
||||||
SHOW_CONTROL_CHARS_OPTION,
|
|
||||||
SI_OPTION,
|
|
||||||
SORT_OPTION,
|
|
||||||
+ CONTEXT_OPTION,
|
|
||||||
+ LCONTEXT_OPTION,
|
|
||||||
+ SCONTEXT_OPTION,
|
|
||||||
TIME_OPTION,
|
|
||||||
TIME_STYLE_OPTION
|
|
||||||
};
|
|
||||||
@@ -832,7 +839,9 @@ static struct option const long_options[
|
|
||||||
{"time-style", required_argument, NULL, TIME_STYLE_OPTION},
|
|
||||||
{"color", optional_argument, NULL, COLOR_OPTION},
|
|
||||||
{"block-size", required_argument, NULL, BLOCK_SIZE_OPTION},
|
|
||||||
- {"context", no_argument, 0, 'Z'},
|
|
||||||
+ {"context", no_argument, 0, CONTEXT_OPTION},
|
|
||||||
+ {"lcontext", no_argument, 0, LCONTEXT_OPTION},
|
|
||||||
+ {"scontext", no_argument, 0, SCONTEXT_OPTION},
|
|
||||||
{"author", no_argument, NULL, AUTHOR_OPTION},
|
|
||||||
{GETOPT_HELP_OPTION_DECL},
|
|
||||||
{GETOPT_VERSION_OPTION_DECL},
|
|
||||||
@@ -842,12 +851,12 @@ static struct option const long_options[
|
|
||||||
static char const *const format_args[] =
|
|
||||||
{
|
|
||||||
"verbose", "long", "commas", "horizontal", "across",
|
|
||||||
- "vertical", "single-column", NULL
|
|
||||||
+ "vertical", "single-column", "context", NULL
|
|
||||||
};
|
|
||||||
static enum format const format_types[] =
|
|
||||||
{
|
|
||||||
long_format, long_format, with_commas, horizontal, horizontal,
|
|
||||||
- many_per_line, one_per_line
|
|
||||||
+ many_per_line, one_per_line, security_format
|
|
||||||
};
|
|
||||||
ARGMATCH_VERIFY (format_args, format_types);
|
|
||||||
|
|
||||||
@@ -1289,7 +1298,8 @@ main (int argc, char **argv)
|
|
||||||
/* Avoid following symbolic links when possible. */
|
|
||||||
if (is_colored (C_ORPHAN)
|
|
||||||
|| (is_colored (C_EXEC) && color_symlink_as_referent)
|
|
||||||
- || (is_colored (C_MISSING) && format == long_format))
|
|
||||||
+ || (is_colored (C_MISSING) && (format == long_format
|
|
||||||
+ || format == security_format)))
|
|
||||||
check_symlink_color = true;
|
|
||||||
|
|
||||||
/* If the standard output is a controlling terminal, watch out
|
|
||||||
@@ -1336,7 +1346,7 @@ main (int argc, char **argv)
|
|
||||||
if (dereference == DEREF_UNDEFINED)
|
|
||||||
dereference = ((immediate_dirs
|
|
||||||
|| indicator_style == classify
|
|
||||||
- || format == long_format)
|
|
||||||
+ || format == long_format || format == security_format)
|
|
||||||
? DEREF_NEVER
|
|
||||||
: DEREF_COMMAND_LINE_SYMLINK_TO_DIR);
|
|
||||||
|
|
||||||
@@ -1356,7 +1366,7 @@ main (int argc, char **argv)
|
|
||||||
|
|
||||||
format_needs_stat = sort_type == sort_time || sort_type == sort_size
|
|
||||||
|| format == long_format
|
|
||||||
- || print_scontext
|
|
||||||
+ || format == security_format || print_scontext
|
|
||||||
|| print_block_size;
|
|
||||||
format_needs_type = (! format_needs_stat
|
|
||||||
&& (recursive
|
|
||||||
@@ -1387,7 +1397,7 @@ main (int argc, char **argv)
|
|
||||||
}
|
|
||||||
else
|
|
||||||
do
|
|
||||||
- gobble_file (argv[i++], unknown, NOT_AN_INODE_NUMBER, true, "");
|
|
||||||
+ gobble_file (argv[i++], command_line, NOT_AN_INODE_NUMBER, true, "");
|
|
||||||
while (i < argc);
|
|
||||||
|
|
||||||
if (cwd_n_used)
|
|
||||||
@@ -1558,7 +1568,7 @@ decode_switches (int argc, char **argv)
|
|
||||||
ignore_mode = IGNORE_DEFAULT;
|
|
||||||
ignore_patterns = NULL;
|
|
||||||
hide_patterns = NULL;
|
|
||||||
- print_scontext = false;
|
|
||||||
+ print_scontext = 0;
|
|
||||||
|
|
||||||
/* FIXME: put this in a function. */
|
|
||||||
{
|
|
||||||
@@ -1940,13 +1950,27 @@ decode_switches (int argc, char **argv)
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'Z':
|
|
||||||
- print_scontext = true;
|
|
||||||
+ print_scontext = 1;
|
|
||||||
+ format = security_format;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case_GETOPT_HELP_CHAR;
|
|
||||||
|
|
||||||
case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
|
|
||||||
|
|
||||||
+ case CONTEXT_OPTION: /* default security context format */
|
|
||||||
+ print_scontext = 1;
|
|
||||||
+ format = security_format;
|
|
||||||
+ break;
|
|
||||||
+ case LCONTEXT_OPTION: /* long format plus security context */
|
|
||||||
+ print_scontext = 1;
|
|
||||||
+ format = long_format;
|
|
||||||
+ break;
|
|
||||||
+ case SCONTEXT_OPTION: /* short form of new security format */
|
|
||||||
+ print_scontext = 0;
|
|
||||||
+ format = security_format;
|
|
||||||
+ break;
|
|
||||||
+
|
|
||||||
default:
|
|
||||||
usage (LS_FAILURE);
|
|
||||||
}
|
|
||||||
@@ -2691,8 +2715,10 @@ clear_files (void)
|
|
||||||
struct fileinfo *f = sorted_file[i];
|
|
||||||
free (f->name);
|
|
||||||
free (f->linkname);
|
|
||||||
- if (f->scontext != UNKNOWN_SECURITY_CONTEXT)
|
|
||||||
- freecon (f->scontext);
|
|
||||||
+ if (f->scontext != UNKNOWN_SECURITY_CONTEXT) {
|
|
||||||
+ freecon (f->scontext);
|
|
||||||
+ f->scontext = NULL;
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
|
|
||||||
cwd_n_used = 0;
|
|
||||||
@@ -2734,6 +2760,7 @@ gobble_file (char const *name, enum file
|
|
||||||
memset (f, '\0', sizeof *f);
|
|
||||||
f->stat.st_ino = inode;
|
|
||||||
f->filetype = type;
|
|
||||||
+ f->scontext = NULL;
|
|
||||||
|
|
||||||
if (command_line_arg
|
|
||||||
|| format_needs_stat
|
|
||||||
@@ -2843,7 +2870,7 @@ gobble_file (char const *name, enum file
|
|
||||||
&& print_with_color && is_colored (C_CAP))
|
|
||||||
f->has_capability = has_capability (absolute_name);
|
|
||||||
|
|
||||||
- if (format == long_format || print_scontext)
|
|
||||||
+ if (format == long_format || format == security_format || print_scontext)
|
|
||||||
{
|
|
||||||
bool have_selinux = false;
|
|
||||||
bool have_acl = false;
|
|
||||||
@@ -2866,7 +2893,7 @@ gobble_file (char const *name, enum file
|
|
||||||
err = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
- if (err == 0 && format == long_format)
|
|
||||||
+ if (err == 0 && (format == long_format || format == security_format))
|
|
||||||
{
|
|
||||||
int n = file_has_acl (absolute_name, &f->stat);
|
|
||||||
err = (n < 0);
|
|
||||||
@@ -2885,7 +2912,8 @@ gobble_file (char const *name, enum file
|
|
||||||
}
|
|
||||||
|
|
||||||
if (S_ISLNK (f->stat.st_mode)
|
|
||||||
- && (format == long_format || check_symlink_color))
|
|
||||||
+ && (format == long_format || format == security_format
|
|
||||||
+ || check_symlink_color))
|
|
||||||
{
|
|
||||||
char *linkname;
|
|
||||||
struct stat linkstats;
|
|
||||||
@@ -2905,6 +2933,7 @@ gobble_file (char const *name, enum file
|
|
||||||
command line are automatically traced if not being
|
|
||||||
listed as files. */
|
|
||||||
if (!command_line_arg || format == long_format
|
|
||||||
+ || format == security_format
|
|
||||||
|| !S_ISDIR (linkstats.st_mode))
|
|
||||||
{
|
|
||||||
/* Get the linked-to file's mode for the filetype indicator
|
|
||||||
@@ -2944,7 +2973,7 @@ gobble_file (char const *name, enum file
|
|
||||||
block_size_width = len;
|
|
||||||
}
|
|
||||||
|
|
||||||
- if (format == long_format)
|
|
||||||
+ if (format == long_format || format == security_format)
|
|
||||||
{
|
|
||||||
if (print_owner)
|
|
||||||
{
|
|
||||||
@@ -3445,6 +3474,13 @@ print_current_files (void)
|
|
||||||
print_long_format (sorted_file[i]);
|
|
||||||
DIRED_PUTCHAR ('\n');
|
|
||||||
}
|
|
||||||
+ break;
|
|
||||||
+ case security_format:
|
|
||||||
+ for (i = 0; i < cwd_n_used; i++)
|
|
||||||
+ {
|
|
||||||
+ print_scontext_format (sorted_file[i]);
|
|
||||||
+ DIRED_PUTCHAR ('\n');
|
|
||||||
+ }
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -3607,6 +3643,67 @@ format_inode (char *buf, size_t buflen,
|
|
||||||
: (char *) "?");
|
|
||||||
}
|
|
||||||
|
|
||||||
+/* Print info about f in scontext format */
|
|
||||||
+static void
|
|
||||||
+print_scontext_format (const struct fileinfo *f)
|
|
||||||
+{
|
|
||||||
+ char modebuf[12];
|
|
||||||
+
|
|
||||||
+ /* 7 fields that may require LONGEST_HUMAN_READABLE bytes,
|
|
||||||
+ 1 10-byte mode string,
|
|
||||||
+ 9 spaces, one following each of these fields, and
|
|
||||||
+ 1 trailing NUL byte. */
|
|
||||||
+
|
|
||||||
+ char init_bigbuf[7 * LONGEST_HUMAN_READABLE + 10 + 9 + 1];
|
|
||||||
+ char *buf = init_bigbuf;
|
|
||||||
+ char *p;
|
|
||||||
+
|
|
||||||
+ p = buf;
|
|
||||||
+
|
|
||||||
+ if ( print_scontext ) { /* zero means terse listing */
|
|
||||||
+ filemodestring (&f->stat, modebuf);
|
|
||||||
+ if (! any_has_acl)
|
|
||||||
+ modebuf[10] = '\0';
|
|
||||||
+ else if (f->acl_type == ACL_T_SELINUX_ONLY)
|
|
||||||
+ modebuf[10] = '.';
|
|
||||||
+ else if (f->acl_type == ACL_T_YES)
|
|
||||||
+ modebuf[10] = '+';
|
|
||||||
+ modebuf[11] = '\0';
|
|
||||||
+
|
|
||||||
+ /* print mode */
|
|
||||||
+
|
|
||||||
+ (void) sprintf (p, "%s ", modebuf);
|
|
||||||
+ p += strlen (p);
|
|
||||||
+
|
|
||||||
+ /* print standard user and group */
|
|
||||||
+
|
|
||||||
+ DIRED_FPUTS (buf, stdout, p - buf);
|
|
||||||
+ format_user (f->stat.st_uid, owner_width, f->stat_ok);
|
|
||||||
+ format_group (f->stat.st_gid, group_width, f->stat_ok);
|
|
||||||
+ p = buf;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ (void) sprintf (p, "%-32s ", f->scontext ?: "");
|
|
||||||
+ p += strlen (p);
|
|
||||||
+
|
|
||||||
+ DIRED_INDENT ();
|
|
||||||
+ DIRED_FPUTS (buf, stdout, p - buf);
|
|
||||||
+ size_t w = print_name_with_quoting (f, false, &dired_obstack, p - buf);
|
|
||||||
+
|
|
||||||
+ if (f->filetype == symbolic_link) {
|
|
||||||
+ if (f->linkname) {
|
|
||||||
+ DIRED_FPUTS_LITERAL (" -> ", stdout);
|
|
||||||
+ print_name_with_quoting (f, true, NULL, (p - buf) + w + 4);
|
|
||||||
+ if (indicator_style != none)
|
|
||||||
+ print_type_indicator (f->stat_ok, f->linkmode, f->filetype);
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ else {
|
|
||||||
+ if (indicator_style != none)
|
|
||||||
+ print_type_indicator (f->stat_ok, f->stat.st_mode, f->filetype);
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
/* Print information about F in long format. */
|
|
||||||
static void
|
|
||||||
print_long_format (const struct fileinfo *f)
|
|
||||||
@@ -3698,9 +3795,15 @@ print_long_format (const struct fileinfo
|
|
||||||
The latter is wrong when nlink_width is zero. */
|
|
||||||
p += strlen (p);
|
|
||||||
|
|
||||||
+ if (print_scontext)
|
|
||||||
+ {
|
|
||||||
+ sprintf (p, "%-32s ", f->scontext ? f->scontext : "");
|
|
||||||
+ p += strlen (p);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
DIRED_INDENT ();
|
|
||||||
|
|
||||||
- if (print_owner || print_group || print_author || print_scontext)
|
|
||||||
+ if (print_owner || print_group || print_author)
|
|
||||||
{
|
|
||||||
DIRED_FPUTS (buf, stdout, p - buf);
|
|
||||||
|
|
||||||
@@ -3713,9 +3816,6 @@ print_long_format (const struct fileinfo
|
|
||||||
if (print_author)
|
|
||||||
format_user (f->stat.st_author, author_width, f->stat_ok);
|
|
||||||
|
|
||||||
- if (print_scontext)
|
|
||||||
- format_user_or_group (f->scontext, 0, scontext_width);
|
|
||||||
-
|
|
||||||
p = buf;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -4060,9 +4160,6 @@ print_file_name_and_frills (const struct
|
|
||||||
: human_readable (ST_NBLOCKS (f->stat), buf, human_output_opts,
|
|
||||||
ST_NBLOCKSIZE, output_block_size));
|
|
||||||
|
|
||||||
- if (print_scontext)
|
|
||||||
- printf ("%*s ", format == with_commas ? 0 : scontext_width, f->scontext);
|
|
||||||
-
|
|
||||||
size_t width = print_name_with_quoting (f, false, NULL, start_col);
|
|
||||||
|
|
||||||
if (indicator_style != none)
|
|
||||||
@@ -4266,9 +4363,6 @@ length_of_file_name_and_frills (const st
|
|
||||||
output_block_size))
|
|
||||||
: block_size_width);
|
|
||||||
|
|
||||||
- if (print_scontext)
|
|
||||||
- len += 1 + (format == with_commas ? strlen (f->scontext) : scontext_width);
|
|
||||||
-
|
|
||||||
quote_name (NULL, f->name, filename_quoting_options, &name_width);
|
|
||||||
len += name_width;
|
|
||||||
|
|
||||||
@@ -4707,9 +4801,16 @@ Mandatory arguments to long options are
|
|
||||||
-w, --width=COLS assume screen width instead of current value\n\
|
|
||||||
-x list entries by lines instead of by columns\n\
|
|
||||||
-X sort alphabetically by entry extension\n\
|
|
||||||
- -Z, --context print any SELinux security context of each file\n\
|
|
||||||
-1 list one file per line\n\
|
|
||||||
"), stdout);
|
|
||||||
+ fputs(_("\nSELinux options:\n\n\
|
|
||||||
+ --lcontext Display security context. Enable -l. Lines\n\
|
|
||||||
+ will probably be too wide for most displays.\n\
|
|
||||||
+ -Z, --context Display security context so it fits on most\n\
|
|
||||||
+ displays. Displays only mode, user, group,\n\
|
|
||||||
+ security context and file name.\n\
|
|
||||||
+ --scontext Display only security context and file name.\n\
|
|
||||||
+"), stdout);
|
|
||||||
fputs (HELP_OPTION_DESCRIPTION, stdout);
|
|
||||||
fputs (VERSION_OPTION_DESCRIPTION, stdout);
|
|
||||||
emit_size_note ();
|
|
||||||
diff -urNp coreutils-8.11-orig/src/mkdir.c coreutils-8.11/src/mkdir.c
|
|
||||||
--- coreutils-8.11-orig/src/mkdir.c 2011-02-19 18:17:03.000000000 +0100
|
|
||||||
+++ coreutils-8.11/src/mkdir.c 2011-04-14 11:06:05.499460276 +0200
|
|
||||||
@@ -38,6 +38,7 @@
|
|
||||||
static struct option const longopts[] =
|
|
||||||
{
|
|
||||||
{GETOPT_SELINUX_CONTEXT_OPTION_DECL},
|
|
||||||
+ {"context", required_argument, NULL, 'Z'},
|
|
||||||
{"mode", required_argument, NULL, 'm'},
|
|
||||||
{"parents", no_argument, NULL, 'p'},
|
|
||||||
{"verbose", no_argument, NULL, 'v'},
|
|
||||||
diff -urNp coreutils-8.11-orig/src/mknod.c coreutils-8.11/src/mknod.c
|
|
||||||
--- coreutils-8.11-orig/src/mknod.c 2011-02-19 18:17:03.000000000 +0100
|
|
||||||
+++ coreutils-8.11/src/mknod.c 2011-04-14 11:06:05.500309648 +0200
|
|
||||||
@@ -35,7 +35,7 @@
|
|
||||||
|
|
||||||
static struct option const longopts[] =
|
|
||||||
{
|
|
||||||
- {GETOPT_SELINUX_CONTEXT_OPTION_DECL},
|
|
||||||
+ {GETOPT_SELINUX_CONTEXT_OPTION_DECL},
|
|
||||||
{"mode", required_argument, NULL, 'm'},
|
|
||||||
{GETOPT_HELP_OPTION_DECL},
|
|
||||||
{GETOPT_VERSION_OPTION_DECL},
|
|
||||||
diff -urNp coreutils-8.11-orig/src/mv.c coreutils-8.11/src/mv.c
|
|
||||||
--- coreutils-8.11-orig/src/mv.c 2011-02-19 18:17:03.000000000 +0100
|
|
||||||
+++ coreutils-8.11/src/mv.c 2011-04-14 11:06:05.501309664 +0200
|
|
||||||
@@ -118,6 +118,7 @@ cp_option_init (struct cp_options *x)
|
|
||||||
x->preserve_mode = true;
|
|
||||||
x->preserve_timestamps = true;
|
|
||||||
x->preserve_security_context = selinux_enabled;
|
|
||||||
+ x->set_security_context = false;
|
|
||||||
x->reduce_diagnostics = false;
|
|
||||||
x->data_copy_required = true;
|
|
||||||
x->require_preserve = false; /* FIXME: maybe make this an option */
|
|
||||||
diff -urNp coreutils-8.11-orig/src/runcon.c coreutils-8.11/src/runcon.c
|
|
||||||
--- coreutils-8.11-orig/src/runcon.c 2011-02-19 18:17:03.000000000 +0100
|
|
||||||
+++ coreutils-8.11/src/runcon.c 2011-04-14 11:06:05.502310854 +0200
|
|
||||||
@@ -86,7 +86,7 @@ Usage: %s CONTEXT COMMAND [args]\n\
|
|
||||||
or: %s [ -c ] [-u USER] [-r ROLE] [-t TYPE] [-l RANGE] COMMAND [args]\n\
|
|
||||||
"), program_name, program_name);
|
|
||||||
fputs (_("\
|
|
||||||
-Run a program in a different security context.\n\
|
|
||||||
+Run a program in a different SELinux security context.\n\
|
|
||||||
With neither CONTEXT nor COMMAND, print the current security context.\n\
|
|
||||||
\n\
|
|
||||||
CONTEXT Complete security context\n\
|
|
||||||
diff -urNp coreutils-8.11-orig/tests/init.cfg coreutils-8.11/tests/init.cfg
|
|
||||||
--- coreutils-8.11-orig/tests/init.cfg 2011-04-12 12:07:43.000000000 +0200
|
|
||||||
+++ coreutils-8.11/tests/init.cfg 2011-04-14 11:06:05.503308646 +0200
|
|
||||||
@@ -231,8 +231,8 @@ require_selinux_()
|
|
||||||
|
|
||||||
# Independent of whether SELinux is enabled system-wide,
|
|
||||||
# the current file system may lack SELinux support.
|
|
||||||
- case `ls -Zd .` in
|
|
||||||
- '? .'|'unlabeled .')
|
|
||||||
+ case `ls -Zd . | cut -f4 -d" "` in
|
|
||||||
+ '?'|'unlabeled')
|
|
||||||
skip_test_ "this system (or maybe just" \
|
|
||||||
"the current file system) lacks SELinux support"
|
|
||||||
;;
|
|
||||||
diff -urNp coreutils-8.11-orig/tests/misc/selinux coreutils-8.11/tests/misc/selinux
|
|
||||||
--- coreutils-8.11-orig/tests/misc/selinux 2011-01-31 13:40:38.000000000 +0100
|
|
||||||
+++ coreutils-8.11/tests/misc/selinux 2011-04-14 11:06:05.504353757 +0200
|
|
||||||
@@ -37,7 +37,7 @@ chcon $ctx f d p ||
|
|
||||||
|
|
||||||
# inspect that context with both ls -Z and stat.
|
|
||||||
for i in d f p; do
|
|
||||||
- c=`ls -dogZ $i|cut -d' ' -f3`; test x$c = x$ctx || fail=1
|
|
||||||
+ c=`ls -dogZ $i|cut -d' ' -f4`; test x$c = x$ctx || fail=1
|
|
||||||
c=`stat --printf %C $i`; test x$c = x$ctx || fail=1
|
|
||||||
done
|
|
||||||
|
|
||||||
|
|
@ -1,15 +0,0 @@
|
||||||
diff -urNp coreutils-6.10-orig/doc/coreutils.texi coreutils-6.10/doc/coreutils.texi
|
|
||||||
--- coreutils-6.10-orig/doc/coreutils.texi 2008-04-07 17:52:11.000000000 +0200
|
|
||||||
+++ coreutils-6.10/doc/coreutils.texi 2008-04-07 18:01:43.000000000 +0200
|
|
||||||
@@ -6981,6 +6981,11 @@ for i; do
|
|
||||||
done
|
|
||||||
@end example
|
|
||||||
|
|
||||||
+@item -c
|
|
||||||
+@cindex SELinux security context information, preserving
|
|
||||||
+Preserve SELinux security context of the original files if possible.
|
|
||||||
+Some file systems don't support storing of SELinux security context.
|
|
||||||
+
|
|
||||||
@item --copy-contents
|
|
||||||
@cindex directories, copying recursively
|
|
||||||
@cindex copying directories recursively
|
|
||||||
|
|
@ -1,102 +0,0 @@
|
||||||
diff -urNp coreutils-8.6-orig/src/su.c coreutils-8.6/src/su.c
|
|
||||||
--- coreutils-8.6-orig/src/su.c 2010-11-03 13:56:11.679069689 +0100
|
|
||||||
+++ coreutils-8.6/src/su.c 2010-11-03 13:56:45.304325661 +0100
|
|
||||||
@@ -153,6 +153,9 @@ static bool simulate_login;
|
|
||||||
/* If true, change some environment vars to indicate the user su'd to. */
|
|
||||||
static bool change_environment;
|
|
||||||
|
|
||||||
+/* If true, then don't call setsid() with a command. */
|
|
||||||
+int same_session = 0;
|
|
||||||
+
|
|
||||||
#ifdef USE_PAM
|
|
||||||
static bool _pam_session_opened;
|
|
||||||
static bool _pam_cred_established;
|
|
||||||
@@ -161,6 +164,7 @@ static bool _pam_cred_established;
|
|
||||||
static struct option const longopts[] =
|
|
||||||
{
|
|
||||||
{"command", required_argument, NULL, 'c'},
|
|
||||||
+ {"session-command", required_argument, NULL, 'C'},
|
|
||||||
{"fast", no_argument, NULL, 'f'},
|
|
||||||
{"login", no_argument, NULL, 'l'},
|
|
||||||
{"preserve-environment", no_argument, NULL, 'p'},
|
|
||||||
@@ -335,14 +339,27 @@ create_watching_parent (void)
|
|
||||||
sigemptyset (&action.sa_mask);
|
|
||||||
action.sa_flags = 0;
|
|
||||||
sigemptyset (&ourset);
|
|
||||||
- if (sigaddset (&ourset, SIGTERM)
|
|
||||||
- || sigaddset (&ourset, SIGALRM)
|
|
||||||
- || sigaction (SIGTERM, &action, NULL)
|
|
||||||
- || sigprocmask (SIG_UNBLOCK, &ourset, NULL))
|
|
||||||
- {
|
|
||||||
+ if (!same_session)
|
|
||||||
+ {
|
|
||||||
+ if (sigaddset(&ourset, SIGINT) || sigaddset(&ourset, SIGQUIT))
|
|
||||||
+ {
|
|
||||||
+ error (0, errno, _("cannot set signal handler"));
|
|
||||||
+ caught_signal = true;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ if (!caught_signal && (sigaddset(&ourset, SIGTERM)
|
|
||||||
+ || sigaddset(&ourset, SIGALRM)
|
|
||||||
+ || sigaction(SIGTERM, &action, NULL)
|
|
||||||
+ || sigprocmask(SIG_UNBLOCK, &ourset, NULL))) {
|
|
||||||
error (0, errno, _("cannot set signal handler"));
|
|
||||||
caught_signal = true;
|
|
||||||
}
|
|
||||||
+ if (!caught_signal && !same_session && (sigaction(SIGINT, &action, NULL)
|
|
||||||
+ || sigaction(SIGQUIT, &action, NULL)))
|
|
||||||
+ {
|
|
||||||
+ error (0, errno, _("cannot set signal handler"));
|
|
||||||
+ caught_signal = true;
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
if (!caught_signal)
|
|
||||||
{
|
|
||||||
@@ -627,6 +644,8 @@ Change the effective user id and group i
|
|
||||||
\n\
|
|
||||||
-, -l, --login make the shell a login shell\n\
|
|
||||||
-c, --command=COMMAND pass a single COMMAND to the shell with -c\n\
|
|
||||||
+ --session-command=COMMAND pass a single COMMAND to the shell with -c\n\
|
|
||||||
+ and do not create a new session\n\
|
|
||||||
-f, --fast pass -f to the shell (for csh or tcsh)\n\
|
|
||||||
-m, --preserve-environment do not reset environment variables\n\
|
|
||||||
-p same as -m\n\
|
|
||||||
@@ -649,6 +668,7 @@ main (int argc, char **argv)
|
|
||||||
int optc;
|
|
||||||
const char *new_user = DEFAULT_USER;
|
|
||||||
char *command = NULL;
|
|
||||||
+ int request_same_session = 0;
|
|
||||||
char *shell = NULL;
|
|
||||||
struct passwd *pw;
|
|
||||||
struct passwd pw_copy;
|
|
||||||
@@ -674,6 +694,11 @@ main (int argc, char **argv)
|
|
||||||
command = optarg;
|
|
||||||
break;
|
|
||||||
|
|
||||||
+ case 'C':
|
|
||||||
+ command = optarg;
|
|
||||||
+ request_same_session = 1;
|
|
||||||
+ break;
|
|
||||||
+
|
|
||||||
case 'f':
|
|
||||||
fast_startup = true;
|
|
||||||
break;
|
|
||||||
@@ -743,6 +768,9 @@ main (int argc, char **argv)
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
+ if (request_same_session || !command || !pw->pw_uid)
|
|
||||||
+ same_session = 1;
|
|
||||||
+
|
|
||||||
if (!shell && !change_environment)
|
|
||||||
shell = getenv ("SHELL");
|
|
||||||
if (shell && getuid () != 0 && restricted_shell (pw->pw_shell))
|
|
||||||
@@ -764,6 +792,8 @@ main (int argc, char **argv)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
change_identity (pw);
|
|
||||||
+ if (!same_session)
|
|
||||||
+ setsid ();
|
|
||||||
|
|
||||||
/* Set environment after pam_open_session, which may put KRB5CCNAME
|
|
||||||
into the pam_env, etc. */
|
|
||||||
|
|
@ -1,6 +0,0 @@
|
||||||
#%PAM-1.0
|
|
||||||
auth include su
|
|
||||||
account include su
|
|
||||||
password include su
|
|
||||||
session optional pam_keyinit.so force revoke
|
|
||||||
session include su
|
|
||||||
|
|
@ -1,14 +0,0 @@
|
||||||
#%PAM-1.0
|
|
||||||
auth sufficient pam_rootok.so
|
|
||||||
# Uncomment the following line to implicitly trust users in the "wheel" group.
|
|
||||||
#auth sufficient pam_wheel.so trust use_uid
|
|
||||||
# Uncomment the following line to require a user to be in the "wheel" group.
|
|
||||||
#auth required pam_wheel.so use_uid
|
|
||||||
auth include system-auth
|
|
||||||
auth include postlogin
|
|
||||||
account sufficient pam_succeed_if.so uid = 0 use_uid quiet
|
|
||||||
account include system-auth
|
|
||||||
password include system-auth
|
|
||||||
session include system-auth
|
|
||||||
session include postlogin
|
|
||||||
session optional pam_xauth.so
|
|
||||||
1385
coreutils.spec
1385
coreutils.spec
File diff suppressed because it is too large
Load diff
|
|
@ -1,18 +0,0 @@
|
||||||
--- sh-utils-1.16/src/su.c.badpaths Mon Apr 14 14:26:55 1997
|
|
||||||
+++ sh-utils-1.16/src/su.c Sun Aug 17 14:11:31 EDT 2003
|
|
||||||
@@ -147,6 +147,15 @@
|
|
||||||
# define DEFAULT_ROOT_LOGIN_PATH "/usr/ucb:/bin:/usr/bin:/etc"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
+/* The default paths which get set are both bogus and oddly influenced
|
|
||||||
+ by <paths.h> and -D on the commands line. Just to be clear, we'll set
|
|
||||||
+ these explicitly. -ewt */
|
|
||||||
+#undef DEFAULT_LOGIN_PATH
|
|
||||||
+#undef DEFAULT_ROOT_LOGIN_PATH
|
|
||||||
+#define DEFAULT_LOGIN_PATH "/usr/local/bin:/bin:/usr/bin"
|
|
||||||
+#define DEFAULT_ROOT_LOGIN_PATH \
|
|
||||||
+ "/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin"
|
|
||||||
+
|
|
||||||
/* The shell to run if none is given in the user's passwd entry. */
|
|
||||||
#define DEFAULT_SHELL "/bin/sh"
|
|
||||||
|
|
||||||
|
|
@ -1,12 +0,0 @@
|
||||||
diff -urNp coreutils-5.97-orig/man/date.x coreutils-5.97/man/date.x
|
|
||||||
--- coreutils-5.97-orig/man/date.x 1999-11-02 15:07:36.000000000 +0100
|
|
||||||
+++ coreutils-5.97/man/date.x 2008-10-15 10:13:31.000000000 +0200
|
|
||||||
@@ -11,3 +11,8 @@
|
|
||||||
relative date, and numbers. An empty string indicates the beginning
|
|
||||||
of the day. The date string format is more complex than is easily
|
|
||||||
documented here but is fully described in the info documentation.
|
|
||||||
+[ENVIRONMENT]
|
|
||||||
+.TP
|
|
||||||
+TZ
|
|
||||||
+Specifies the timezone, unless overridden by command line parameters.
|
|
||||||
+If neither is specified, the setting from /etc/localtime is used.
|
|
||||||
3
sources
3
sources
|
|
@ -1 +1,2 @@
|
||||||
0f7d43c2d2e24314b43a6c6267e25b90 coreutils-8.12.tar.xz
|
SHA512 (coreutils-9.9.tar.xz.sig) = 0a3dfdfa6b4234e2e1d42142269f959bdf3cf8f6605a50270a27eff84dd22588f182121f7dd3eeb04be45f5109d02690215065b3d3b43882874d0e165a1435d0
|
||||||
|
SHA512 (coreutils-9.9.tar.xz) = e7b0e59f7732d2c098ea4934014f470248bd5c4764210e9200a698010a8e3b95bbb26e543f0cd73ed5a4b8e1f8cda932c73f39954d68175e4deaa47526610c65
|
||||||
|
|
|
||||||
105
supported_utils
Normal file
105
supported_utils
Normal file
|
|
@ -0,0 +1,105 @@
|
||||||
|
%{_bindir}/arch
|
||||||
|
%{_bindir}/b2sum
|
||||||
|
%{_bindir}/basename
|
||||||
|
%{_bindir}/basenc
|
||||||
|
%{_bindir}/cat
|
||||||
|
%{_bindir}/chgrp
|
||||||
|
%{_bindir}/chmod
|
||||||
|
%{_bindir}/chown
|
||||||
|
%{_bindir}/cp
|
||||||
|
%{_bindir}/cut
|
||||||
|
%{_bindir}/date
|
||||||
|
%{_bindir}/dd
|
||||||
|
%{_bindir}/df
|
||||||
|
%{_bindir}/echo
|
||||||
|
%{_bindir}/env
|
||||||
|
%{_bindir}/false
|
||||||
|
%{_bindir}/link
|
||||||
|
%{_bindir}/ln
|
||||||
|
%{_bindir}/ls
|
||||||
|
%{_bindir}/mkdir
|
||||||
|
%{_bindir}/mknod
|
||||||
|
%{_bindir}/mv
|
||||||
|
%{_bindir}/nice
|
||||||
|
%{_bindir}/pwd
|
||||||
|
%{_bindir}/readlink
|
||||||
|
%{_bindir}/rm
|
||||||
|
%{_bindir}/rmdir
|
||||||
|
%{_bindir}/sleep
|
||||||
|
%{_bindir}/sort
|
||||||
|
%{_bindir}/stty
|
||||||
|
%{_bindir}/sync
|
||||||
|
%{_bindir}/mktemp
|
||||||
|
%{_bindir}/touch
|
||||||
|
%{_bindir}/true
|
||||||
|
%{_bindir}/uname
|
||||||
|
%{_bindir}/unlink
|
||||||
|
%{_bindir}/[
|
||||||
|
%{_bindir}/base32
|
||||||
|
%{_bindir}/base64
|
||||||
|
%{_bindir}/chcon
|
||||||
|
%{_bindir}/cksum
|
||||||
|
%{_bindir}/comm
|
||||||
|
%{_bindir}/csplit
|
||||||
|
%{_bindir}/dir
|
||||||
|
%{_bindir}/dircolors
|
||||||
|
%{_bindir}/dirname
|
||||||
|
%{_bindir}/du
|
||||||
|
%{_bindir}/expand
|
||||||
|
%{_bindir}/expr
|
||||||
|
%{_bindir}/factor
|
||||||
|
%{_bindir}/fmt
|
||||||
|
%{_bindir}/fold
|
||||||
|
%{_bindir}/groups
|
||||||
|
%{_bindir}/head
|
||||||
|
%{_bindir}/hostid
|
||||||
|
%{_bindir}/id
|
||||||
|
%{_bindir}/install
|
||||||
|
%{_bindir}/join
|
||||||
|
%{_bindir}/logname
|
||||||
|
%{_bindir}/md5sum
|
||||||
|
%{_bindir}/mkfifo
|
||||||
|
%{_bindir}/nl
|
||||||
|
%{_bindir}/nohup
|
||||||
|
%{_bindir}/nproc
|
||||||
|
%{_bindir}/numfmt
|
||||||
|
%{_bindir}/od
|
||||||
|
%{_bindir}/paste
|
||||||
|
%{_bindir}/pathchk
|
||||||
|
%{_bindir}/pinky
|
||||||
|
%{_bindir}/pr
|
||||||
|
%{_bindir}/printenv
|
||||||
|
%{_bindir}/printf
|
||||||
|
%{_bindir}/ptx
|
||||||
|
%{_bindir}/realpath
|
||||||
|
%{_bindir}/runcon
|
||||||
|
%{_bindir}/seq
|
||||||
|
%{_bindir}/sha1sum
|
||||||
|
%{_bindir}/sha224sum
|
||||||
|
%{_bindir}/sha256sum
|
||||||
|
%{_bindir}/sha384sum
|
||||||
|
%{_bindir}/sha512sum
|
||||||
|
%{_bindir}/shred
|
||||||
|
%{_bindir}/shuf
|
||||||
|
%{_bindir}/split
|
||||||
|
%{_bindir}/stat
|
||||||
|
%{_bindir}/stdbuf
|
||||||
|
%{_bindir}/sum
|
||||||
|
%{_bindir}/tac
|
||||||
|
%{_bindir}/tail
|
||||||
|
%{_bindir}/tee
|
||||||
|
%{_bindir}/test
|
||||||
|
%{_bindir}/timeout
|
||||||
|
%{_bindir}/tr
|
||||||
|
%{_bindir}/truncate
|
||||||
|
%{_bindir}/tsort
|
||||||
|
%{_bindir}/tty
|
||||||
|
%{_bindir}/unexpand
|
||||||
|
%{_bindir}/uniq
|
||||||
|
%{_bindir}/users
|
||||||
|
%{_bindir}/vdir
|
||||||
|
%{_bindir}/wc
|
||||||
|
%{_bindir}/who
|
||||||
|
%{_bindir}/whoami
|
||||||
|
%{_bindir}/yes
|
||||||
|
%{_sbindir}/chroot
|
||||||
123
upstream-key.gpg
123
upstream-key.gpg
|
|
@ -1,123 +0,0 @@
|
||||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
|
||||||
Version: GnuPG v1.4.6 (GNU/Linux)
|
|
||||||
|
|
||||||
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
|
|
||||||
Ke4=
|
|
||||||
=zRdO
|
|
||||||
-----END PGP PUBLIC KEY BLOCK-----
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue