Linux server1.hosting4iran.com 4.18.0-553.89.1.el8_10.x86_64 #1 SMP Mon Dec 8 03:53:08 EST 2025 x86_64
LiteSpeed
Server IP : 185.208.174.156 & Your IP : 216.73.216.218
Domains : 282 Domain
User : satitravel
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
usr /
bin /
Delete
Unzip
Name
Size
Permission
Date
Action
2to3
106
B
-rwxr-xr-x
2026-02-05 20:05
2to3-3.6
106
B
-rwxr-xr-x
2026-02-05 20:05
GET
15.84
KB
-rwxr-xr-x
2022-04-22 20:13
HEAD
15.84
KB
-rwxr-xr-x
2022-04-22 20:13
Mail
408.89
KB
-rwxr-xr-x
2019-10-13 00:19
POST
15.84
KB
-rwxr-xr-x
2022-04-22 20:13
[
53.58
KB
-rwxr-xr-x
2025-12-18 13:54
ab
72.63
KB
-rwxr-xr-x
2026-01-21 22:59
aclocal
35.62
KB
-rwxr-xr-x
2023-10-14 20:00
aclocal-1.16
35.62
KB
-rwxr-xr-x
2023-10-14 20:00
acyclic
12.41
KB
-rwxr-xr-x
2024-04-06 12:47
addr2line
33.42
KB
-rwxr-xr-x
2025-12-18 14:21
agentxtrap
24.54
KB
-rwxr-xr-x
2026-01-19 08:19
alias
29
B
-rwxr-xr-x
2025-08-26 08:48
animate
11.84
KB
-rwxr-xr-x
2025-04-01 13:15
appstream-compose
33.21
KB
-rwxr-xr-x
2019-11-13 14:06
appstream-util
114.34
KB
-rwxr-xr-x
2019-11-13 14:06
apropos
54.04
KB
-rwxr-xr-x
2021-10-08 13:04
ar
61.96
KB
-rwxr-xr-x
2025-12-18 14:21
arch
37.34
KB
-rwxr-xr-x
2025-12-18 13:54
arpaname
11.82
KB
-rwxr-xr-x
2025-11-06 07:45
as
889.91
KB
-rwxr-xr-x
2025-12-18 14:21
aspell
159.5
KB
-rwxr-xr-x
2022-04-18 15:10
at
57.33
KB
-rwxr-xr-x
2022-10-10 10:23
atq
57.33
KB
-rwxr-xr-x
2022-10-10 10:23
atrm
57.33
KB
-rwxr-xr-x
2022-10-10 10:23
audit2allow
14.85
KB
-rwxr-xr-x
2024-07-02 21:08
audit2why
14.85
KB
-rwxr-xr-x
2024-07-02 21:08
aulast
20.58
KB
-rwxr-xr-x
2025-07-15 09:41
aulastlog
12.44
KB
-rwxr-xr-x
2025-07-15 09:41
ausyscall
12.27
KB
-rwxr-xr-x
2025-07-15 09:41
authselect
41.13
KB
-rwxr-xr-x
2023-10-14 18:06
autoconf
14.42
KB
-rwxr-xr-x
2024-08-13 19:30
autoheader
8.33
KB
-rwxr-xr-x
2024-08-13 19:30
autom4te
31.43
KB
-rwxr-xr-x
2024-08-13 19:30
automake
251.9
KB
-rwxr-xr-x
2023-10-14 20:00
automake-1.16
251.9
KB
-rwxr-xr-x
2023-10-14 20:00
autopoint
25.95
KB
-rwxr-xr-x
2019-11-18 17:16
autoreconf
20.57
KB
-rwxr-xr-x
2024-08-13 19:30
autoscan
16.72
KB
-rwxr-xr-x
2024-08-13 19:30
autoupdate
33.08
KB
-rwxr-xr-x
2024-08-13 19:30
auvirt
32.73
KB
-rwxr-xr-x
2025-07-15 09:41
awk
669.77
KB
-rwxr-xr-x
2022-04-18 15:56
b2sum
57.69
KB
-rwxr-xr-x
2025-12-18 13:54
base32
41.47
KB
-rwxr-xr-x
2025-12-18 13:54
base64
41.49
KB
-rwxr-xr-x
2025-12-18 13:54
basename
37.41
KB
-rwxr-xr-x
2025-12-18 13:54
bash
1.1
MB
-rwxr-xr-x
2025-08-26 08:48
bashbug
7.18
KB
-rwxr-xr-x
2025-08-26 08:48
bashbug-64
7.18
KB
-rwxr-xr-x
2025-08-26 08:48
batch
137
B
-rwxr-xr-x
2022-10-10 10:23
bc
94.98
KB
-rwxr-xr-x
2019-10-12 12:34
bcomps
20.62
KB
-rwxr-xr-x
2024-04-06 12:47
bdftopcf
45.4
KB
-rwxr-xr-x
2021-10-09 23:42
bg
26
B
-rwxr-xr-x
2025-08-26 08:48
bind9-config
3.33
KB
-rwxr-xr-x
2025-11-06 07:45
bison
437.72
KB
-rwxr-xr-x
2019-10-12 12:28
bond2team
22.74
KB
-rwxr-xr-x
2020-07-26 09:58
bootctl
45.15
KB
-rwxr-xr-x
2026-01-26 09:30
brotli
739.2
KB
-rwxr-xr-x
2026-02-10 14:44
bunzip2
36.86
KB
-rwxr-xr-x
2025-01-28 01:38
busctl
77.27
KB
-rwxr-xr-x
2026-01-26 09:30
bwrap
69.63
KB
-rwxr-xr-x
2024-09-05 14:21
bzcat
36.86
KB
-rwxr-xr-x
2025-01-28 01:38
bzcmp
2.08
KB
-rwxr-xr-x
2025-01-28 01:38
bzdiff
2.08
KB
-rwxr-xr-x
2025-01-28 01:38
bzegrep
1.64
KB
-rwxr-xr-x
2025-01-28 01:38
bzfgrep
1.64
KB
-rwxr-xr-x
2025-01-28 01:38
bzgrep
1.64
KB
-rwxr-xr-x
2025-01-28 01:38
bzip2
36.86
KB
-rwxr-xr-x
2025-01-28 01:38
bzip2recover
16.44
KB
-rwxr-xr-x
2025-01-28 01:38
bzless
1.23
KB
-rwxr-xr-x
2025-01-28 01:38
bzmore
1.23
KB
-rwxr-xr-x
2025-01-28 01:38
c++
1.21
MB
-rwxr-xr-x
2025-08-26 09:47
c++filt
28.89
KB
-rwxr-xr-x
2025-12-18 14:21
c89
224
B
-rwxr-xr-x
2025-08-26 09:45
c99
215
B
-rwxr-xr-x
2025-08-26 09:45
ca-legacy
1.61
KB
-rwxr-xr-x
2025-10-30 14:25
cairo-sphinx
69.71
KB
-rwxr-xr-x
2022-04-18 16:06
cal
65.98
KB
-rwxr-xr-x
2026-02-04 20:18
captoinfo
85.31
KB
-rwxr-xr-x
2023-10-14 18:54
cat
37.46
KB
-rwxr-xr-x
2025-12-18 13:54
catchsegv
3.21
KB
-rwxr-xr-x
2025-12-08 09:36
catman
41.45
KB
-rwxr-xr-x
2021-10-08 13:04
cc
1.21
MB
-rwxr-xr-x
2025-08-26 09:47
ccomps
24.72
KB
-rwxr-xr-x
2024-04-06 12:47
cd
26
B
-rwxr-xr-x
2025-08-26 08:48
centrino-decode
11.27
KB
-rwxr-xr-x
2026-02-17 10:43
certutil
199.15
KB
-rwxr-xr-x
2025-09-09 13:57
chacl
16.36
KB
-rwxr-xr-x
2024-04-06 12:15
chage
77.68
KB
-rwsr-xr-x
2025-12-18 13:51
chardetect
400
B
-rwxr-xr-x
2019-10-12 19:18
chattr
16.41
KB
-rwxr-xr-x
2025-10-07 07:08
chcat
13.57
KB
-rwxr-xr-x
2024-07-02 21:08
chcon
70.34
KB
-rwxr-xr-x
2025-12-18 13:54
checkmodule
427.01
KB
-rwxr-xr-x
2019-12-10 17:48
checkpolicy
488.64
KB
-rwxr-xr-x
2019-12-10 17:48
chfn
32.9
KB
-rws--x--x
2026-02-04 20:18
chgrp
66.27
KB
-rwxr-xr-x
2025-12-18 13:54
chmem
45.47
KB
-rwxr-xr-x
2026-02-04 20:18
chmod
62.2
KB
-rwxr-xr-x
2025-12-18 13:54
chown
70.29
KB
-rwxr-xr-x
2025-12-18 13:54
chronyc
127.6
KB
-rwxr-xr-x
2024-11-05 07:47
chrt
37.19
KB
-rwxr-xr-x
2026-02-04 20:18
chsh
24.72
KB
-rwx--x--x
2026-02-04 20:18
chvt
12.53
KB
-rwxr-xr-x
2023-10-14 21:01
cifsiostat
41.35
KB
-rwxr-xr-x
2024-07-03 09:57
circo
12.26
KB
-rwxr-xr-x
2024-04-06 12:47
cksum
37.39
KB
-rwxr-xr-x
2025-12-18 13:54
cl-linksafe-reconfigure
5.15
KB
-rwxr-xr-x
2020-02-19 08:09
clear
12.54
KB
-rwxr-xr-x
2023-10-14 18:54
cloud-id
402
B
-rwxr-xr-x
2026-01-23 08:56
cloud-init
406
B
-rwxr-xr-x
2026-01-23 08:56
cloud-init-per
2.06
KB
-rwxr-xr-x
2026-01-23 08:56
cluster
518.33
KB
-rwxr-xr-x
2024-04-06 12:47
cmp
103.76
KB
-rwxr-xr-x
2020-05-04 15:15
cmsutil
122.48
KB
-rwxr-xr-x
2025-09-09 13:57
cockpit-bridge
500.37
KB
-rwxr-xr-x
2026-01-23 15:30
col
29.01
KB
-rwxr-xr-x
2026-02-04 20:18
colcrt
16.48
KB
-rwxr-xr-x
2026-02-04 20:18
colrm
24.88
KB
-rwxr-xr-x
2026-02-04 20:18
column
49.47
KB
-rwxr-xr-x
2026-02-04 20:18
comm
41.56
KB
-rwxr-xr-x
2025-12-18 13:54
command
31
B
-rwxr-xr-x
2025-08-26 08:48
compare
11.85
KB
-rwxr-xr-x
2025-04-01 13:15
compile_et
1.31
KB
-rwxr-xr-x
2025-10-07 07:07
composite
11.84
KB
-rwxr-xr-x
2025-04-01 13:15
config_data
6.97
KB
-rwxr-xr-x
2019-10-13 10:59
conjure
11.84
KB
-rwxr-xr-x
2025-04-01 13:15
convert
11.84
KB
-rwxr-xr-x
2025-04-01 13:15
coredumpctl
44.91
KB
-rwxr-xr-x
2026-01-26 09:30
corelist
14.64
KB
-rwxr-xr-x
2019-10-13 11:00
cp
148.02
KB
-rwxr-xr-x
2025-12-18 13:54
cpan
8.17
KB
-rwxr-xr-x
2025-06-03 14:32
cpan-mirrors
4.19
KB
-rwxr-xr-x
2025-06-03 14:32
cpapi1
3.36
MB
-rwxr-xr-x
2026-02-24 01:01
cpapi2
3.36
MB
-rwxr-xr-x
2026-02-24 01:01
cpapi3
3.36
MB
-rwxr-xr-x
2026-02-24 01:01
cpio
159.8
KB
-rwxr-xr-x
2022-04-18 17:19
cpp
1.21
MB
-rwxr-xr-x
2025-08-26 09:47
cpupower
66.91
KB
-rwxr-xr-x
2026-02-17 10:36
crb
2.58
KB
-rwxr--r--
2025-04-22 17:22
crc32
1.02
KB
-rwxr-xr-x
2019-11-12 18:41
crlutil
134.95
KB
-rwxr-xr-x
2025-09-09 13:57
cronnext
49.8
KB
-rwxr-xr-x
2024-04-06 11:40
crontab
61.67
KB
-rwsr-xr-x
2024-04-06 11:40
csplit
53.68
KB
-rwxr-xr-x
2025-12-18 13:54
csslint-0.6
24.56
KB
-rwxr-xr-x
2020-09-22 21:07
curl
230.08
KB
-rwxr-xr-x
2025-12-18 14:22
cut
49.52
KB
-rwxr-xr-x
2025-12-18 13:54
cvtsudoers
284.21
KB
-rwxr-xr-x
2025-12-18 14:01
cxpm
29.11
KB
-rwxr-xr-x
2024-03-30 13:53
date
105.95
KB
-rwxr-xr-x
2025-12-18 13:54
db_archive
12.45
KB
-rwxr-xr-x
2021-09-21 16:38
db_checkpoint
16.48
KB
-rwxr-xr-x
2021-09-21 16:38
db_deadlock
16.48
KB
-rwxr-xr-x
2021-09-21 16:38
db_dump
16.51
KB
-rwxr-xr-x
2021-09-21 16:38
db_dump185
69.55
KB
-rwxr-xr-x
2021-09-21 16:38
db_hotbackup
20.49
KB
-rwxr-xr-x
2021-09-21 16:38
db_load
28.61
KB
-rwxr-xr-x
2021-09-21 16:38
db_log_verify
16.52
KB
-rwxr-xr-x
2021-09-21 16:38
db_printlog
33.4
KB
-rwxr-xr-x
2021-09-21 16:38
db_recover
16.51
KB
-rwxr-xr-x
2021-09-21 16:38
db_replicate
16.49
KB
-rwxr-xr-x
2021-09-21 16:38
db_stat
16.48
KB
-rwxr-xr-x
2021-09-21 16:38
db_tuner
24.55
KB
-rwxr-xr-x
2021-09-21 16:38
db_upgrade
12.45
KB
-rwxr-xr-x
2021-09-21 16:38
db_verify
16.46
KB
-rwxr-xr-x
2021-09-21 16:38
dbus-binding-tool
110.43
KB
-rwxr-xr-x
2019-10-25 12:53
dbus-cleanup-sockets
16.39
KB
-rwxr-xr-x
2025-08-26 11:23
dbus-daemon
239.72
KB
-rwxr-xr-x
2025-08-26 11:23
dbus-monitor
28.58
KB
-rwxr-xr-x
2025-08-26 11:23
dbus-run-session
15.88
KB
-rwxr-xr-x
2025-08-26 11:23
dbus-send
28.54
KB
-rwxr-xr-x
2025-08-26 11:23
dbus-test-tool
24.6
KB
-rwxr-xr-x
2025-08-26 11:23
dbus-update-activation-environment
16.41
KB
-rwxr-xr-x
2025-08-26 11:23
dbus-uuidgen
12.38
KB
-rwxr-xr-x
2025-08-26 11:23
dbxtool
28.73
KB
-rwxr-xr-x
2024-03-07 11:39
dc
53.02
KB
-rwxr-xr-x
2019-10-12 12:34
dd
77.97
KB
-rwxr-xr-x
2025-12-18 13:54
deallocvt
12.54
KB
-rwxr-xr-x
2023-10-14 21:01
debuginfo-install
3.62
KB
-rwxr-xr-x
2024-04-08 10:02
debuginfod-find
16.47
KB
-rwxr-xr-x
2025-08-25 12:56
delv
42.46
KB
-rwxr-xr-x
2025-11-06 07:45
df
91.09
KB
-rwxr-xr-x
2025-12-18 13:54
dfu-tool
121.79
KB
-rwxr-xr-x
2024-03-07 11:39
diff
268.01
KB
-rwxr-xr-x
2020-05-04 15:15
diff3
128.6
KB
-rwxr-xr-x
2020-05-04 15:15
diffimg
12.27
KB
-rwxr-xr-x
2024-04-06 12:47
dig
162.18
KB
-rwxr-xr-x
2025-11-06 07:45
dijkstra
16.71
KB
-rwxr-xr-x
2024-04-06 12:47
dir
139.9
KB
-rwxr-xr-x
2025-12-18 13:54
dircolors
49.55
KB
-rwxr-xr-x
2025-12-18 13:54
dirmngr
579.89
KB
-rwxr-xr-x
2026-01-16 01:48
dirmngr-client
120.12
KB
-rwxr-xr-x
2026-01-16 01:48
dirname
33.36
KB
-rwxr-xr-x
2025-12-18 13:54
display
11.84
KB
-rwxr-xr-x
2025-04-01 13:15
dltest
11.87
KB
-rwxr-xr-x
2025-12-18 13:02
dmesg
77.88
KB
-rwxr-xr-x
2026-02-04 20:18
dnf
2.05
KB
-rwxr-xr-x
2025-03-11 09:47
dnf-3
2.05
KB
-rwxr-xr-x
2025-03-11 09:47
dnsdomainname
21.16
KB
-rwxr-xr-x
2019-10-11 13:06
dnstap-read
20.43
KB
-rwxr-xr-x
2025-11-06 07:45
domainname
21.16
KB
-rwxr-xr-x
2019-10-11 13:06
dot
12.26
KB
-rwxr-xr-x
2024-04-06 12:47
dot2gxl
41.3
KB
-rwxr-xr-x
2024-04-06 12:47
dotty
2.04
KB
-rwxr-xr-x
2024-04-06 12:47
doveadm
946.91
KB
-rwxr-xr-x
2026-02-03 19:40
doveconf
383.93
KB
-rwxr-xr-x
2026-02-03 19:40
dovecot-sysreport
5.81
KB
-rwxr-xr-x
2026-02-03 19:36
dpkg
316.17
KB
-rwxr-xr-x
2021-12-15 12:46
dpkg-deb
165.5
KB
-rwxr-xr-x
2021-12-15 12:46
dpkg-divert
157.75
KB
-rwxr-xr-x
2021-12-15 12:46
dpkg-maintscript-helper
20.67
KB
-rwxr-xr-x
2021-12-15 12:46
dpkg-query
165.84
KB
-rwxr-xr-x
2021-12-15 12:46
dpkg-realpath
4.05
KB
-rwxr-xr-x
2021-12-15 12:46
dpkg-split
132.39
KB
-rwxr-xr-x
2021-12-15 12:46
dpkg-statoverride
66.41
KB
-rwxr-xr-x
2021-12-15 12:46
dpkg-trigger
87.66
KB
-rwxr-xr-x
2021-12-15 12:46
dracut
67.56
KB
-rwxr-xr-x
2025-12-17 18:54
dtrace
17.39
KB
-rwxr-xr-x
2023-10-14 13:06
du
107
KB
-rwxr-xr-x
2025-12-18 13:54
dumpkeys
169.88
KB
-rwxr-xr-x
2023-10-14 21:01
dumpsexp
16.43
KB
-rwxr-xr-x
2022-06-28 11:54
dwp
2.13
MB
-rwxr-xr-x
2025-12-18 14:21
dwz
167.64
KB
-rwxr-xr-x
2021-10-09 03:26
ea-php72
5.49
MB
-rwxr-xr-x
2026-01-21 23:47
ea-php72-pear
383
B
-rwxr-xr-x
2026-02-03 15:54
ea-php72-pecl
299
B
-rwxr-xr-x
2026-02-03 15:54
ea-php73
5.32
MB
-rwxr-xr-x
2026-01-21 23:50
ea-php73-pear
383
B
-rwxr-xr-x
2026-02-03 15:54
ea-php73-pecl
299
B
-rwxr-xr-x
2026-02-03 15:54
ea-php74
6.09
MB
-rwxr-xr-x
2026-02-03 16:56
ea-php74-pear
383
B
-rwxr-xr-x
2026-02-03 16:58
ea-php74-pecl
299
B
-rwxr-xr-x
2026-02-03 16:58
ea-php80
7.61
MB
-rwxr-xr-x
2026-02-03 16:27
ea-php80-pear
383
B
-rwxr-xr-x
2026-02-03 16:30
ea-php80-pecl
299
B
-rwxr-xr-x
2026-02-03 16:30
ea-php81
7.72
MB
-rwxr-xr-x
2026-02-03 20:47
ea-php81-pear
383
B
-rwxr-xr-x
2026-02-03 20:49
ea-php81-pecl
299
B
-rwxr-xr-x
2026-02-03 20:49
ea-php82
7.77
MB
-rwxr-xr-x
2026-02-03 20:50
ea-php82-pear
383
B
-rwxr-xr-x
2026-02-03 20:52
ea-php82-pecl
299
B
-rwxr-xr-x
2026-02-03 20:52
ea-php83
7.8
MB
-rwxr-xr-x
2026-02-03 16:43
ea-php83-pear
383
B
-rwxr-xr-x
2026-02-03 16:45
ea-php83-pecl
299
B
-rwxr-xr-x
2026-02-03 16:45
ea-php84
7.85
MB
-rwxr-xr-x
2026-02-18 01:25
ea-php84-pear
383
B
-rwxr-xr-x
2026-02-18 02:43
ea-php84-pecl
299
B
-rwxr-xr-x
2026-02-18 02:43
ea-php85
13.34
MB
-rwxr-xr-x
2026-02-17 21:22
ea-php85-pear
383
B
-rwxr-xr-x
2026-02-18 02:41
ea-php85-pecl
299
B
-rwxr-xr-x
2026-02-18 02:41
ea-wappspector
100
B
-rwxr-xr-x
2025-10-29 19:57
easy_install-2
234
B
-rwxr-xr-x
2024-04-10 05:04
easy_install-2.7
234
B
-rwxr-xr-x
2024-04-10 05:04
easy_install-3
246
B
-rwxr-xr-x
2025-07-15 09:13
easy_install-3.6
246
B
-rwxr-xr-x
2025-07-15 09:13
echo
37.35
KB
-rwxr-xr-x
2025-12-18 13:54
edgepaint
420.79
KB
-rwxr-xr-x
2024-04-06 12:47
egrep
28
B
-rwxr-xr-x
2019-10-11 15:15
eject
57.78
KB
-rwxr-xr-x
2026-02-04 20:18
elfedit
33.28
KB
-rwxr-xr-x
2025-12-18 14:21
enc2xs
40.97
KB
-rwxr-xr-x
2019-10-13 08:46
encguess
2.91
KB
-rwxr-xr-x
2019-10-13 08:46
env
41.35
KB
-rwxr-xr-x
2025-12-18 13:54
envml
4.1
KB
-rwxr-xr-x
2023-10-14 18:46
envsubst
48.99
KB
-rwxr-xr-x
2019-11-18 17:17
eps2eps
639
B
-rwxr-xr-x
2025-06-03 02:48
eqn
232.16
KB
-rwxr-xr-x
2019-10-13 14:29
event_rpcgen.py
54.26
KB
-rwxr-xr-x
2019-10-12 00:29
evmctl
62.54
KB
-rwxr-xr-x
2021-04-08 15:44
ex
1.13
MB
-rwxr-xr-x
2025-10-12 00:23
expand
41.59
KB
-rwxr-xr-x
2025-12-18 13:54
expr
49.57
KB
-rwxr-xr-x
2025-12-18 13:54
factor
85.97
KB
-rwxr-xr-x
2025-12-18 13:54
fallocate
28.96
KB
-rwxr-xr-x
2026-02-04 20:18
false
33.32
KB
-rwxr-xr-x
2025-12-18 13:54
fc
26
B
-rwxr-xr-x
2025-08-26 08:48
fc-cache
132
B
-rwxr-xr-x
2021-08-16 11:04
fc-cache-64
20.35
KB
-rwxr-xr-x
2021-10-09 09:02
fc-cat
16.35
KB
-rwxr-xr-x
2021-10-09 09:02
fc-conflist
12.25
KB
-rwxr-xr-x
2021-10-09 09:02
fc-list
12.25
KB
-rwxr-xr-x
2021-10-09 09:02
fc-match
16.26
KB
-rwxr-xr-x
2021-10-09 09:02
fc-pattern
12.26
KB
-rwxr-xr-x
2021-10-09 09:02
fc-query
12.24
KB
-rwxr-xr-x
2021-10-09 09:02
fc-scan
12.26
KB
-rwxr-xr-x
2021-10-09 09:02
fc-validate
16.26
KB
-rwxr-xr-x
2021-10-09 09:02
fdp
12.26
KB
-rwxr-xr-x
2024-04-06 12:47
fg
26
B
-rwxr-xr-x
2025-08-26 08:48
fgconsole
12.55
KB
-rwxr-xr-x
2023-10-14 21:01
fgrep
28
B
-rwxr-xr-x
2019-10-11 15:15
filan
94.72
KB
-rwxr-xr-x
2025-07-15 09:33
file
24.69
KB
-rwxr-xr-x
2025-10-07 06:30
fincore
33.04
KB
-rwxr-xr-x
2026-02-04 20:18
find
223.27
KB
-rwxr-xr-x
2025-12-18 14:57
find-repos-of-install
3.62
KB
-rwxr-xr-x
2024-04-08 10:02
findmnt
70.61
KB
-rwxr-xr-x
2026-02-04 20:18
fips-finish-install
1.29
KB
-rwxr-xr-x
2023-08-01 15:18
fips-mode-setup
3.91
KB
-rwxr-xr-x
2023-08-01 15:18
flex
428.45
KB
-rwxr-xr-x
2019-10-12 12:33
flex++
428.45
KB
-rwxr-xr-x
2019-10-12 12:33
flock
33.2
KB
-rwxr-xr-x
2026-02-04 20:18
fmt
45.49
KB
-rwxr-xr-x
2025-12-18 13:54
fold
41.41
KB
-rwxr-xr-x
2025-12-18 13:54
fonttosfnt
41.18
KB
-rwxr-xr-x
2021-10-09 23:42
free
20.79
KB
-rwxr-xr-x
2023-10-14 20:31
freetype-config
4.31
KB
-rwxr-xr-x
2025-03-31 19:37
fribidi
21.14
KB
-rwxr-xr-x
2022-10-08 11:16
ftp
101.2
KB
-rwxr-xr-x
2019-10-12 12:59
funzip
36.63
KB
-rwxr-xr-x
2025-06-03 02:10
fwupdagent
226.92
KB
-rwxr-xr-x
2024-03-07 11:39
fwupdate
101.66
KB
-rwxr-xr-x
2024-03-07 11:39
fwupdmgr
226.92
KB
-rwxr-xr-x
2024-03-07 11:39
fwupdtool
478.34
KB
-rwxr-xr-x
2024-03-07 11:39
g++
1.21
MB
-rwxr-xr-x
2025-08-26 09:47
g13
211.98
KB
-rwxr-xr-x
2026-01-16 01:48
gapplication
20.45
KB
-rwxr-xr-x
2026-01-23 15:38
gawk
669.77
KB
-rwxr-xr-x
2022-04-18 15:56
gc
16.64
KB
-rwxr-xr-x
2024-04-06 12:47
gcc
1.21
MB
-rwxr-xr-x
2025-08-26 09:47
gcc-ar
36.66
KB
-rwxr-xr-x
2025-08-26 09:47
gcc-nm
36.66
KB
-rwxr-xr-x
2025-08-26 09:47
gcc-ranlib
36.66
KB
-rwxr-xr-x
2025-08-26 09:47
gcov
1.31
MB
-rwxr-xr-x
2025-08-26 09:47
gcov-dump
570.96
KB
-rwxr-xr-x
2025-08-26 09:47
gcov-tool
607.77
KB
-rwxr-xr-x
2025-08-26 09:47
gdbm_dump
21.05
KB
-rwxr-xr-x
2022-10-08 13:22
gdbm_load
25.31
KB
-rwxr-xr-x
2022-10-08 13:22
gdbmtool
111.57
KB
-rwxr-xr-x
2022-10-08 13:22
gdbus
48.71
KB
-rwxr-xr-x
2026-01-23 15:38
gdk-pixbuf-query-loaders-64
15.93
KB
-rwxr-xr-x
2025-08-07 07:30
gdk-pixbuf-thumbnailer
20.45
KB
-rwxr-xr-x
2025-08-07 07:30
gdlib-config
2.79
KB
-rwxr-xr-x
2020-08-29 08:49
gencat
24.84
KB
-rwxr-xr-x
2025-12-08 09:43
genl-ctrl-list
12.04
KB
-rwxr-xr-x
2022-10-08 11:39
geqn
232.16
KB
-rwxr-xr-x
2019-10-13 14:29
getconf
32.46
KB
-rwxr-xr-x
2025-12-08 09:43
getent
33.13
KB
-rwxr-xr-x
2025-12-08 09:43
getfacl
25.38
KB
-rwxr-xr-x
2024-04-06 12:15
getkeycodes
12.54
KB
-rwxr-xr-x
2023-10-14 21:01
getopt
20.53
KB
-rwxr-xr-x
2026-02-04 20:18
getopts
31
B
-rwxr-xr-x
2025-08-26 08:48
gettext
48.97
KB
-rwxr-xr-x
2019-11-18 17:17
gettext.sh
4.52
KB
-rwxr-xr-x
2019-11-18 17:16
gettextize
42.69
KB
-rwxr-xr-x
2019-11-18 17:16
ghostscript
12.35
KB
-rwxr-xr-x
2025-06-03 02:48
gio
85.22
KB
-rwxr-xr-x
2026-01-23 15:38
gio-querymodules-64
16.3
KB
-rwxr-xr-x
2026-01-23 15:38
git
26.38
MB
-rwxr-xr-x
2025-07-09 21:53
git-receive-pack
26.38
MB
-rwxr-xr-x
2025-07-09 21:53
git-shell
15.79
MB
-rwxr-xr-x
2025-07-09 21:53
git-upload-archive
26.38
MB
-rwxr-xr-x
2025-07-09 21:53
git-upload-pack
26.38
MB
-rwxr-xr-x
2025-07-09 21:53
glib-compile-schemas
48.85
KB
-rwxr-xr-x
2026-01-23 15:38
gmake
235.32
KB
-rwxr-xr-x
2022-04-18 16:38
gml2gv
41.23
KB
-rwxr-xr-x
2024-04-06 12:47
gneqn
908
B
-rwxr-xr-x
2019-10-13 14:29
gnroff
3.23
KB
-rwxr-xr-x
2019-10-13 14:29
gpasswd
82.17
KB
-rwsr-xr-x
2025-12-18 13:51
gpg
1.04
MB
-rwxr-xr-x
2026-01-16 01:48
gpg-agent
419.3
KB
-rwxr-xr-x
2026-01-16 01:48
gpg-connect-agent
165.3
KB
-rwxr-xr-x
2026-01-16 01:48
gpg-error
34.16
KB
-rwxr-xr-x
2019-10-12 12:20
gpg-error-config
2.26
KB
-rwxr-xr-x
2019-10-12 12:20
gpg-wks-server
206.71
KB
-rwxr-xr-x
2026-01-16 01:48
gpg-zip
3.44
KB
-rwxr-xr-x
2026-01-16 01:48
gpg2
1.04
MB
-rwxr-xr-x
2026-01-16 01:48
gpgconf
176.1
KB
-rwxr-xr-x
2026-01-16 01:48
gpgme-json
85.68
KB
-rwxr-xr-x
2024-04-06 12:29
gpgparsemail
28.74
KB
-rwxr-xr-x
2026-01-16 01:48
gpgrt-config
2.26
KB
-rwxr-xr-x
2019-10-12 12:20
gpgsm
514.46
KB
-rwxr-xr-x
2026-01-16 01:48
gpgsplit
87.02
KB
-rwxr-xr-x
2026-01-16 01:48
gpgv
451.51
KB
-rwxr-xr-x
2026-01-16 01:48
gpgv2
451.51
KB
-rwxr-xr-x
2026-01-16 01:48
gpic
293.84
KB
-rwxr-xr-x
2019-10-13 14:29
gpio-event-mon
14.96
KB
-rwxr-xr-x
2026-02-17 10:43
gpio-hammer
14.96
KB
-rwxr-xr-x
2026-02-17 10:43
gprof
103.35
KB
-rwxr-xr-x
2025-12-18 14:21
gr2fonttest
29.95
KB
-rwxr-xr-x
2019-11-06 07:45
graphml2gv
20.65
KB
-rwxr-xr-x
2024-04-06 12:47
grep
193.63
KB
-rwxr-xr-x
2019-10-11 15:15
groff
124.92
KB
-rwxr-xr-x
2019-10-13 14:29
grops
191.14
KB
-rwxr-xr-x
2019-10-13 14:29
grotty
141.9
KB
-rwxr-xr-x
2019-10-13 14:29
groups
37.39
KB
-rwxr-xr-x
2025-12-18 13:54
growpart
29.19
KB
-rwxr-xr-x
2023-03-31 18:48
grub2-editenv
448.09
KB
-rwxr-xr-x
2025-10-07 08:06
grub2-file
928.48
KB
-rwxr-xr-x
2025-10-07 08:06
grub2-fstest
1.15
MB
-rwxr-xr-x
2025-10-07 08:06
grub2-glue-efi
279.36
KB
-rwxr-xr-x
2025-10-07 08:06
grub2-kbdcomp
1.63
KB
-rwxr-xr-x
2025-10-07 08:06
grub2-menulst2cfg
262.64
KB
-rwxr-xr-x
2025-10-07 08:06
grub2-mkfont
312.13
KB
-rwxr-xr-x
2025-10-07 08:06
grub2-mkimage
431.35
KB
-rwxr-xr-x
2025-10-07 08:06
grub2-mklayout
285.46
KB
-rwxr-xr-x
2025-10-07 08:06
grub2-mknetdir
485.75
KB
-rwxr-xr-x
2025-10-07 08:06
grub2-mkpasswd-pbkdf2
291.84
KB
-rwxr-xr-x
2025-10-07 08:06
grub2-mkrelpath
279.22
KB
-rwxr-xr-x
2025-10-07 08:06
grub2-mkrescue
1.12
MB
-rwxr-xr-x
2025-10-07 08:06
grub2-mkstandalone
594.47
KB
-rwxr-xr-x
2025-10-07 08:06
grub2-render-label
937.1
KB
-rwxr-xr-x
2025-10-07 08:06
grub2-script-check
315.96
KB
-rwxr-xr-x
2025-10-07 08:06
grub2-syslinux2cfg
861.53
KB
-rwxr-xr-x
2025-10-07 08:06
gs
12.35
KB
-rwxr-xr-x
2025-06-03 02:48
gsettings
28.61
KB
-rwxr-xr-x
2026-01-23 15:38
gsnd
277
B
-rwxr-xr-x
2025-06-03 02:48
gsoelim
42.55
KB
-rwxr-xr-x
2019-10-13 14:29
gss-client
24.56
KB
-rwxr-xr-x
2025-06-03 02:06
gtar
448.99
KB
-rwxr-xr-x
2025-08-26 08:57
gtbl
154.61
KB
-rwxr-xr-x
2019-10-13 14:29
gtk-query-immodules-2.0-64
16.29
KB
-rwxr-xr-x
2021-04-06 13:52
gtk-update-icon-cache
33.03
KB
-rwxr-xr-x
2024-09-24 02:16
gtroff
805.02
KB
-rwxr-xr-x
2019-10-13 14:29
gunzip
2.29
KB
-rwxr-xr-x
2022-04-27 05:49
gv2gml
24.7
KB
-rwxr-xr-x
2024-04-06 12:47
gv2gxl
41.3
KB
-rwxr-xr-x
2024-04-06 12:47
gvcolor
46.9
KB
-rwxr-xr-x
2024-04-06 12:47
gvgen
24.8
KB
-rwxr-xr-x
2024-04-06 12:47
gvmap
526.31
KB
-rwxr-xr-x
2024-04-06 12:47
gvmap.sh
2.14
KB
-rwxr-xr-x
2024-04-06 12:47
gvpack
460.59
KB
-rwxr-xr-x
2024-04-06 12:47
gvpr
7.83
KB
-rwxr-xr-x
2024-04-06 12:47
gxl2dot
41.3
KB
-rwxr-xr-x
2024-04-06 12:47
gxl2gv
41.3
KB
-rwxr-xr-x
2024-04-06 12:47
gzexe
6.23
KB
-rwxr-xr-x
2022-04-27 05:49
gzip
94.67
KB
-rwxr-xr-x
2022-04-27 05:49
h2ph
28.69
KB
-rwxr-xr-x
2025-07-28 08:08
h2xs
59.44
KB
-rwxr-xr-x
2025-07-28 08:07
hash
28
B
-rwxr-xr-x
2025-08-26 08:48
head
45.5
KB
-rwxr-xr-x
2025-12-18 13:54
hexdump
57.51
KB
-rwxr-xr-x
2026-02-04 20:18
hmac256
16.86
KB
-rwxr-xr-x
2022-06-28 11:54
host
142.29
KB
-rwxr-xr-x
2025-11-06 07:45
hostid
33.34
KB
-rwxr-xr-x
2025-12-18 13:54
hostname
21.16
KB
-rwxr-xr-x
2019-10-11 13:06
hostnamectl
20.83
KB
-rwxr-xr-x
2026-01-26 09:30
htdbm
31.72
KB
-rwxr-xr-x
2026-01-21 22:59
htdigest
21.71
KB
-rwxr-xr-x
2026-01-21 22:59
html2text
406
B
-rwxr-xr-x
2020-03-17 12:40
htop
304.73
KB
-rwxr-xr-x
2022-07-21 02:42
htpasswd
31.55
KB
-rwxr-xr-x
2026-01-21 22:59
httxt2dbm
21.1
KB
-rwxr-xr-x
2026-01-21 22:59
hunspell
144.7
KB
-rwxr-xr-x
2019-10-13 08:33
i386
20.76
KB
-rwxr-xr-x
2026-02-04 20:18
ibd2sdi
6.42
MB
-rwxr-xr-x
2023-10-12 18:30
iceauth
41.87
KB
-rwxr-xr-x
2019-10-15 13:08
iconv
61.43
KB
-rwxr-xr-x
2025-12-08 09:43
id
45.44
KB
-rwxr-xr-x
2025-12-18 13:54
identify
11.84
KB
-rwxr-xr-x
2025-04-01 13:15
idiag-socket-details
12.09
KB
-rwxr-xr-x
2022-10-08 11:39
idle2
93
B
-rwxr-xr-x
2024-04-10 04:57
idle2.7
93
B
-rwxr-xr-x
2024-04-10 04:57
idn
39.41
KB
-rwxr-xr-x
2019-10-13 16:55
ifnames
4.03
KB
-rwxr-xr-x
2024-08-13 19:30
iio_event_monitor
22.98
KB
-rwxr-xr-x
2026-02-17 10:43
iio_generic_buffer
26.98
KB
-rwxr-xr-x
2026-02-17 10:43
import
11.84
KB
-rwxr-xr-x
2025-04-01 13:15
imunify-antivirus
1
KB
-rwxr-xr-x
2023-12-05 14:38
imunify-service
1020
B
-rwxr-xr-x
2023-12-05 14:38
imunify360-agent
1
KB
-rwxr-xr-x
2023-12-05 14:38
imunify360-command-wrapper
6.93
KB
-rwxr-xr-x
2023-11-27 07:15
info
249.89
KB
-rwxr-xr-x
2022-04-18 17:09
infocmp
61.05
KB
-rwxr-xr-x
2023-10-14 18:54
infotocap
85.31
KB
-rwxr-xr-x
2023-10-14 18:54
innochecksum
6.36
MB
-rwxr-xr-x
2023-10-12 18:30
install
156.16
KB
-rwxr-xr-x
2025-12-18 13:54
instmodsh
4.1
KB
-rwxr-xr-x
2019-10-13 08:55
intel-speed-select
93.02
KB
-rwxr-xr-x
2026-02-17 10:43
ionice
28.98
KB
-rwxr-xr-x
2026-02-04 20:18
iostat
57.69
KB
-rwxr-xr-x
2024-07-03 09:57
ipcalc
46.08
KB
-rwxr-xr-x
2020-05-31 19:39
ipcmk
29.14
KB
-rwxr-xr-x
2026-02-04 20:18
ipcrm
28.99
KB
-rwxr-xr-x
2026-02-04 20:18
ipcs
53.4
KB
-rwxr-xr-x
2026-02-04 20:18
isc-config.sh
3.33
KB
-rwxr-xr-x
2025-11-06 07:45
isosize
24.88
KB
-rwxr-xr-x
2026-02-04 20:18
ispell
988
B
-rwxr-xr-x
2022-04-18 15:10
isql
36.58
KB
-rwxr-xr-x
2025-12-18 13:02
iusql
28.66
KB
-rwxr-xr-x
2025-12-18 13:02
jcat-tool
40.91
KB
-rwxr-xr-x
2024-03-07 11:39
jobs
28
B
-rwxr-xr-x
2025-08-26 08:48
join
53.7
KB
-rwxr-xr-x
2025-12-18 13:54
journalctl
76.99
KB
-rwxr-xr-x
2026-01-26 09:30
json_pp
4.19
KB
-rwxr-xr-x
2019-10-14 12:12
json_reformat
16.55
KB
-rwxr-xr-x
2023-10-14 13:17
json_verify
12.27
KB
-rwxr-xr-x
2023-10-14 13:17
json_xs
6.84
KB
-rwxr-xr-x
2025-10-03 07:13
jsondiff
1.01
KB
-rwxr-xr-x
2019-12-11 14:10
jsondiff-3
1.01
KB
-rwxr-xr-x
2019-12-11 14:10
jsondiff-3.6
1.01
KB
-rwxr-xr-x
2019-12-11 14:10
jsonpatch
3.59
KB
-rwxr-xr-x
2019-12-11 14:10
jsonpatch-3
3.59
KB
-rwxr-xr-x
2019-12-11 14:10
jsonpatch-3.6
3.59
KB
-rwxr-xr-x
2019-12-11 14:10
jsonpointer
1.32
KB
-rwxr-xr-x
2019-11-24 18:36
jsonpointer-3
1.32
KB
-rwxr-xr-x
2019-11-24 18:36
jsonpointer-3.6
1.32
KB
-rwxr-xr-x
2019-11-24 18:36
jsonschema-3
409
B
-rwxr-xr-x
2019-11-24 18:37
kbd_mode
12.55
KB
-rwxr-xr-x
2023-10-14 21:01
kbdinfo
16.56
KB
-rwxr-xr-x
2023-10-14 21:01
kbdrate
16.45
KB
-rwxr-xr-x
2023-10-14 21:01
kbxutil
177.35
KB
-rwxr-xr-x
2026-01-16 01:48
kdumpctl
32.93
KB
-rwxr-xr-x
2026-02-10 17:24
kernel-install
4.41
KB
-rwxr-xr-x
2018-06-22 11:11
keyctl
36.82
KB
-rwxr-xr-x
2021-10-08 13:50
kill
37.28
KB
-rwxr-xr-x
2026-02-04 20:18
killall
29.77
KB
-rwxr-xr-x
2020-11-06 14:24
kmod
159.95
KB
-rwxr-xr-x
2024-04-08 09:18
krb5-config
6.98
KB
-rwxr-xr-x
2025-06-03 02:06
kvm_stat
60.85
KB
-rwxr-xr-x
2026-02-07 05:12
last
49.23
KB
-rwxr-xr-x
2026-02-04 20:18
lastb
49.23
KB
-rwxr-xr-x
2026-02-04 20:18
lastlog
20.63
KB
-rwxr-xr-x
2025-12-18 13:51
lchfn
20.35
KB
-rwxr-xr-x
2024-09-24 02:24
lchsh
16.35
KB
-rwxr-xr-x
2024-09-24 02:24
ld
1.71
MB
-rwxr-xr-x
2025-12-18 14:21
ld.bfd
1.71
MB
-rwxr-xr-x
2025-12-18 14:21
ld.gold
2.35
MB
-rwxr-xr-x
2025-12-18 14:21
ld.so
1.05
MB
-rwxr-xr-x
2025-12-08 09:43
ldd
5.31
KB
-rwxr-xr-x
2025-12-08 09:36
lefty
304.52
KB
-rwxr-xr-x
2024-04-06 12:47
less
173.76
KB
-rwxr-xr-x
2024-07-02 20:10
lessecho
12.4
KB
-rwxr-xr-x
2024-07-02 20:10
lesskey
21.99
KB
-rwxr-xr-x
2024-07-02 20:10
lesspipe.sh
3.07
KB
-rwxr-xr-x
2024-07-02 19:57
lex
428.45
KB
-rwxr-xr-x
2019-10-12 12:33
lexgrog
93.7
KB
-rwxr-xr-x
2021-10-08 13:04
libgcrypt-config
3.84
KB
-rwxr-xr-x
2022-06-28 11:54
libnetcfg
15.41
KB
-rwxr-xr-x
2025-07-28 08:08
libpng-config
2.33
KB
-rwxr-xr-x
2026-01-07 19:42
libpng16-config
2.33
KB
-rwxr-xr-x
2026-01-07 19:42
libtool
359.11
KB
-rwxr-xr-x
2019-10-11 14:55
libtoolize
126.17
KB
-rwxr-xr-x
2019-10-11 14:55
libwmf-fontmap
13.03
KB
-rwxr-xr-x
2019-10-14 15:47
link
33.34
KB
-rwxr-xr-x
2025-12-18 13:54
linux-boot-prober
5.85
KB
-rwxr-xr-x
2026-01-23 09:05
linux32
20.76
KB
-rwxr-xr-x
2026-02-04 20:18
linux64
20.76
KB
-rwxr-xr-x
2026-02-04 20:18
ln
70.5
KB
-rwxr-xr-x
2025-12-18 13:54
lneato
1.51
KB
-rwxr-xr-x
2024-04-06 12:47
loadkeys
210.53
KB
-rwxr-xr-x
2023-10-14 21:01
loadunimap
29.03
KB
-rwxr-xr-x
2023-10-14 21:01
locale
56.45
KB
-rwxr-xr-x
2025-12-08 09:43
localectl
28.86
KB
-rwxr-xr-x
2026-01-26 09:30
localedef
307.47
KB
-rwxr-xr-x
2025-12-08 09:43
logger
49.98
KB
-rwxr-xr-x
2026-02-04 20:18
login
40.96
KB
-rwxr-xr-x
2026-02-04 20:18
loginctl
57.27
KB
-rwxr-xr-x
2026-01-26 09:30
logname
33.34
KB
-rwxr-xr-x
2025-12-18 13:54
logresolve
21.45
KB
-rwxr-xr-x
2026-01-21 22:59
look
16.46
KB
-rwxr-xr-x
2026-02-04 20:18
ls
139.89
KB
-rwxr-xr-x
2025-12-18 13:54
lsattr
11.93
KB
-rwxr-xr-x
2025-10-07 07:08
lsblk
90.14
KB
-rwxr-xr-x
2026-02-04 20:18
lscpu
81.7
KB
-rwxr-xr-x
2026-02-04 20:18
lsgpio
15.06
KB
-rwxr-xr-x
2026-02-17 10:43
lsiio
22.98
KB
-rwxr-xr-x
2026-02-17 10:43
lsinitrd
8.68
KB
-rwxr-xr-x
2025-12-17 18:54
lsipc
73.74
KB
-rwxr-xr-x
2026-02-04 20:18
lslocks
37.53
KB
-rwxr-xr-x
2026-02-04 20:18
lslogins
65.62
KB
-rwxr-xr-x
2026-02-04 20:18
lsmem
45.34
KB
-rwxr-xr-x
2026-02-04 20:18
lsns
49.29
KB
-rwxr-xr-x
2026-02-04 20:18
lsof
175.4
KB
-rwxr-xr-x
2020-08-15 21:59
lsphp
937
B
-rwxr-xr-x
2025-04-01 16:34
lsscsi
86.01
KB
-rwxr-xr-x
2021-10-09 05:12
lua
20.45
KB
-rwxr-xr-x
2021-10-09 05:14
luac
152.77
KB
-rwxr-xr-x
2021-10-09 05:14
lwp-download
10.05
KB
-rwxr-xr-x
2022-04-22 20:13
lwp-dump
2.65
KB
-rwxr-xr-x
2022-04-22 20:13
lwp-mirror
2.36
KB
-rwxr-xr-x
2022-04-22 20:13
lwp-request
15.84
KB
-rwxr-xr-x
2022-04-22 20:13
lz4_decompress
6.25
MB
-rwxr-xr-x
2023-10-12 18:30
m4
185.56
KB
-rwxr-xr-x
2019-10-11 14:41
mail
408.89
KB
-rwxr-xr-x
2019-10-13 00:19
mailx
408.89
KB
-rwxr-xr-x
2019-10-13 00:19
make
235.32
KB
-rwxr-xr-x
2022-04-18 16:38
make-dummy-cert
610
B
-rwxr-xr-x
2026-02-23 07:51
makedb
24.84
KB
-rwxr-xr-x
2025-12-08 09:43
man
112.52
KB
-rwxr-xr-x
2021-10-08 13:04
mandb
134.52
KB
-rwxr-xr-x
2021-10-08 13:04
manpath
33.42
KB
-rwxr-xr-x
2021-10-08 13:04
mapscrn
24.84
KB
-rwxr-xr-x
2023-10-14 21:01
mcookie
33.27
KB
-rwxr-xr-x
2026-02-04 20:18
mcpp
9.02
KB
-rwxr-xr-x
2019-10-14 15:45
md5sum
45.54
KB
-rwxr-xr-x
2025-12-18 13:54
mdig
48.52
KB
-rwxr-xr-x
2025-11-06 07:45
memstrack
83.78
KB
-rwxr-xr-x
2023-10-15 04:56
mesg
16.36
KB
-rwxr-xr-x
2026-02-04 20:18
miniterm-3.6.py
33.09
KB
-rwxr-xr-x
2024-04-06 13:25
miniterm-3.py
33.09
KB
-rwxr-xr-x
2024-04-06 13:25
mkdir
82.7
KB
-rwxr-xr-x
2025-12-18 13:54
mkfifo
66.46
KB
-rwxr-xr-x
2025-12-18 13:54
mkfontdir
65
B
-rwxr-xr-x
2021-10-09 23:42
mkfontscale
41.59
KB
-rwxr-xr-x
2021-10-09 23:42
mkinitrd
6.43
KB
-rwxr-xr-x
2025-12-17 18:54
mknod
70.47
KB
-rwxr-xr-x
2025-12-18 13:54
mktemp
45.66
KB
-rwxr-xr-x
2025-12-18 13:54
mm2gv
90.53
KB
-rwxr-xr-x
2024-04-06 12:47
mmdblookup
16.74
KB
-rwxr-xr-x
2024-02-12 02:30
modulecmd
384.75
KB
-rwxr-xr-x
2023-10-14 18:46
modulemd-validator
24.96
KB
-rwxr-xr-x
2021-10-09 01:37
modutil
177.43
KB
-rwxr-xr-x
2025-09-09 13:57
mogrify
11.84
KB
-rwxr-xr-x
2025-04-01 13:15
mokutil
49.98
KB
-rwxr-xr-x
2022-10-08 14:02
montage
11.84
KB
-rwxr-xr-x
2025-04-01 13:15
more
44.94
KB
-rwxr-xr-x
2026-02-04 20:18
mount
49.15
KB
-rwsr-xr-x
2026-02-04 20:18
mountpoint
16.48
KB
-rwxr-xr-x
2026-02-04 20:18
mpicalc
20.38
KB
-rwxr-xr-x
2022-06-28 11:54
mpstat
53.51
KB
-rwxr-xr-x
2024-07-03 09:57
msgattrib
25.58
KB
-rwxr-xr-x
2019-11-18 17:17
msgcat
25.55
KB
-rwxr-xr-x
2019-11-18 17:17
msgcmp
26.12
KB
-rwxr-xr-x
2019-11-18 17:17
msgcomm
25.55
KB
-rwxr-xr-x
2019-11-18 17:17
msgconv
21.55
KB
-rwxr-xr-x
2019-11-18 17:17
msgen
21.55
KB
-rwxr-xr-x
2019-11-18 17:17
msgexec
21.55
KB
-rwxr-xr-x
2019-11-18 17:17
msgfilter
34.53
KB
-rwxr-xr-x
2019-11-18 17:17
msgfmt
90.3
KB
-rwxr-xr-x
2019-11-18 17:17
msgfmt2.7.py
6.33
KB
-rwxr-xr-x
2024-04-10 04:58
msgfmt2.py
6.33
KB
-rwxr-xr-x
2024-04-10 04:58
msggrep
43.6
KB
-rwxr-xr-x
2019-11-18 17:17
msginit
67.85
KB
-rwxr-xr-x
2019-11-18 17:17
msgmerge
71.48
KB
-rwxr-xr-x
2019-11-18 17:17
msgunfmt
35.8
KB
-rwxr-xr-x
2019-11-18 17:17
msguniq
25.56
KB
-rwxr-xr-x
2019-11-18 17:17
mv
143.95
KB
-rwxr-xr-x
2025-12-18 13:54
my_print_defaults
6.2
MB
-rwxr-xr-x
2023-10-12 18:30
myisam_ftdump
6.47
MB
-rwxr-xr-x
2023-10-12 18:30
myisamchk
6.58
MB
-rwxr-xr-x
2023-10-12 18:30
myisamlog
6.42
MB
-rwxr-xr-x
2023-10-12 18:30
myisampack
6.49
MB
-rwxr-xr-x
2023-10-12 18:30
mysql
7.36
MB
-rwxr-xr-x
2023-10-12 18:30
mysql_config
840
B
-rwxr-xr-x
2023-10-12 17:56
mysql_config-64
4.9
KB
-rwxr-xr-x
2023-10-12 17:56
mysql_config_editor
6.22
MB
-rwxr-xr-x
2023-10-12 18:30
mysql_migrate_keyring
7.15
MB
-rwxr-xr-x
2023-10-12 18:30
mysql_secure_installation
7.05
MB
-rwxr-xr-x
2023-10-12 18:30
mysql_ssl_rsa_setup
6.25
MB
-rwxr-xr-x
2023-10-12 18:30
mysql_tzinfo_to_sql
6.13
MB
-rwxr-xr-x
2023-10-12 18:30
mysql_upgrade
7.16
MB
-rwxr-xr-x
2023-10-12 18:30
mysqladmin
7.06
MB
-rwxr-xr-x
2023-10-12 18:30
mysqlbinlog
7.51
MB
-rwxr-xr-x
2023-10-12 18:30
mysqlcheck
7.07
MB
-rwxr-xr-x
2023-10-12 18:30
mysqld_pre_systemd
4.27
KB
-rwxr-xr-x
2023-10-12 17:56
mysqldump
7.14
MB
-rwxr-xr-x
2023-10-12 18:30
mysqldumpslow
7.49
KB
-rwxr-xr-x
2023-10-12 17:56
mysqlimport
7.06
MB
-rwxr-xr-x
2023-10-12 18:30
mysqlpump
7.65
MB
-rwxr-xr-x
2023-10-12 18:30
mysqlshow
7.05
MB
-rwxr-xr-x
2023-10-12 18:30
mysqlslap
7.07
MB
-rwxr-xr-x
2023-10-12 18:30
nail
408.89
KB
-rwxr-xr-x
2019-10-13 00:19
named-rrchecker
19.88
KB
-rwxr-xr-x
2025-11-06 07:45
namei
33.1
KB
-rwxr-xr-x
2026-02-04 20:18
nano
247.94
KB
-rwxr-xr-x
2024-09-24 02:16
nc
49.34
KB
-rwxr-xr-x
2026-01-03 22:58
ncurses6-config
5.87
KB
-rwxr-xr-x
2023-10-14 18:54
ncursesw6-config
5.88
KB
-rwxr-xr-x
2023-10-14 18:54
ndptool
24.45
KB
-rwxr-xr-x
2024-07-19 07:04
neato
12.26
KB
-rwxr-xr-x
2024-04-06 12:47
needs-restarting
3.62
KB
-rwxr-xr-x
2024-04-08 10:02
neqn
908
B
-rwxr-xr-x
2019-10-13 14:29
net-snmp-create-v3-user
3.15
KB
-rwxr-xr-x
2026-01-19 08:19
netcat
49.34
KB
-rwxr-xr-x
2026-01-03 22:58
netstat
158.68
KB
-rwxr-xr-x
2020-08-30 17:47
newgidmap
47.81
KB
-rwxr-xr-x
2025-12-18 13:51
newgrp
42.46
KB
-rwsr-xr-x
2025-12-18 13:51
newuidmap
47.77
KB
-rwxr-xr-x
2025-12-18 13:51
nf-ct-add
16.46
KB
-rwxr-xr-x
2022-10-08 11:39
nf-ct-events
12.38
KB
-rwxr-xr-x
2022-10-08 11:39
nf-ct-list
16.49
KB
-rwxr-xr-x
2022-10-08 11:39
nf-exp-add
16.87
KB
-rwxr-xr-x
2022-10-08 11:39
nf-exp-delete
16.66
KB
-rwxr-xr-x
2022-10-08 11:39
nf-exp-list
16.49
KB
-rwxr-xr-x
2022-10-08 11:39
nf-log
12.35
KB
-rwxr-xr-x
2022-10-08 11:39
nf-monitor
12.36
KB
-rwxr-xr-x
2022-10-08 11:39
nf-queue
16.35
KB
-rwxr-xr-x
2022-10-08 11:39
ngettext
48.97
KB
-rwxr-xr-x
2019-11-18 17:17
nice
37.33
KB
-rwxr-xr-x
2025-12-18 13:54
nisdomainname
21.16
KB
-rwxr-xr-x
2019-10-11 13:06
nl
45.55
KB
-rwxr-xr-x
2025-12-18 13:54
nl-addr-add
12.34
KB
-rwxr-xr-x
2022-10-08 11:39
nl-addr-delete
16.77
KB
-rwxr-xr-x
2022-10-08 11:39
nl-addr-list
16.88
KB
-rwxr-xr-x
2022-10-08 11:39
nl-class-add
16.73
KB
-rwxr-xr-x
2022-10-08 11:39
nl-class-delete
12.63
KB
-rwxr-xr-x
2022-10-08 11:39
nl-class-list
12.59
KB
-rwxr-xr-x
2022-10-08 11:39
nl-classid-lookup
12.47
KB
-rwxr-xr-x
2022-10-08 11:39
nl-cls-add
16.77
KB
-rwxr-xr-x
2022-10-08 11:39
nl-cls-delete
16.77
KB
-rwxr-xr-x
2022-10-08 11:39
nl-cls-list
12.73
KB
-rwxr-xr-x
2022-10-08 11:39
nl-fib-lookup
12.5
KB
-rwxr-xr-x
2022-10-08 11:39
nl-link-enslave
11.87
KB
-rwxr-xr-x
2022-10-08 11:39
nl-link-ifindex2name
11.87
KB
-rwxr-xr-x
2022-10-08 11:39
nl-link-list
12.23
KB
-rwxr-xr-x
2022-10-08 11:39
nl-link-name2ifindex
11.86
KB
-rwxr-xr-x
2022-10-08 11:39
nl-link-release
11.86
KB
-rwxr-xr-x
2022-10-08 11:39
nl-link-set
12.77
KB
-rwxr-xr-x
2022-10-08 11:39
nl-link-stats
12.59
KB
-rwxr-xr-x
2022-10-08 11:39
nl-list-caches
12.27
KB
-rwxr-xr-x
2022-10-08 11:39
nl-list-sockets
11.87
KB
-rwxr-xr-x
2022-10-08 11:39
nl-monitor
12.52
KB
-rwxr-xr-x
2022-10-08 11:39
nl-neigh-add
12.63
KB
-rwxr-xr-x
2022-10-08 11:39
nl-neigh-delete
12.66
KB
-rwxr-xr-x
2022-10-08 11:39
nl-neigh-list
12.19
KB
-rwxr-xr-x
2022-10-08 11:39
nl-neightbl-list
12.01
KB
-rwxr-xr-x
2022-10-08 11:39
nl-pktloc-lookup
12.56
KB
-rwxr-xr-x
2022-10-08 11:39
nl-qdisc-add
12.65
KB
-rwxr-xr-x
2022-10-08 11:39
nl-qdisc-delete
12.63
KB
-rwxr-xr-x
2022-10-08 11:39
nl-qdisc-list
16.74
KB
-rwxr-xr-x
2022-10-08 11:39
nl-route-add
16.39
KB
-rwxr-xr-x
2022-10-08 11:39
nl-route-delete
16.88
KB
-rwxr-xr-x
2022-10-08 11:39
nl-route-get
12.35
KB
-rwxr-xr-x
2022-10-08 11:39
nl-route-list
16.44
KB
-rwxr-xr-x
2022-10-08 11:39
nl-rule-list
12.05
KB
-rwxr-xr-x
2022-10-08 11:39
nl-tctree-list
12.66
KB
-rwxr-xr-x
2022-10-08 11:39
nl-util-addr
11.85
KB
-rwxr-xr-x
2022-10-08 11:39
nm
50.38
KB
-rwxr-xr-x
2025-12-18 14:21
nm-online
20.84
KB
-rwxr-xr-x
2025-08-26 09:47
nmcli
1009
KB
-rwxr-xr-x
2025-08-26 09:47
nmtui
784.12
KB
-rwxr-xr-x
2025-08-26 09:47
nmtui-connect
784.12
KB
-rwxr-xr-x
2025-08-26 09:47
nmtui-edit
784.12
KB
-rwxr-xr-x
2025-08-26 09:47
nmtui-hostname
784.12
KB
-rwxr-xr-x
2025-08-26 09:47
nohup
37.41
KB
-rwxr-xr-x
2025-12-18 13:54
nop
12.5
KB
-rwxr-xr-x
2024-04-06 12:47
nproc
37.41
KB
-rwxr-xr-x
2025-12-18 13:54
nroff
3.23
KB
-rwxr-xr-x
2019-10-13 14:29
nsenter
33.3
KB
-rwxr-xr-x
2026-02-04 20:18
nslookup
146.26
KB
-rwxr-xr-x
2025-11-06 07:45
nss-policy-check
16.3
KB
-rwxr-xr-x
2025-09-09 13:57
nsupdate
73.05
KB
-rwxr-xr-x
2025-11-06 07:45
numfmt
65.64
KB
-rwxr-xr-x
2025-12-18 13:54
objcopy
240.07
KB
-rwxr-xr-x
2025-12-18 14:21
objdump
419.76
KB
-rwxr-xr-x
2025-12-18 14:21
od
73.8
KB
-rwxr-xr-x
2025-12-18 13:54
odbc_config
11.84
KB
-rwxr-xr-x
2025-12-18 13:02
odbcinst
28.88
KB
-rwxr-xr-x
2025-12-18 13:02
open
20.97
KB
-rwxr-xr-x
2023-10-14 21:01
openssl
745.95
KB
-rwxr-xr-x
2026-02-23 07:52
openvt
20.97
KB
-rwxr-xr-x
2023-10-14 21:01
os-prober
5.78
KB
-rwxr-xr-x
2026-01-23 09:05
osage
12.26
KB
-rwxr-xr-x
2024-04-06 12:47
p11-kit
37.15
KB
-rwxr-xr-x
2024-04-06 14:16
package-cleanup
3.62
KB
-rwxr-xr-x
2024-04-08 10:02
page_owner_sort
11.34
KB
-rwxr-xr-x
2026-02-17 10:43
pango-list
11.88
KB
-rwxr-xr-x
2021-10-08 15:22
pango-view
57.44
KB
-rwxr-xr-x
2021-10-08 15:22
paperconf
13.07
KB
-rwxr-xr-x
2019-10-12 20:09
passwd
32.77
KB
-rwsr-xr-x
2022-04-18 22:59
paste
37.38
KB
-rwxr-xr-x
2025-12-18 13:54
patch
206.46
KB
-rwxr-xr-x
2020-06-01 15:14
patchwork
12.26
KB
-rwxr-xr-x
2024-04-06 12:47
pathchk
37.33
KB
-rwxr-xr-x
2025-12-18 13:54
pathfix.py
6.63
KB
-rwxr-xr-x
2026-02-05 20:00
pcre-config
2.09
KB
-rwxr-xr-x
2021-10-08 19:17
pcre2-config
1.9
KB
-rwxr-xr-x
2022-08-02 16:07
pdf2dsc
698
B
-rwxr-xr-x
2025-06-03 02:48
pdf2ps
909
B
-rwxr-xr-x
2025-06-03 02:48
peekfd
16.51
KB
-rwxr-xr-x
2020-11-06 14:24
perl
12.43
KB
-rwxr-xr-x
2025-07-28 08:07
perl5.26.3
12.43
KB
-rwxr-xr-x
2025-07-28 08:07
perlbug
44.39
KB
-rwxr-xr-x
2025-07-28 08:08
perldoc
118
B
-rwxr-xr-x
2019-10-13 11:53
perlivp
10.56
KB
-rwxr-xr-x
2025-07-28 08:07
perlml
6.61
KB
-rwxr-xr-x
2025-10-02 19:40
perlthanks
44.39
KB
-rwxr-xr-x
2025-07-28 08:08
perror
6.99
MB
-rwxr-xr-x
2023-10-12 18:30
pflags
2.57
KB
-rwxr-xr-x
2024-04-06 13:32
pftp
101.2
KB
-rwxr-xr-x
2019-10-12 12:59
pgrep
28.84
KB
-rwxr-xr-x
2023-10-14 20:31
php
937
B
-rwxr-xr-x
2025-04-01 16:34
pic
293.84
KB
-rwxr-xr-x
2019-10-13 14:29
piconv
8.08
KB
-rwxr-xr-x
2019-10-13 08:46
pidof
16.7
KB
-rwxr-xr-x
2023-10-14 20:31
pidstat
65.72
KB
-rwxr-xr-x
2024-07-03 09:57
pigz
125.38
KB
-rwxr-xr-x
2020-06-01 15:15
pinentry
2.35
KB
-rwxr-xr-x
2018-08-12 17:18
pinentry-curses
77.89
KB
-rwxr-xr-x
2019-11-24 17:39
ping
66.13
KB
-rwxr-xr-x
2023-10-14 17:19
pinky
41.46
KB
-rwxr-xr-x
2025-12-18 13:54
pip-2
206
B
-rwxr-xr-x
2022-04-21 18:08
pip-2.7
206
B
-rwxr-xr-x
2022-04-21 18:08
pip-3
209
B
-rwxr-xr-x
2024-04-06 13:40
pip-3.6
209
B
-rwxr-xr-x
2024-04-06 13:40
pip2
206
B
-rwxr-xr-x
2022-04-21 18:08
pip2.7
206
B
-rwxr-xr-x
2022-04-21 18:08
pip3
209
B
-rwxr-xr-x
2024-04-06 13:40
pip3.6
209
B
-rwxr-xr-x
2024-04-06 13:40
pk12util
111.13
KB
-rwxr-xr-x
2025-09-09 13:57
pkaction
16.38
KB
-rwxr-xr-x
2024-05-29 12:51
pkcheck
24.43
KB
-rwxr-xr-x
2024-05-29 12:51
pkcon
81.38
KB
-rwxr-xr-x
2023-10-14 13:32
pkexec
28.41
KB
-rwsr-xr-x
2024-05-29 12:51
pkg-config
40.04
KB
-rwxr-xr-x
2019-10-13 06:57
pkgconf
40.04
KB
-rwxr-xr-x
2019-10-13 06:57
pkill
28.84
KB
-rwxr-xr-x
2023-10-14 20:31
pkla-admin-identities
25.72
KB
-rwxr-xr-x
2019-11-18 15:17
pkla-check-authorization
33.78
KB
-rwxr-xr-x
2019-11-18 15:17
pkmon
20.74
KB
-rwxr-xr-x
2023-10-14 13:32
pkttyagent
20.38
KB
-rwxr-xr-x
2024-05-29 12:51
pl2pm
4.43
KB
-rwxr-xr-x
2025-07-28 08:08
pldd
16.75
KB
-rwxr-xr-x
2025-12-08 09:43
plesk_configure
450
B
-rwxr-xr-x
2020-02-19 08:09
pmap
32.78
KB
-rwxr-xr-x
2023-10-14 20:31
png-fix-itxt
11.85
KB
-rwxr-xr-x
2026-01-07 19:42
pngfix
52.85
KB
-rwxr-xr-x
2026-01-07 19:42
pod2html
4.04
KB
-rwxr-xr-x
2025-07-28 08:08
pod2man
14.68
KB
-rwxr-xr-x
2019-10-13 14:12
pod2text
10.55
KB
-rwxr-xr-x
2019-10-13 14:12
pod2usage
3.86
KB
-rwxr-xr-x
2019-10-13 11:57
podchecker
3.57
KB
-rwxr-xr-x
2019-10-13 11:46
podselect
2.47
KB
-rwxr-xr-x
2019-10-13 11:52
post-grohtml
238.73
KB
-rwxr-xr-x
2019-10-13 14:29
powernow-k8-decode
10.88
KB
-rwxr-xr-x
2026-02-17 10:43
pr
82.15
KB
-rwxr-xr-x
2025-12-18 13:54
pre-grohtml
130.55
KB
-rwxr-xr-x
2019-10-13 14:29
precat
5.52
KB
-rwxr-xr-x
2022-04-18 15:10
preconv
57.65
KB
-rwxr-xr-x
2019-10-13 14:29
preunzip
5.52
KB
-rwxr-xr-x
2022-04-18 15:10
prezip
5.52
KB
-rwxr-xr-x
2022-04-18 15:10
prezip-bin
11.98
KB
-rwxr-xr-x
2022-04-18 15:10
printenv
33.32
KB
-rwxr-xr-x
2025-12-18 13:54
printf
53.56
KB
-rwxr-xr-x
2025-12-18 13:54
prlimit
37.54
KB
-rwxr-xr-x
2026-02-04 20:18
procan
82.6
KB
-rwxr-xr-x
2025-07-15 09:33
protoc
16.49
KB
-rwxr-xr-x
2025-10-07 08:37
protoc-c
244.79
KB
-rwxr-xr-x
2023-10-14 21:21
protoc-gen-c
244.79
KB
-rwxr-xr-x
2023-10-14 21:21
prove
13.24
KB
-rwxr-xr-x
2019-10-13 12:42
prtstat
20.51
KB
-rwxr-xr-x
2020-11-06 14:24
prune
16.73
KB
-rwxr-xr-x
2024-04-06 12:47
ps
134.75
KB
-rwxr-xr-x
2023-10-14 20:31
ps2ascii
631
B
-rwxr-xr-x
2025-06-03 02:48
ps2epsi
2.69
KB
-rwxr-xr-x
2025-06-03 02:48
ps2pdf
272
B
-rwxr-xr-x
2025-06-03 02:48
ps2pdf12
215
B
-rwxr-xr-x
2025-06-03 02:48
ps2pdf13
215
B
-rwxr-xr-x
2025-06-03 02:48
ps2pdf14
215
B
-rwxr-xr-x
2025-06-03 02:48
ps2pdfwr
1.07
KB
-rwxr-xr-x
2025-06-03 02:48
ps2ps
647
B
-rwxr-xr-x
2025-06-03 02:48
ps2ps2
669
B
-rwxr-xr-x
2025-06-03 02:48
psfaddtable
20.66
KB
-rwxr-xr-x
2023-10-14 21:01
psfgettable
20.66
KB
-rwxr-xr-x
2023-10-14 21:01
psfstriptable
20.66
KB
-rwxr-xr-x
2023-10-14 21:01
psfxtable
20.66
KB
-rwxr-xr-x
2023-10-14 21:01
pslog
12.48
KB
-rwxr-xr-x
2020-11-06 14:24
pstree
33.53
KB
-rwxr-xr-x
2020-11-06 14:24
pstree.x11
33.53
KB
-rwxr-xr-x
2020-11-06 14:24
ptar
3.38
KB
-rwxr-xr-x
2019-10-13 07:10
ptardiff
2.48
KB
-rwxr-xr-x
2019-10-13 07:10
ptargrep
4.2
KB
-rwxr-xr-x
2019-10-13 07:10
ptx
77.99
KB
-rwxr-xr-x
2025-12-18 13:54
pure-pw
38.84
KB
-rwxr-xr-x
2025-06-06 14:16
pure-pwconvert
10.72
KB
-rwxr-xr-x
2025-06-06 14:16
pure-statsdecode
10.72
KB
-rwxr-xr-x
2025-06-06 14:16
pwd
37.42
KB
-rwxr-xr-x
2025-12-18 13:54
pwdx
12.68
KB
-rwxr-xr-x
2023-10-14 20:31
pwmake
12.27
KB
-rwxr-xr-x
2023-04-01 18:24
pwscore
12.27
KB
-rwxr-xr-x
2023-04-01 18:24
pybabel
388
B
-rwxr-xr-x
2021-10-11 11:19
pydoc-3
89
B
-rwxr-xr-x
2026-02-05 20:05
pydoc2
78
B
-rwxr-xr-x
2024-04-10 04:58
pydoc2.7
78
B
-rwxr-xr-x
2024-04-10 04:58
pydoc3
89
B
-rwxr-xr-x
2026-02-05 20:05
pydoc3.12
79
B
-rwxr-xr-x
2026-02-10 14:46
pydoc3.6
89
B
-rwxr-xr-x
2026-02-05 20:05
pygettext2.7.py
21.56
KB
-rwxr-xr-x
2024-04-10 04:58
pygettext2.py
21.56
KB
-rwxr-xr-x
2024-04-10 04:58
pyjwt
384
B
-rwxr-xr-x
2019-12-18 17:51
pynche2
138
B
-rwxr-xr-x
2024-04-10 04:48
pynche2.7
138
B
-rwxr-xr-x
2024-04-10 04:48
python-html2text
406
B
-rwxr-xr-x
2020-03-17 12:40
python2
7.84
KB
-rwxr-xr-x
2024-04-10 04:58
python2-config
1.8
KB
-rwxr-xr-x
2024-04-10 04:58
python2.7
7.84
KB
-rwxr-xr-x
2024-04-10 04:58
python2.7-config
1.8
KB
-rwxr-xr-x
2024-04-10 04:58
python3
11.59
KB
-rwxr-xr-x
2026-02-05 20:05
python3-config
204
B
-rwxr-xr-x
2026-02-05 20:05
python3-html2text
406
B
-rwxr-xr-x
2020-03-17 12:40
python3.12
7.57
KB
-rwxr-xr-x
2026-02-10 14:50
python3.6
11.59
KB
-rwxr-xr-x
2026-02-05 20:05
python3.6-config
204
B
-rwxr-xr-x
2026-02-05 20:05
python3.6m
11.59
KB
-rwxr-xr-x
2026-02-05 20:05
python3.6m-config
204
B
-rwxr-xr-x
2026-02-05 20:05
python3.6m-x86_64-config
3.54
KB
-rwxr-xr-x
2026-02-05 20:02
pyvenv-3
446
B
-rwxr-xr-x
2026-02-05 20:05
pyvenv-3.6
446
B
-rwxr-xr-x
2026-02-05 20:05
qemu-ga
505.49
KB
-rwxr-xr-x
2026-02-10 17:14
quota
91.49
KB
-rwsr-xr-x
2021-10-09 07:08
quotasync
74.69
KB
-rwxr-xr-x
2021-10-09 07:08
ranlib
61.97
KB
-rwxr-xr-x
2025-12-18 14:21
raw
16.5
KB
-rwxr-xr-x
2026-02-04 20:18
rclone
70.09
MB
-rwxr-xr-x
2025-12-28 15:33
read
28
B
-rwxr-xr-x
2025-08-26 08:48
readelf
624.54
KB
-rwxr-xr-x
2025-12-18 14:21
readlink
45.88
KB
-rwxr-xr-x
2025-12-18 13:54
realpath
49.95
KB
-rwxr-xr-x
2025-12-18 13:54
recode-sr-latin
17.99
KB
-rwxr-xr-x
2019-11-18 17:17
rename
16.5
KB
-rwxr-xr-x
2026-02-04 20:18
renew-dummy-cert
725
B
-rwxr-xr-x
2026-02-23 07:51
renice
16.46
KB
-rwxr-xr-x
2026-02-04 20:18
repo-graph
3.62
KB
-rwxr-xr-x
2024-04-08 10:02
repoclosure
3.62
KB
-rwxr-xr-x
2024-04-08 10:02
repodiff
3.62
KB
-rwxr-xr-x
2024-04-08 10:02
repomanage
3.62
KB
-rwxr-xr-x
2024-04-08 10:02
repoquery
3.62
KB
-rwxr-xr-x
2024-04-08 10:02
reposync
3.62
KB
-rwxr-xr-x
2024-04-08 10:02
repotrack
3.62
KB
-rwxr-xr-x
2024-04-08 10:02
rescan-scsi-bus.sh
38.24
KB
-rwxr-xr-x
2022-10-08 11:49
reset
24.76
KB
-rwxr-xr-x
2023-10-14 18:54
resizecons
20.77
KB
-rwxr-xr-x
2023-10-14 21:01
resolvectl
195.75
KB
-rwxr-xr-x
2026-01-26 09:30
rev
12.46
KB
-rwxr-xr-x
2026-02-04 20:18
rm
70.38
KB
-rwxr-xr-x
2025-12-18 13:54
rmdir
45.46
KB
-rwxr-xr-x
2025-12-18 13:54
rnano
247.94
KB
-rwxr-xr-x
2024-09-24 02:16
rpcbind
61.55
KB
-rwxr-xr-x
2022-10-12 11:00
rpcinfo
32.64
KB
-rwxr-xr-x
2022-10-12 11:00
rpm
20.85
KB
-rwxr-xr-x
2024-12-17 04:11
rpm2archive
20.46
KB
-rwxr-xr-x
2024-12-17 04:11
rpm2cpio
11.84
KB
-rwxr-xr-x
2024-12-17 04:11
rpmdb
16.96
KB
-rwxr-xr-x
2024-12-17 04:11
rpmkeys
16.87
KB
-rwxr-xr-x
2024-12-17 04:11
rpmquery
20.85
KB
-rwxr-xr-x
2024-12-17 04:11
rpmverify
20.85
KB
-rwxr-xr-x
2024-12-17 04:11
rsync
510.15
KB
-rwxr-xr-x
2025-06-03 02:02
rsyslog-recover-qi.pl
5.96
KB
-rwxr-xr-x
2024-11-05 02:34
run-parts
1.94
KB
-rwxr-xr-x
2021-04-08 09:38
run-with-aspell
85
B
-rwxr-xr-x
2022-04-18 15:10
runcon
37.37
KB
-rwxr-xr-x
2025-12-18 13:54
rvi
1.13
MB
-rwxr-xr-x
2025-10-12 00:23
rview
1.13
MB
-rwxr-xr-x
2025-10-12 00:23
sadf
334.57
KB
-rwxr-xr-x
2024-07-03 09:57
sandbox
17.62
KB
-rwxr-xr-x
2024-07-02 21:08
sar
135.77
KB
-rwxr-xr-x
2024-07-03 09:57
sccmap
20.62
KB
-rwxr-xr-x
2024-04-06 12:47
scl
36.87
KB
-rwxr-xr-x
2023-04-01 16:10
scl_enabled
258
B
-rwxr-xr-x
2017-08-25 08:23
scl_source
1.82
KB
-rwxr-xr-x
2023-04-01 16:10
scp
102.84
KB
-rwxr-xr-x
2025-12-18 02:27
script
36.8
KB
-rwxr-xr-x
2026-02-04 20:18
scriptreplay
29
KB
-rwxr-xr-x
2026-02-04 20:18
scsi-rescan
38.24
KB
-rwxr-xr-x
2022-10-08 11:49
scsi_logging_level
8.38
KB
-rwxr-xr-x
2022-10-08 11:49
scsi_mandat
3.52
KB
-rwxr-xr-x
2022-10-08 11:49
scsi_readcap
1.3
KB
-rwxr-xr-x
2022-10-08 11:49
scsi_ready
1.09
KB
-rwxr-xr-x
2022-10-08 11:49
scsi_satl
3.77
KB
-rwxr-xr-x
2022-10-08 11:49
scsi_start
1.25
KB
-rwxr-xr-x
2022-10-08 11:49
scsi_stop
1.44
KB
-rwxr-xr-x
2022-10-08 11:49
scsi_temperature
936
B
-rwxr-xr-x
2022-10-08 11:49
sdiff
105.33
KB
-rwxr-xr-x
2020-05-04 15:15
sealert
27.27
KB
-rwxr-xr-x
2024-04-06 13:44
secon
25.46
KB
-rwxr-xr-x
2024-07-02 21:04
secret-tool
21.17
KB
-rwxr-xr-x
2019-11-15 09:37
sed
115.48
KB
-rwxr-xr-x
2022-04-18 21:41
sedismod
273.66
KB
-rwxr-xr-x
2019-12-10 17:48
sedispol
198.48
KB
-rwxr-xr-x
2019-12-10 17:48
semodule_expand
12.28
KB
-rwxr-xr-x
2024-07-02 21:04
semodule_link
12.28
KB
-rwxr-xr-x
2024-07-02 21:04
semodule_package
16.68
KB
-rwxr-xr-x
2024-07-02 21:04
semodule_unpackage
12.3
KB
-rwxr-xr-x
2024-07-02 21:04
seq
53.45
KB
-rwxr-xr-x
2025-12-18 13:54
sessreg
17.38
KB
-rwxr-xr-x
2019-10-15 13:08
setarch
20.76
KB
-rwxr-xr-x
2026-02-04 20:18
setfacl
37.65
KB
-rwxr-xr-x
2024-04-06 12:15
setfont
45.19
KB
-rwxr-xr-x
2023-10-14 21:01
setkeycodes
12.56
KB
-rwxr-xr-x
2023-10-14 21:01
setleds
16.6
KB
-rwxr-xr-x
2023-10-14 21:01
setmetamode
12.56
KB
-rwxr-xr-x
2023-10-14 21:01
setpriv
45.16
KB
-rwxr-xr-x
2026-02-04 20:18
setsid
16.38
KB
-rwxr-xr-x
2026-02-04 20:18
setterm
45.13
KB
-rwxr-xr-x
2026-02-04 20:18
setup-nsssysinit
1.5
KB
-rwxr-xr-x
2025-09-09 13:57
setup-nsssysinit.sh
1.5
KB
-rwxr-xr-x
2025-09-09 13:57
setvtrgb
16.64
KB
-rwxr-xr-x
2023-10-14 21:01
sfdp
12.26
KB
-rwxr-xr-x
2024-04-06 12:47
sftp
159.74
KB
-rwxr-xr-x
2025-12-18 02:27
sg
42.46
KB
-rwsr-xr-x
2025-12-18 13:51
sg_bg_ctl
16.07
KB
-rwxr-xr-x
2022-10-08 11:49
sg_compare_and_write
20.9
KB
-rwxr-xr-x
2022-10-08 11:49
sg_copy_results
20.81
KB
-rwxr-xr-x
2022-10-08 11:49
sg_dd
44.58
KB
-rwxr-xr-x
2022-10-08 11:49
sg_decode_sense
20.33
KB
-rwxr-xr-x
2022-10-08 11:49
sg_emc_trespass
12.26
KB
-rwxr-xr-x
2022-10-08 11:49
sg_format
33.37
KB
-rwxr-xr-x
2022-10-08 11:49
sg_get_config
33.31
KB
-rwxr-xr-x
2022-10-08 11:49
sg_get_lba_status
20.46
KB
-rwxr-xr-x
2022-10-08 11:49
sg_ident
16.17
KB
-rwxr-xr-x
2022-10-08 11:49
sg_inq
117.91
KB
-rwxr-xr-x
2022-10-08 11:49
sg_logs
150.02
KB
-rwxr-xr-x
2022-10-08 11:49
sg_luns
24.85
KB
-rwxr-xr-x
2022-10-08 11:49
sg_map
16.41
KB
-rwxr-xr-x
2022-10-08 11:49
sg_map26
24.87
KB
-rwxr-xr-x
2022-10-08 11:49
sg_modes
43.88
KB
-rwxr-xr-x
2022-10-08 11:49
sg_opcodes
28.69
KB
-rwxr-xr-x
2022-10-08 11:49
sg_persist
34.13
KB
-rwxr-xr-x
2022-10-08 11:49
sg_prevent
12.07
KB
-rwxr-xr-x
2022-10-08 11:49
sg_raw
24.38
KB
-rwxr-xr-x
2022-10-08 11:49
sg_rbuf
20.84
KB
-rwxr-xr-x
2022-10-08 11:49
sg_rdac
15.88
KB
-rwxr-xr-x
2022-10-08 11:49
sg_read
24.41
KB
-rwxr-xr-x
2022-10-08 11:49
sg_read_attr
34.79
KB
-rwxr-xr-x
2022-10-08 11:49
sg_read_block_limits
12.12
KB
-rwxr-xr-x
2022-10-08 11:49
sg_read_buffer
20.96
KB
-rwxr-xr-x
2022-10-08 11:49
sg_read_long
16.27
KB
-rwxr-xr-x
2022-10-08 11:49
sg_readcap
20.86
KB
-rwxr-xr-x
2022-10-08 11:49
sg_reassign
16.22
KB
-rwxr-xr-x
2022-10-08 11:49
sg_referrals
16.23
KB
-rwxr-xr-x
2022-10-08 11:49
sg_rep_zones
20.66
KB
-rwxr-xr-x
2022-10-08 11:49
sg_requests
16.3
KB
-rwxr-xr-x
2022-10-08 11:49
sg_reset
16.73
KB
-rwxr-xr-x
2022-10-08 11:49
sg_reset_wp
16.17
KB
-rwxr-xr-x
2022-10-08 11:49
sg_rmsn
12.06
KB
-rwxr-xr-x
2022-10-08 11:49
sg_rtpg
16.16
KB
-rwxr-xr-x
2022-10-08 11:49
sg_safte
20.27
KB
-rwxr-xr-x
2022-10-08 11:49
sg_sanitize
24.58
KB
-rwxr-xr-x
2022-10-08 11:49
sg_sat_identify
16.71
KB
-rwxr-xr-x
2022-10-08 11:49
sg_sat_phy_event
20.59
KB
-rwxr-xr-x
2022-10-08 11:49
sg_sat_read_gplog
16.3
KB
-rwxr-xr-x
2022-10-08 11:49
sg_sat_set_features
16.27
KB
-rwxr-xr-x
2022-10-08 11:49
sg_scan
16.5
KB
-rwxr-xr-x
2022-10-08 11:49
sg_seek
16.85
KB
-rwxr-xr-x
2022-10-08 11:49
sg_senddiag
25.27
KB
-rwxr-xr-x
2022-10-08 11:49
sg_ses
118.23
KB
-rwxr-xr-x
2022-10-08 11:49
sg_ses_microcode
29.48
KB
-rwxr-xr-x
2022-10-08 11:49
sg_start
20.93
KB
-rwxr-xr-x
2022-10-08 11:49
sg_stpg
20.3
KB
-rwxr-xr-x
2022-10-08 11:49
sg_stream_ctl
20.27
KB
-rwxr-xr-x
2022-10-08 11:49
sg_sync
16.22
KB
-rwxr-xr-x
2022-10-08 11:49
sg_test_rwbuf
20.73
KB
-rwxr-xr-x
2022-10-08 11:49
sg_timestamp
20.74
KB
-rwxr-xr-x
2022-10-08 11:49
sg_turs
16.74
KB
-rwxr-xr-x
2022-10-08 11:49
sg_unmap
24.32
KB
-rwxr-xr-x
2022-10-08 11:49
sg_verify
20.46
KB
-rwxr-xr-x
2022-10-08 11:49
sg_vpd
108.75
KB
-rwxr-xr-x
2022-10-08 11:49
sg_wr_mode
20.3
KB
-rwxr-xr-x
2022-10-08 11:49
sg_write_buffer
21.24
KB
-rwxr-xr-x
2022-10-08 11:49
sg_write_long
16.33
KB
-rwxr-xr-x
2022-10-08 11:49
sg_write_same
24.48
KB
-rwxr-xr-x
2022-10-08 11:49
sg_write_verify
20.78
KB
-rwxr-xr-x
2022-10-08 11:49
sg_write_x
53.75
KB
-rwxr-xr-x
2022-10-08 11:49
sg_xcopy
40.59
KB
-rwxr-xr-x
2022-10-08 11:49
sg_zone
16.3
KB
-rwxr-xr-x
2022-10-08 11:49
sginfo
74.85
KB
-rwxr-xr-x
2022-10-08 11:49
sgm_dd
32.55
KB
-rwxr-xr-x
2022-10-08 11:49
sgp_dd
36.95
KB
-rwxr-xr-x
2022-10-08 11:49
sh
1.1
MB
-rwxr-xr-x
2025-08-26 08:48
sha1hmac
32.66
KB
-rwxr-xr-x
2024-03-30 14:16
sha1sum
45.55
KB
-rwxr-xr-x
2025-12-18 13:54
sha224hmac
32.66
KB
-rwxr-xr-x
2024-03-30 14:16
sha224sum
45.58
KB
-rwxr-xr-x
2025-12-18 13:54
sha256hmac
32.66
KB
-rwxr-xr-x
2024-03-30 14:16
sha256sum
45.59
KB
-rwxr-xr-x
2025-12-18 13:54
sha384hmac
32.66
KB
-rwxr-xr-x
2024-03-30 14:16
sha384sum
45.59
KB
-rwxr-xr-x
2025-12-18 13:54
sha512hmac
32.66
KB
-rwxr-xr-x
2024-03-30 14:16
sha512sum
45.59
KB
-rwxr-xr-x
2025-12-18 13:54
shasum
9.66
KB
-rwxr-xr-x
2019-10-14 12:00
showconsolefont
20.73
KB
-rwxr-xr-x
2023-10-14 21:01
showkey
16.58
KB
-rwxr-xr-x
2023-10-14 21:01
showrgb
13.05
KB
-rwxr-xr-x
2019-10-15 13:08
shred
61.85
KB
-rwxr-xr-x
2025-12-18 13:54
shuf
58.09
KB
-rwxr-xr-x
2025-12-18 13:54
sieve-dump
30.84
KB
-rwxr-xr-x
2026-02-03 19:40
sieve-filter
40.27
KB
-rwxr-xr-x
2026-02-03 19:40
sieve-test
40.2
KB
-rwxr-xr-x
2026-02-03 19:40
sievec
35.1
KB
-rwxr-xr-x
2026-02-03 19:40
signver
114.79
KB
-rwxr-xr-x
2025-09-09 13:57
sim_client
16.28
KB
-rwxr-xr-x
2025-06-03 02:06
size
33.25
KB
-rwxr-xr-x
2025-12-18 14:21
skill
28.8
KB
-rwxr-xr-x
2023-10-14 20:31
slabinfo
36.15
KB
-rwxr-xr-x
2026-02-17 10:43
slabtop
20.84
KB
-rwxr-xr-x
2023-10-14 20:31
sleep
37.39
KB
-rwxr-xr-x
2025-12-18 13:54
slencheck
12.29
KB
-rwxr-xr-x
2025-12-18 13:02
sm3hmac
32.66
KB
-rwxr-xr-x
2024-03-30 14:16
smtpd2.7.py
18.11
KB
-rwxr-xr-x
2024-04-10 04:57
smtpd2.py
18.11
KB
-rwxr-xr-x
2024-04-10 04:57
snice
28.8
KB
-rwxr-xr-x
2023-10-14 20:31
snmpconf
25.44
KB
-rwxr-xr-x
2026-01-19 08:19
socat
406.49
KB
-rwxr-xr-x
2025-07-15 09:33
soelim
42.55
KB
-rwxr-xr-x
2019-10-13 14:29
sort
123.47
KB
-rwxr-xr-x
2025-12-18 13:54
sotruss
4.18
KB
-rwxr-xr-x
2025-12-08 09:36
spell
122
B
-rwxr-xr-x
2022-04-18 15:10
splain
18.7
KB
-rwxr-xr-x
2025-07-28 08:08
split
58.05
KB
-rwxr-xr-x
2025-12-18 13:54
sprof
28.67
KB
-rwxr-xr-x
2025-12-08 09:43
sqlite3
1.28
MB
-rwxr-xr-x
2025-07-29 01:27
sscg
57.14
KB
-rwxr-xr-x
2023-04-02 05:28
ssh
757.47
KB
-rwxr-xr-x
2025-12-18 02:27
ssh-add
346.11
KB
-rwxr-xr-x
2025-12-18 02:27
ssh-agent
325.59
KB
-rwxr-xr-x
2025-12-18 02:27
ssh-copy-id
10.44
KB
-rwxr-xr-x
2025-12-18 02:27
ssh-keygen
427.17
KB
-rwxr-xr-x
2025-12-18 02:27
ssh-keyscan
428.52
KB
-rwxr-xr-x
2025-12-18 02:27
ssltap
130.51
KB
-rwxr-xr-x
2025-09-09 13:57
sss_ssh_authorizedkeys
28.78
KB
-rwxr-xr-x
2026-02-10 17:01
sss_ssh_knownhostsproxy
28.78
KB
-rwxr-xr-x
2026-02-10 17:01
stat
86.16
KB
-rwxr-xr-x
2025-12-18 13:54
stdbuf
49.5
KB
-rwxr-xr-x
2025-12-18 13:54
strace
1.94
MB
-rwxr-xr-x
2025-01-28 01:32
strace-log-merge
1.78
KB
-rwxr-xr-x
2021-02-16 08:00
stream
11.83
KB
-rwxr-xr-x
2025-04-01 13:15
strings
37.43
KB
-rwxr-xr-x
2025-12-18 14:21
strip
240.09
KB
-rwxr-xr-x
2025-12-18 14:21
stty
77.61
KB
-rwxr-xr-x
2025-12-18 13:54
su
48.99
KB
-rwsr-x---
2026-02-04 20:18
sudo
186.52
KB
---s--x--x
2025-12-18 14:01
sudoedit
186.52
KB
---s--x--x
2025-12-18 14:01
sudoreplay
115.2
KB
---x--x--x
2025-12-18 14:01
sum
45.53
KB
-rwxr-xr-x
2025-12-18 13:54
sw-engine
20.12
MB
-rwxr-xr-x
1990-01-01 12:00
sxpm
28.81
KB
-rwxr-xr-x
2024-03-30 13:53
sync
37.36
KB
-rwxr-xr-x
2025-12-18 13:54
systemctl
218.45
KB
-rwxr-xr-x
2026-01-26 09:30
systemd-analyze
1.56
MB
-rwxr-xr-x
2026-01-26 09:30
systemd-ask-password
12.02
KB
-rwxr-xr-x
2026-01-26 09:30
systemd-cat
16.02
KB
-rwxr-xr-x
2026-01-26 09:30
systemd-cgls
16.44
KB
-rwxr-xr-x
2026-01-26 09:30
systemd-cgtop
32.88
KB
-rwxr-xr-x
2026-01-26 09:30
systemd-delta
24.45
KB
-rwxr-xr-x
2026-01-26 09:30
systemd-detect-virt
11.88
KB
-rwxr-xr-x
2026-01-26 09:30
systemd-escape
16.01
KB
-rwxr-xr-x
2026-01-26 09:30
systemd-firstboot
36.98
KB
-rwxr-xr-x
2026-01-26 09:30
systemd-hwdb
28.91
KB
-rwxr-xr-x
2026-01-26 09:30
systemd-inhibit
16.03
KB
-rwxr-xr-x
2026-01-26 09:30
systemd-machine-id-setup
24.75
KB
-rwxr-xr-x
2026-01-26 09:30
systemd-mount
52.63
KB
-rwxr-xr-x
2026-01-26 09:30
systemd-notify
16.03
KB
-rwxr-xr-x
2026-01-26 09:30
systemd-path
16.02
KB
-rwxr-xr-x
2026-01-26 09:30
systemd-resolve
195.75
KB
-rwxr-xr-x
2026-01-26 09:30
systemd-run
48.95
KB
-rwxr-xr-x
2026-01-26 09:30
systemd-socket-activate
24.77
KB
-rwxr-xr-x
2026-01-26 09:30
systemd-stdio-bridge
16.02
KB
-rwxr-xr-x
2026-01-26 09:30
systemd-sysusers
53.05
KB
-rwxr-xr-x
2026-01-26 09:30
systemd-tmpfiles
73.3
KB
-rwxr-xr-x
2026-01-26 09:30
systemd-tty-ask-password-agent
32.82
KB
-rwxr-xr-x
2026-01-26 09:30
systemd-umount
52.63
KB
-rwxr-xr-x
2026-01-26 09:30
tabs
16.55
KB
-rwxr-xr-x
2023-10-14 18:54
tac
41.49
KB
-rwxr-xr-x
2025-12-18 13:54
tail
74.13
KB
-rwxr-xr-x
2025-12-18 13:54
tapestat
41.32
KB
-rwxr-xr-x
2024-07-03 09:57
tar
448.99
KB
-rwxr-xr-x
2025-08-26 08:57
taskset
37.26
KB
-rwxr-xr-x
2026-02-04 20:18
tbl
154.61
KB
-rwxr-xr-x
2019-10-13 14:29
tcamgr
25.13
KB
-rwxr-xr-x
2019-10-13 01:22
tcamttest
21.16
KB
-rwxr-xr-x
2019-10-13 01:22
tcatest
57.6
KB
-rwxr-xr-x
2019-10-13 01:22
tcbmgr
29.1
KB
-rwxr-xr-x
2019-10-13 01:22
tcbmttest
53.22
KB
-rwxr-xr-x
2019-10-13 01:22
tcbtest
69.56
KB
-rwxr-xr-x
2019-10-13 01:22
tcfmgr
25.09
KB
-rwxr-xr-x
2019-10-13 01:22
tcfmttest
37.2
KB
-rwxr-xr-x
2019-10-13 01:22
tcftest
45.18
KB
-rwxr-xr-x
2019-10-13 01:22
tchmgr
25.09
KB
-rwxr-xr-x
2019-10-13 01:22
tchmttest
49.22
KB
-rwxr-xr-x
2019-10-13 01:22
tchtest
57.53
KB
-rwxr-xr-x
2019-10-13 01:22
tclsh
9.04
KB
-rwxr-xr-x
2019-10-12 00:25
tclsh8.6
9.04
KB
-rwxr-xr-x
2019-10-12 00:25
tcptraceroute
1.55
KB
-rwxr-xr-x
2025-03-11 07:45
tctmgr
37.09
KB
-rwxr-xr-x
2019-10-13 01:22
tctmttest
45.2
KB
-rwxr-xr-x
2019-10-13 01:22
tcttest
57.19
KB
-rwxr-xr-x
2019-10-13 01:22
tcucodec
37.08
KB
-rwxr-xr-x
2019-10-13 01:22
tcumttest
25.16
KB
-rwxr-xr-x
2019-10-13 01:22
tcutest
73.17
KB
-rwxr-xr-x
2019-10-13 01:22
teamd
160.52
KB
-rwxr-xr-x
2023-03-31 20:40
teamdctl
30.37
KB
-rwxr-xr-x
2023-03-31 20:40
teamnl
20.47
KB
-rwxr-xr-x
2023-03-31 20:40
tee
41.48
KB
-rwxr-xr-x
2025-12-18 13:54
test
53.56
KB
-rwxr-xr-x
2025-12-18 13:54
tic
85.31
KB
-rwxr-xr-x
2023-10-14 18:54
timedatectl
36.96
KB
-rwxr-xr-x
2026-01-26 09:30
timeout
41.86
KB
-rwxr-xr-x
2025-12-18 13:54
tload
16.76
KB
-rwxr-xr-x
2023-10-14 20:31
tmon
39.63
KB
-rwxr-xr-x
2026-02-17 10:43
tmpwatch
35.47
KB
-rwxr-xr-x
2019-10-12 11:32
toe
16.45
KB
-rwxr-xr-x
2023-10-14 18:54
top
121.7
KB
-rwxr-xr-x
2023-10-14 20:31
touch
93.94
KB
-rwxr-xr-x
2025-12-18 13:54
tput
24.8
KB
-rwxr-xr-x
2023-10-14 18:54
tr
49.63
KB
-rwxr-xr-x
2025-12-18 13:54
tracepath
20.44
KB
-rwxr-xr-x
2023-10-14 17:19
traceroute
70.97
KB
-rwxr-xr-x
2025-03-11 07:45
traceroute6
70.97
KB
-rwxr-xr-x
2025-03-11 07:45
tred
16.59
KB
-rwxr-xr-x
2024-04-06 12:47
troff
805.02
KB
-rwxr-xr-x
2019-10-13 14:29
true
33.33
KB
-rwxr-xr-x
2025-12-18 13:54
truncate
41.36
KB
-rwxr-xr-x
2025-12-18 13:54
trust
219.55
KB
-rwxr-xr-x
2024-04-06 14:16
tset
24.76
KB
-rwxr-xr-x
2023-10-14 18:54
tsort
41.49
KB
-rwxr-xr-x
2025-12-18 13:54
tty
33.31
KB
-rwxr-xr-x
2025-12-18 13:54
turbostat
130.8
KB
-rwxr-xr-x
2026-02-17 10:43
twopi
12.26
KB
-rwxr-xr-x
2024-04-06 12:47
type
28
B
-rwxr-xr-x
2025-08-26 08:48
tzselect
15.01
KB
-rwxr-xr-x
2025-12-08 09:36
uapi
3.36
MB
-rwxr-xr-x
2026-02-24 01:01
ucs2any
24.41
KB
-rwxr-xr-x
2021-10-09 23:42
udevadm
424.58
KB
-rwxr-xr-x
2026-01-26 09:30
udisksctl
60.73
KB
-rwxr-xr-x
2025-09-03 09:08
ul
20.59
KB
-rwxr-xr-x
2026-02-04 20:18
ulimit
30
B
-rwxr-xr-x
2025-08-26 08:48
umask
29
B
-rwxr-xr-x
2025-08-26 08:48
umount
32.75
KB
-rwsr-xr-x
2026-02-04 20:18
unalias
31
B
-rwxr-xr-x
2025-08-26 08:48
uname
37.33
KB
-rwxr-xr-x
2025-12-18 13:54
uname26
20.76
KB
-rwxr-xr-x
2026-02-04 20:18
unexpand
45.61
KB
-rwxr-xr-x
2025-12-18 13:54
unflatten
16.63
KB
-rwxr-xr-x
2024-04-06 12:47
unicode_start
2.55
KB
-rwxr-xr-x
2023-10-14 20:59
unicode_stop
363
B
-rwxr-xr-x
2023-10-14 20:59
uniq
49.64
KB
-rwxr-xr-x
2025-12-18 13:54
unlink
33.34
KB
-rwxr-xr-x
2025-12-18 13:54
unpigz
125.38
KB
-rwxr-xr-x
2020-06-01 15:15
unshare
24.93
KB
-rwxr-xr-x
2026-02-04 20:18
unversioned-python
157
B
-rwxr-xr-x
2026-02-05 20:05
unxz
82.09
KB
-rwxr-xr-x
2022-06-14 13:03
unzip
201.88
KB
-rwxr-xr-x
2025-06-03 02:10
unzipsfx
101.48
KB
-rwxr-xr-x
2025-06-03 02:10
update-ca-trust
1.24
KB
-rwxr-xr-x
2025-10-30 14:25
update-crypto-policies
87
B
-rwxr-xr-x
2023-08-01 15:18
update-gtk-immodules
313
B
-rwxr-xr-x
2021-04-06 13:52
update-mime-database
57.22
KB
-rwxr-xr-x
2024-04-06 14:07
uptime
12.59
KB
-rwxr-xr-x
2023-10-14 20:31
users
37.39
KB
-rwxr-xr-x
2025-12-18 13:54
usleep
11.86
KB
-rwxr-xr-x
2025-11-04 09:19
utmpdump
28.66
KB
-rwxr-xr-x
2026-02-04 20:18
uuclient
15.88
KB
-rwxr-xr-x
2025-06-03 02:06
uuidgen
16.38
KB
-rwxr-xr-x
2026-02-04 20:18
uuidparse
37.13
KB
-rwxr-xr-x
2026-02-04 20:18
vdir
139.9
KB
-rwxr-xr-x
2025-12-18 13:54
vi
1.13
MB
-rwxr-xr-x
2025-10-12 00:23
view
1.13
MB
-rwxr-xr-x
2025-10-12 00:23
vimdot
1.06
KB
-rwxr-xr-x
2024-04-06 12:47
vlock
20.83
KB
-rwxr-xr-x
2023-10-14 21:01
vmstat
36.79
KB
-rwxr-xr-x
2023-10-14 20:31
w
20.75
KB
-rwxr-xr-x
2023-10-14 20:31
wait
28
B
-rwxr-xr-x
2025-08-26 08:48
wall
33.05
KB
-rwxr-xr-x
2026-02-04 20:18
watch
29.19
KB
-rwxr-xr-x
2023-10-14 20:31
watchgnupg
16.44
KB
-rwxr-xr-x
2026-01-16 01:48
wc
49.64
KB
-rwxr-xr-x
2025-12-18 13:54
wdctl
36.98
KB
-rwxr-xr-x
2026-02-04 20:18
wget
521.41
KB
-rwxr-xr-x
2024-08-13 22:22
whatis
54.04
KB
-rwxr-xr-x
2021-10-08 13:04
whereis
29.27
KB
-rwxr-xr-x
2026-02-04 20:18
which
29.38
KB
-rwxr-xr-x
2025-08-26 08:54
whiptail
33.09
KB
-rwxr-xr-x
2020-06-01 14:11
who
53.59
KB
-rwxr-xr-x
2025-12-18 13:54
whoami
33.34
KB
-rwxr-xr-x
2025-12-18 13:54
wish
13.05
KB
-rwxr-xr-x
2019-10-16 17:25
wish8.6
13.05
KB
-rwxr-xr-x
2019-10-16 17:25
wmf2eps
17.15
KB
-rwxr-xr-x
2019-10-14 15:47
wmf2fig
17.15
KB
-rwxr-xr-x
2019-10-14 15:47
wmf2gd
17.14
KB
-rwxr-xr-x
2019-10-14 15:47
wmf2svg
17.16
KB
-rwxr-xr-x
2019-10-14 15:47
wmf2x
17.13
KB
-rwxr-xr-x
2019-10-14 15:47
word-list-compress
11.99
KB
-rwxr-xr-x
2022-04-18 15:10
write
20.62
KB
-rwxr-sr-x
2026-02-04 20:18
x86_64
20.76
KB
-rwxr-xr-x
2026-02-04 20:18
x86_64-redhat-linux-c++
1.21
MB
-rwxr-xr-x
2025-08-26 09:47
x86_64-redhat-linux-g++
1.21
MB
-rwxr-xr-x
2025-08-26 09:47
x86_64-redhat-linux-gcc
1.21
MB
-rwxr-xr-x
2025-08-26 09:47
x86_64-redhat-linux-gcc-8
1.21
MB
-rwxr-xr-x
2025-08-26 09:47
x86_64-redhat-linux-gnu-pkg-config
424
B
-rwxr-xr-x
2019-10-13 06:57
x86_energy_perf_policy
31.95
KB
-rwxr-xr-x
2026-02-17 10:43
xargs
74.11
KB
-rwxr-xr-x
2025-12-18 14:57
xgamma
17.08
KB
-rwxr-xr-x
2019-10-15 13:08
xgettext
283.88
KB
-rwxr-xr-x
2019-11-18 17:17
xhost
17.12
KB
-rwxr-xr-x
2019-10-15 13:08
xinput
63.61
KB
-rwxr-xr-x
2019-10-15 13:08
xkill
17.1
KB
-rwxr-xr-x
2019-10-15 13:08
xml2-config
1.71
KB
-rwxr-xr-x
2017-07-23 05:10
xmlcatalog
20.38
KB
-rwxr-xr-x
2025-08-06 13:59
xmllint
73.37
KB
-rwxr-xr-x
2025-08-06 13:59
xmlwf
36.96
KB
-rwxr-xr-x
2025-11-20 07:31
xmodmap
39.98
KB
-rwxr-xr-x
2019-10-15 13:08
xorg-x11-fonts-update-dirs
1.29
KB
-rwxr--r--
2021-10-09 23:42
xrandr
65.46
KB
-rwxr-xr-x
2019-10-15 13:08
xrdb
33.98
KB
-rwxr-xr-x
2019-10-15 13:08
xrefresh
17.94
KB
-rwxr-xr-x
2019-10-15 13:08
xset
37.2
KB
-rwxr-xr-x
2019-10-15 13:08
xsetpointer
13.05
KB
-rwxr-xr-x
2019-10-15 13:08
xsetroot
21.44
KB
-rwxr-xr-x
2019-10-15 13:08
xslt-config
2.36
KB
-rwxr-xr-x
2015-05-10 14:11
xsltproc
28.47
KB
-rwxr-xr-x
2025-08-26 08:55
xstdcmap
17.68
KB
-rwxr-xr-x
2019-10-15 13:08
xsubpp
4.96
KB
-rwxr-xr-x
2019-10-13 08:58
xz
82.09
KB
-rwxr-xr-x
2022-06-14 13:03
xzcat
82.09
KB
-rwxr-xr-x
2022-06-14 13:03
xzcmp
6.48
KB
-rwxr-xr-x
2022-06-14 13:03
xzdec
16.48
KB
-rwxr-xr-x
2022-06-14 13:03
xzdiff
6.48
KB
-rwxr-xr-x
2022-06-14 13:03
xzegrep
5.76
KB
-rwxr-xr-x
2022-06-14 13:03
xzfgrep
5.76
KB
-rwxr-xr-x
2022-06-14 13:03
xzgrep
5.76
KB
-rwxr-xr-x
2022-06-14 13:03
xzless
1.76
KB
-rwxr-xr-x
2022-06-14 13:03
xzmore
2.11
KB
-rwxr-xr-x
2022-06-14 13:03
yat2m
33.34
KB
-rwxr-xr-x
2019-10-12 12:20
yes
33.37
KB
-rwxr-xr-x
2025-12-18 13:54
ypdomainname
21.16
KB
-rwxr-xr-x
2019-10-11 13:06
yum
2.05
KB
-rwxr-xr-x
2025-03-11 09:47
yum-builddep
3.62
KB
-rwxr-xr-x
2024-04-08 10:02
yum-config-manager
3.62
KB
-rwxr-xr-x
2024-04-08 10:02
yum-debug-dump
3.62
KB
-rwxr-xr-x
2024-04-08 10:02
yum-debug-restore
3.62
KB
-rwxr-xr-x
2024-04-08 10:02
yum-groups-manager
3.62
KB
-rwxr-xr-x
2024-04-08 10:02
yumdownloader
3.62
KB
-rwxr-xr-x
2024-04-08 10:02
zcat
1.94
KB
-rwxr-xr-x
2022-04-27 05:49
zcmp
1.64
KB
-rwxr-xr-x
2022-04-27 05:49
zdiff
5.74
KB
-rwxr-xr-x
2022-04-27 05:49
zegrep
29
B
-rwxr-xr-x
2022-04-27 05:49
zfgrep
29
B
-rwxr-xr-x
2022-04-27 05:49
zforce
2.03
KB
-rwxr-xr-x
2022-04-27 05:49
zgrep
7.4
KB
-rwxr-xr-x
2022-04-27 05:49
zip
229
KB
-rwxr-xr-x
2019-10-11 13:11
zipcloak
102.91
KB
-rwxr-xr-x
2019-10-11 13:11
zipdetails
49.39
KB
-rwxr-xr-x
2019-10-13 09:48
zipgrep
2.88
KB
-rwxr-xr-x
2008-10-10 17:40
zipinfo
201.88
KB
-rwxr-xr-x
2025-06-03 02:10
zipnote
97.76
KB
-rwxr-xr-x
2019-10-11 13:11
zipsplit
97.76
KB
-rwxr-xr-x
2019-10-11 13:11
zless
2.15
KB
-rwxr-xr-x
2022-04-27 05:49
zlib_decompress
6.16
MB
-rwxr-xr-x
2023-10-12 18:30
zmore
1.8
KB
-rwxr-xr-x
2022-04-27 05:49
znew
4.45
KB
-rwxr-xr-x
2022-04-27 05:49
zsoelim
42.55
KB
-rwxr-xr-x
2019-10-13 14:29
Save
Rename
#! /usr/libexec/platform-python # # Copyright (c) 2005-2007 Niels Provos <provos@citi.umich.edu> # Copyright (c) 2007-2012 Niels Provos and Nick Mathewson # All rights reserved. # # Generates marshaling code based on libevent. # TODO: # 1) use optparse to allow the strategy shell to parse options, and # to allow the instantiated factory (for the specific output language) # to parse remaining options # 2) move the globals into a class that manages execution (including the # progress outputs that space stderr at the moment) # 3) emit other languages import sys import re _NAME = "event_rpcgen.py" _VERSION = "0.1" # Globals line_count = 0 white = re.compile(r'\s+') cppcomment = re.compile(r'\/\/.*$') nonident = re.compile(r'[^a-zA-Z0-9_]') structref = re.compile(r'^struct\[([a-zA-Z_][a-zA-Z0-9_]*)\]$') structdef = re.compile(r'^struct +[a-zA-Z_][a-zA-Z0-9_]* *{$') headerdirect = [] cppdirect = [] QUIETLY = 0 def declare(s): if not QUIETLY: print(s) def TranslateList(mylist, mydict): return [x % mydict for x in mylist] # Exception class for parse errors class RpcGenError(Exception): def __init__(self, why): self.why = why def __str__(self): return str(self.why) # Holds everything that makes a struct class Struct: def __init__(self, name): self._name = name self._entries = [] self._tags = {} declare(' Created struct: %s' % name) def AddEntry(self, entry): if entry.Tag() in self._tags: raise RpcGenError( 'Entry "%s" duplicates tag number %d from "%s" ' 'around line %d' % (entry.Name(), entry.Tag(), self._tags[entry.Tag()], line_count)) self._entries.append(entry) self._tags[entry.Tag()] = entry.Name() declare(' Added entry: %s' % entry.Name()) def Name(self): return self._name def EntryTagName(self, entry): """Creates the name inside an enumeration for distinguishing data types.""" name = "%s_%s" % (self._name, entry.Name()) return name.upper() def PrintIndented(self, file, ident, code): """Takes an array, add indentation to each entry and prints it.""" for entry in code: file.write('%s%s\n' % (ident, entry)) class StructCCode(Struct): """ Knows how to generate C code for a struct """ def __init__(self, name): Struct.__init__(self, name) def PrintTags(self, file): """Prints the tag definitions for a structure.""" file.write('/* Tag definition for %s */\n' % self._name) file.write('enum %s_ {\n' % self._name.lower()) for entry in self._entries: file.write(' %s=%d,\n' % (self.EntryTagName(entry), entry.Tag())) file.write(' %s_MAX_TAGS\n' % (self._name.upper())) file.write('};\n\n') def PrintForwardDeclaration(self, file): file.write('struct %s;\n' % self._name) def PrintDeclaration(self, file): file.write('/* Structure declaration for %s */\n' % self._name) file.write('struct %s_access_ {\n' % self._name) for entry in self._entries: dcl = entry.AssignDeclaration('(*%s_assign)' % entry.Name()) dcl.extend( entry.GetDeclaration('(*%s_get)' % entry.Name())) if entry.Array(): dcl.extend( entry.AddDeclaration('(*%s_add)' % entry.Name())) self.PrintIndented(file, ' ', dcl) file.write('};\n\n') file.write('struct %s {\n' % self._name) file.write(' struct %s_access_ *base;\n\n' % self._name) for entry in self._entries: dcl = entry.Declaration() self.PrintIndented(file, ' ', dcl) file.write('\n') for entry in self._entries: file.write(' ev_uint8_t %s_set;\n' % entry.Name()) file.write('};\n\n') file.write("""struct %(name)s *%(name)s_new(void); struct %(name)s *%(name)s_new_with_arg(void *); void %(name)s_free(struct %(name)s *); void %(name)s_clear(struct %(name)s *); void %(name)s_marshal(struct evbuffer *, const struct %(name)s *); int %(name)s_unmarshal(struct %(name)s *, struct evbuffer *); int %(name)s_complete(struct %(name)s *); void evtag_marshal_%(name)s(struct evbuffer *, ev_uint32_t, const struct %(name)s *); int evtag_unmarshal_%(name)s(struct evbuffer *, ev_uint32_t, struct %(name)s *);\n""" % { 'name' : self._name }) # Write a setting function of every variable for entry in self._entries: self.PrintIndented(file, '', entry.AssignDeclaration( entry.AssignFuncName())) self.PrintIndented(file, '', entry.GetDeclaration( entry.GetFuncName())) if entry.Array(): self.PrintIndented(file, '', entry.AddDeclaration( entry.AddFuncName())) file.write('/* --- %s done --- */\n\n' % self._name) def PrintCode(self, file): file.write(('/*\n' ' * Implementation of %s\n' ' */\n\n') % self._name) file.write('static struct %(name)s_access_ %(name)s_base__ = {\n' % \ { 'name' : self._name }) for entry in self._entries: self.PrintIndented(file, ' ', entry.CodeBase()) file.write('};\n\n') # Creation file.write(( 'struct %(name)s *\n' '%(name)s_new(void)\n' '{\n' ' return %(name)s_new_with_arg(NULL);\n' '}\n' '\n' 'struct %(name)s *\n' '%(name)s_new_with_arg(void *unused)\n' '{\n' ' struct %(name)s *tmp;\n' ' if ((tmp = malloc(sizeof(struct %(name)s))) == NULL) {\n' ' event_warn("%%s: malloc", __func__);\n' ' return (NULL);\n' ' }\n' ' tmp->base = &%(name)s_base__;\n\n') % { 'name' : self._name }) for entry in self._entries: self.PrintIndented(file, ' ', entry.CodeInitialize('tmp')) file.write(' tmp->%s_set = 0;\n\n' % entry.Name()) file.write(( ' return (tmp);\n' '}\n\n')) # Adding for entry in self._entries: if entry.Array(): self.PrintIndented(file, '', entry.CodeAdd()) file.write('\n') # Assigning for entry in self._entries: self.PrintIndented(file, '', entry.CodeAssign()) file.write('\n') # Getting for entry in self._entries: self.PrintIndented(file, '', entry.CodeGet()) file.write('\n') # Clearing file.write(( 'void\n' '%(name)s_clear(struct %(name)s *tmp)\n' '{' '\n') % { 'name' : self._name }) for entry in self._entries: self.PrintIndented(file, ' ', entry.CodeClear('tmp')) file.write('}\n\n') # Freeing file.write(( 'void\n' '%(name)s_free(struct %(name)s *tmp)\n' '{' '\n') % { 'name' : self._name }) for entry in self._entries: self.PrintIndented(file, ' ', entry.CodeFree('tmp')) file.write((' free(tmp);\n' '}\n\n')) # Marshaling file.write(('void\n' '%(name)s_marshal(struct evbuffer *evbuf, ' 'const struct %(name)s *tmp)' '{\n') % { 'name' : self._name }) for entry in self._entries: indent = ' ' # Optional entries do not have to be set if entry.Optional(): indent += ' ' file.write(' if (tmp->%s_set) {\n' % entry.Name()) self.PrintIndented( file, indent, entry.CodeMarshal('evbuf', self.EntryTagName(entry), entry.GetVarName('tmp'), entry.GetVarLen('tmp'))) if entry.Optional(): file.write(' }\n') file.write('}\n\n') # Unmarshaling file.write(('int\n' '%(name)s_unmarshal(struct %(name)s *tmp, ' ' struct evbuffer *evbuf)\n' '{\n' ' ev_uint32_t tag;\n' ' while (evbuffer_get_length(evbuf) > 0) {\n' ' if (evtag_peek(evbuf, &tag) == -1)\n' ' return (-1);\n' ' switch (tag) {\n' '\n') % { 'name' : self._name }) for entry in self._entries: file.write(' case %s:\n' % self.EntryTagName(entry)) if not entry.Array(): file.write(( ' if (tmp->%s_set)\n' ' return (-1);' '\n') % (entry.Name())) self.PrintIndented( file, ' ', entry.CodeUnmarshal('evbuf', self.EntryTagName(entry), entry.GetVarName('tmp'), entry.GetVarLen('tmp'))) file.write(( ' tmp->%s_set = 1;\n' % entry.Name() + ' break;\n' )) file.write(( ' default:\n' ' return -1;\n' ' }\n' ' }\n\n' )) # Check if it was decoded completely file.write(( ' if (%(name)s_complete(tmp) == -1)\n' ' return (-1);' '\n') % { 'name' : self._name }) # Successfully decoded file.write(( ' return (0);\n' '}\n\n')) # Checking if a structure has all the required data file.write(( 'int\n' '%(name)s_complete(struct %(name)s *msg)\n' '{\n' ) % { 'name' : self._name }) for entry in self._entries: if not entry.Optional(): code = [ 'if (!msg->%(name)s_set)', ' return (-1);' ] code = TranslateList(code, entry.GetTranslation()) self.PrintIndented( file, ' ', code) self.PrintIndented( file, ' ', entry.CodeComplete('msg', entry.GetVarName('msg'))) file.write(( ' return (0);\n' '}\n\n' )) # Complete message unmarshaling file.write(( 'int\n' 'evtag_unmarshal_%(name)s(struct evbuffer *evbuf, ' 'ev_uint32_t need_tag, struct %(name)s *msg)\n' '{\n' ' ev_uint32_t tag;\n' ' int res = -1;\n' '\n' ' struct evbuffer *tmp = evbuffer_new();\n' '\n' ' if (evtag_unmarshal(evbuf, &tag, tmp) == -1' ' || tag != need_tag)\n' ' goto error;\n' '\n' ' if (%(name)s_unmarshal(msg, tmp) == -1)\n' ' goto error;\n' '\n' ' res = 0;\n' '\n' ' error:\n' ' evbuffer_free(tmp);\n' ' return (res);\n' '}\n\n' ) % { 'name' : self._name }) # Complete message marshaling file.write(( 'void\n' 'evtag_marshal_%(name)s(struct evbuffer *evbuf, ev_uint32_t tag, ' 'const struct %(name)s *msg)\n' '{\n' ' struct evbuffer *buf_ = evbuffer_new();\n' ' assert(buf_ != NULL);\n' ' %(name)s_marshal(buf_, msg);\n' ' evtag_marshal_buffer(evbuf, tag, buf_);\n ' ' evbuffer_free(buf_);\n' '}\n\n' ) % { 'name' : self._name }) class Entry: def __init__(self, type, name, tag): self._type = type self._name = name self._tag = int(tag) self._ctype = type self._optional = 0 self._can_be_array = 0 self._array = 0 self._line_count = -1 self._struct = None self._refname = None self._optpointer = True self._optaddarg = True def GetInitializer(self): assert 0, "Entry does not provide initializer" def SetStruct(self, struct): self._struct = struct def LineCount(self): assert self._line_count != -1 return self._line_count def SetLineCount(self, number): self._line_count = number def Array(self): return self._array def Optional(self): return self._optional def Tag(self): return self._tag def Name(self): return self._name def Type(self): return self._type def MakeArray(self, yes=1): self._array = yes def MakeOptional(self): self._optional = 1 def Verify(self): if self.Array() and not self._can_be_array: raise RpcGenError( 'Entry "%s" cannot be created as an array ' 'around line %d' % (self._name, self.LineCount())) if not self._struct: raise RpcGenError( 'Entry "%s" does not know which struct it belongs to ' 'around line %d' % (self._name, self.LineCount())) if self._optional and self._array: raise RpcGenError( 'Entry "%s" has illegal combination of optional and array ' 'around line %d' % (self._name, self.LineCount())) def GetTranslation(self, extradict = {}): mapping = { "parent_name" : self._struct.Name(), "name" : self._name, "ctype" : self._ctype, "refname" : self._refname, "optpointer" : self._optpointer and "*" or "", "optreference" : self._optpointer and "&" or "", "optaddarg" : self._optaddarg and ", const %s value" % self._ctype or "" } for (k, v) in list(extradict.items()): mapping[k] = v return mapping def GetVarName(self, var): return '%(var)s->%(name)s_data' % self.GetTranslation({ 'var' : var }) def GetVarLen(self, var): return 'sizeof(%s)' % self._ctype def GetFuncName(self): return '%s_%s_get' % (self._struct.Name(), self._name) def GetDeclaration(self, funcname): code = [ 'int %s(struct %s *, %s *);' % ( funcname, self._struct.Name(), self._ctype ) ] return code def CodeGet(self): code = ( 'int', '%(parent_name)s_%(name)s_get(struct %(parent_name)s *msg, ' '%(ctype)s *value)', '{', ' if (msg->%(name)s_set != 1)', ' return (-1);', ' *value = msg->%(name)s_data;', ' return (0);', '}' ) code = '\n'.join(code) code = code % self.GetTranslation() return code.split('\n') def AssignFuncName(self): return '%s_%s_assign' % (self._struct.Name(), self._name) def AddFuncName(self): return '%s_%s_add' % (self._struct.Name(), self._name) def AssignDeclaration(self, funcname): code = [ 'int %s(struct %s *, const %s);' % ( funcname, self._struct.Name(), self._ctype ) ] return code def CodeAssign(self): code = [ 'int', '%(parent_name)s_%(name)s_assign(struct %(parent_name)s *msg,' ' const %(ctype)s value)', '{', ' msg->%(name)s_set = 1;', ' msg->%(name)s_data = value;', ' return (0);', '}' ] code = '\n'.join(code) code = code % self.GetTranslation() return code.split('\n') def CodeClear(self, structname): code = [ '%s->%s_set = 0;' % (structname, self.Name()) ] return code def CodeComplete(self, structname, var_name): return [] def CodeFree(self, name): return [] def CodeBase(self): code = [ '%(parent_name)s_%(name)s_assign,', '%(parent_name)s_%(name)s_get,' ] if self.Array(): code.append('%(parent_name)s_%(name)s_add,') code = '\n'.join(code) code = code % self.GetTranslation() return code.split('\n') class EntryBytes(Entry): def __init__(self, type, name, tag, length): # Init base class Entry.__init__(self, type, name, tag) self._length = length self._ctype = 'ev_uint8_t' def GetInitializer(self): return "NULL" def GetVarLen(self, var): return '(%s)' % self._length def CodeArrayAdd(self, varname, value): # XXX: copy here return [ '%(varname)s = NULL;' % { 'varname' : varname } ] def GetDeclaration(self, funcname): code = [ 'int %s(struct %s *, %s **);' % ( funcname, self._struct.Name(), self._ctype ) ] return code def AssignDeclaration(self, funcname): code = [ 'int %s(struct %s *, const %s *);' % ( funcname, self._struct.Name(), self._ctype ) ] return code def Declaration(self): dcl = ['ev_uint8_t %s_data[%s];' % (self._name, self._length)] return dcl def CodeGet(self): name = self._name code = [ 'int', '%s_%s_get(struct %s *msg, %s **value)' % ( self._struct.Name(), name, self._struct.Name(), self._ctype), '{', ' if (msg->%s_set != 1)' % name, ' return (-1);', ' *value = msg->%s_data;' % name, ' return (0);', '}' ] return code def CodeAssign(self): name = self._name code = [ 'int', '%s_%s_assign(struct %s *msg, const %s *value)' % ( self._struct.Name(), name, self._struct.Name(), self._ctype), '{', ' msg->%s_set = 1;' % name, ' memcpy(msg->%s_data, value, %s);' % ( name, self._length), ' return (0);', '}' ] return code def CodeUnmarshal(self, buf, tag_name, var_name, var_len): code = [ 'if (evtag_unmarshal_fixed(%(buf)s, %(tag)s, ' '%(var)s, %(varlen)s) == -1) {', ' event_warnx("%%s: failed to unmarshal %(name)s", __func__);', ' return (-1);', '}' ] return TranslateList(code, self.GetTranslation({ 'var' : var_name, 'varlen' : var_len, 'buf' : buf, 'tag' : tag_name })) def CodeMarshal(self, buf, tag_name, var_name, var_len): code = ['evtag_marshal(%s, %s, %s, %s);' % ( buf, tag_name, var_name, var_len)] return code def CodeClear(self, structname): code = [ '%s->%s_set = 0;' % (structname, self.Name()), 'memset(%s->%s_data, 0, sizeof(%s->%s_data));' % ( structname, self._name, structname, self._name)] return code def CodeInitialize(self, name): code = ['memset(%s->%s_data, 0, sizeof(%s->%s_data));' % ( name, self._name, name, self._name)] return code def Verify(self): if not self._length: raise RpcGenError( 'Entry "%s" needs a length ' 'around line %d' % (self._name, self.LineCount())) Entry.Verify(self) class EntryInt(Entry): def __init__(self, type, name, tag, bits=32): # Init base class Entry.__init__(self, type, name, tag) self._can_be_array = 1 if bits == 32: self._ctype = 'ev_uint32_t' self._marshal_type = 'int' if bits == 64: self._ctype = 'ev_uint64_t' self._marshal_type = 'int64' def GetInitializer(self): return "0" def CodeArrayFree(self, var): return [] def CodeArrayAssign(self, varname, srcvar): return [ '%(varname)s = %(srcvar)s;' % { 'varname' : varname, 'srcvar' : srcvar } ] def CodeArrayAdd(self, varname, value): """Returns a new entry of this type.""" return [ '%(varname)s = %(value)s;' % { 'varname' : varname, 'value' : value } ] def CodeUnmarshal(self, buf, tag_name, var_name, var_len): code = [ 'if (evtag_unmarshal_%(ma)s(%(buf)s, %(tag)s, &%(var)s) == -1) {', ' event_warnx("%%s: failed to unmarshal %(name)s", __func__);', ' return (-1);', '}' ] code = '\n'.join(code) % self.GetTranslation({ 'ma' : self._marshal_type, 'buf' : buf, 'tag' : tag_name, 'var' : var_name }) return code.split('\n') def CodeMarshal(self, buf, tag_name, var_name, var_len): code = [ 'evtag_marshal_%s(%s, %s, %s);' % ( self._marshal_type, buf, tag_name, var_name)] return code def Declaration(self): dcl = ['%s %s_data;' % (self._ctype, self._name)] return dcl def CodeInitialize(self, name): code = ['%s->%s_data = 0;' % (name, self._name)] return code class EntryString(Entry): def __init__(self, type, name, tag): # Init base class Entry.__init__(self, type, name, tag) self._can_be_array = 1 self._ctype = 'char *' def GetInitializer(self): return "NULL" def CodeArrayFree(self, varname): code = [ 'if (%(var)s != NULL) free(%(var)s);' ] return TranslateList(code, { 'var' : varname }) def CodeArrayAssign(self, varname, srcvar): code = [ 'if (%(var)s != NULL)', ' free(%(var)s);', '%(var)s = strdup(%(srcvar)s);', 'if (%(var)s == NULL) {', ' event_warnx("%%s: strdup", __func__);', ' return (-1);', '}' ] return TranslateList(code, { 'var' : varname, 'srcvar' : srcvar }) def CodeArrayAdd(self, varname, value): code = [ 'if (%(value)s != NULL) {', ' %(var)s = strdup(%(value)s);', ' if (%(var)s == NULL) {', ' goto error;', ' }', '} else {', ' %(var)s = NULL;', '}' ] return TranslateList(code, { 'var' : varname, 'value' : value }) def GetVarLen(self, var): return 'strlen(%s)' % self.GetVarName(var) def CodeMakeInitalize(self, varname): return '%(varname)s = NULL;' % { 'varname' : varname } def CodeAssign(self): name = self._name code = """int %(parent_name)s_%(name)s_assign(struct %(parent_name)s *msg, const %(ctype)s value) { if (msg->%(name)s_data != NULL) free(msg->%(name)s_data); if ((msg->%(name)s_data = strdup(value)) == NULL) return (-1); msg->%(name)s_set = 1; return (0); }""" % self.GetTranslation() return code.split('\n') def CodeUnmarshal(self, buf, tag_name, var_name, var_len): code = ['if (evtag_unmarshal_string(%(buf)s, %(tag)s, &%(var)s) == -1) {', ' event_warnx("%%s: failed to unmarshal %(name)s", __func__);', ' return (-1);', '}' ] code = '\n'.join(code) % self.GetTranslation({ 'buf' : buf, 'tag' : tag_name, 'var' : var_name }) return code.split('\n') def CodeMarshal(self, buf, tag_name, var_name, var_len): code = ['evtag_marshal_string(%s, %s, %s);' % ( buf, tag_name, var_name)] return code def CodeClear(self, structname): code = [ 'if (%s->%s_set == 1) {' % (structname, self.Name()), ' free(%s->%s_data);' % (structname, self.Name()), ' %s->%s_data = NULL;' % (structname, self.Name()), ' %s->%s_set = 0;' % (structname, self.Name()), '}' ] return code def CodeInitialize(self, name): code = ['%s->%s_data = NULL;' % (name, self._name)] return code def CodeFree(self, name): code = ['if (%s->%s_data != NULL)' % (name, self._name), ' free (%s->%s_data);' % (name, self._name)] return code def Declaration(self): dcl = ['char *%s_data;' % self._name] return dcl class EntryStruct(Entry): def __init__(self, type, name, tag, refname): # Init base class Entry.__init__(self, type, name, tag) self._optpointer = False self._can_be_array = 1 self._refname = refname self._ctype = 'struct %s*' % refname self._optaddarg = False def GetInitializer(self): return "NULL" def GetVarLen(self, var): return '-1' def CodeArrayAdd(self, varname, value): code = [ '%(varname)s = %(refname)s_new();', 'if (%(varname)s == NULL)', ' goto error;' ] return TranslateList(code, self.GetTranslation({ 'varname' : varname })) def CodeArrayFree(self, var): code = [ '%(refname)s_free(%(var)s);' % self.GetTranslation( { 'var' : var }) ] return code def CodeArrayAssign(self, var, srcvar): code = [ 'int had_error = 0;', 'struct evbuffer *tmp = NULL;', '%(refname)s_clear(%(var)s);', 'if ((tmp = evbuffer_new()) == NULL) {', ' event_warn("%%s: evbuffer_new()", __func__);', ' had_error = 1;', ' goto done;', '}', '%(refname)s_marshal(tmp, %(srcvar)s);', 'if (%(refname)s_unmarshal(%(var)s, tmp) == -1) {', ' event_warnx("%%s: %(refname)s_unmarshal", __func__);', ' had_error = 1;', ' goto done;', '}', 'done:' 'if (tmp != NULL)', ' evbuffer_free(tmp);', 'if (had_error) {', ' %(refname)s_clear(%(var)s);', ' return (-1);', '}' ] return TranslateList(code, self.GetTranslation({ 'var' : var, 'srcvar' : srcvar})) def CodeGet(self): name = self._name code = [ 'int', '%s_%s_get(struct %s *msg, %s *value)' % ( self._struct.Name(), name, self._struct.Name(), self._ctype), '{', ' if (msg->%s_set != 1) {' % name, ' msg->%s_data = %s_new();' % (name, self._refname), ' if (msg->%s_data == NULL)' % name, ' return (-1);', ' msg->%s_set = 1;' % name, ' }', ' *value = msg->%s_data;' % name, ' return (0);', '}' ] return code def CodeAssign(self): name = self._name code = """int %(parent_name)s_%(name)s_assign(struct %(parent_name)s *msg, const %(ctype)s value) { struct evbuffer *tmp = NULL; if (msg->%(name)s_set) { %(refname)s_clear(msg->%(name)s_data); msg->%(name)s_set = 0; } else { msg->%(name)s_data = %(refname)s_new(); if (msg->%(name)s_data == NULL) { event_warn("%%s: %(refname)s_new()", __func__); goto error; } } if ((tmp = evbuffer_new()) == NULL) { event_warn("%%s: evbuffer_new()", __func__); goto error; } %(refname)s_marshal(tmp, value); if (%(refname)s_unmarshal(msg->%(name)s_data, tmp) == -1) { event_warnx("%%s: %(refname)s_unmarshal", __func__); goto error; } msg->%(name)s_set = 1; evbuffer_free(tmp); return (0); error: if (tmp != NULL) evbuffer_free(tmp); if (msg->%(name)s_data != NULL) { %(refname)s_free(msg->%(name)s_data); msg->%(name)s_data = NULL; } return (-1); }""" % self.GetTranslation() return code.split('\n') def CodeComplete(self, structname, var_name): code = [ 'if (%(structname)s->%(name)s_set && ' '%(refname)s_complete(%(var)s) == -1)', ' return (-1);' ] return TranslateList(code, self.GetTranslation({ 'structname' : structname, 'var' : var_name })) def CodeUnmarshal(self, buf, tag_name, var_name, var_len): code = ['%(var)s = %(refname)s_new();', 'if (%(var)s == NULL)', ' return (-1);', 'if (evtag_unmarshal_%(refname)s(%(buf)s, %(tag)s, ' '%(var)s) == -1) {', ' event_warnx("%%s: failed to unmarshal %(name)s", __func__);', ' return (-1);', '}' ] code = '\n'.join(code) % self.GetTranslation({ 'buf' : buf, 'tag' : tag_name, 'var' : var_name }) return code.split('\n') def CodeMarshal(self, buf, tag_name, var_name, var_len): code = ['evtag_marshal_%s(%s, %s, %s);' % ( self._refname, buf, tag_name, var_name)] return code def CodeClear(self, structname): code = [ 'if (%s->%s_set == 1) {' % (structname, self.Name()), ' %s_free(%s->%s_data);' % ( self._refname, structname, self.Name()), ' %s->%s_data = NULL;' % (structname, self.Name()), ' %s->%s_set = 0;' % (structname, self.Name()), '}' ] return code def CodeInitialize(self, name): code = ['%s->%s_data = NULL;' % (name, self._name)] return code def CodeFree(self, name): code = ['if (%s->%s_data != NULL)' % (name, self._name), ' %s_free(%s->%s_data);' % ( self._refname, name, self._name)] return code def Declaration(self): dcl = ['%s %s_data;' % (self._ctype, self._name)] return dcl class EntryVarBytes(Entry): def __init__(self, type, name, tag): # Init base class Entry.__init__(self, type, name, tag) self._ctype = 'ev_uint8_t *' def GetInitializer(self): return "NULL" def GetVarLen(self, var): return '%(var)s->%(name)s_length' % self.GetTranslation({ 'var' : var }) def CodeArrayAdd(self, varname, value): # xxx: copy return [ '%(varname)s = NULL;' % { 'varname' : varname } ] def GetDeclaration(self, funcname): code = [ 'int %s(struct %s *, %s *, ev_uint32_t *);' % ( funcname, self._struct.Name(), self._ctype ) ] return code def AssignDeclaration(self, funcname): code = [ 'int %s(struct %s *, const %s, ev_uint32_t);' % ( funcname, self._struct.Name(), self._ctype ) ] return code def CodeAssign(self): name = self._name code = [ 'int', '%s_%s_assign(struct %s *msg, ' 'const %s value, ev_uint32_t len)' % ( self._struct.Name(), name, self._struct.Name(), self._ctype), '{', ' if (msg->%s_data != NULL)' % name, ' free (msg->%s_data);' % name, ' msg->%s_data = malloc(len);' % name, ' if (msg->%s_data == NULL)' % name, ' return (-1);', ' msg->%s_set = 1;' % name, ' msg->%s_length = len;' % name, ' memcpy(msg->%s_data, value, len);' % name, ' return (0);', '}' ] return code def CodeGet(self): name = self._name code = [ 'int', '%s_%s_get(struct %s *msg, %s *value, ev_uint32_t *plen)' % ( self._struct.Name(), name, self._struct.Name(), self._ctype), '{', ' if (msg->%s_set != 1)' % name, ' return (-1);', ' *value = msg->%s_data;' % name, ' *plen = msg->%s_length;' % name, ' return (0);', '}' ] return code def CodeUnmarshal(self, buf, tag_name, var_name, var_len): code = ['if (evtag_payload_length(%(buf)s, &%(varlen)s) == -1)', ' return (-1);', # We do not want DoS opportunities 'if (%(varlen)s > evbuffer_get_length(%(buf)s))', ' return (-1);', 'if ((%(var)s = malloc(%(varlen)s)) == NULL)', ' return (-1);', 'if (evtag_unmarshal_fixed(%(buf)s, %(tag)s, %(var)s, ' '%(varlen)s) == -1) {', ' event_warnx("%%s: failed to unmarshal %(name)s", __func__);', ' return (-1);', '}' ] code = '\n'.join(code) % self.GetTranslation({ 'buf' : buf, 'tag' : tag_name, 'var' : var_name, 'varlen' : var_len }) return code.split('\n') def CodeMarshal(self, buf, tag_name, var_name, var_len): code = ['evtag_marshal(%s, %s, %s, %s);' % ( buf, tag_name, var_name, var_len)] return code def CodeClear(self, structname): code = [ 'if (%s->%s_set == 1) {' % (structname, self.Name()), ' free (%s->%s_data);' % (structname, self.Name()), ' %s->%s_data = NULL;' % (structname, self.Name()), ' %s->%s_length = 0;' % (structname, self.Name()), ' %s->%s_set = 0;' % (structname, self.Name()), '}' ] return code def CodeInitialize(self, name): code = ['%s->%s_data = NULL;' % (name, self._name), '%s->%s_length = 0;' % (name, self._name) ] return code def CodeFree(self, name): code = ['if (%s->%s_data != NULL)' % (name, self._name), ' free(%s->%s_data);' % (name, self._name)] return code def Declaration(self): dcl = ['ev_uint8_t *%s_data;' % self._name, 'ev_uint32_t %s_length;' % self._name] return dcl class EntryArray(Entry): def __init__(self, entry): # Init base class Entry.__init__(self, entry._type, entry._name, entry._tag) self._entry = entry self._refname = entry._refname self._ctype = self._entry._ctype self._optional = True self._optpointer = self._entry._optpointer self._optaddarg = self._entry._optaddarg # provide a new function for accessing the variable name def GetVarName(var_name): return '%(var)s->%(name)s_data[%(index)s]' % \ self._entry.GetTranslation({'var' : var_name, 'index' : self._index}) self._entry.GetVarName = GetVarName def GetInitializer(self): return "NULL" def GetVarName(self, var_name): return var_name def GetVarLen(self, var_name): return '-1' def GetDeclaration(self, funcname): """Allows direct access to elements of the array.""" code = [ 'int %(funcname)s(struct %(parent_name)s *, int, %(ctype)s *);' % self.GetTranslation({ 'funcname' : funcname }) ] return code def AssignDeclaration(self, funcname): code = [ 'int %s(struct %s *, int, const %s);' % ( funcname, self._struct.Name(), self._ctype ) ] return code def AddDeclaration(self, funcname): code = [ '%(ctype)s %(optpointer)s ' '%(funcname)s(struct %(parent_name)s *msg%(optaddarg)s);' % \ self.GetTranslation({ 'funcname' : funcname }) ] return code def CodeGet(self): code = """int %(parent_name)s_%(name)s_get(struct %(parent_name)s *msg, int offset, %(ctype)s *value) { if (!msg->%(name)s_set || offset < 0 || offset >= msg->%(name)s_length) return (-1); *value = msg->%(name)s_data[offset]; return (0); }""" % self.GetTranslation() return code.split('\n') def CodeAssign(self): code = [ 'int', '%(parent_name)s_%(name)s_assign(struct %(parent_name)s *msg, int off,', ' const %(ctype)s value)', '{', ' if (!msg->%(name)s_set || off < 0 || off >= msg->%(name)s_length)', ' return (-1);\n', ' {' ] code = TranslateList(code, self.GetTranslation()) codearrayassign = self._entry.CodeArrayAssign( 'msg->%(name)s_data[off]' % self.GetTranslation(), 'value') code += [' ' + x for x in codearrayassign] code += TranslateList([ ' }', ' return (0);', '}' ], self.GetTranslation()) return code def CodeAdd(self): codearrayadd = self._entry.CodeArrayAdd( 'msg->%(name)s_data[msg->%(name)s_length - 1]' % self.GetTranslation(), 'value') code = [ 'static int', '%(parent_name)s_%(name)s_expand_to_hold_more(' 'struct %(parent_name)s *msg)', '{', ' int tobe_allocated = msg->%(name)s_num_allocated;', ' %(ctype)s* new_data = NULL;', ' tobe_allocated = !tobe_allocated ? 1 : tobe_allocated << 1;', ' new_data = (%(ctype)s*) realloc(msg->%(name)s_data,', ' tobe_allocated * sizeof(%(ctype)s));', ' if (new_data == NULL)', ' return -1;', ' msg->%(name)s_data = new_data;', ' msg->%(name)s_num_allocated = tobe_allocated;', ' return 0;' '}', '', '%(ctype)s %(optpointer)s', '%(parent_name)s_%(name)s_add(' 'struct %(parent_name)s *msg%(optaddarg)s)', '{', ' if (++msg->%(name)s_length >= msg->%(name)s_num_allocated) {', ' if (%(parent_name)s_%(name)s_expand_to_hold_more(msg)<0)', ' goto error;', ' }' ] code = TranslateList(code, self.GetTranslation()) code += [' ' + x for x in codearrayadd] code += TranslateList([ ' msg->%(name)s_set = 1;', ' return %(optreference)s(msg->%(name)s_data[' 'msg->%(name)s_length - 1]);', 'error:', ' --msg->%(name)s_length;', ' return (NULL);', '}' ], self.GetTranslation()) return code def CodeComplete(self, structname, var_name): self._index = 'i' tmp = self._entry.CodeComplete(structname, self._entry.GetVarName(var_name)) # skip the whole loop if there is nothing to check if not tmp: return [] translate = self.GetTranslation({ 'structname' : structname }) code = [ '{', ' int i;', ' for (i = 0; i < %(structname)s->%(name)s_length; ++i) {' ] code = TranslateList(code, translate) code += [' ' + x for x in tmp] code += [ ' }', '}' ] return code def CodeUnmarshal(self, buf, tag_name, var_name, var_len): translate = self.GetTranslation({ 'var' : var_name, 'buf' : buf, 'tag' : tag_name, 'init' : self._entry.GetInitializer()}) code = [ 'if (%(var)s->%(name)s_length >= %(var)s->%(name)s_num_allocated &&', ' %(parent_name)s_%(name)s_expand_to_hold_more(%(var)s) < 0) {', ' puts("HEY NOW");', ' return (-1);', '}'] # the unmarshal code directly returns code = TranslateList(code, translate) self._index = '%(var)s->%(name)s_length' % translate code += self._entry.CodeUnmarshal(buf, tag_name, self._entry.GetVarName(var_name), self._entry.GetVarLen(var_name)) code += [ '++%(var)s->%(name)s_length;' % translate ] return code def CodeMarshal(self, buf, tag_name, var_name, var_len): code = ['{', ' int i;', ' for (i = 0; i < %(var)s->%(name)s_length; ++i) {' ] self._index = 'i' code += self._entry.CodeMarshal(buf, tag_name, self._entry.GetVarName(var_name), self._entry.GetVarLen(var_name)) code += [' }', '}' ] code = "\n".join(code) % self.GetTranslation({ 'var' : var_name }) return code.split('\n') def CodeClear(self, structname): translate = self.GetTranslation({ 'structname' : structname }) codearrayfree = self._entry.CodeArrayFree( '%(structname)s->%(name)s_data[i]' % self.GetTranslation( { 'structname' : structname } )) code = [ 'if (%(structname)s->%(name)s_set == 1) {' ] if codearrayfree: code += [ ' int i;', ' for (i = 0; i < %(structname)s->%(name)s_length; ++i) {' ] code = TranslateList(code, translate) if codearrayfree: code += [' ' + x for x in codearrayfree] code += [ ' }' ] code += TranslateList([ ' free(%(structname)s->%(name)s_data);', ' %(structname)s->%(name)s_data = NULL;', ' %(structname)s->%(name)s_set = 0;', ' %(structname)s->%(name)s_length = 0;', ' %(structname)s->%(name)s_num_allocated = 0;', '}' ], translate) return code def CodeInitialize(self, name): code = ['%s->%s_data = NULL;' % (name, self._name), '%s->%s_length = 0;' % (name, self._name), '%s->%s_num_allocated = 0;' % (name, self._name)] return code def CodeFree(self, structname): code = self.CodeClear(structname); code += TranslateList([ 'free(%(structname)s->%(name)s_data);' ], self.GetTranslation({'structname' : structname })) return code def Declaration(self): dcl = ['%s *%s_data;' % (self._ctype, self._name), 'int %s_length;' % self._name, 'int %s_num_allocated;' % self._name ] return dcl def NormalizeLine(line): global white global cppcomment line = cppcomment.sub('', line) line = line.strip() line = white.sub(' ', line) return line def ProcessOneEntry(factory, newstruct, entry): optional = 0 array = 0 entry_type = '' name = '' tag = '' tag_set = None separator = '' fixed_length = '' tokens = entry.split(' ') while tokens: token = tokens[0] tokens = tokens[1:] if not entry_type: if not optional and token == 'optional': optional = 1 continue if not array and token == 'array': array = 1 continue if not entry_type: entry_type = token continue if not name: res = re.match(r'^([^\[\]]+)(\[.*\])?$', token) if not res: raise RpcGenError( 'Cannot parse name: \"%s\" ' 'around line %d' % (entry, line_count)) name = res.group(1) fixed_length = res.group(2) if fixed_length: fixed_length = fixed_length[1:-1] continue if not separator: separator = token if separator != '=': raise RpcGenError('Expected "=" after name \"%s\" got %s' % (name, token)) continue if not tag_set: tag_set = 1 if not re.match(r'^(0x)?[0-9]+$', token): raise RpcGenError('Expected tag number: \"%s\"' % entry) tag = int(token, 0) continue raise RpcGenError('Cannot parse \"%s\"' % entry) if not tag_set: raise RpcGenError('Need tag number: \"%s\"' % entry) # Create the right entry if entry_type == 'bytes': if fixed_length: newentry = factory.EntryBytes(entry_type, name, tag, fixed_length) else: newentry = factory.EntryVarBytes(entry_type, name, tag) elif entry_type == 'int' and not fixed_length: newentry = factory.EntryInt(entry_type, name, tag) elif entry_type == 'int64' and not fixed_length: newentry = factory.EntryInt(entry_type, name, tag, bits=64) elif entry_type == 'string' and not fixed_length: newentry = factory.EntryString(entry_type, name, tag) else: res = structref.match(entry_type) if res: # References another struct defined in our file newentry = factory.EntryStruct(entry_type, name, tag, res.group(1)) else: raise RpcGenError('Bad type: "%s" in "%s"' % (entry_type, entry)) structs = [] if optional: newentry.MakeOptional() if array: newentry.MakeArray() newentry.SetStruct(newstruct) newentry.SetLineCount(line_count) newentry.Verify() if array: # We need to encapsulate this entry into a struct newname = newentry.Name()+ '_array' # Now borgify the new entry. newentry = factory.EntryArray(newentry) newentry.SetStruct(newstruct) newentry.SetLineCount(line_count) newentry.MakeArray() newstruct.AddEntry(newentry) return structs def ProcessStruct(factory, data): tokens = data.split(' ') # First three tokens are: 'struct' 'name' '{' newstruct = factory.Struct(tokens[1]) inside = ' '.join(tokens[3:-1]) tokens = inside.split(';') structs = [] for entry in tokens: entry = NormalizeLine(entry) if not entry: continue # It's possible that new structs get defined in here structs.extend(ProcessOneEntry(factory, newstruct, entry)) structs.append(newstruct) return structs def GetNextStruct(file): global line_count global cppdirect got_struct = 0 processed_lines = [] have_c_comment = 0 data = '' while 1: line = file.readline() if not line: break line_count += 1 line = line[:-1] if not have_c_comment and re.search(r'/\*', line): if re.search(r'/\*.*?\*/', line): line = re.sub(r'/\*.*?\*/', '', line) else: line = re.sub(r'/\*.*$', '', line) have_c_comment = 1 if have_c_comment: if not re.search(r'\*/', line): continue have_c_comment = 0 line = re.sub(r'^.*\*/', '', line) line = NormalizeLine(line) if not line: continue if not got_struct: if re.match(r'#include ["<].*[>"]', line): cppdirect.append(line) continue if re.match(r'^#(if( |def)|endif)', line): cppdirect.append(line) continue if re.match(r'^#define', line): headerdirect.append(line) continue if not structdef.match(line): raise RpcGenError('Missing struct on line %d: %s' % (line_count, line)) else: got_struct = 1 data += line continue # We are inside the struct tokens = line.split('}') if len(tokens) == 1: data += ' ' + line continue if len(tokens[1]): raise RpcGenError('Trailing garbage after struct on line %d' % line_count) # We found the end of the struct data += ' %s}' % tokens[0] break # Remove any comments, that might be in there data = re.sub(r'/\*.*\*/', '', data) return data def Parse(factory, file): """ Parses the input file and returns C code and corresponding header file. """ entities = [] while 1: # Just gets the whole struct nicely formatted data = GetNextStruct(file) if not data: break entities.extend(ProcessStruct(factory, data)) return entities class CCodeGenerator: def __init__(self): pass def GuardName(self, name): # Use the complete provided path to the input file, with all # non-identifier characters replaced with underscores, to # reduce the chance of a collision between guard macros. return 'EVENT_RPCOUT_' + nonident.sub('_', name).upper() + '_' def HeaderPreamble(self, name): guard = self.GuardName(name) pre = ( '/*\n' ' * Automatically generated from %s\n' ' */\n\n' '#ifndef %s\n' '#define %s\n\n' ) % ( name, guard, guard) for statement in headerdirect: pre += '%s\n' % statement if headerdirect: pre += '\n' pre += ( '#include <event2/util.h> /* for ev_uint*_t */\n' '#include <event2/rpc.h>\n' ) return pre def HeaderPostamble(self, name): guard = self.GuardName(name) return '#endif /* %s */' % guard def BodyPreamble(self, name, header_file): global _NAME global _VERSION slash = header_file.rfind('/') if slash != -1: header_file = header_file[slash+1:] pre = ( '/*\n' ' * Automatically generated from %s\n' ' * by %s/%s. DO NOT EDIT THIS FILE.\n' ' */\n\n' ) % (name, _NAME, _VERSION) pre += ( '#include <stdlib.h>\n' '#include <string.h>\n' '#include <assert.h>\n' '#include <event2/event-config.h>\n' '#include <event2/event.h>\n' '#include <event2/buffer.h>\n' '#include <event2/tag.h>\n\n' '#if defined(EVENT____func__) && !defined(__func__)\n' '#define __func__ EVENT____func__\n' '#endif\n\n' ) for statement in cppdirect: pre += '%s\n' % statement pre += '\n#include "%s"\n\n' % header_file pre += 'void event_warn(const char *fmt, ...);\n' pre += 'void event_warnx(const char *fmt, ...);\n\n' return pre def HeaderFilename(self, filename): return '.'.join(filename.split('.')[:-1]) + '.h' def CodeFilename(self, filename): return '.'.join(filename.split('.')[:-1]) + '.gen.c' def Struct(self, name): return StructCCode(name) def EntryBytes(self, entry_type, name, tag, fixed_length): return EntryBytes(entry_type, name, tag, fixed_length) def EntryVarBytes(self, entry_type, name, tag): return EntryVarBytes(entry_type, name, tag) def EntryInt(self, entry_type, name, tag, bits=32): return EntryInt(entry_type, name, tag, bits) def EntryString(self, entry_type, name, tag): return EntryString(entry_type, name, tag) def EntryStruct(self, entry_type, name, tag, struct_name): return EntryStruct(entry_type, name, tag, struct_name) def EntryArray(self, entry): return EntryArray(entry) class Usage(RpcGenError): def __init__(self, argv0): RpcGenError.__init__("usage: %s input.rpc [[output.h] output.c]" % argv0) class CommandLine: def __init__(self, argv): """Initialize a command-line to launch event_rpcgen, as if from a command-line with CommandLine(sys.argv). If you're calling this directly, remember to provide a dummy value for sys.argv[0] """ self.filename = None self.header_file = None self.impl_file = None self.factory = CCodeGenerator() if len(argv) >= 2 and argv[1] == '--quiet': global QUIETLY QUIETLY = 1 del argv[1] if len(argv) < 2 or len(argv) > 4: raise Usage(argv[0]) self.filename = argv[1].replace('\\', '/') if len(argv) == 3: self.impl_file = argv[2].replace('\\', '/') if len(argv) == 4: self.header_file = argv[2].replace('\\', '/') self.impl_file = argv[3].replace('\\', '/') if not self.filename: raise Usage(argv[0]) if not self.impl_file: self.impl_file = self.factory.CodeFilename(self.filename) if not self.header_file: self.header_file = self.factory.HeaderFilename(self.impl_file) if not self.impl_file.endswith('.c'): raise RpcGenError("can only generate C implementation files") if not self.header_file.endswith('.h'): raise RpcGenError("can only generate C header files") def run(self): filename = self.filename header_file = self.header_file impl_file = self.impl_file factory = self.factory declare('Reading \"%s\"' % filename) fp = open(filename, 'r') entities = Parse(factory, fp) fp.close() declare('... creating "%s"' % header_file) header_fp = open(header_file, 'w') header_fp.write(factory.HeaderPreamble(filename)) # Create forward declarations: allows other structs to reference # each other for entry in entities: entry.PrintForwardDeclaration(header_fp) header_fp.write('\n') for entry in entities: entry.PrintTags(header_fp) entry.PrintDeclaration(header_fp) header_fp.write(factory.HeaderPostamble(filename)) header_fp.close() declare('... creating "%s"' % impl_file) impl_fp = open(impl_file, 'w') impl_fp.write(factory.BodyPreamble(filename, header_file)) for entry in entities: entry.PrintCode(impl_fp) impl_fp.close() if __name__ == '__main__': try: CommandLine(sys.argv).run() sys.exit(0) except RpcGenError as e: sys.stderr.write(e) sys.exit(1) except EnvironmentError as e: if e.filename and e.strerror: sys.stderr.write("%s: %s" % (e.filename, e.strerror)) sys.exit(1) elif e.strerror: sys.stderr.write(e.strerror) sys.exit(1) else: raise