OXIESEC PANEL
- Current Dir:
/
/
usr
/
bin
Server IP: 2a02:4780:11:1084:0:327f:3464:10
Upload:
Create Dir:
Name
Size
Modified
Perms
📁
..
-
03/16/2023 11:26:16 AM
rwxr-xr-x
📄
7za
41 bytes
04/22/2021 09:22:41 PM
rwxr-xr-x
📄
[
53.67 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
aclocal
35.62 KB
10/14/2023 08:00:43 PM
rwxr-xr-x
📄
aclocal-1.16
35.62 KB
10/14/2023 08:00:43 PM
rwxr-xr-x
📄
addr2line
33.41 KB
11/15/2024 09:59:32 AM
rwxr-xr-x
📄
ar
61.96 KB
11/15/2024 09:59:32 AM
rwxr-xr-x
📄
arch
37.41 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
arpaname
11.88 KB
11/15/2023 07:04:57 AM
rwxr-xr-x
📄
as
889.91 KB
11/15/2024 09:59:32 AM
rwxr-xr-x
📄
aspell
159.5 KB
04/18/2022 03:10:53 PM
rwxr-xr-x
📄
autoconf
14.42 KB
08/13/2024 07:30:48 PM
rwxr-xr-x
📄
autoheader
8.33 KB
08/13/2024 07:30:48 PM
rwxr-xr-x
📄
autom4te
31.43 KB
08/13/2024 07:30:48 PM
rwxr-xr-x
📄
automake
251.9 KB
10/14/2023 08:00:43 PM
rwxr-xr-x
📄
automake-1.16
251.9 KB
10/14/2023 08:00:43 PM
rwxr-xr-x
📄
autoreconf
20.57 KB
08/13/2024 07:30:48 PM
rwxr-xr-x
📄
autoscan
16.72 KB
08/13/2024 07:30:48 PM
rwxr-xr-x
📄
autoupdate
33.08 KB
08/13/2024 07:30:48 PM
rwxr-xr-x
📄
awk
669.77 KB
04/18/2022 03:56:05 PM
rwxr-xr-x
📄
b2sum
57.76 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
base32
41.55 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
base64
41.56 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
basename
37.49 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
bash
1.1 MB
05/23/2024 08:55:42 AM
rwxr-xr-x
📄
bashbug-64
7.18 KB
05/23/2024 08:55:35 AM
rwxr-xr-x
📄
bunzip2
37.57 KB
10/11/2019 01:11:49 PM
rwxr-xr-x
📄
bzcat
37.57 KB
10/11/2019 01:11:49 PM
rwxr-xr-x
📄
bzcmp
2.08 KB
10/11/2019 01:11:49 PM
rwxr-xr-x
📄
bzdiff
2.08 KB
10/11/2019 01:11:49 PM
rwxr-xr-x
📄
bzgrep
1.64 KB
10/11/2019 01:11:49 PM
rwxr-xr-x
📄
bzip2
37.57 KB
10/11/2019 01:11:49 PM
rwxr-xr-x
📄
bzip2recover
17.15 KB
10/11/2019 01:11:49 PM
rwxr-xr-x
📄
bzless
1.23 KB
10/11/2019 01:11:49 PM
rwxr-xr-x
📄
bzmore
1.23 KB
10/11/2019 01:11:49 PM
rwxr-xr-x
📄
c++filt
28.89 KB
11/15/2024 09:59:32 AM
rwxr-xr-x
📄
cagefs_enter.proxied
1.03 KB
04/30/2024 06:50:46 PM
rwxr-xr-x
📄
cal
65.98 KB
04/06/2024 01:02:53 PM
rwxr-xr-x
📄
captoinfo
85.31 KB
10/14/2023 06:54:49 PM
rwxr-xr-x
📄
cat
37.54 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
catchsegv
3.21 KB
01/28/2025 02:29:30 AM
rwxr-xr-x
📄
cc
0 bytes
01/01/1970 12:00:00 AM
---------
📄
chcon
70.43 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
chgrp
66.35 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
chmod
62.29 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
chown
70.39 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
chrt
37.18 KB
04/06/2024 01:02:53 PM
rwxr-xr-x
📄
cksum
37.46 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
clear
12.54 KB
10/14/2023 06:54:49 PM
rwxr-xr-x
📄
cloudlinux-awp-user
1.78 KB
06/20/2024 12:22:39 PM
rwxr-xr-x
📄
clwpos-user
1.78 KB
06/20/2024 12:22:39 PM
rwxr-xr-x
📄
cmp
103.76 KB
05/04/2020 03:15:14 PM
rwxr-xr-x
📄
col
29 KB
04/06/2024 01:02:53 PM
rwxr-xr-x
📄
colcrt
16.48 KB
04/06/2024 01:02:53 PM
rwxr-xr-x
📄
colrm
24.88 KB
04/06/2024 01:02:53 PM
rwxr-xr-x
📄
column
49.47 KB
04/06/2024 01:02:53 PM
rwxr-xr-x
📄
comm
41.63 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
cp
148.05 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
cpp
1.21 MB
05/22/2024 04:57:56 PM
rwxr-xr-x
📄
csplit
53.76 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
curl
230.09 KB
01/28/2025 01:43:10 AM
rwxr-xr-x
📄
cut
49.59 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
date
106.03 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
dbiprof
6.06 KB
04/25/2022 04:10:04 PM
rwxr-xr-x
📄
delv
42.45 KB
11/15/2023 07:04:57 AM
rwxr-xr-x
📄
df
91.16 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
diff
268.01 KB
05/04/2020 03:15:14 PM
rwxr-xr-x
📄
diff3
128.6 KB
05/04/2020 03:15:14 PM
rwxr-xr-x
📄
dig
162.24 KB
11/15/2023 07:04:58 AM
rwxr-xr-x
📄
dir
139.97 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
dircolors
49.63 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
dirname
33.44 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
dltest
13.05 KB
10/14/2019 09:51:19 PM
rwxr-xr-x
📄
dnstap-read
20.42 KB
11/15/2023 07:04:58 AM
rwxr-xr-x
📄
du
107.1 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
easy_install-3
0 bytes
01/01/1970 12:00:00 AM
---------
📄
echo
37.43 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
egrep
28 bytes
10/11/2019 03:15:56 PM
rwxr-xr-x
📄
enchant
21.08 KB
10/23/2019 08:03:55 PM
rwxr-xr-x
📄
enchant-lsmod
13.09 KB
10/23/2019 08:03:55 PM
rwxr-xr-x
📄
env
41.43 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
eps2eps
639 bytes
10/15/2023 04:50:40 AM
rwxr-xr-x
📄
eqn
232.16 KB
10/13/2019 02:29:41 PM
rwxr-xr-x
📄
ex
1.13 MB
08/02/2022 04:57:02 PM
rwxr-xr-x
📄
expand
41.66 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
expr
49.65 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
factor
86.05 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
false
33.39 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
fc-cache
132 bytes
08/16/2021 11:04:22 AM
rwxr-xr-x
📄
fc-cache-64
20.35 KB
10/09/2021 09:02:09 AM
rwxr-xr-x
📄
fc-cat
16.35 KB
10/09/2021 09:02:09 AM
rwxr-xr-x
📄
fc-conflist
12.25 KB
10/09/2021 09:02:09 AM
rwxr-xr-x
📄
fc-list
12.25 KB
10/09/2021 09:02:09 AM
rwxr-xr-x
📄
fc-match
16.26 KB
10/09/2021 09:02:09 AM
rwxr-xr-x
📄
fc-pattern
12.26 KB
10/09/2021 09:02:09 AM
rwxr-xr-x
📄
fc-query
12.24 KB
10/09/2021 09:02:09 AM
rwxr-xr-x
📄
fc-scan
12.26 KB
10/09/2021 09:02:09 AM
rwxr-xr-x
📄
fc-validate
16.26 KB
10/09/2021 09:02:09 AM
rwxr-xr-x
📄
fgrep
28 bytes
10/11/2019 03:15:56 PM
rwxr-xr-x
📄
file
24.68 KB
04/06/2024 02:44:54 PM
rwxr-xr-x
📄
find
223.3 KB
09/24/2024 02:19:34 AM
rwxr-xr-x
📄
flock
33.2 KB
04/06/2024 01:02:53 PM
rwxr-xr-x
📄
fmt
45.57 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
fold
41.48 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
free
20.79 KB
10/14/2023 08:31:02 PM
rwxr-xr-x
📄
funzip
36.74 KB
04/18/2022 07:19:22 PM
rwxr-xr-x
📄
gawk
669.77 KB
04/18/2022 03:56:05 PM
rwxr-xr-x
📄
gcc-ar
36.64 KB
05/22/2024 04:57:59 PM
rwxr-xr-x
📄
gcc-nm
36.65 KB
05/22/2024 04:57:59 PM
rwxr-xr-x
📄
gcc-ranlib
36.65 KB
05/22/2024 04:57:59 PM
rwxr-xr-x
📄
gcov-dump
566.9 KB
05/22/2024 04:57:59 PM
rwxr-xr-x
📄
gcov-tool
603.72 KB
05/22/2024 04:57:59 PM
rwxr-xr-x
📄
gencat
24.84 KB
01/28/2025 02:40:28 AM
rwxr-xr-x
📄
geoiplookup
21.89 KB
11/28/2019 10:06:01 PM
rwxr-xr-x
📄
geoiplookup6
21.65 KB
11/28/2019 10:06:01 PM
rwxr-xr-x
📄
geqn
232.16 KB
10/13/2019 02:29:41 PM
rwxr-xr-x
📄
getconf
32.46 KB
01/28/2025 02:40:28 AM
rwxr-xr-x
📄
getent
33.13 KB
01/28/2025 02:40:28 AM
rwxr-xr-x
📄
getopt
20.52 KB
04/06/2024 01:02:53 PM
rwxr-xr-x
📄
ghostscript
12.34 KB
10/15/2023 04:50:52 AM
rwxr-xr-x
📄
gifdiff
61.87 KB
09/15/2021 01:55:53 PM
rwxr-xr-x
📄
gifsicle
196.24 KB
09/15/2021 01:55:53 PM
rwxr-xr-x
📄
git
3.67 MB
12/17/2024 04:12:12 AM
rwxr-xr-x
📄
git-receive-pack
3.67 MB
12/17/2024 04:12:12 AM
rwxr-xr-x
📄
git-shell
2.13 MB
12/17/2024 04:12:12 AM
rwxr-xr-x
📄
git-upload-archive
3.67 MB
12/17/2024 04:12:12 AM
rwxr-xr-x
📄
git-upload-pack
3.67 MB
12/17/2024 04:12:12 AM
rwxr-xr-x
📄
gm
7.82 KB
03/28/2022 03:50:37 PM
rwxr-xr-x
📄
gneqn
908 bytes
10/13/2019 02:29:37 PM
rwxr-xr-x
📄
gnroff
3.23 KB
10/13/2019 02:29:39 PM
rwxr-xr-x
📄
gpg
1.04 MB
09/13/2022 10:15:05 AM
rwxr-xr-x
📄
gpg-agent
419.29 KB
09/13/2022 10:15:05 AM
rwxr-xr-x
📄
gpg-error
34.16 KB
10/12/2019 12:20:46 PM
rwxr-xr-x
📄
gpg-zip
3.44 KB
09/13/2022 10:15:00 AM
rwxr-xr-x
📄
gpgsplit
87.02 KB
09/13/2022 10:15:05 AM
rwxr-xr-x
📄
gpgv
451.58 KB
09/13/2022 10:15:05 AM
rwxr-xr-x
📄
gpic
293.84 KB
10/13/2019 02:29:41 PM
rwxr-xr-x
📄
gprof
103.36 KB
11/15/2024 09:59:32 AM
rwxr-xr-x
📄
grep
193.63 KB
10/11/2019 03:15:57 PM
rwxr-xr-x
📄
groff
124.92 KB
10/13/2019 02:29:41 PM
rwxr-xr-x
📄
grops
191.14 KB
10/13/2019 02:29:41 PM
rwxr-xr-x
📄
grotty
141.9 KB
10/13/2019 02:29:41 PM
rwxr-xr-x
📄
groups
37.47 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
gs
12.34 KB
10/15/2023 04:50:52 AM
rwxr-xr-x
📄
gsnd
277 bytes
10/15/2023 04:50:40 AM
rwxr-xr-x
📄
gsoelim
42.55 KB
10/13/2019 02:29:41 PM
rwxr-xr-x
📄
gtar
449.03 KB
04/04/2023 08:26:40 PM
rwxr-xr-x
📄
gtbl
154.61 KB
10/13/2019 02:29:41 PM
rwxr-xr-x
📄
gtroff
805.02 KB
10/13/2019 02:29:41 PM
rwxr-xr-x
📄
gunzip
2.29 KB
04/27/2022 05:49:28 AM
rwxr-xr-x
📄
gzexe
6.23 KB
04/27/2022 05:49:28 AM
rwxr-xr-x
📄
gzip
94.67 KB
04/27/2022 05:49:29 AM
rwxr-xr-x
📄
hdu
18.09 KB
03/16/2023 03:34:08 PM
rwxr-xr-x
📄
head
45.58 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
hexdump
57.5 KB
04/06/2024 01:02:53 PM
rwxr-xr-x
📄
host
142.34 KB
11/15/2023 07:04:58 AM
rwxr-xr-x
📄
hostid
33.41 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
hostname
21.16 KB
10/11/2019 01:06:51 PM
rwxr-xr-x
📄
hunspell
144.7 KB
10/13/2019 08:33:15 AM
rwxr-xr-x
📄
iconv
61.44 KB
01/28/2025 02:40:28 AM
rwxr-xr-x
📄
id
45.52 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
idn
39.41 KB
10/13/2019 04:55:35 PM
rwxr-xr-x
📄
ifnames
4.03 KB
08/13/2024 07:30:48 PM
rwxr-xr-x
📄
infocmp
61.05 KB
10/14/2023 06:54:49 PM
rwxr-xr-x
📄
infotocap
85.31 KB
10/14/2023 06:54:49 PM
rwxr-xr-x
📄
install
156.25 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
ionice
28.98 KB
04/06/2024 01:02:53 PM
rwxr-xr-x
📄
ipcrm
28.99 KB
04/06/2024 01:02:53 PM
rwxr-xr-x
📄
ipcs
53.39 KB
04/06/2024 01:02:53 PM
rwxr-xr-x
📄
isosize
24.88 KB
04/06/2024 01:02:53 PM
rwxr-xr-x
📄
ispell
988 bytes
04/18/2022 03:10:51 PM
rwxr-xr-x
📄
isql
37.29 KB
10/14/2019 09:51:19 PM
rwxr-xr-x
📄
iusql
29.68 KB
10/14/2019 09:51:19 PM
rwxr-xr-x
📄
join
53.77 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
jpegoptim
39.06 KB
08/28/2019 08:32:38 PM
rwxr-xr-x
📄
kill
37.27 KB
04/06/2024 01:02:53 PM
rwxr-xr-x
📄
ld
1.71 MB
11/15/2024 09:59:32 AM
rwxr-xr-x
📄
ld.bfd
1.71 MB
11/15/2024 09:59:32 AM
rwxr-xr-x
📄
ldd
5.31 KB
01/28/2025 02:29:34 AM
rwxr-xr-x
📄
less
173.76 KB
07/02/2024 08:10:37 PM
rwxr-xr-x
📄
lessecho
12.4 KB
07/02/2024 08:10:37 PM
rwxr-xr-x
📄
lesskey
21.99 KB
07/02/2024 08:10:37 PM
rwxr-xr-x
📄
lesspipe.sh
3.07 KB
07/02/2024 07:57:10 PM
rwxr-xr-x
📄
link
33.41 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
ln
70.57 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
locale
56.45 KB
01/28/2025 02:40:28 AM
rwxr-xr-x
📄
localedef
307.47 KB
01/28/2025 02:40:28 AM
rwxr-xr-x
📄
logger
49.98 KB
04/06/2024 01:02:53 PM
rwxr-xr-x
📄
login
40.96 KB
04/06/2024 01:02:53 PM
rwxr-xr-x
📄
logname
33.42 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
look
16.45 KB
04/06/2024 01:02:53 PM
rwxr-xr-x
📄
ls
139.97 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
m4
185.56 KB
10/11/2019 02:41:40 PM
rwxr-xr-x
📄
mailq
0 bytes
01/01/1970 12:00:00 AM
---------
📄
make-dummy-cert
610 bytes
10/09/2024 01:39:22 PM
rwxr-xr-x
📄
mariadb
5.33 MB
10/29/2024 05:06:01 PM
rwxr-xr-x
📄
mariadb-access
109.34 KB
10/29/2024 03:27:14 PM
rwxr-xr-x
📄
mariadb-admin
4.87 MB
10/29/2024 05:06:01 PM
rwxr-xr-x
📄
mariadb-binlog
5.16 MB
10/29/2024 05:06:01 PM
rwxr-xr-x
📄
mariadb-check
4.87 MB
10/29/2024 05:06:01 PM
rwxr-xr-x
📄
mariadb-dump
4.96 MB
10/29/2024 05:06:01 PM
rwxr-xr-x
📄
mariadb-find-rows
3.21 KB
10/29/2024 03:27:14 PM
rwxr-xr-x
📄
mariadb-import
4.86 MB
10/29/2024 05:06:01 PM
rwxr-xr-x
📄
mariadb-show
4.86 MB
10/29/2024 05:06:01 PM
rwxr-xr-x
📄
mariadb-waitpid
4.55 MB
10/29/2024 05:06:01 PM
rwxr-xr-x
📄
mc
1.3 MB
10/18/2019 08:38:40 PM
rwxr-xr-x
📄
mcdiff
1.3 MB
10/18/2019 08:38:40 PM
rwxr-xr-x
📄
mcedit
1.3 MB
10/18/2019 08:38:40 PM
rwxr-xr-x
📄
mcookie
33.26 KB
04/06/2024 01:02:53 PM
rwxr-xr-x
📄
mcview
1.3 MB
10/18/2019 08:38:40 PM
rwxr-xr-x
📄
md5sum
45.62 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
mesg
16.36 KB
04/06/2024 01:02:53 PM
rwxr-xr-x
📄
mkdir
82.79 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
mkfifo
66.56 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
mknod
70.55 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
mktemp
45.73 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
more
44.94 KB
04/06/2024 01:02:53 PM
rwxr-xr-x
📄
msmtp
132.04 KB
04/29/2020 03:38:34 PM
rwxr-xr-x
📄
msmtpd
20.53 KB
04/29/2020 03:38:34 PM
rwxr-xr-x
📄
msql2mysql
1.41 KB
10/29/2024 03:27:14 PM
rwxr-xr-x
📄
mv
144.03 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
my_print_defaults
4.55 MB
10/29/2024 05:06:01 PM
rwxr-xr-x
📄
mysql
5.33 MB
10/29/2024 05:06:01 PM
rwxr-xr-x
📄
mysql_config
4.59 KB
10/29/2024 03:27:14 PM
rwxr-xr-x
📄
mysql_find_rows
3.21 KB
10/29/2024 03:27:14 PM
rwxr-xr-x
📄
mysql_waitpid
4.55 MB
10/29/2024 05:06:01 PM
rwxr-xr-x
📄
mysqlaccess
109.34 KB
10/29/2024 03:27:14 PM
rwxr-xr-x
📄
mysqladmin
4.87 MB
10/29/2024 05:06:01 PM
rwxr-xr-x
📄
mysqlbinlog
5.16 MB
10/29/2024 05:06:01 PM
rwxr-xr-x
📄
mysqlcheck
4.87 MB
10/29/2024 05:06:01 PM
rwxr-xr-x
📄
mysqldump
4.96 MB
10/29/2024 05:06:01 PM
rwxr-xr-x
📄
mysqlimport
4.86 MB
10/29/2024 05:06:01 PM
rwxr-xr-x
📄
mysqlshow
4.86 MB
10/29/2024 05:06:01 PM
rwxr-xr-x
📄
namei
33.1 KB
04/06/2024 01:02:53 PM
rwxr-xr-x
📄
nano
254.73 KB
10/11/2019 06:17:06 PM
rwxr-xr-x
📄
neqn
908 bytes
10/13/2019 02:29:37 PM
rwxr-xr-x
📄
newaliases
0 bytes
01/01/1970 12:00:00 AM
---------
📄
nice
37.41 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
nl
45.63 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
nm
50.38 KB
11/15/2024 09:59:32 AM
rwxr-xr-x
📄
nohup
37.48 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
nproc
37.48 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
nroff
3.23 KB
10/13/2019 02:29:39 PM
rwxr-xr-x
📄
nslookup
146.31 KB
11/15/2023 07:04:58 AM
rwxr-xr-x
📄
nsupdate
73.04 KB
11/15/2023 07:04:58 AM
rwxr-xr-x
📄
numfmt
65.71 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
objcopy
240.07 KB
11/15/2024 09:59:32 AM
rwxr-xr-x
📄
objdump
419.76 KB
11/15/2024 09:59:32 AM
rwxr-xr-x
📄
od
73.88 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
odbc_config
13.05 KB
10/14/2019 09:51:19 PM
rwxr-xr-x
📄
odbcinst
37.68 KB
10/14/2019 09:51:19 PM
rwxr-xr-x
📄
openssl
745.95 KB
10/09/2024 01:39:36 PM
rwxr-xr-x
📄
optipng
141.85 KB
11/20/2019 03:32:52 PM
rwxr-xr-x
📄
pango-list
11.88 KB
10/08/2021 03:22:06 PM
rwxr-xr-x
📄
pango-view
57.44 KB
10/08/2021 03:22:06 PM
rwxr-xr-x
📄
passwd
1.02 KB
04/18/2022 10:59:33 PM
rwxr-xr-x
📄
paste
37.46 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
patch
206.46 KB
06/01/2020 03:14:25 PM
rwxr-xr-x
📄
pathchk
37.41 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
pdf2dsc
698 bytes
10/15/2023 04:50:40 AM
rwxr-xr-x
📄
pdf2ps
909 bytes
10/15/2023 04:50:40 AM
rwxr-xr-x
📄
perldoc
118 bytes
10/13/2019 11:53:57 AM
rwxr-xr-x
📄
pgrep
28.84 KB
10/14/2023 08:31:02 PM
rwxr-xr-x
📄
php
6.1 MB
11/08/2024 06:53:00 PM
rwxr-xr-x
📄
php-cgi
6.1 MB
11/08/2024 06:53:00 PM
rwxr-xr-x
📄
phpize
4.96 KB
03/12/2025 01:53:56 PM
rwxr-xr-x
📄
pic
293.84 KB
10/13/2019 02:29:41 PM
rwxr-xr-x
📄
piconv
8.08 KB
10/13/2019 08:46:10 AM
rwxr-xr-x
📄
pinentry
2.35 KB
08/12/2018 05:18:10 PM
rwxr-xr-x
📄
pinentry-curses
77.89 KB
11/24/2019 05:39:34 PM
rwxr-xr-x
📄
ping
1.02 KB
10/14/2023 05:19:01 PM
rwxr-xr-x
📄
pinky
41.53 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
pip-3
0 bytes
01/01/1970 12:00:00 AM
---------
📄
pip3
0 bytes
01/01/1970 12:00:00 AM
---------
📄
pkill
28.84 KB
10/14/2023 08:31:02 PM
rwxr-xr-x
📄
pmap
32.78 KB
10/14/2023 08:31:02 PM
rwxr-xr-x
📄
pod2man
14.68 KB
10/13/2019 02:12:32 PM
rwxr-xr-x
📄
pod2text
10.55 KB
10/13/2019 02:12:32 PM
rwxr-xr-x
📄
pod2usage
3.86 KB
10/13/2019 11:57:18 AM
rwxr-xr-x
📄
post-grohtml
238.73 KB
10/13/2019 02:29:41 PM
rwxr-xr-x
📄
pr
82.23 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
pre-grohtml
130.55 KB
10/13/2019 02:29:41 PM
rwxr-xr-x
📄
precat
5.52 KB
04/18/2022 03:10:50 PM
rwxr-xr-x
📄
preunzip
5.52 KB
04/18/2022 03:10:50 PM
rwxr-xr-x
📄
prezip
5.52 KB
04/18/2022 03:10:50 PM
rwxr-xr-x
📄
prezip-bin
11.98 KB
04/18/2022 03:10:53 PM
rwxr-xr-x
📄
printenv
33.4 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
printf
53.64 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
ps
134.75 KB
10/14/2023 08:31:02 PM
rwxr-xr-x
📄
ps2ascii
631 bytes
10/15/2023 04:50:41 AM
rwxr-xr-x
📄
ps2epsi
2.69 KB
10/15/2023 04:50:41 AM
rwxr-xr-x
📄
ps2pdf
272 bytes
10/15/2023 04:50:41 AM
rwxr-xr-x
📄
ps2pdf12
215 bytes
10/15/2023 04:50:41 AM
rwxr-xr-x
📄
ps2pdf13
215 bytes
10/15/2023 04:50:41 AM
rwxr-xr-x
📄
ps2pdf14
215 bytes
10/15/2023 04:50:41 AM
rwxr-xr-x
📄
ps2pdfwr
1.07 KB
10/15/2023 04:50:41 AM
rwxr-xr-x
📄
ps2ps
647 bytes
10/15/2023 04:50:41 AM
rwxr-xr-x
📄
ps2ps2
669 bytes
10/15/2023 04:50:41 AM
rwxr-xr-x
📄
ptx
78.07 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
pwd
37.5 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
pwdx
12.68 KB
10/14/2023 08:31:02 PM
rwxr-xr-x
📄
pydoc-3
0 bytes
01/01/1970 12:00:00 AM
---------
📄
pydoc3
0 bytes
01/01/1970 12:00:00 AM
---------
📄
python3
11.59 KB
12/05/2024 01:10:21 PM
rwxr-xr-x
📄
python3.6
11.59 KB
12/05/2024 01:10:21 PM
rwxr-xr-x
📄
python3.6m
11.59 KB
12/05/2024 01:10:21 PM
rwxr-xr-x
📄
pyvenv-3
0 bytes
01/01/1970 12:00:00 AM
---------
📄
ranlib
61.98 KB
11/15/2024 09:59:32 AM
rwxr-xr-x
📄
raw
16.49 KB
04/06/2024 01:02:53 PM
rwxr-xr-x
📄
readelf
624.54 KB
11/15/2024 09:59:32 AM
rwxr-xr-x
📄
readlink
45.96 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
realpath
50.02 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
recode
47.03 KB
10/18/2019 03:18:02 PM
rwxr-xr-x
📄
rename
16.5 KB
04/06/2024 01:02:53 PM
rwxr-xr-x
📄
renew-dummy-cert
725 bytes
10/09/2024 01:39:22 PM
rwxr-xr-x
📄
renice
16.46 KB
04/06/2024 01:02:53 PM
rwxr-xr-x
📄
reset
24.76 KB
10/14/2023 06:54:49 PM
rwxr-xr-x
📄
restic
28.4 MB
06/20/2025 12:50:41 PM
rwx------
📄
rev
12.45 KB
04/06/2024 01:02:53 PM
rwxr-xr-x
📄
rm
70.47 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
rmdir
45.54 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
rnano
254.73 KB
10/11/2019 06:17:06 PM
rwxr-xr-x
📄
rsync
506.1 KB
01/12/2023 11:16:23 AM
rwxr-xr-x
📄
run-with-aspell
85 bytes
04/18/2022 03:10:50 PM
rwxr-xr-x
📄
runcon
37.45 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
rvi
1.13 MB
08/02/2022 04:57:02 PM
rwxr-xr-x
📄
rview
1.13 MB
08/02/2022 04:57:02 PM
rwxr-xr-x
📄
rvim
2.93 MB
08/02/2022 04:57:02 PM
rwxr-xr-x
📄
scalar
2.18 MB
12/17/2024 04:12:12 AM
rwxr-xr-x
📄
scl
36.87 KB
04/01/2023 04:10:31 PM
rwxr-xr-x
📄
scl_enabled
258 bytes
08/25/2017 08:23:02 AM
rwxr-xr-x
📄
scl_source
1.82 KB
04/01/2023 04:10:31 PM
rwxr-xr-x
📄
scp
102.84 KB
08/13/2024 07:38:36 PM
rwxr-xr-x
📄
script
36.79 KB
04/06/2024 01:02:53 PM
rwxr-xr-x
📄
sdiff
105.33 KB
05/04/2020 03:15:14 PM
rwxr-xr-x
📄
sed
115.48 KB
04/18/2022 09:41:04 PM
rwxr-xr-x
📄
seq
53.52 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
setsid
16.38 KB
04/06/2024 01:02:53 PM
rwxr-xr-x
📄
setterm
45.12 KB
04/06/2024 01:02:53 PM
rwxr-xr-x
📄
sftp
159.73 KB
08/13/2024 07:38:36 PM
rwxr-xr-x
📄
sh
1.1 MB
05/23/2024 08:55:42 AM
rwxr-xr-x
📄
sha1sum
45.63 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
sha224sum
45.66 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
sha256sum
45.66 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
sha384sum
45.66 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
sha512sum
45.66 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
shred
61.94 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
shuf
58.16 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
size
33.25 KB
11/15/2024 09:59:32 AM
rwxr-xr-x
📄
skill
28.8 KB
10/14/2023 08:31:02 PM
rwxr-xr-x
📄
slabtop
20.84 KB
10/14/2023 08:31:02 PM
rwxr-xr-x
📄
sleep
37.47 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
slencheck
13.07 KB
10/14/2019 09:51:19 PM
rwxr-xr-x
📄
snice
28.8 KB
10/14/2023 08:31:02 PM
rwxr-xr-x
📄
soelim
42.55 KB
10/13/2019 02:29:41 PM
rwxr-xr-x
📄
sort
123.55 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
spell
122 bytes
04/18/2022 03:10:51 PM
rwxr-xr-x
📄
split
58.13 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
sprof
28.67 KB
01/28/2025 02:40:28 AM
rwxr-xr-x
📄
sqlite3
1.28 MB
01/16/2024 08:21:04 AM
rwxr-xr-x
📄
ssh
757.48 KB
08/13/2024 07:38:36 PM
rwxr-xr-x
📄
ssh-add
346.09 KB
08/13/2024 07:38:36 PM
rwxr-xr-x
📄
ssh-agent
325.56 KB
08/13/2024 07:38:36 PM
rwxr-xr-x
📄
ssh-copy-id
10.44 KB
08/13/2024 07:38:35 PM
rwxr-xr-x
📄
ssh-keygen
427.2 KB
08/13/2024 07:38:36 PM
rwxr-xr-x
📄
ssh-keyscan
428.56 KB
08/13/2024 07:38:36 PM
rwxr-xr-x
📄
stat
86.23 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
stdbuf
49.58 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
strings
37.43 KB
11/15/2024 09:59:32 AM
rwxr-xr-x
📄
strip
240.09 KB
11/15/2024 09:59:32 AM
rwxr-xr-x
📄
stty
77.68 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
sum
45.61 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
svn
338.74 KB
11/09/2022 12:46:36 PM
rwxr-xr-x
📄
svnadmin
100.95 KB
11/09/2022 12:46:36 PM
rwxr-xr-x
📄
svndumpfilter
36.72 KB
11/09/2022 12:46:36 PM
rwxr-xr-x
📄
svnfsfs
40.66 KB
11/09/2022 12:46:36 PM
rwxr-xr-x
📄
svnlook
76.84 KB
11/09/2022 12:46:36 PM
rwxr-xr-x
📄
svnrdump
57.04 KB
11/09/2022 12:46:36 PM
rwxr-xr-x
📄
svnserve
109.66 KB
11/09/2022 12:46:36 PM
rwxr-xr-x
📄
svnsync
61.05 KB
11/09/2022 12:46:36 PM
rwxr-xr-x
📄
svnversion
16.3 KB
11/09/2022 12:46:36 PM
rwxr-xr-x
📄
sync
37.43 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
tabs
16.55 KB
10/14/2023 06:54:49 PM
rwxr-xr-x
📄
tac
41.57 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
tail
74.2 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
tar
449.03 KB
04/04/2023 08:26:40 PM
rwxr-xr-x
📄
taskset
37.25 KB
04/06/2024 01:02:53 PM
rwxr-xr-x
📄
tbl
154.61 KB
10/13/2019 02:29:41 PM
rwxr-xr-x
📄
tclsh
9.04 KB
10/12/2019 12:25:32 AM
rwxr-xr-x
📄
tclsh8.6
9.04 KB
10/12/2019 12:25:32 AM
rwxr-xr-x
📄
tee
41.55 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
test
53.63 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
tic
85.31 KB
10/14/2023 06:54:49 PM
rwxr-xr-x
📄
timeout
41.93 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
tload
16.76 KB
10/14/2023 08:31:02 PM
rwxr-xr-x
📄
tmpwatch
35.47 KB
10/12/2019 11:32:29 AM
rwxr-xr-x
📄
toe
16.45 KB
10/14/2023 06:54:49 PM
rwxr-xr-x
📄
top
121.7 KB
10/14/2023 08:31:02 PM
rwxr-xr-x
📄
touch
94.02 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
tput
24.8 KB
10/14/2023 06:54:49 PM
rwxr-xr-x
📄
tr
49.7 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
tree
81.59 KB
10/12/2019 12:35:52 AM
rwxr-xr-x
📄
troff
805.02 KB
10/13/2019 02:29:41 PM
rwxr-xr-x
📄
true
33.4 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
truncate
41.44 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
tset
24.76 KB
10/14/2023 06:54:49 PM
rwxr-xr-x
📄
tsort
41.57 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
tty
33.39 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
tzselect
15.01 KB
01/28/2025 02:29:05 AM
rwxr-xr-x
📄
ul
20.58 KB
04/06/2024 01:02:53 PM
rwxr-xr-x
📄
uname
37.41 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
unexpand
45.68 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
uniq
49.72 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
unlink
33.41 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
unrar
347.02 KB
05/04/2022 06:22:12 PM
rwxr-xr-x
📄
unversioned-python
0 bytes
01/01/1970 12:00:00 AM
---------
📄
unzip
201.98 KB
04/18/2022 07:19:22 PM
rwxr-xr-x
📄
unzipsfx
101.59 KB
04/18/2022 07:19:22 PM
rwxr-xr-x
📄
uptime
12.59 KB
10/14/2023 08:31:02 PM
rwxr-xr-x
📄
users
37.47 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
utmpdump
28.66 KB
04/06/2024 01:02:53 PM
rwxr-xr-x
📄
vdir
139.97 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
vi
1.13 MB
08/02/2022 04:57:02 PM
rwxr-xr-x
📄
view
1.13 MB
08/02/2022 04:57:02 PM
rwxr-xr-x
📄
vim
2.93 MB
08/02/2022 04:57:02 PM
rwxr-xr-x
📄
vimdiff
2.93 MB
08/02/2022 04:57:02 PM
rwxr-xr-x
📄
vimtutor
2.07 KB
08/02/2022 04:56:59 PM
rwxr-xr-x
📄
vmstat
36.79 KB
10/14/2023 08:31:02 PM
rwxr-xr-x
📄
watch
29.19 KB
10/14/2023 08:31:02 PM
rwxr-xr-x
📄
wc
49.72 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
wget
521.41 KB
08/13/2024 10:22:56 PM
rwxr-xr-x
📄
whereis
29.27 KB
04/06/2024 01:02:53 PM
rwxr-xr-x
📄
which
29.44 KB
10/15/2023 02:50:46 AM
rwxr-xr-x
📄
who
53.68 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
whoami
33.41 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
word-list-compress
11.99 KB
04/18/2022 03:10:53 PM
rwxr-xr-x
📄
x86_64-redhat-linux-gcc-8
1.2 MB
05/22/2024 04:57:56 PM
rwxr-xr-x
📄
xargs
74.11 KB
09/24/2024 02:19:34 AM
rwxr-xr-x
📄
xmlcatalog
20.38 KB
06/05/2024 02:22:23 PM
rwxr-xr-x
📄
xmllint
73.37 KB
06/05/2024 02:22:23 PM
rwxr-xr-x
📄
xmlwf
32.96 KB
11/13/2024 05:39:33 AM
rwxr-xr-x
📄
xsltproc
28.42 KB
04/08/2021 06:24:01 AM
rwxr-xr-x
📄
xxd
20.52 KB
08/02/2022 04:57:02 PM
rwxr-xr-x
📄
yes
33.45 KB
04/01/2023 08:44:39 AM
rwxr-xr-x
📄
zcat
1.94 KB
04/27/2022 05:49:28 AM
rwxr-xr-x
📄
zcmp
1.64 KB
04/27/2022 05:49:28 AM
rwxr-xr-x
📄
zdiff
5.74 KB
04/27/2022 05:49:28 AM
rwxr-xr-x
📄
zegrep
29 bytes
04/27/2022 05:49:28 AM
rwxr-xr-x
📄
zfgrep
29 bytes
04/27/2022 05:49:28 AM
rwxr-xr-x
📄
zforce
2.03 KB
04/27/2022 05:49:28 AM
rwxr-xr-x
📄
zgrep
7.4 KB
04/27/2022 05:49:28 AM
rwxr-xr-x
📄
zip
229 KB
10/11/2019 01:11:04 PM
rwxr-xr-x
📄
zipcloak
102.91 KB
10/11/2019 01:11:04 PM
rwxr-xr-x
📄
zipgrep
2.88 KB
10/10/2008 05:40:36 PM
rwxr-xr-x
📄
zipinfo
201.98 KB
04/18/2022 07:19:22 PM
rwxr-xr-x
📄
zipnote
97.76 KB
10/11/2019 01:11:04 PM
rwxr-xr-x
📄
zipsplit
97.76 KB
10/11/2019 01:11:04 PM
rwxr-xr-x
📄
zless
2.15 KB
04/27/2022 05:49:28 AM
rwxr-xr-x
📄
zmore
1.8 KB
04/27/2022 05:49:28 AM
rwxr-xr-x
📄
znew
4.45 KB
04/27/2022 05:49:28 AM
rwxr-xr-x
📄
zsoelim
42.55 KB
10/13/2019 02:29:41 PM
rwxr-xr-x
Editing: aclocal-1.16
Close
#!/usr/bin/perl -w # -*- perl -*- # Generated from bin/aclocal.in; do not edit by hand. eval 'case $# in 0) exec /usr/bin/perl -S "$0";; *) exec /usr/bin/perl -S "$0" "$@";; esac' if 0; # aclocal - create aclocal.m4 by scanning configure.ac # Copyright (C) 1996-2018 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see <https://www.gnu.org/licenses/>. # Written by Tom Tromey <tromey@redhat.com>, and # Alexandre Duret-Lutz <adl@gnu.org>. BEGIN { unshift (@INC, '/usr/share/automake-1.16') unless $ENV{AUTOMAKE_UNINSTALLED}; } use strict; use Automake::Config; use Automake::General; use Automake::Configure_ac; use Automake::Channels; use Automake::ChannelDefs; use Automake::XFile; use Automake::FileUtils; use File::Basename; use File::Path (); # Some globals. # Support AC_CONFIG_MACRO_DIRS also with older autoconf. # FIXME: To be removed in Automake 2.0, once we can assume autoconf # 2.70 or later. # FIXME: keep in sync with 'internal/ac-config-macro-dirs.m4'. my $ac_config_macro_dirs_fallback = 'm4_ifndef([AC_CONFIG_MACRO_DIRS], [' . 'm4_defun([_AM_CONFIG_MACRO_DIRS], [])' . 'm4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])' . '])'; # We do not operate in threaded mode. $perl_threads = 0; # Include paths for searching macros. We search macros in this order: # user-supplied directories first, then the directory containing the # automake macros, and finally the system-wide directories for # third-party macros. # @user_includes can be augmented with -I or AC_CONFIG_MACRO_DIRS. # @automake_includes can be reset with the '--automake-acdir' option. # @system_includes can be augmented with the 'dirlist' file or the # ACLOCAL_PATH environment variable, and reset with the '--system-acdir' # option. my @user_includes = (); my @automake_includes = ('/usr/share/aclocal-' . $APIVERSION); my @system_includes = ('/usr/share/aclocal'); # Whether we should copy M4 file in $user_includes[0]. my $install = 0; # --diff my @diff_command; # --dry-run my $dry_run = 0; # configure.ac or configure.in. my $configure_ac; # Output file name. my $output_file = 'aclocal.m4'; # Option --force. my $force_output = 0; # Modification time of the youngest dependency. my $greatest_mtime = 0; # Which macros have been seen. my %macro_seen = (); # Remember the order into which we scanned the files. # It's important to output the contents of aclocal.m4 in the opposite order. # (Definitions in first files we have scanned should override those from # later files. So they must appear last in the output.) my @file_order = (); # Map macro names to file names. my %map = (); # Ditto, but records the last definition of each macro as returned by --trace. my %map_traced_defs = (); # Map basenames to macro names. my %invmap = (); # Map file names to file contents. my %file_contents = (); # Map file names to file types. my %file_type = (); use constant FT_USER => 1; use constant FT_AUTOMAKE => 2; use constant FT_SYSTEM => 3; # Map file names to included files (transitively closed). my %file_includes = (); # Files which have already been added. my %file_added = (); # Files that have already been scanned. my %scanned_configure_dep = (); # Serial numbers, for files that have one. # The key is the basename of the file, # the value is the serial number represented as a list. my %serial = (); # Matches a macro definition. # AC_DEFUN([macroname], ...) # or # AC_DEFUN(macroname, ...) # When macroname is '['-quoted , we accept any character in the name, # except ']'. Otherwise macroname stops on the first ']', ',', ')', # or '\n' encountered. my $ac_defun_rx = "(?:AU_ALIAS|A[CU]_DEFUN|AC_DEFUN_ONCE)\\((?:\\[([^]]+)\\]|([^],)\n]+))"; # Matches an AC_REQUIRE line. my $ac_require_rx = "AC_REQUIRE\\((?:\\[([^]]+)\\]|([^],)\n]+))\\)"; # Matches an m4_include line. my $m4_include_rx = "(m4_|m4_s|s)include\\((?:\\[([^]]+)\\]|([^],)\n]+))\\)"; # Match a serial number. my $serial_line_rx = '^#\s*serial\s+(\S*)'; my $serial_number_rx = '^\d+(?:\.\d+)*$'; # Autoconf version. This variable is set by 'trace_used_macros'. my $ac_version; # User directory containing extra m4 files for macros definition, # as extracted from calls to the macro AC_CONFIG_MACRO_DIRS. # This variable is updated by 'trace_used_macros'. my @ac_config_macro_dirs; # If set, names a temporary file that must be erased on abnormal exit. my $erase_me; # Constants for the $ERR_LEVEL parameter of the 'scan_m4_dirs' function. use constant SCAN_M4_DIRS_SILENT => 0; use constant SCAN_M4_DIRS_WARN => 1; use constant SCAN_M4_DIRS_ERROR => 2; ################################################################ # Prototypes for all subroutines. sub add_file ($); sub add_macro ($); sub check_acinclude (); sub install_file ($$); sub list_compare (\@\@); sub parse_ACLOCAL_PATH (); sub parse_arguments (); sub reset_maps (); sub scan_configure (); sub scan_configure_dep ($); sub scan_file ($$$); sub scan_m4_dirs ($$@); sub scan_m4_files (); sub strip_redundant_includes (%); sub trace_used_macros (); sub unlink_tmp (;$); sub usage ($); sub version (); sub write_aclocal ($@); sub xmkdir_p ($); ################################################################ # Erase temporary file ERASE_ME. Handle signals. sub unlink_tmp (;$) { my ($sig) = @_; if ($sig) { verb "caught SIG$sig, bailing out"; } if (defined $erase_me && -e $erase_me && !unlink ($erase_me)) { fatal "could not remove '$erase_me': $!"; } undef $erase_me; # reraise default handler. if ($sig) { $SIG{$sig} = 'DEFAULT'; kill $sig => $$; } } $SIG{'INT'} = $SIG{'TERM'} = $SIG{'QUIT'} = $SIG{'HUP'} = 'unlink_tmp'; END { unlink_tmp } sub xmkdir_p ($) { my $dir = shift; local $@ = undef; return if -d $dir or eval { File::Path::mkpath $dir }; chomp $@; $@ =~ s/\s+at\s.*\bline\s\d+.*$//; fatal "could not create directory '$dir': $@"; } # Check macros in acinclude.m4. If one is not used, warn. sub check_acinclude () { foreach my $key (keys %map) { # FIXME: should print line number of acinclude.m4. msg ('syntax', "macro '$key' defined in acinclude.m4 but never used") if $map{$key} eq 'acinclude.m4' && ! exists $macro_seen{$key}; } } sub reset_maps () { $greatest_mtime = 0; %macro_seen = (); @file_order = (); %map = (); %map_traced_defs = (); %file_contents = (); %file_type = (); %file_includes = (); %file_added = (); %scanned_configure_dep = (); %invmap = (); %serial = (); undef &search; } # install_file ($SRC, $DESTDIR) sub install_file ($$) { my ($src, $destdir) = @_; my $dest = $destdir . "/" . basename ($src); my $diff_dest; verb "installing $src to $dest"; if ($force_output || !exists $file_contents{$dest} || $file_contents{$src} ne $file_contents{$dest}) { if (-e $dest) { msg 'note', "overwriting '$dest' with '$src'"; $diff_dest = $dest; } else { msg 'note', "installing '$dest' from '$src'"; } if (@diff_command) { if (! defined $diff_dest) { # $dest does not exist. We create an empty one just to # run diff, and we erase it afterward. Using the real # the destination file (rather than a temporary file) is # good when diff is run with options that display the # file name. # # If creating $dest fails, fall back to /dev/null. At # least one diff implementation (Tru64's) cannot deal # with /dev/null. However working around this is not # worth the trouble since nobody run aclocal on a # read-only tree anyway. $erase_me = $dest; my $f = new IO::File "> $dest"; if (! defined $f) { undef $erase_me; $diff_dest = '/dev/null'; } else { $diff_dest = $dest; $f->close; } } my @cmd = (@diff_command, $diff_dest, $src); $! = 0; verb "running: @cmd"; my $res = system (@cmd); Automake::FileUtils::handle_exec_errors "@cmd", 1 if $res; unlink_tmp; } elsif (!$dry_run) { xmkdir_p ($destdir); xsystem ('cp', $src, $dest); } } } # Compare two lists of numbers. sub list_compare (\@\@) { my @l = @{$_[0]}; my @r = @{$_[1]}; while (1) { if (0 == @l) { return (0 == @r) ? 0 : -1; } elsif (0 == @r) { return 1; } elsif ($l[0] < $r[0]) { return -1; } elsif ($l[0] > $r[0]) { return 1; } shift @l; shift @r; } } ################################################################ # scan_m4_dirs($TYPE, $ERR_LEVEL, @DIRS) # ----------------------------------------------- # Scan all M4 files installed in @DIRS for new macro definitions. # Register each file as of type $TYPE (one of the FT_* constants). # If a directory in @DIRS cannot be read: # - fail hard if $ERR_LEVEL == SCAN_M4_DIRS_ERROR # - just print a warning if $ERR_LEVEL == SCAN_M4_DIRS_WA # - continue silently if $ERR_LEVEL == SCAN_M4_DIRS_SILENT sub scan_m4_dirs ($$@) { my ($type, $err_level, @dirlist) = @_; foreach my $m4dir (@dirlist) { if (! opendir (DIR, $m4dir)) { # TODO: maybe avoid complaining only if errno == ENONENT? my $message = "couldn't open directory '$m4dir': $!"; if ($err_level == SCAN_M4_DIRS_ERROR) { fatal $message; } elsif ($err_level == SCAN_M4_DIRS_WARN) { msg ('unsupported', $message); next; } elsif ($err_level == SCAN_M4_DIRS_SILENT) { next; # Silently ignore. } else { prog_error "invalid \$err_level value '$err_level'"; } } # We reverse the directory contents so that foo2.m4 gets # used in preference to foo1.m4. foreach my $file (reverse sort grep (! /^\./, readdir (DIR))) { # Only examine .m4 files. next unless $file =~ /\.m4$/; # Skip some files when running out of srcdir. next if $file eq 'aclocal.m4'; my $fullfile = File::Spec->canonpath ("$m4dir/$file"); scan_file ($type, $fullfile, 'aclocal'); } closedir (DIR); } } # Scan all the installed m4 files and construct a map. sub scan_m4_files () { # First, scan configure.ac. It may contain macro definitions, # or may include other files that define macros. scan_file (FT_USER, $configure_ac, 'aclocal'); # Then, scan acinclude.m4 if it exists. if (-f 'acinclude.m4') { scan_file (FT_USER, 'acinclude.m4', 'aclocal'); } # Finally, scan all files in our search paths. if (@user_includes) { # Don't explore the same directory multiple times. This is here not # only for speedup purposes. We need this when the user has e.g. # specified 'ACLOCAL_AMFLAGS = -I m4' and has also set # AC_CONFIG_MACRO_DIR[S]([m4]) in configure.ac. This makes the 'm4' # directory to occur twice here and fail on the second call to # scan_m4_dirs([m4]) when the 'm4' directory doesn't exist. # TODO: Shouldn't there be rather a check in scan_m4_dirs for # @user_includes[0]? @user_includes = uniq @user_includes; # Don't complain if the first user directory doesn't exist, in case # we need to create it later (can happen if '--install' was given). scan_m4_dirs (FT_USER, $install ? SCAN_M4_DIRS_SILENT : SCAN_M4_DIRS_WARN, $user_includes[0]); scan_m4_dirs (FT_USER, SCAN_M4_DIRS_ERROR, @user_includes[1..$#user_includes]); } scan_m4_dirs (FT_AUTOMAKE, SCAN_M4_DIRS_ERROR, @automake_includes); scan_m4_dirs (FT_SYSTEM, SCAN_M4_DIRS_ERROR, @system_includes); # Construct a new function that does the searching. We use a # function (instead of just evaluating $search in the loop) so that # "die" is correctly and easily propagated if run. my $search = "sub search {\nmy \$found = 0;\n"; foreach my $key (reverse sort keys %map) { $search .= ('if (/\b\Q' . $key . '\E(?!\w)/) { add_macro ("' . $key . '"); $found = 1; }' . "\n"); } $search .= "return \$found;\n};\n"; eval $search; prog_error "$@\n search is $search" if $@; } ################################################################ # Add a macro to the output. sub add_macro ($) { my ($macro) = @_; # Ignore unknown required macros. Either they are not really # needed (e.g., a conditional AC_REQUIRE), in which case aclocal # should be quiet, or they are needed and Autoconf itself will # complain when we trace for macro usage later. return unless defined $map{$macro}; verb "saw macro $macro"; $macro_seen{$macro} = 1; add_file ($map{$macro}); } # scan_configure_dep ($file) # -------------------------- # Scan a configure dependency (configure.ac, or separate m4 files) # for uses of known macros and AC_REQUIREs of possibly unknown macros. # Recursively scan m4_included files. sub scan_configure_dep ($) { my ($file) = @_; # Do not scan a file twice. return () if exists $scanned_configure_dep{$file}; $scanned_configure_dep{$file} = 1; my $mtime = mtime $file; $greatest_mtime = $mtime if $greatest_mtime < $mtime; my $contents = exists $file_contents{$file} ? $file_contents{$file} : contents $file; my $line = 0; my @rlist = (); my @ilist = (); foreach (split ("\n", $contents)) { ++$line; # Remove comments from current line. s/\bdnl\b.*$//; s/\#.*$//; # Avoid running all the following regexes on white lines. next if /^\s*$/; while (/$m4_include_rx/go) { my $ifile = $2 || $3; # Skip missing 'sinclude'd files. next if $1 ne 'm4_' && ! -f $ifile; push @ilist, $ifile; } while (/$ac_require_rx/go) { push (@rlist, $1 || $2); } # The search function is constructed dynamically by # scan_m4_files. The last parenthetical match makes sure we # don't match things that look like macro assignments or # AC_SUBSTs. if (! &search && /(^|\s+)(AM_[A-Z0-9_]+)($|[^\]\)=A-Z0-9_])/) { # Macro not found, but AM_ prefix found. # Make this just a warning, because we do not know whether # the macro is actually used (it could be called conditionally). msg ('unsupported', "$file:$line", "macro '$2' not found in library"); } } add_macro ($_) foreach (@rlist); scan_configure_dep ($_) foreach @ilist; } # add_file ($FILE) # ---------------- # Add $FILE to output. sub add_file ($) { my ($file) = @_; # Only add a file once. return if ($file_added{$file}); $file_added{$file} = 1; scan_configure_dep $file; } # Point to the documentation for underquoted AC_DEFUN only once. my $underquoted_manual_once = 0; # scan_file ($TYPE, $FILE, $WHERE) # -------------------------------- # Scan a single M4 file ($FILE), and all files it includes. # Return the list of included files. # $TYPE is one of FT_USER, FT_AUTOMAKE, or FT_SYSTEM, depending # on where the file comes from. # $WHERE is the location to use in the diagnostic if the file # does not exist. sub scan_file ($$$) { my ($type, $file, $where) = @_; my $basename = basename $file; # Do not scan the same file twice. return @{$file_includes{$file}} if exists $file_includes{$file}; # Prevent potential infinite recursion (if two files include each other). return () if exists $file_contents{$file}; unshift @file_order, $file; $file_type{$file} = $type; fatal "$where: file '$file' does not exist" if ! -e $file; my $fh = new Automake::XFile $file; my $contents = ''; my @inc_files = (); my %inc_lines = (); my $defun_seen = 0; my $serial_seen = 0; my $serial_older = 0; while ($_ = $fh->getline) { # Ignore '##' lines. next if /^##/; $contents .= $_; my $line = $_; if ($line =~ /$serial_line_rx/go) { my $number = $1; if ($number !~ /$serial_number_rx/go) { msg ('syntax', "$file:$.", "ill-formed serial number '$number', " . "expecting a version string with only digits and dots"); } elsif ($defun_seen) { # aclocal removes all definitions from M4 file with the # same basename if a greater serial number is found. # Encountering a serial after some macros will undefine # these macros... msg ('syntax', "$file:$.", 'the serial number must appear before any macro definition'); } # We really care about serials only for non-automake macros # and when --install is used. But the above diagnostics are # made regardless of this, because not using --install is # not a reason not the fix macro files. elsif ($install && $type != FT_AUTOMAKE) { $serial_seen = 1; my @new = split (/\./, $number); verb "$file:$.: serial $number"; if (!exists $serial{$basename} || list_compare (@new, @{$serial{$basename}}) > 0) { # Delete any definition we knew from the old macro. foreach my $def (@{$invmap{$basename}}) { verb "$file:$.: ignoring previous definition of $def"; delete $map{$def}; } $invmap{$basename} = []; $serial{$basename} = \@new; } else { $serial_older = 1; } } } # Remove comments from current line. # Do not do it earlier, because the serial line is a comment. $line =~ s/\bdnl\b.*$//; $line =~ s/\#.*$//; while ($line =~ /$ac_defun_rx/go) { $defun_seen = 1; if (! defined $1) { msg ('syntax', "$file:$.", "underquoted definition of $2" . "\n run info Automake 'Extending aclocal'\n" . " or see https://www.gnu.org/software/automake/manual/" . "automake.html#Extending-aclocal") unless $underquoted_manual_once; $underquoted_manual_once = 1; } # If this macro does not have a serial and we have already # seen a macro with the same basename earlier, we should # ignore the macro (don't exit immediately so we can still # diagnose later #serial numbers and underquoted macros). $serial_older ||= ($type != FT_AUTOMAKE && !$serial_seen && exists $serial{$basename}); my $macro = $1 || $2; if (!$serial_older && !defined $map{$macro}) { verb "found macro $macro in $file: $."; $map{$macro} = $file; push @{$invmap{$basename}}, $macro; } else { # Note: we used to give an error here if we saw a # duplicated macro. However, this turns out to be # extremely unpopular. It causes actual problems which # are hard to work around, especially when you must # mix-and-match tool versions. verb "ignoring macro $macro in $file: $."; } } while ($line =~ /$m4_include_rx/go) { my $ifile = $2 || $3; # Skip missing 'sinclude'd files. next if $1 ne 'm4_' && ! -f $ifile; push (@inc_files, $ifile); $inc_lines{$ifile} = $.; } } # Ignore any file that has an old serial (or no serial if we know # another one with a serial). return () if ($serial_older || ($type != FT_AUTOMAKE && !$serial_seen && exists $serial{$basename})); $file_contents{$file} = $contents; # For some reason I don't understand, it does not work # to do "map { scan_file ($_, ...) } @inc_files" below. # With Perl 5.8.2 it undefines @inc_files. my @copy = @inc_files; my @all_inc_files = (@inc_files, map { scan_file ($type, $_, "$file:$inc_lines{$_}") } @copy); $file_includes{$file} = \@all_inc_files; return @all_inc_files; } # strip_redundant_includes (%FILES) # --------------------------------- # Each key in %FILES is a file that must be present in the output. # However some of these files might already include other files in %FILES, # so there is no point in including them another time. # This removes items of %FILES which are already included by another file. sub strip_redundant_includes (%) { my %files = @_; # Always include acinclude.m4, even if it does not appear to be used. $files{'acinclude.m4'} = 1 if -f 'acinclude.m4'; # File included by $configure_ac are redundant. $files{$configure_ac} = 1; # Files at the end of @file_order should override those at the beginning, # so it is important to preserve these trailing files. We can remove # a file A if it is going to be output before a file B that includes # file A, not the converse. foreach my $file (reverse @file_order) { next unless exists $files{$file}; foreach my $ifile (@{$file_includes{$file}}) { next unless exists $files{$ifile}; delete $files{$ifile}; verb "$ifile is already included by $file"; } } # configure.ac is implicitly included. delete $files{$configure_ac}; return %files; } sub trace_used_macros () { my %files = map { $map{$_} => 1 } keys %macro_seen; %files = strip_redundant_includes %files; # When AC_CONFIG_MACRO_DIRS is used, avoid possible spurious warnings # from autom4te about macros being "m4_require'd but not m4_defun'd"; # for more background, see: # https://lists.gnu.org/archive/html/autoconf-patches/2012-11/msg00004.html # as well as autoconf commit 'v2.69-44-g1ed0548', "warn: allow aclocal # to silence m4_require warnings". my $early_m4_code .= "m4_define([m4_require_silent_probe], [-])"; my $traces = ($ENV{AUTOM4TE} || 'autom4te'); $traces .= " --language Autoconf-without-aclocal-m4 "; $traces = "echo '$early_m4_code' | $traces - "; # Support AC_CONFIG_MACRO_DIRS also with older autoconf. # Note that we can't use '$ac_config_macro_dirs_fallback' here, because # a bug in option parsing code of autom4te 2.68 and earlier will cause # it to read standard input last, even if the "-" argument is specified # early. # FIXME: To be removed in Automake 2.0, once we can assume autoconf # 2.70 or later. $traces .= "$automake_includes[0]/internal/ac-config-macro-dirs.m4 "; # All candidate files. $traces .= join (' ', (map { "'$_'" } (grep { exists $files{$_} } @file_order))) . " "; # All candidate macros. $traces .= join (' ', (map { "--trace='$_:\$f::\$n::\${::}%'" } ('AC_DEFUN', 'AC_DEFUN_ONCE', 'AU_DEFUN', '_AM_AUTOCONF_VERSION', 'AC_CONFIG_MACRO_DIR_TRACE', # FIXME: Tracing the next two macros is a hack for # compatibility with older autoconf. Remove this in # Automake 2.0, when we can assume Autoconf 2.70 or # later. 'AC_CONFIG_MACRO_DIR', '_AM_CONFIG_MACRO_DIRS')), # Do not trace $1 for all other macros as we do # not need it and it might contains harmful # characters (like newlines). (map { "--trace='$_:\$f::\$n'" } (keys %macro_seen))); verb "running $traces $configure_ac"; my $tracefh = new Automake::XFile ("$traces $configure_ac |"); @ac_config_macro_dirs = (); my %traced = (); while ($_ = $tracefh->getline) { chomp; my ($file, $macro, $arg1) = split (/::/); $traced{$macro} = 1 if exists $macro_seen{$macro}; if ($macro eq 'AC_DEFUN' || $macro eq 'AC_DEFUN_ONCE' || $macro eq 'AU_DEFUN') { $map_traced_defs{$arg1} = $file; } elsif ($macro eq '_AM_AUTOCONF_VERSION') { $ac_version = $arg1; } elsif ($macro eq 'AC_CONFIG_MACRO_DIR_TRACE') { push @ac_config_macro_dirs, $arg1; } # FIXME: We still need to trace AC_CONFIG_MACRO_DIR # for compatibility with older autoconf. Remove this # once we can assume Autoconf 2.70 or later. elsif ($macro eq 'AC_CONFIG_MACRO_DIR') { @ac_config_macro_dirs = ($arg1); } # FIXME:This is an hack for compatibility with older autoconf. # Remove this once we can assume Autoconf 2.70 or later. elsif ($macro eq '_AM_CONFIG_MACRO_DIRS') { # Empty leading/trailing fields might be produced by split, # hence the grep is really needed. push @ac_config_macro_dirs, grep (/./, (split /\s+/, $arg1)); } } # FIXME: in Autoconf >= 2.70, AC_CONFIG_MACRO_DIR calls # AC_CONFIG_MACRO_DIR_TRACE behind the scenes, which could # leave unwanted duplicates in @ac_config_macro_dirs. # Remove this in Automake 2.0, when we'll stop tracing # AC_CONFIG_MACRO_DIR explicitly. @ac_config_macro_dirs = uniq @ac_config_macro_dirs; $tracefh->close; return %traced; } sub scan_configure () { # Make sure we include acinclude.m4 if it exists. if (-f 'acinclude.m4') { add_file ('acinclude.m4'); } scan_configure_dep ($configure_ac); } ################################################################ # Write output. # Return 0 iff some files were installed locally. sub write_aclocal ($@) { my ($output_file, @macros) = @_; my $output = ''; my %files = (); # Get the list of files containing definitions for the macros used. # (Filter out unused macro definitions with $map_traced_defs. This # can happen when an Autoconf macro is conditionally defined: # aclocal sees the potential definition, but this definition is # actually never processed and the Autoconf implementation is used # instead.) for my $m (@macros) { $files{$map{$m}} = 1 if (exists $map_traced_defs{$m} && $map{$m} eq $map_traced_defs{$m}); } # Do not explicitly include a file that is already indirectly included. %files = strip_redundant_includes %files; my $installed = 0; for my $file (grep { exists $files{$_} } @file_order) { # Check the time stamp of this file, and of all files it includes. for my $ifile ($file, @{$file_includes{$file}}) { my $mtime = mtime $ifile; $greatest_mtime = $mtime if $greatest_mtime < $mtime; } # If the file to add looks like outside the project, copy it # to the output. The regex catches filenames starting with # things like '/', '\', or 'c:\'. if ($file_type{$file} != FT_USER || $file =~ m,^(?:\w:)?[\\/],) { if (!$install || $file_type{$file} != FT_SYSTEM) { # Copy the file into aclocal.m4. $output .= $file_contents{$file} . "\n"; } else { # Install the file (and any file it includes). my $dest; for my $ifile (@{$file_includes{$file}}, $file) { install_file ($ifile, $user_includes[0]); } $installed = 1; } } else { # Otherwise, simply include the file. $output .= "m4_include([$file])\n"; } } if ($installed) { verb "running aclocal anew, because some files were installed locally"; return 0; } # Nothing to output?! # FIXME: Shouldn't we diagnose this? return 1 if ! length ($output); if ($ac_version) { # Do not use "$output_file" here for the same reason we do not # use it in the header below. autom4te will output the name of # the file in the diagnostic anyway. $output = "m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [$ac_version],, [m4_warning([this file was generated for autoconf $ac_version. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically 'autoreconf'.])]) $output"; } # We used to print "# $output_file generated automatically etc." But # this creates spurious differences when using autoreconf. Autoreconf # creates aclocal.m4t and then rename it to aclocal.m4, but the # rebuild rules generated by Automake create aclocal.m4 directly -- # this would gives two ways to get the same file, with a different # name in the header. $output = "# generated automatically by aclocal $VERSION -*- Autoconf -*- # Copyright (C) 1996-$RELEASE_YEAR Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. $ac_config_macro_dirs_fallback $output"; # We try not to update $output_file unless necessary, because # doing so invalidate Autom4te's cache and therefore slows down # tools called after aclocal. # # We need to overwrite $output_file in the following situations. # * The --force option is in use. # * One of the dependencies is younger. # (Not updating $output_file in this situation would cause # make to call aclocal in loop.) # * The contents of the current file are different from what # we have computed. if (!$force_output && $greatest_mtime < mtime ($output_file) && $output eq contents ($output_file)) { verb "$output_file unchanged"; return 1; } verb "writing $output_file"; if (!$dry_run) { if (-e $output_file && !unlink $output_file) { fatal "could not remove '$output_file': $!"; } my $out = new Automake::XFile "> $output_file"; print $out $output; } return 1; } ################################################################ # Print usage and exit. sub usage ($) { my ($status) = @_; print <<'EOF'; Usage: aclocal [OPTION]... Generate 'aclocal.m4' by scanning 'configure.ac' or 'configure.in' Options: --automake-acdir=DIR directory holding automake-provided m4 files --system-acdir=DIR directory holding third-party system-wide files --diff[=COMMAND] run COMMAND [diff -u] on M4 files that would be changed (implies --install and --dry-run) --dry-run pretend to, but do not actually update any file --force always update output file --help print this help, then exit -I DIR add directory to search list for .m4 files --install copy third-party files to the first -I directory --output=FILE put output in FILE (default aclocal.m4) --print-ac-dir print name of directory holding system-wide third-party m4 files, then exit --verbose don't be silent --version print version number, then exit -W, --warnings=CATEGORY report the warnings falling in CATEGORY Warning categories include: syntax dubious syntactic constructs (default) unsupported unknown macros (default) all all the warnings (default) no-CATEGORY turn off warnings in CATEGORY none turn off all the warnings error treat warnings as errors Report bugs to <bug-automake@gnu.org>. GNU Automake home page: <http://www.gnu.org/software/automake/>. General help using GNU software: <https://www.gnu.org/gethelp/>. EOF exit $status; } # Print version and exit. sub version () { print <<EOF; aclocal (GNU $PACKAGE) $VERSION Copyright (C) $RELEASE_YEAR Free Software Foundation, Inc. License GPLv2+: GNU GPL version 2 or later <https://gnu.org/licenses/gpl-2.0.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Written by Tom Tromey <tromey\@redhat.com> and Alexandre Duret-Lutz <adl\@gnu.org>. EOF exit 0; } # Parse command line. sub parse_arguments () { my $print_and_exit = 0; my $diff_command; my %cli_options = ( 'help' => sub { usage(0); }, 'version' => \&version, 'system-acdir=s' => sub { shift; @system_includes = @_; }, 'automake-acdir=s' => sub { shift; @automake_includes = @_; }, 'diff:s' => \$diff_command, 'dry-run' => \$dry_run, 'force' => \$force_output, 'I=s' => \@user_includes, 'install' => \$install, 'output=s' => \$output_file, 'print-ac-dir' => \$print_and_exit, 'verbose' => sub { setup_channel 'verb', silent => 0; }, 'W|warnings=s' => \&parse_warnings, ); use Automake::Getopt (); Automake::Getopt::parse_options %cli_options; if (@ARGV > 0) { fatal ("non-option arguments are not accepted: '$ARGV[0]'.\n" . "Try '$0 --help' for more information."); } if ($print_and_exit) { print "@system_includes\n"; exit 0; } if (defined $diff_command) { $diff_command = 'diff -u' if $diff_command eq ''; @diff_command = split (' ', $diff_command); $install = 1; $dry_run = 1; } # Finally, adds any directory listed in the 'dirlist' file. if (@system_includes && open (DIRLIST, "$system_includes[0]/dirlist")) { while (<DIRLIST>) { # Ignore '#' lines. next if /^#/; # strip off newlines and end-of-line comments s/\s*\#.*$//; chomp; foreach my $dir (glob) { push (@system_includes, $dir) if -d $dir; } } close (DIRLIST); } } # Add any directory listed in the 'ACLOCAL_PATH' environment variable # to the list of system include directories. sub parse_ACLOCAL_PATH () { return if not defined $ENV{"ACLOCAL_PATH"}; # Directories in ACLOCAL_PATH should take precedence over system # directories, so we use unshift. However, directories that # come first in ACLOCAL_PATH take precedence over directories # coming later, which is why the result of split is reversed. foreach my $dir (reverse split /:/, $ENV{"ACLOCAL_PATH"}) { unshift (@system_includes, $dir) if $dir ne '' && -d $dir; } } ################################################################ # Don't refer to installation directories from the build environment if (exists $ENV{"AUTOMAKE_UNINSTALLED"}) { @automake_includes = (); @system_includes = (); } @automake_includes = ($ENV{"ACLOCAL_AUTOMAKE_DIR"}) if (exists $ENV{"ACLOCAL_AUTOMAKE_DIR"}); parse_WARNINGS; # Parse the WARNINGS environment variable. parse_arguments; parse_ACLOCAL_PATH; $configure_ac = require_configure_ac; # We may have to rerun aclocal if some file have been installed, but # it should not happen more than once. The reason we must run again # is that once the file has been moved from /usr/share/aclocal/ to the # local m4/ directory it appears at a new place in the search path, # hence it should be output at a different position in aclocal.m4. If # we did not rerun aclocal, the next run of aclocal would produce a # different aclocal.m4. my $loop = 0; my $rerun_due_to_macrodir = 0; while (1) { ++$loop; prog_error "too many loops" if $loop > 2 + $rerun_due_to_macrodir; reset_maps; scan_m4_files; scan_configure; last if $exit_code; my %macro_traced = trace_used_macros; if (!$rerun_due_to_macrodir && @ac_config_macro_dirs) { # The directory specified in calls to the AC_CONFIG_MACRO_DIRS # m4 macro (if any) must go after the user includes specified # explicitly with the '-I' option. push @user_includes, @ac_config_macro_dirs; # We might have to scan some new directory of .m4 files. $rerun_due_to_macrodir++; next; } if ($install && !@user_includes) { fatal "installation of third-party macros impossible without " . "-I options nor AC_CONFIG_MACRO_DIR{,S} m4 macro(s)"; } last if write_aclocal ($output_file, keys %macro_traced); last if $dry_run; } check_acinclude; exit $exit_code;