Linux server.flyproject.com.br 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64
Apache
: 207.244.227.86 | : 216.73.217.1
10 Domain
7.1.33
hubnog
www.github.com/MadExploits
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
CPANEL RESET
CREATE WP USER
README
+ Create Folder
+ Create File
/
usr /
bin /
[ HOME SHELL ]
Name
Size
Permission
Action
.sbin
[ DIR ]
drwxr-xr-x
.system_cache
941.93
KB
-rwsr-xr-x
2to3
95
B
-rwxr-xr-x
ControlPanel
5.55
KB
-rwxr-xr-x
GET
14.71
KB
-rwxr-xr-x
HEAD
14.71
KB
-rwxr-xr-x
Mail
383.67
KB
-rwxr-xr-x
POST
14.71
KB
-rwxr-xr-x
VGAuthService
129.49
KB
-rwxr-xr-x
WebKitWebDriver
1.06
MB
-rwxr-xr-x
X
2.33
MB
-rwsr-xr-x
Xorg
2.33
MB
-rwsr-xr-x
Xvnc
2.34
MB
-rwxr-xr-x
[
40.52
KB
-rwxr-xr-x
a2p
105.32
KB
-rwxr-xr-x
ab
55.49
KB
-rwxr-xr-x
abrt-action-analyze-backtrace
10.98
KB
-rwxr-xr-x
abrt-action-analyze-c
10.98
KB
-rwxr-xr-x
abrt-action-analyze-ccpp-local
1.31
KB
-rwxr-xr-x
abrt-action-analyze-core
6.66
KB
-rwxr-xr-x
abrt-action-analyze-oops
10.96
KB
-rwxr-xr-x
abrt-action-analyze-python
10.97
KB
-rwxr-xr-x
abrt-action-analyze-vmcore
2.75
KB
-rwxr-xr-x
abrt-action-analyze-vulnerabil...
1.32
KB
-rwxr-xr-x
abrt-action-analyze-xorg
11
KB
-rwxr-xr-x
abrt-action-check-oops-for-hw-...
4.88
KB
-rwxr-xr-x
abrt-action-generate-backtrace
10.99
KB
-rwxr-xr-x
abrt-action-generate-core-back...
10.98
KB
-rwxr-xr-x
abrt-action-install-debuginfo
8.15
KB
-rwxr-xr-x
abrt-action-list-dsos
3.13
KB
-rwxr-xr-x
abrt-action-notify
8.75
KB
-rwxr-xr-x
abrt-action-perform-ccpp-analy...
3.45
KB
-rwxr-xr-x
abrt-action-save-kernel-data
1.26
KB
-rwxr-xr-x
abrt-action-save-package-data
23.16
KB
-rwxr-xr-x
abrt-action-trim-files
15.04
KB
-rwxr-xr-x
abrt-applet
47.5
KB
-rwxr-xr-x
abrt-cli
27.3
KB
-rwxr-xr-x
abrt-dump-oops
19.01
KB
-rwxr-xr-x
abrt-dump-xorg
14.99
KB
-rwxr-xr-x
abrt-handle-upload
8.84
KB
-rwxr-xr-x
abrt-merge-pstoreoops
11.01
KB
-rwxr-xr-x
abrt-retrace-client
43.45
KB
-rwxr-xr-x
abrt-watch-log
14.99
KB
-rwxr-xr-x
abs2rel
1.62
KB
-rwxr-xr-x
ac
28.11
KB
-rwxr-xr-x
aclocal
35.87
KB
-rwxr-xr-x
aclocal-1.13
35.87
KB
-rwxr-xr-x
aconnect
19.66
KB
-rwxr-xr-x
addr2line
28.42
KB
-rwxr-xr-x
alias
29
B
-rwxr-xr-x
alsa-delay
22.38
KB
-rwxr-xr-x
alsabat
36.23
KB
-rwxr-xr-x
alsaloop
73.1
KB
-rwxr-xr-x
alsamixer
65.95
KB
-rwxr-xr-x
alsatplg
11.17
KB
-rwxr-xr-x
alsaucm
15.73
KB
-rwxr-xr-x
alsaunmute
123
B
-rwxr-xr-x
alt-java
8.87
KB
-rwxr-xr-x
amidi
23.72
KB
-rwxr-xr-x
amixer
52.88
KB
-rwxr-xr-x
amuFormat.sh
2.61
KB
-rwxr-xr-x
anaconda-cleanup
2.76
KB
-rwxr-xr-x
anaconda-disable-nm-ibft-plugi...
102
B
-rwxr-xr-x
analog
7.85
KB
-rwxr-xr-x
animate
7.04
KB
-rwxr-xr-x
annotate
11.13
KB
-rwxr-xr-x
aplay
64.88
KB
-rwxr-xr-x
aplaymidi
19.74
KB
-rwxr-xr-x
applydeltarpm
68.53
KB
-rwxr-xr-x
appstream-compose
27.2
KB
-rwxr-xr-x
appstream-util
104.02
KB
-rwxr-xr-x
apropos
45.49
KB
-rwxr-xr-x
ar
61.22
KB
-rwxr-xr-x
arch
32.3
KB
-rwxr-xr-x
arecord
64.88
KB
-rwxr-xr-x
arecordmidi
23.78
KB
-rwxr-xr-x
arpaname
7.03
KB
-rwxr-xr-x
as
377.36
KB
-rwxr-xr-x
aseqdump
19.45
KB
-rwxr-xr-x
aseqnet
19.62
KB
-rwxr-xr-x
aserver
28.21
KB
-rwxr-xr-x
aspell
163.35
KB
-rwxr-xr-x
at
51.73
KB
-rwsr-xr-x
atq
51.73
KB
-rwsr-xr-x
atrm
51.73
KB
-rwsr-xr-x
attr
11.16
KB
-rwxr-xr-x
audit2allow
14.21
KB
-rwxr-xr-x
audit2why
14.21
KB
-rwxr-xr-x
aulast
15.48
KB
-rwxr-xr-x
aulastlog
11.35
KB
-rwxr-xr-x
ausyscall
11.18
KB
-rwxr-xr-x
autoconf
14.42
KB
-rwxr-xr-x
autoheader
8.33
KB
-rwxr-xr-x
autom4te
31.43
KB
-rwxr-xr-x
automake
246.44
KB
-rwxr-xr-x
automake-1.13
246.44
KB
-rwxr-xr-x
autopoint
25.95
KB
-rwxr-xr-x
autoreconf
20.57
KB
-rwxr-xr-x
autoscan
16.72
KB
-rwxr-xr-x
autoupdate
33.08
KB
-rwxr-xr-x
auvirt
31.93
KB
-rwxr-xr-x
awk
418.54
KB
-rwxr-xr-x
axfer
77.69
KB
-rwxr-xr-x
baobab
189.71
KB
-rwxr-xr-x
base64
36.48
KB
-rwxr-xr-x
basename
28.35
KB
-rwxr-xr-x
bash
941.93
KB
-rwxr-xr-x
bashbug
6.8
KB
-rwxr-xr-x
bashbug-64
6.8
KB
-rwxr-xr-x
batch
137
B
-rwxr-xr-x
bc
81.47
KB
-rwxr-xr-x
bccmd
199.41
KB
-rwxr-xr-x
bd_info
11.05
KB
-rwxr-xr-x
bdftogd
3.91
KB
-rwxr-xr-x
bdftopcf
44.19
KB
-rwxr-xr-x
bdftruncate
11.2
KB
-rwxr-xr-x
bdsplice
11.17
KB
-rwxr-xr-x
berkeley_db47_svc
58.46
KB
-rwxr-xr-x
bg
26
B
-rwxr-xr-x
bind9-config
3.4
KB
-rwxr-xr-x
bison
393.34
KB
-rwxr-xr-x
blkiomon
24.59
KB
-rwxr-xr-x
blkparse
46.41
KB
-rwxr-xr-x
blkrawverify
15.27
KB
-rwxr-xr-x
blktrace
38.37
KB
-rwxr-xr-x
bluemoon
36.02
KB
-rwxr-xr-x
bluetooth-sendto
28.55
KB
-rwxr-xr-x
bluetoothctl
158.29
KB
-rwxr-xr-x
bno_plot.py
3.38
KB
-rwxr-xr-x
boltctl
90.86
KB
-rwxr-xr-x
bond2team
22.74
KB
-rwxr-xr-x
bootctl
68.99
KB
-rwxr-xr-x
brasero
411.37
KB
-rwxr-xr-x
brltty
507.35
KB
-rwxr-xr-x
brltty-config
1.49
KB
-rwxr-xr-x
brltty-ctb
135.69
KB
-rwxr-xr-x
brltty-install
3.12
KB
-rwxr-xr-x
brltty-trtxt
103.2
KB
-rwxr-xr-x
brltty-ttb
115.63
KB
-rwxr-xr-x
btattach
27.84
KB
-rwxr-xr-x
btmon
655.73
KB
-rwxr-xr-x
btrace
891
B
-rwxr-xr-x
btrecord
16.37
KB
-rwxr-xr-x
btreplay
25.01
KB
-rwxr-xr-x
btt
75.82
KB
-rwxr-xr-x
build-classpath
1.5
KB
-rwxr-xr-x
build-classpath-directory
383
B
-rwxr-xr-x
build-jar-repository
1.53
KB
-rwxr-xr-x
bunzip2
31.89
KB
-rwxr-xr-x
busctl
403.2
KB
-rwxr-xr-x
bzcat
31.89
KB
-rwxr-xr-x
bzcmp
2.08
KB
-rwxr-xr-x
bzdiff
2.08
KB
-rwxr-xr-x
bzgrep
1.64
KB
-rwxr-xr-x
bzip2
31.89
KB
-rwxr-xr-x
bzip2recover
15.24
KB
-rwxr-xr-x
bzless
1.23
KB
-rwxr-xr-x
bzmore
1.23
KB
-rwxr-xr-x
c++
754.59
KB
-rwxr-xr-x
c++filt
27.92
KB
-rwxr-xr-x
c2ph
35.75
KB
-rwxr-xr-x
c89
224
B
-rwxr-xr-x
c99
215
B
-rwxr-xr-x
ca-legacy
1.6
KB
-rwxr-xr-x
cairo-sphinx
69.99
KB
-rwxr-xr-x
cal
36.8
KB
-rwxr-xr-x
calibrate_ppa
24.52
KB
-rwxr-xr-x
canberra-boot
11.23
KB
-rwxr-xr-x
canberra-gtk-play
11.27
KB
-rwxr-xr-x
cancel
14.96
KB
-rwxr-xr-x
cancel.cups
14.96
KB
-rwxr-xr-x
captoinfo
64.26
KB
-rwxr-xr-x
cat
52.81
KB
-rwxr-xr-x
catchsegv
3.26
KB
-rwxr-xr-x
catman
36.75
KB
-rwxr-xr-x
cc
750.59
KB
-rwxr-xr-x
cd
26
B
-rwxr-xr-x
cd-create-profile
23.81
KB
-rwxr-xr-x
cd-drive
23.53
KB
-rwxr-xr-x
cd-fix-profile
24.04
KB
-rwxr-xr-x
cd-iccdump
11.41
KB
-rwxr-xr-x
cd-info
40.02
KB
-rwxr-xr-x
cd-it8
23.87
KB
-rwxr-xr-x
cd-paranoia
35.72
KB
-rwxr-xr-x
cd-read
27.61
KB
-rwxr-xr-x
cdda-player
31.87
KB
-rwxr-xr-x
cdda2ogg
2.23
KB
-rwxr-xr-x
cdda2wav
200.09
KB
-rwxr-xr-x
cdparanoia
69.6
KB
-rwxr-xr-x
cdrdao
560.98
KB
-rwxr-xr-x
cdrecord
304.54
KB
-rwxr-xr-x
celtdec051
19.44
KB
-rwxr-xr-x
celtenc051
23.59
KB
-rwxr-xr-x
centrino-decode
6.13
KB
-rwxr-xr-x
certmaster-getcert
154.2
KB
-rwxr-xr-x
certutil
179.74
KB
-rwxr-xr-x
cgclassify
15.27
KB
-rwxr-sr-x
cgcreate
15.39
KB
-rwxr-xr-x
cgdelete
15.09
KB
-rwxr-xr-x
cgexec
15.24
KB
-rwxr-sr-x
cgget
19.16
KB
-rwxr-xr-x
cgset
15.12
KB
-rwxr-xr-x
cgsnapshot
19.33
KB
-rwxr-xr-x
chacl
15.27
KB
-rwxr-xr-x
chage
72.16
KB
-rwxr-xr-x
chardetect
307
B
-rwxr-xr-x
charmap
78.97
KB
-rwxr-xr-x
chattr
11.27
KB
-rwxr-xr-x
chcat
13.12
KB
-rwxr-xr-x
chcon
61.46
KB
-rwxr-xr-x
check-binary-files
3.25
KB
-rwxr-xr-x
checkisomd5
19.42
KB
-rwxr-xr-x
checkmodule
400.48
KB
-rwxr-xr-x
checkpolicy
412.46
KB
-rwxr-xr-x
checksctp
7
KB
-rwxr-xr-x
cheese
252.27
KB
-rwxr-xr-x
chfn
23.41
KB
-rws--x--x
chgrp
61.32
KB
-rwxr-xr-x
chmem
40.43
KB
-rwxr-xr-x
chmod
57.21
KB
-rwxr-xr-x
chown
61.36
KB
-rwxr-xr-x
chronyc
85.03
KB
-rwxr-xr-x
chrt
32.17
KB
-rwxr-xr-x
chsh
23.32
KB
-rwx--x--x
chvt
11.14
KB
-rwxr-xr-x
cifscreds
19.46
KB
-rwxr-xr-x
cifsdd
90.19
KB
-rwxr-xr-x
cifsiostat
48.5
KB
-rwxr-xr-x
ciptool
145.23
KB
-rwxr-xr-x
cksum
32.38
KB
-rwxr-xr-x
clean-binary-files
12.91
KB
-rwxr-xr-x
clear
7.02
KB
-rwxr-xr-x
clibrary
11.06
KB
-rwxr-xr-x
clibrary2
11.07
KB
-rwxr-xr-x
clpi_dump
28.55
KB
-rwxr-xr-x
clusterdb
53.2
KB
-rwxr-xr-x
cmp
44.14
KB
-rwxr-xr-x
cmsutil
110.58
KB
-rwxr-xr-x
col
23.88
KB
-rwxr-xr-x
colcrt
11.29
KB
-rwxr-xr-x
colormgr
61.12
KB
-rwxr-xr-x
colrm
23.77
KB
-rwxr-xr-x
column
27.99
KB
-rwxr-xr-x
combinedeltarpm
52.09
KB
-rwxr-xr-x
comm
36.55
KB
-rwxr-xr-x
command
31
B
-rwxr-xr-x
compare
11.09
KB
-rwxr-xr-x
compile_et
1.45
KB
-rwxr-xr-x
composite
7.04
KB
-rwxr-xr-x
compress
24.49
KB
-rwxr-xr-x
config_data
7.05
KB
-rwxr-xr-x
conjure
7.04
KB
-rwxr-xr-x
connection_recovery
11.08
KB
-rwxr-xr-x
consolehelper
6.95
KB
-rwxr-xr-x
convert
7.04
KB
-rwxr-xr-x
coredumpctl
154.52
KB
-rwxr-xr-x
corelist
10.02
KB
-rwxr-xr-x
corepack
599.82
KB
-rwxr-xr-x
coverage
306
B
-rwxr-xr-x
coverage-2.7
314
B
-rwxr-xr-x
coverage2
308
B
-rwxr-xr-x
cp
151.55
KB
-rwxr-xr-x
cpan
8.15
KB
-r-xr-xr-x
cpan-mirrors
4.27
KB
-r-xr-xr-x
cpan2dist
21.31
KB
-rwxr-xr-x
cpanp
3.31
KB
-rwxr-xr-x
cpanp-run-perl
553
B
-rwxr-xr-x
cpapi1
3.02
MB
-rwxr-xr-x
cpapi2
3.02
MB
-rwxr-xr-x
cpapi3
3.02
MB
-rwxr-xr-x
cpio
142.55
KB
-rwxr-xr-x
cpp
754.58
KB
-rwxr-xr-x
cpupower
66.34
KB
-rwxr-xr-x
crash
7.21
MB
-rwxr-xr-x
create-jar-links
4.55
KB
-rwxr-xr-x
createdb
53.27
KB
-rwxr-xr-x
createlang
57.09
KB
-rwxr-xr-x
createrepo
60
B
-rwxr-xr-x
createuser
57.63
KB
-rwxr-xr-x
crlutil
126.99
KB
-rwxr-xr-x
crontab
56.23
KB
-rwsr-xr-x
csh
395.15
KB
-rwxr-xr-x
csplit
48.82
KB
-rwxr-xr-x
csslint-0.6
19.55
KB
-rwxr-xr-x
cue2toc
23.7
KB
-rwxr-xr-x
cups-calibrate
23.27
KB
-rwxr-xr-x
cupstestdsc
14.98
KB
-rwxr-xr-x
cupstestppd
55.13
KB
-rwxr-xr-x
curl
152.99
KB
-rwxr-xr-x
cut
40.61
KB
-rwxr-xr-x
cvt
15.31
KB
-rwxr-xr-x
cvtsudoers
241.7
KB
-rwxr-xr-x
cxpm
28.05
KB
-rwxr-xr-x
d2fbb4detcp
9.57
KB
-rwxr-xr-x
date
60.74
KB
-rwxr-xr-x
db47_archive
10.21
KB
-rwxr-xr-x
db47_checkpoint
10.27
KB
-rwxr-xr-x
db47_codegen
22.25
KB
-rwxr-xr-x
db47_deadlock
10.28
KB
-rwxr-xr-x
db47_dump
14.25
KB
-rwxr-xr-x
db47_hotbackup
18.38
KB
-rwxr-xr-x
db47_load
26.33
KB
-rwxr-xr-x
db47_printlog
62.8
KB
-rwxr-xr-x
db47_recover
10.27
KB
-rwxr-xr-x
db47_stat
14.22
KB
-rwxr-xr-x
db47_upgrade
10.23
KB
-rwxr-xr-x
db47_verify
10.22
KB
-rwxr-xr-x
db_archive
11.23
KB
-rwxr-xr-x
db_checkpoint
11.3
KB
-rwxr-xr-x
db_deadlock
11.31
KB
-rwxr-xr-x
db_dump
15.33
KB
-rwxr-xr-x
db_dump185
64.45
KB
-rwxr-xr-x
db_hotbackup
15.34
KB
-rwxr-xr-x
db_load
27.51
KB
-rwxr-xr-x
db_log_verify
15.34
KB
-rwxr-xr-x
db_printlog
32.26
KB
-rwxr-xr-x
db_recover
11.33
KB
-rwxr-xr-x
db_replicate
15.34
KB
-rwxr-xr-x
db_stat
15.26
KB
-rwxr-xr-x
db_tuner
19.33
KB
-rwxr-xr-x
db_upgrade
11.23
KB
-rwxr-xr-x
db_verify
11.25
KB
-rwxr-xr-x
dbilogstrip
1.43
KB
-rwxr-xr-x
dbiprof
6.15
KB
-rwxr-xr-x
dbiproxy
5.35
KB
-rwxr-xr-x
dbus-binding-tool
94.49
KB
-rwxr-xr-x
dbus-cleanup-sockets
11
KB
-rwxr-xr-x
dbus-daemon
218
KB
-rwxr-xr-x
dbus-launch
27.23
KB
-rwxr-xr-x
dbus-monitor
23.13
KB
-rwxr-xr-x
dbus-run-session
14.97
KB
-rwxr-xr-x
dbus-send
27.07
KB
-rwxr-xr-x
dbus-test-tool
23.13
KB
-rwxr-xr-x
dbus-update-activation-environ...
15.02
KB
-rwxr-xr-x
dbus-uuidgen
10.98
KB
-rwxr-xr-x
dbwrap_tool
23.35
KB
-rwxr-xr-x
dc
44.33
KB
-rwxr-xr-x
dconf
48.89
KB
-rwxr-xr-x
dd
73.14
KB
-rwxr-xr-x
deallocvt
11.16
KB
-rwxr-xr-x
debuginfo-install
7.88
KB
-rwxr-xr-x
defunct
2.7
MB
-rwx------
delv
39.98
KB
-rwxr-xr-x
desktop-file-edit
74.73
KB
-rwxr-xr-x
desktop-file-install
74.73
KB
-rwxr-xr-x
desktop-file-validate
62.68
KB
-rwxr-xr-x
detect_ppa
3.5
KB
-rwxr-xr-x
devdump
64.73
KB
-rwxr-xr-x
df
102.55
KB
-rwxr-xr-x
dfu-tool
215.23
KB
-rwxr-xr-x
dgawk
502.12
KB
-rwxr-xr-x
diff
195.46
KB
-rwxr-xr-x
diff-jars
1.21
KB
-rwxr-xr-x
diff3
60.65
KB
-rwxr-xr-x
diffpp
4.44
KB
-rwxr-xr-x
dig
146.97
KB
-rwxr-xr-x
dir
114.85
KB
-rwxr-xr-x
dircolors
40.44
KB
-rwxr-xr-x
dirname
28.31
KB
-rwxr-xr-x
display
7.04
KB
-rwxr-xr-x
dltest
11.05
KB
-rwxr-xr-x
dmesg
48.52
KB
-rwxr-xr-x
dnsdomainname
15.41
KB
-rwxr-xr-x
domainname
15.41
KB
-rwxr-xr-x
doveadm
2.92
MB
-rwxr-xr-x
doveconf
542.48
KB
-rwxr-xr-x
dovecot-sysreport
5.63
KB
-rwxr-xr-x
dracut
55.83
KB
-rwxr-xr-x
drill
60.88
KB
-rwxr-xr-x
dropdb
53.08
KB
-rwxr-xr-x
droplang
57.09
KB
-rwxr-xr-x
dropuser
53.05
KB
-rwxr-xr-x
dsync
2.92
MB
-rwxr-xr-x
dtrace
16.66
KB
-rwxr-xr-x
du
110.34
KB
-rwxr-xr-x
dumpiso
11.44
KB
-rwxr-xr-x
dumpkeys
77.51
KB
-rwxr-xr-x
dumpsexp
15.18
KB
-rwxr-xr-x
dvcont
15.3
KB
-rwxr-xr-x
dvd+rw-booktype
63.55
KB
-rwxr-xr-x
dvd+rw-format
43.59
KB
-rwxr-xr-x
dvd+rw-mediainfo
47.39
KB
-rwxr-xr-x
dvd-ram-control
23.35
KB
-rwxr-xr-x
dvdrecord
304.54
KB
-rwxr-xr-x
dvipdf
1
KB
-rwxr-xr-x
dwp
3.03
MB
-rwxr-xr-x
dwz
162.6
KB
-rwxr-xr-x
ea-php56
3.59
MB
-rwxr-xr-x
ea-php56-pear
383
B
-rwxr-xr-x
ea-php56-pecl
299
B
-rwxr-xr-x
ea-php70
3.43
MB
-rwxr-xr-x
ea-php70-pear
383
B
-rwxr-xr-x
ea-php70-pecl
299
B
-rwxr-xr-x
ea-php71
3.58
MB
-rwxr-xr-x
ea-php71-pear
383
B
-rwxr-xr-x
ea-php71-pecl
299
B
-rwxr-xr-x
ea-php72
3.81
MB
-rwxr-xr-x
ea-php72-pear
383
B
-rwxr-xr-x
ea-php72-pecl
299
B
-rwxr-xr-x
ea-php73
4.19
MB
-rwxr-xr-x
ea-php73-pear
383
B
-rwxr-xr-x
ea-php73-pecl
299
B
-rwxr-xr-x
ea-php74
6.07
MB
-rwxr-xr-x
ea-php74-pear
383
B
-rwxr-xr-x
ea-php74-pecl
299
B
-rwxr-xr-x
ea-php80
6.07
MB
-rwxr-xr-x
ea-php80-pear
383
B
-rwxr-xr-x
ea-php80-pecl
299
B
-rwxr-xr-x
ea-php81
6.08
MB
-rwxr-xr-x
ea-php81-pear
383
B
-rwxr-xr-x
ea-php81-pecl
299
B
-rwxr-xr-x
easy_install
320
B
-rwxr-xr-x
easy_install-2.7
328
B
-rwxr-xr-x
echo
32.31
KB
-rwxr-xr-x
ecpg
737.83
KB
-rwxr-xr-x
ed
48.68
KB
-rwxr-xr-x
edid-decode
41.23
KB
-rwxr-xr-x
egrep
290
B
-rwxr-xr-x
eject
48.81
KB
-rwxr-xr-x
elfedit
32.18
KB
-rwxr-xr-x
elinks
1.3
MB
-rwxr-xr-x
empathy
289.11
KB
-rwxr-xr-x
empathy-accounts
87.55
KB
-rwxr-xr-x
empathy-debugger
57.73
KB
-rwxr-xr-x
enchant
15.29
KB
-rwxr-xr-x
enchant-lsmod
11.13
KB
-rwxr-xr-x
enscript
204.81
KB
-rwxr-xr-x
env
28.33
KB
-rwxr-xr-x
envsubst
36.01
KB
-rwxr-xr-x
eog
11.28
KB
-rwxr-xr-x
eps2eps
639
B
-rwxr-xr-x
eqn
144.41
KB
-rwxr-xr-x
erb
4.29
KB
-rwxr-xr-x
escputil
65.68
KB
-rwxr-xr-x
espeak
20
KB
-rwxr-xr-x
eu-addr2line
23.66
KB
-rwxr-xr-x
eu-ar
35.97
KB
-rwxr-xr-x
eu-elfcmp
32.16
KB
-rwxr-xr-x
eu-elfcompress
27.64
KB
-rwxr-xr-x
eu-elflint
108.8
KB
-rwxr-xr-x
eu-findtextrel
19.55
KB
-rwxr-xr-x
eu-make-debug-archive
2.84
KB
-rwxr-xr-x
eu-nm
44.92
KB
-rwxr-xr-x
eu-objdump
32.45
KB
-rwxr-xr-x
eu-ranlib
19.58
KB
-rwxr-xr-x
eu-readelf
230.43
KB
-rwxr-xr-x
eu-size
19.42
KB
-rwxr-xr-x
eu-stack
23.64
KB
-rwxr-xr-x
eu-strings
19.59
KB
-rwxr-xr-x
eu-strip
56.75
KB
-rwxr-xr-x
eu-unstrip
48.23
KB
-rwxr-xr-x
evince
426.85
KB
-rwxr-xr-x
evince-previewer
49.79
KB
-rwxr-xr-x
evince-thumbnailer
15.49
KB
-rwxr-xr-x
ex
906.45
KB
-rwxr-xr-x
exempi
15.49
KB
-rwxr-xr-x
expand
32.48
KB
-rwxr-xr-x
expr
36.53
KB
-rwxr-xr-x
factor
93.29
KB
-rwxr-xr-x
fallocate
27.84
KB
-rwxr-xr-x
false
28.25
KB
-rwxr-xr-x
fc
26
B
-rwxr-xr-x
fc-cache
132
B
-rwxr-xr-x
fc-cache-32
14.56
KB
-rwxr-xr-x
fc-cache-64
15.45
KB
-rwxr-xr-x
fc-cat
15.4
KB
-rwxr-xr-x
fc-conflist
11.2
KB
-rwxr-xr-x
fc-list
11.26
KB
-rwxr-xr-x
fc-match
11.32
KB
-rwxr-xr-x
fc-pattern
11.26
KB
-rwxr-xr-x
fc-query
11.23
KB
-rwxr-xr-x
fc-scan
11.27
KB
-rwxr-xr-x
fc-validate
11.27
KB
-rwxr-xr-x
festival
22.49
KB
-rwxr-xr-x
festival_client
26.57
KB
-rwxr-xr-x
festival_server
6.89
KB
-rwxr-xr-x
festival_server_control
3.94
KB
-rwxr-xr-x
fg
26
B
-rwxr-xr-x
fgconsole
11.16
KB
-rwxr-xr-x
fgrep
290
B
-rwxr-xr-x
file
19.3
KB
-rwxr-xr-x
file-roller
494.12
KB
-rwxr-xr-x
find
194.63
KB
-rwxr-xr-x
find-jar
748
B
-rwxr-xr-x
find-repos-of-install
4.27
KB
-rwxr-xr-x
find2perl
23.06
KB
-rwxr-xr-x
findmnt
58.38
KB
-rwxr-xr-x
findsmb
4.5
KB
-rwxr-xr-x
fipscheck
15.37
KB
-rwxr-xr-x
fipshmac
11.3
KB
-rwxr-xr-x
firefox
7.55
KB
-rwxr-xr-x
firewall-cmd
113.48
KB
-rwxr-xr-x
firewall-config
324.5
KB
-rwxr-xr-x
firewall-offline-cmd
101.18
KB
-rwxr-xr-x
flatpak
1.04
MB
-rwxr-xr-x
flex
318.07
KB
-rwxr-xr-x
flex++
318.07
KB
-rwxr-xr-x
flite
15.28
KB
-rwxr-xr-x
flite_time
11.07
KB
-rwxr-xr-x
flock
23.88
KB
-rwxr-xr-x
fmt
36.48
KB
-rwxr-xr-x
fold
36.46
KB
-rwxr-xr-x
fonttosfnt
35.99
KB
-rwxr-xr-x
fprintd-delete
11.22
KB
-rwxr-xr-x
fprintd-enroll
15.88
KB
-rwxr-xr-x
fprintd-list
11.25
KB
-rwxr-xr-x
fprintd-verify
11.33
KB
-rwxr-xr-x
free
19.33
KB
-rwxr-xr-x
freetype-config
4.39
KB
-rwxr-xr-x
fribidi
16.09
KB
-rwxr-xr-x
fros
2.6
KB
-rwxr-xr-x
ftp
85.5
KB
-rwxr-xr-x
ftpcount
24.14
KB
-rwxr-xr-x
ftptop
29.22
KB
-rwxr-xr-x
ftpwho
42.94
KB
-rwxr-xr-x
funzip
31.38
KB
-rwxr-xr-x
fusermount
31.34
KB
-rwsr-xr-x
fusermount-glusterfs
31.25
KB
-rwxr-xr-x
fwupdmgr
141.8
KB
-rwxr-xr-x
g++
754.59
KB
-rwxr-xr-x
gapplication
19.48
KB
-rwxr-xr-x
gatttool
241.33
KB
-rwxr-xr-x
gawk
418.54
KB
-rwxr-xr-x
gcalccmd
230.96
KB
-rwxr-xr-x
gcc
750.59
KB
-rwxr-xr-x
gcc-ar
26.45
KB
-rwxr-xr-x
gcc-nm
26.45
KB
-rwxr-xr-x
gcc-ranlib
26.45
KB
-rwxr-xr-x
gcm-calibrate
169.2
KB
-rwxr-xr-x
gcm-import
63.91
KB
-rwxr-xr-x
gcm-inspect
63.88
KB
-rwxr-xr-x
gcm-picker
80.23
KB
-rwxr-xr-x
gcm-viewer
104.92
KB
-rwxr-xr-x
gconf-merge-tree
56.85
KB
-rwxr-xr-x
gconftool-2
60.55
KB
-rwxr-xr-x
gcore
2.12
KB
-rwxr-xr-x
gcov
307.45
KB
-rwxr-xr-x
gcr-viewer
11.39
KB
-rwxr-xr-x
gd2copypal
7.06
KB
-rwxr-xr-x
gd2togif
7.05
KB
-rwxr-xr-x
gd2topng
11.06
KB
-rwxr-xr-x
gdb
6.51
MB
-rwxr-xr-x
gdb-add-index
1.09
KB
-rwxr-xr-x
gdbus
40.17
KB
-rwxr-xr-x
gdcmpgif
11.08
KB
-rwxr-xr-x
gdk-pixbuf-query-loaders-64
15.38
KB
-rwxr-xr-x
gdk-pixbuf-thumbnailer
15.59
KB
-rwxr-xr-x
gdlib-config
2.52
KB
-rwxr-xr-x
gdm-screenshot
15.11
KB
-rwxr-xr-x
gdmflexiserver
27.73
KB
-rwxr-xr-x
gdparttopng
11.07
KB
-rwxr-xr-x
gdtopng
7.04
KB
-rwxr-xr-x
gedit
11.11
KB
-rwxr-xr-x
gem
542
B
-rwxr-xr-x
gencat
22.11
KB
-rwxr-xr-x
genisoimage
509.02
KB
-rwxr-xr-x
genl-ctrl-list
11.27
KB
-rwxr-xr-x
genp12
2.77
MB
-rwxrwxrwx
geoiplookup
15.28
KB
-rwxr-xr-x
geoiplookup6
11.16
KB
-rwxr-xr-x
geoipupdate
31.32
KB
-rwxr-xr-x
geqn
144.41
KB
-rwxr-xr-x
getcert
166.42
KB
-rwxr-xr-x
getcifsacl
15.05
KB
-rwxr-xr-x
getconf
22.02
KB
-rwxr-xr-x
getent
26.39
KB
-rwxr-xr-x
getfacl
24.29
KB
-rwxr-xr-x
getfattr
20.06
KB
-rwxr-xr-x
getkeycodes
11.16
KB
-rwxr-xr-x
getopt
15.38
KB
-rwxr-xr-x
getopts
31
B
-rwxr-xr-x
gettext
35.94
KB
-rwxr-xr-x
gettext.sh
4.52
KB
-rwxr-xr-x
gettextize
42.69
KB
-rwxr-xr-x
ghostscript
10.97
KB
-rwxr-xr-x
giftogd2
7.05
KB
-rwxr-xr-x
gio
73.41
KB
-rwxr-xr-x
gio-querymodules-64
11.31
KB
-rwxr-xr-x
git
1.46
MB
-rwxr-xr-x
git-receive-pack
1.46
MB
-rwxr-xr-x
git-shell
718.18
KB
-rwxr-xr-x
git-upload-archive
1.46
MB
-rwxr-xr-x
git-upload-pack
791.48
KB
-rwxr-xr-x
gjs
16.08
KB
-rwxr-xr-x
gjs-console
16.08
KB
-rwxr-xr-x
gkbd-keyboard-display
11.4
KB
-rwxr-xr-x
glib-compile-schemas
44.38
KB
-rwxr-xr-x
glxgears
23.75
KB
-rwxr-xr-x
glxinfo
44.02
KB
-rwxr-xr-x
glxinfo64
44.02
KB
-rwxr-xr-x
gmake
178.47
KB
-rwxr-xr-x
gneqn
271
B
-rwxr-xr-x
gnome-abrt
12.49
KB
-rwxr-xr-x
gnome-boxes
1.38
MB
-rwxr-xr-x
gnome-calculator
654.32
KB
-rwxr-xr-x
gnome-character-map
78.97
KB
-rwxr-xr-x
gnome-clocks
289.75
KB
-rwxr-xr-x
gnome-contacts
432.06
KB
-rwxr-xr-x
gnome-control-center
3.2
MB
-rwxr-xr-x
gnome-dictionary
252.54
KB
-rwxr-xr-x
gnome-disk-image-mounter
48.98
KB
-rwxr-xr-x
gnome-disks
570.82
KB
-rwxr-xr-x
gnome-font-viewer
75.26
KB
-rwxr-xr-x
gnome-help
53.83
KB
-rwxr-xr-x
gnome-keyring
19.45
KB
-rwxr-xr-x
gnome-keyring-3
19.45
KB
-rwxr-xr-x
gnome-keyring-daemon
1.08
MB
-rwxr-xr-x
gnome-screenshot
83.56
KB
-rwxr-xr-x
gnome-session
664
B
-rwxr-xr-x
gnome-session-custom-session
451
B
-rwxr-xr-x
gnome-session-inhibit
11.21
KB
-rwxr-xr-x
gnome-session-properties
70.45
KB
-rwxr-xr-x
gnome-session-quit
11.55
KB
-rwxr-xr-x
gnome-session-selector
24.26
KB
-rwxr-xr-x
gnome-shell
20.06
KB
-rwxr-xr-x
gnome-shell-extension-prefs
2.06
MB
-rwxr-xr-x
gnome-shell-extension-tool
7.16
KB
-rwxr-xr-x
gnome-shell-perf-tool
11.41
KB
-rwxr-xr-x
gnome-software
978.58
KB
-rwxr-xr-x
gnome-system-log
32
B
-rwxr-xr-x
gnome-system-monitor
311.94
KB
-rwxr-xr-x
gnome-terminal
99.51
KB
-rwxr-xr-x
gnome-text-editor
11.11
KB
-rwxr-xr-x
gnome-thumbnail-font
23.85
KB
-rwxr-xr-x
gnome-tweaks
2.69
KB
-rwxr-xr-x
gnome-weather
233
B
-rwxr-xr-x
gnroff
3.31
KB
-rwxr-xr-x
gpasswd
76.57
KB
-rwsr-xr-x
gpg
732.4
KB
-rwxr-xr-x
gpg-agent
289.74
KB
-rwxr-xr-x
gpg-connect-agent
152.69
KB
-rwxr-xr-x
gpg-error
23.18
KB
-rwxr-xr-x
gpg-error-config
1.83
KB
-rwxr-xr-x
gpg-zip
3.23
KB
-rwxr-xr-x
gpg2
732.4
KB
-rwxr-xr-x
gpgconf
140.31
KB
-rwxr-xr-x
gpgparsemail
23.7
KB
-rwxr-xr-x
gpgsplit
48.88
KB
-rwxr-xr-x
gpgv
345.38
KB
-rwxr-xr-x
gpgv2
345.38
KB
-rwxr-xr-x
gpic
180.41
KB
-rwxr-xr-x
gpk-application
137.37
KB
-rwxr-xr-x
gpk-log
88.33
KB
-rwxr-xr-x
gpk-prefs
84.38
KB
-rwxr-xr-x
gpk-update-viewer
141.1
KB
-rwxr-xr-x
gprof
98.41
KB
-rwxr-xr-x
gr2fonttest
23.66
KB
-rwxr-xr-x
grep
155.3
KB
-rwxr-xr-x
grilo-test-ui-0.3
62.01
KB
-rwxr-xr-x
grl-inspect-0.3
20.48
KB
-rwxr-xr-x
grl-launch-0.3
24.41
KB
-rwxr-xr-x
groff
81.63
KB
-rwxr-xr-x
grops
140.85
KB
-rwxr-xr-x
grotty
98.59
KB
-rwxr-xr-x
groups
32.41
KB
-rwxr-xr-x
growisofs
120.63
KB
-rwxr-xr-x
grub2-editenv
396.07
KB
-rwxr-xr-x
grub2-file
830.36
KB
-rwxr-xr-x
grub2-fstest
1.03
MB
-rwxr-xr-x
grub2-glue-efi
258.85
KB
-rwxr-xr-x
grub2-kbdcomp
1.63
KB
-rwxr-xr-x
grub2-menulst2cfg
241.82
KB
-rwxr-xr-x
grub2-mkfont
287.6
KB
-rwxr-xr-x
grub2-mkimage
379.25
KB
-rwxr-xr-x
grub2-mklayout
264.91
KB
-rwxr-xr-x
grub2-mknetdir
429.8
KB
-rwxr-xr-x
grub2-mkpasswd-pbkdf2
271.29
KB
-rwxr-xr-x
grub2-mkrelpath
258.48
KB
-rwxr-xr-x
grub2-mkrescue
1017.84
KB
-rwxr-xr-x
grub2-mkstandalone
534.32
KB
-rwxr-xr-x
grub2-render-label
835.16
KB
-rwxr-xr-x
grub2-script-check
295.43
KB
-rwxr-xr-x
grub2-syslinux2cfg
763.7
KB
-rwxr-xr-x
gs
10.97
KB
-rwxr-xr-x
gsbj
350
B
-rwxr-xr-x
gsdj
352
B
-rwxr-xr-x
gsdj500
352
B
-rwxr-xr-x
gsettings
23.8
KB
-rwxr-xr-x
gsettings-data-convert
19.77
KB
-rwxr-xr-x
gsf-office-thumbnailer
15.61
KB
-rwxr-xr-x
gslj
353
B
-rwxr-xr-x
gslp
350
B
-rwxr-xr-x
gsnd
277
B
-rwxr-xr-x
gsoelim
32.59
KB
-rwxr-xr-x
gsound-play
15.45
KB
-rwxr-xr-x
gss-client
23.17
KB
-rwxr-xr-x
gst-feedback
15.63
KB
-rwxr-xr-x
gst-feedback-0.10
3.1
KB
-rwxr-xr-x
gst-inspect
15.63
KB
-rwxr-xr-x
gst-inspect-0.10
44.42
KB
-rwxr-xr-x
gst-inspect-1.0
44.52
KB
-rwxr-xr-x
gst-launch
15.63
KB
-rwxr-xr-x
gst-launch-0.10
36.11
KB
-rwxr-xr-x
gst-launch-1.0
32.13
KB
-rwxr-xr-x
gst-stats-1.0
23.67
KB
-rwxr-xr-x
gst-typefind
15.63
KB
-rwxr-xr-x
gst-typefind-0.10
15.36
KB
-rwxr-xr-x
gst-typefind-1.0
15.38
KB
-rwxr-xr-x
gst-xmlinspect
15.63
KB
-rwxr-xr-x
gst-xmlinspect-0.10
23.5
KB
-rwxr-xr-x
gst-xmllaunch
15.63
KB
-rwxr-xr-x
gst-xmllaunch-0.10
36.11
KB
-rwxr-xr-x
gstack
1.05
KB
-rwxr-xr-x
gtar
338.02
KB
-rwxr-xr-x
gtbl
115.96
KB
-rwxr-xr-x
gtf
15.2
KB
-rwxr-xr-x
gtk-launch
15.48
KB
-rwxr-xr-x
gtk-query-immodules-2.0-64
15.29
KB
-rwxr-xr-x
gtk-query-immodules-3.0-64
19.57
KB
-rwxr-xr-x
gtk-update-icon-cache
32.45
KB
-rwxr-xr-x
gtroff
512.96
KB
-rwxr-xr-x
gucharmap
78.97
KB
-rwxr-xr-x
gunzip
2.2
KB
-rwxr-xr-x
gupnp-dlna-info-2.0
15.39
KB
-rwxr-xr-x
gupnp-dlna-ls-profiles-2.0
11.16
KB
-rwxr-xr-x
gvfs-cat
273
B
-rwxr-xr-x
gvfs-copy
275
B
-rwxr-xr-x
gvfs-info
275
B
-rwxr-xr-x
gvfs-less
884
B
-rwxr-xr-x
gvfs-ls
275
B
-rwxr-xr-x
gvfs-mime
275
B
-rwxr-xr-x
gvfs-mkdir
277
B
-rwxr-xr-x
gvfs-monitor-dir
281
B
-rwxr-xr-x
gvfs-monitor-file
281
B
-rwxr-xr-x
gvfs-mount
277
B
-rwxr-xr-x
gvfs-move
275
B
-rwxr-xr-x
gvfs-open
275
B
-rwxr-xr-x
gvfs-rename
279
B
-rwxr-xr-x
gvfs-rm
279
B
-rwxr-xr-x
gvfs-save
275
B
-rwxr-xr-x
gvfs-set-attribute
273
B
-rwxr-xr-x
gvfs-trash
277
B
-rwxr-xr-x
gvfs-tree
275
B
-rwxr-xr-x
gzexe
5.79
KB
-rwxr-xr-x
gzip
98.43
KB
-rwxr-xr-x
h2ph
27.65
KB
-rwxr-xr-x
h2xs
59.15
KB
-rwxr-xr-x
hangul
15.34
KB
-rwxr-xr-x
hciattach
140.81
KB
-rwxr-xr-x
hciconfig
195.16
KB
-rwxr-xr-x
hcidump
456.78
KB
-rwxr-xr-x
hcitool
146.3
KB
-rwxr-xr-x
hdmv_test
11.16
KB
-rwxr-xr-x
hdsploader
11.18
KB
-rwxr-xr-x
head
40.51
KB
-rwxr-xr-x
hesinfo
11.09
KB
-rwxr-xr-x
hex2hcd
14.99
KB
-rwxr-xr-x
hexdump
32.02
KB
-rwxr-xr-x
hmac256
15.67
KB
-rwxr-xr-x
host
127.02
KB
-rwxr-xr-x
hostid
28.32
KB
-rwxr-xr-x
hostname
15.41
KB
-rwxr-xr-x
hostnamectl
318.07
KB
-rwxr-xr-x
hpcups-update-ppds
3.16
KB
-rwxr-xr-x
hpijs
546.41
KB
-rwxr-xr-x
htdbm
23.1
KB
-rwxr-xr-x
htdigest
15.07
KB
-rwxr-xr-x
htpasswd
19.13
KB
-rwxr-xr-x
httxt2dbm
10.99
KB
-rwxr-xr-x
hunspell
53.11
KB
-rwxr-xr-x
i386
15.27
KB
-rwxr-xr-x
ibus
32.38
KB
-rwxr-xr-x
ibus-daemon
168.99
KB
-rwxr-xr-x
ibus-setup
1.12
KB
-rwxr-xr-x
ibus-table-createdb
1.08
KB
-rwxr-xr-x
iceauth
31.73
KB
-rwxr-xr-x
icedax
200.09
KB
-rwxr-xr-x
iconv
58.14
KB
-rwxr-xr-x
id
36.52
KB
-rwxr-xr-x
identify
7.06
KB
-rwxr-xr-x
idiag-socket-details
11.34
KB
-rwxr-xr-x
idle
93
B
-rwxr-xr-x
idn
32.45
KB
-rwxr-xr-x
iecset
19.38
KB
-rwxr-xr-x
ifnames
4.03
KB
-rwxr-xr-x
igawk
3.11
KB
-rwxr-xr-x
ijsgutenprint.5.2
44.09
KB
-rwxr-xr-x
implantisomd5
15.3
KB
-rwxr-xr-x
import
7.04
KB
-rwxr-xr-x
imsettings-info
11.3
KB
-rwxr-xr-x
imsettings-list
11.23
KB
-rwxr-xr-x
imsettings-reload
11.21
KB
-rwxr-xr-x
imsettings-switch
15.33
KB
-rwxr-xr-x
index_dump
19.41
KB
-rwxr-xr-x
info
265.19
KB
-rwxr-xr-x
infocmp
56.07
KB
-rwxr-xr-x
infokey
21.47
KB
-rwxr-xr-x
infotocap
64.26
KB
-rwxr-xr-x
initdb
89.09
KB
-rwxr-xr-x
innochecksum
8.53
MB
-rwxr-xr-x
install
139.59
KB
-rwxr-xr-x
install-printerdriver
95
B
-rwxr-xr-x
instmodsh
4.15
KB
-rwxr-xr-x
instperf
1.68
KB
-rwxr-xr-x
ionice
23.86
KB
-rwxr-xr-x
iostat
60.77
KB
-rwxr-xr-x
ipa
984
B
-rwxr-xr-x
ipa-getcert
154.19
KB
-rwxr-xr-x
ipcalc
15.05
KB
-rwxr-xr-x
ipcmk
24
KB
-rwxr-xr-x
ipcrm
27.85
KB
-rwxr-xr-x
ipcs
48.37
KB
-rwxr-xr-x
iptables-xml
91.52
KB
-rwxr-xr-x
iptc
25.07
KB
-rwxr-xr-x
irb
314
B
-rwxr-xr-x
isc-config.sh
3.4
KB
-rwxr-xr-x
isdv4-serial-inputattach
19.56
KB
-rwxr-xr-x
iso-info
27.79
KB
-rwxr-xr-x
iso-read
23.6
KB
-rwxr-xr-x
isodebug
60.61
KB
-rwxr-xr-x
isodump
64.73
KB
-rwxr-xr-x
isoinfo
224.45
KB
-rwxr-xr-x
isosize
23.83
KB
-rwxr-xr-x
isovfy
68.66
KB
-rwxr-xr-x
ispell
988
B
-rwxr-xr-x
isql
31.69
KB
-rwxr-xr-x
itweb-settings
5.55
KB
-rwxr-xr-x
itweb-settings.itweb
5.55
KB
-rwxr-xr-x
iusql
23.61
KB
-rwxr-xr-x
java
8.77
KB
-rwxr-xr-x
javaws
5.53
KB
-rwxr-xr-x
javaws.itweb
5.53
KB
-rwxr-xr-x
jjs
8.9
KB
-rwxr-xr-x
jobs
28
B
-rwxr-xr-x
join
48.75
KB
-rwxr-xr-x
journalctl
537.88
KB
-rwxr-xr-x
js
3.36
MB
-rwxr-xr-x
json_pp
3.82
KB
-rwxr-xr-x
json_reformat
35.89
KB
-rwxr-xr-x
json_verify
27.52
KB
-rwxr-xr-x
jvmjar
1.7
KB
-rwxr-xr-x
k5srvutil
1.96
KB
-rwxr-xr-x
kadmin
75.65
KB
-rwxr-xr-x
kbd_mode
11.16
KB
-rwxr-xr-x
kbdinfo
11.19
KB
-rwxr-xr-x
kbdrate
11.22
KB
-rwxr-xr-x
kdestroy
10.96
KB
-rwxr-xr-x
kdumpctl
33.18
KB
-rwxr-xr-x
kernel-install
4.7
KB
-rwxr-xr-x
keyctl
27.94
KB
-rwxr-xr-x
keytool
8.9
KB
-rwxr-xr-x
kill
32.82
KB
-rwxr-xr-x
killall
24.14
KB
-rwxr-xr-x
kinit
27.02
KB
-rwxr-xr-x
klist
27.17
KB
-rwxr-xr-x
kmod
143.24
KB
-rwxr-xr-x
kpasswd
10.95
KB
-rwxr-xr-x
krb5-config
6.96
KB
-rwxr-xr-x
ksflatten
2.61
KB
-rwxr-xr-x
ksshell
7.53
KB
-rwxr-xr-x
ksu
59.88
KB
-rwsr-xr-x
ksvalidator
3.87
KB
-rwxr-xr-x
ksverdiff
3.78
KB
-rwxr-xr-x
kswitch
10.96
KB
-rwxr-xr-x
ktutil
23.13
KB
-rwxr-xr-x
kvno
15
KB
-rwxr-xr-x
l2ping
98.2
KB
-rwxr-xr-x
l2test
114.54
KB
-rwxr-xr-x
last
19.11
KB
-rwxr-xr-x
lastb
19.11
KB
-rwxr-xr-x
lastcomm
28
KB
-rwxr-xr-x
lastlog
19.15
KB
-rwxr-xr-x
lchfn
15.52
KB
-rwxr-xr-x
lchsh
15.49
KB
-rwxr-xr-x
ld
982.61
KB
-rwxr-xr-x
ld.bfd
982.61
KB
-rwxr-xr-x
ld.gold
5.11
MB
-rwxr-xr-x
ldd
5.18
KB
-rwxr-xr-x
ldns-chaos
11.17
KB
-rwxr-xr-x
ldns-compare-zones
11.25
KB
-rwxr-xr-x
ldns-dane
40.8
KB
-rwxr-xr-x
ldns-dpa
40.07
KB
-rwxr-xr-x
ldns-gen-zone
15.35
KB
-rwxr-xr-x
ldns-key2ds
11.2
KB
-rwxr-xr-x
ldns-keyfetcher
23.67
KB
-rwxr-xr-x
ldns-keygen
15.31
KB
-rwxr-xr-x
ldns-mx
11.09
KB
-rwxr-xr-x
ldns-notify
15.37
KB
-rwxr-xr-x
ldns-nsec3-hash
11.15
KB
-rwxr-xr-x
ldns-read-zone
15.3
KB
-rwxr-xr-x
ldns-resolver
11.09
KB
-rwxr-xr-x
ldns-revoke
11.14
KB
-rwxr-xr-x
ldns-rrsig
11.28
KB
-rwxr-xr-x
ldns-signzone
27.84
KB
-rwxr-xr-x
ldns-test-edns
11.28
KB
-rwxr-xr-x
ldns-testns
32.19
KB
-rwxr-xr-x
ldns-update
15.41
KB
-rwxr-xr-x
ldns-verify-zone
23.71
KB
-rwxr-xr-x
ldns-version
6.98
KB
-rwxr-xr-x
ldns-walk
19.55
KB
-rwxr-xr-x
ldns-zcat
11.18
KB
-rwxr-xr-x
ldns-zsplit
15.28
KB
-rwxr-xr-x
ldnsd
15.36
KB
-rwxr-xr-x
less
154.53
KB
-rwxr-xr-x
lessecho
11.11
KB
-rwxr-xr-x
lesskey
16.66
KB
-rwxr-xr-x
lesspipe.sh
2.24
KB
-rwxr-xr-x
lex
318.07
KB
-rwxr-xr-x
lexgrog
85.09
KB
-rwxr-xr-x
libbluray_test
11.21
KB
-rwxr-xr-x
libgcrypt-config
3.78
KB
-rwxr-xr-x
libieee1284_test
11.16
KB
-rwxr-xr-x
libinput
19.98
KB
-rwxr-xr-x
libinput-debug-events
164
B
-rwxr-xr-x
libinput-list-devices
164
B
-rwxr-xr-x
libnetcfg
15.36
KB
-rwxr-xr-x
libpng-config
2.38
KB
-rwxr-xr-x
libpng15-config
2.38
KB
-rwxr-xr-x
libtar
15.39
KB
-rwxr-xr-x
libtool
314.04
KB
-rwxr-xr-x
libtoolize
76.8
KB
-rwxr-xr-x
libwacom-list-local-devices
11.39
KB
-rwxr-xr-x
libwmf-fontmap
12.78
KB
-rwxr-xr-x
link
28.3
KB
-rwxr-xr-x
links
1.3
MB
-rwxr-xr-x
linux-boot-prober
5.85
KB
-rwxr-xr-x
linux32
15.27
KB
-rwxr-xr-x
linux64
15.27
KB
-rwxr-xr-x
list_titles
11.19
KB
-rwxr-xr-x
liveinst
6.95
KB
-rwxr-xr-x
ln
57.22
KB
-rwxr-xr-x
loadkeys
110.48
KB
-rwxr-xr-x
loadunimap
23.88
KB
-rwxr-xr-x
local-getcert
154.19
KB
-rwxr-xr-x
locale
37.11
KB
-rwxr-xr-x
localectl
326.16
KB
-rwxr-xr-x
localedef
318.31
KB
-rwxr-xr-x
locate
39.57
KB
-rwx--s--x
logger
28.62
KB
-rwxr-xr-x
login
36.38
KB
-rwxr-xr-x
loginctl
489.62
KB
-rwxr-xr-x
logname
28.31
KB
-rwxr-xr-x
logresolve
14.99
KB
-rwxr-xr-x
logview
125.72
KB
-rwxr-xr-x
look
11.27
KB
-rwxr-xr-x
lp
18.99
KB
-rwxr-xr-x
lp.cups
18.99
KB
-rwxr-xr-x
lpoptions
14.98
KB
-rwxr-xr-x
lppasswd
14.98
KB
-rwxr-xr-x
lpq
19.02
KB
-rwxr-xr-x
lpq.cups
19.02
KB
-rwxr-xr-x
lpr
14.96
KB
-rwxr-xr-x
lpr.cups
14.96
KB
-rwxr-xr-x
lprm
10.95
KB
-rwxr-xr-x
lprm.cups
10.95
KB
-rwxr-xr-x
lprsetup.sh
5.34
KB
-rwxr-xr-x
lpstat
31.4
KB
-rwxr-xr-x
lpstat.cups
31.4
KB
-rwxr-xr-x
ls
114.85
KB
-rwxr-xr-x
lsattr
11.25
KB
-rwxr-xr-x
lsblk
79.17
KB
-rwxr-xr-x
lscgroup
15.27
KB
-rwxr-xr-x
lscpu
60.75
KB
-rwxr-xr-x
lsinitrd
6.26
KB
-rwxr-xr-x
lsipc
60.95
KB
-rwxr-xr-x
lslocks
41.01
KB
-rwxr-xr-x
lslogins
52.88
KB
-rwxr-xr-x
lsmcli
945
B
-rwxr-xr-x
lsmd
23.45
KB
-rwxr-xr-x
lsmem
40.78
KB
-rwxr-xr-x
lsns
36.43
KB
-rwxr-xr-x
lsphp
937
B
-rwxr-xr-x
lsscsi
56.48
KB
-rwxr-xr-x
lssubsys
11.18
KB
-rwxr-xr-x
lsusb
100.23
KB
-rwxr-xr-x
lsusb.py
13.09
KB
-rwxr-xr-x
lua
15.47
KB
-rwxr-xr-x
luac
119.03
KB
-rwxr-xr-x
lwp-download
8.43
KB
-rwxr-xr-x
lwp-dump
2.73
KB
-rwxr-xr-x
lwp-mirror
2.42
KB
-rwxr-xr-x
lwp-request
14.71
KB
-rwxr-xr-x
lz
2.25
KB
-rwxr-xr-x
lz4
105.84
KB
-rwxr-xr-x
lz4_decompress
626.99
KB
-rwxr-xr-x
lz4c
105.84
KB
-rwxr-xr-x
lz4cat
105.84
KB
-rwxr-xr-x
lzop
69.32
KB
-rwxr-xr-x
m17n-conv
15.31
KB
-rwxr-xr-x
m4
151.17
KB
-rwxr-xr-x
machinectl
533.95
KB
-rwxr-xr-x
mail
383.67
KB
-rwxr-xr-x
mailx
383.67
KB
-rwxr-xr-x
make
178.47
KB
-rwxr-xr-x
makedb
18.11
KB
-rwxr-xr-x
makedeltarpm
68.39
KB
-rwxr-xr-x
man
100.44
KB
-rwxr-xr-x
mandb
122.25
KB
-rwxr-xr-x
manpath
32.55
KB
-rwxr-xr-x
mapscrn
19.78
KB
-rwxr-xr-x
mattrib
178.63
KB
-rwxr-xr-x
mbadblocks
178.63
KB
-rwxr-xr-x
mbim-network
11.05
KB
-rwxr-xr-x
mbimcli
66.09
KB
-rwxr-xr-x
mc-tool
36.35
KB
-rwxr-xr-x
mc-wait-for-name
11.37
KB
-rwxr-xr-x
mcat
178.63
KB
-rwxr-xr-x
mcd
178.63
KB
-rwxr-xr-x
mcheck
1.64
KB
-rwxr-xr-x
mclasserase
178.63
KB
-rwxr-xr-x
mcomp
847
B
-rwxr-xr-x
mcookie
15.44
KB
-rwxr-xr-x
mcopy
178.63
KB
-rwxr-xr-x
md5sum
40.53
KB
-rwxr-xr-x
mdel
178.63
KB
-rwxr-xr-x
mdeltree
178.63
KB
-rwxr-xr-x
mdig
44.2
KB
-rwxr-xr-x
mdir
178.63
KB
-rwxr-xr-x
mdu
178.63
KB
-rwxr-xr-x
mergerepo
55
B
-rwxr-xr-x
mesg
10.98
KB
-rwxr-xr-x
metacity
572.77
KB
-rwxr-xr-x
metacity-message
11.15
KB
-rwxr-xr-x
mformat
178.63
KB
-rwxr-xr-x
minfo
178.63
KB
-rwxr-xr-x
mixartloader
15.38
KB
-rwxr-xr-x
mkafmmap
96.41
KB
-rwxr-xr-x
mkdir
77.9
KB
-rwxr-xr-x
mkfifo
61.59
KB
-rwxr-xr-x
mkfontdir
65
B
-rwxr-xr-x
mkfontscale
32.48
KB
-rwxr-xr-x
mkhybrid
509.02
KB
-rwxr-xr-x
mkinitrd
2.94
KB
-rwxr-xr-x
mkisofs
509.02
KB
-rwxr-xr-x
mkmanifest
11.36
KB
-rwxr-xr-x
mknod
65.61
KB
-rwxr-xr-x
mkrfc2734
11.09
KB
-rwxr-xr-x
mktemp
40.66
KB
-rwxr-xr-x
mlabel
178.63
KB
-rwxr-xr-x
mmc-tool
27.53
KB
-rwxr-xr-x
mmcli
175.2
KB
-rwxr-xr-x
mmd
178.63
KB
-rwxr-xr-x
mmount
178.63
KB
-rwxr-xr-x
mmove
178.63
KB
-rwxr-xr-x
mobj_dump
23.39
KB
-rwxr-xr-x
modifyrepo
56
B
-rwxr-xr-x
modutil
165.81
KB
-rwxr-xr-x
mogrify
7.04
KB
-rwxr-xr-x
mokutil
44.94
KB
-rwxr-xr-x
montage
7.04
KB
-rwxr-xr-x
more
40.15
KB
-rwxr-xr-x
mount
43.23
KB
-rwsr-xr-x
mountpoint
15.32
KB
-rwxr-xr-x
mousetweaks
66.26
KB
-rwxr-xr-x
mpartition
178.63
KB
-rwxr-xr-x
mpls_dump
61.08
KB
-rwxr-xr-x
mpris-proxy
93.4
KB
-rwxr-xr-x
mpstat
52.53
KB
-rwxr-xr-x
mrd
178.63
KB
-rwxr-xr-x
mren
178.63
KB
-rwxr-xr-x
msgattrib
23.36
KB
-rwxr-xr-x
msgcat
23.34
KB
-rwxr-xr-x
msgcmp
23.59
KB
-rwxr-xr-x
msgcomm
19.31
KB
-rwxr-xr-x
msgconv
19.3
KB
-rwxr-xr-x
msgen
19.3
KB
-rwxr-xr-x
msgexec
15.33
KB
-rwxr-xr-x
msgfilter
27.56
KB
-rwxr-xr-x
msgfmt
77.05
KB
-rwxr-xr-x
msgfmt.py
6.33
KB
-rwxr-xr-x
msggrep
35.97
KB
-rwxr-xr-x
msghack
12.45
KB
-rwxr-xr-x
msginit
44.38
KB
-rwxr-xr-x
msgmerge
52.6
KB
-rwxr-xr-x
msgunfmt
31.7
KB
-rwxr-xr-x
msguniq
19.31
KB
-rwxr-xr-x
mshortname
178.63
KB
-rwxr-xr-x
mshowfat
178.63
KB
-rwxr-xr-x
mtools
178.63
KB
-rwxr-xr-x
mtoolstest
178.63
KB
-rwxr-xr-x
mtype
178.63
KB
-rwxr-xr-x
mutter
11.3
KB
-rwxr-xr-x
mv
127.3
KB
-rwxr-xr-x
mvxattr
14.98
KB
-rwxr-xr-x
mxtar
784
B
-rwxr-xr-x
my_print_defaults
7.66
MB
-rwxr-xr-x
myisam_ftdump
9.93
MB
-rwxr-xr-x
myisamchk
10.39
MB
-rwxr-xr-x
myisamlog
7.42
MB
-rwxr-xr-x
myisampack
10.06
MB
-rwxr-xr-x
mysql
10.89
MB
-rwxr-xr-x
mysql_config
840
B
-rwxr-xr-x
mysql_config-64
5.11
KB
-rwxr-xr-x
mysql_config_editor
7.82
MB
-rwxr-xr-x
mysql_install_db
10.29
MB
-rwxr-xr-x
mysql_plugin
7.73
MB
-rwxr-xr-x
mysql_secure_installation
9.51
MB
-rwxr-xr-x
mysql_ssl_rsa_setup
8.08
MB
-rwxr-xr-x
mysql_tzinfo_to_sql
4.99
MB
-rwxr-xr-x
mysql_upgrade
12.98
MB
-rwxr-xr-x
mysqladmin
9.57
MB
-rwxr-xr-x
mysqlbinlog
11.49
MB
-rwxr-xr-x
mysqlcheck
9.85
MB
-rwxr-xr-x
mysqld_pre_systemd
3.74
KB
-rwxr-xr-x
mysqldump
9.93
MB
-rwxr-xr-x
mysqldumpslow
7.66
KB
-rwxr-xr-x
mysqlimport
9.56
MB
-rwxr-xr-x
mysqlpump
19.03
MB
-rwxr-xr-x
mysqlshow
9.52
MB
-rwxr-xr-x
mysqlslap
9.63
MB
-rwxr-xr-x
mzip
178.63
KB
-rwxr-xr-x
n
47.35
KB
-rwxr-xr-x
nail
383.67
KB
-rwxr-xr-x
named-rrchecker
15.32
KB
-rwxr-xr-x
namei
27.95
KB
-rwxr-xr-x
nano
201.08
KB
-rwxr-xr-x
nautilus
1.6
MB
-rwxr-xr-x
nautilus-autorun-software
53.19
KB
-rwxr-xr-x
nautilus-desktop
1.65
MB
-rwxr-xr-x
nautilus-sendto
15.55
KB
-rwxr-xr-x
nc
371.27
KB
-rwxr-xr-x
ncat
371.27
KB
-rwxr-xr-x
ncurses5-config
5.68
KB
-rwxr-xr-x
ncursesw5-config
5.68
KB
-rwxr-xr-x
ndctl
168.63
KB
-rwxr-xr-x
ndptool
23.63
KB
-rwxr-xr-x
needs-restarting
8.17
KB
-rwxr-xr-x
nenscript
204.81
KB
-rwxr-xr-x
neqn
271
B
-rwxr-xr-x
netaddr
920
B
-rwxr-xr-x
netstat
151.38
KB
-rwxr-xr-x
nettle-hash
11.33
KB
-rwxr-xr-x
nettle-lfib-stream
7.05
KB
-rwxr-xr-x
newgidmap
38.09
KB
-rwxr-xr-x
newgrp
40.95
KB
-rwxr-xr-x
newuidmap
38.06
KB
-rwxr-xr-x
nf-ct-add
11.8
KB
-rwxr-xr-x
nf-ct-list
15.84
KB
-rwxr-xr-x
nf-exp-add
16.21
KB
-rwxr-xr-x
nf-exp-delete
15.99
KB
-rwxr-xr-x
nf-exp-list
11.8
KB
-rwxr-xr-x
nf-log
11.23
KB
-rwxr-xr-x
nf-monitor
11.18
KB
-rwxr-xr-x
nf-queue
11.27
KB
-rwxr-xr-x
nfs4_editfacl
31.88
KB
-rwxr-xr-x
nfs4_getfacl
19.23
KB
-rwxr-xr-x
nfs4_setfacl
31.88
KB
-rwxr-xr-x
nfsiostat-sysstat
52.52
KB
-rwxr-xr-x
ngettext
35.95
KB
-rwxr-xr-x
nice
32.32
KB
-rwxr-xr-x
nisdomainname
15.41
KB
-rwxr-xr-x
nl
40.6
KB
-rwxr-xr-x
nl-addr-add
11.65
KB
-rwxr-xr-x
nl-addr-delete
11.73
KB
-rwxr-xr-x
nl-addr-list
15.88
KB
-rwxr-xr-x
nl-class-add
11.7
KB
-rwxr-xr-x
nl-class-delete
11.55
KB
-rwxr-xr-x
nl-class-list
11.48
KB
-rwxr-xr-x
nl-classid-lookup
11.29
KB
-rwxr-xr-x
nl-cls-add
11.76
KB
-rwxr-xr-x
nl-cls-delete
11.68
KB
-rwxr-xr-x
nl-cls-list
11.58
KB
-rwxr-xr-x
nl-fib-lookup
11.41
KB
-rwxr-xr-x
nl-link-enslave
7.05
KB
-rwxr-xr-x
nl-link-ifindex2name
7.06
KB
-rwxr-xr-x
nl-link-list
11.52
KB
-rwxr-xr-x
nl-link-name2ifindex
7.05
KB
-rwxr-xr-x
nl-link-release
7.05
KB
-rwxr-xr-x
nl-link-set
11.64
KB
-rwxr-xr-x
nl-link-stats
11.39
KB
-rwxr-xr-x
nl-list-caches
11.08
KB
-rwxr-xr-x
nl-list-sockets
7.06
KB
-rwxr-xr-x
nl-monitor
11.2
KB
-rwxr-xr-x
nl-neigh-add
11.51
KB
-rwxr-xr-x
nl-neigh-delete
11.57
KB
-rwxr-xr-x
nl-neigh-list
11.46
KB
-rwxr-xr-x
nl-neightbl-list
11.27
KB
-rwxr-xr-x
nl-pktloc-lookup
11.36
KB
-rwxr-xr-x
nl-qdisc-add
11.6
KB
-rwxr-xr-x
nl-qdisc-delete
11.54
KB
-rwxr-xr-x
nl-qdisc-list
11.63
KB
-rwxr-xr-x
nl-route-add
11.73
KB
-rwxr-xr-x
nl-route-delete
15.86
KB
-rwxr-xr-x
nl-route-get
11.18
KB
-rwxr-xr-x
nl-route-list
11.77
KB
-rwxr-xr-x
nl-rule-list
11.3
KB
-rwxr-xr-x
nl-tctree-list
11.53
KB
-rwxr-xr-x
nl-util-addr
7.03
KB
-rwxr-xr-x
nm
45.43
KB
-rwxr-xr-x
nm-connection-editor
788.91
KB
-rwxr-xr-x
nm-online
15.16
KB
-rwxr-xr-x
nmblookup
120.24
KB
-rwxr-xr-x
nmcli
809.16
KB
-rwxr-xr-x
nmtui
646.77
KB
-rwxr-xr-x
nmtui-connect
646.77
KB
-rwxr-xr-x
nmtui-edit
646.77
KB
-rwxr-xr-x
nmtui-hostname
646.77
KB
-rwxr-xr-x
node
71.94
MB
-rwxr-xr-x
nohup
32.42
KB
-rwxr-xr-x
notify-send
15.34
KB
-rwxr-xr-x
npm
54
B
-rwxr-xr-x
nproc
32.37
KB
-rwxr-xr-x
npx
2.86
KB
-rwxr-xr-x
nroff
3.31
KB
-rwxr-xr-x
nsenter
28.22
KB
-rwxr-xr-x
nslookup
130.93
KB
-rwxr-xr-x
nss-policy-check
11.19
KB
-rwxr-xr-x
nsupdate
65.2
KB
-rwxr-xr-x
ntpstat
6.36
KB
-rwxr-xr-x
numad
51.8
KB
-rwxr-xr-x
numfmt
64.71
KB
-rwxr-xr-x
oLschema2ldif
28.5
KB
-rwxr-xr-x
objcopy
227.34
KB
-rwxr-xr-x
objdump
357.74
KB
-rwxr-xr-x
od
64.81
KB
-rwxr-xr-x
odbc_config
11.04
KB
-rwxr-xr-x
odbcinst
27.69
KB
-rwxr-xr-x
oddjob_request
35.75
KB
-rwxr-xr-x
ogg123
83.96
KB
-rwxr-xr-x
oggdec
15.78
KB
-rwxr-xr-x
oggenc
70.52
KB
-rwxr-xr-x
ogginfo
36.1
KB
-rwxr-xr-x
oldfind
186.41
KB
-rwxr-xr-x
on_ac_power
1.47
KB
-rwxr-xr-x
open
19.48
KB
-rwxr-xr-x
openssl
542.27
KB
-rwxr-xr-x
openvt
19.48
KB
-rwxr-xr-x
orbd
8.95
KB
-rwxr-xr-x
orc-bugreport
15.39
KB
-rwxr-xr-x
orca
12.76
KB
-rwxr-xr-x
os-prober
5.51
KB
-rwxr-xr-x
osinfo-db-export
19.71
KB
-rwxr-xr-x
osinfo-db-import
15.47
KB
-rwxr-xr-x
osinfo-db-path
11.29
KB
-rwxr-xr-x
osinfo-db-validate
19.55
KB
-rwxr-xr-x
osinfo-detect
15.55
KB
-rwxr-xr-x
osinfo-install-script
20.12
KB
-rwxr-xr-x
osinfo-query
16.45
KB
-rwxr-xr-x
over
106
B
-rwxr-xr-x
p11-kit
32.18
KB
-rwxr-xr-x
pacat
43.28
KB
-rwxr-xr-x
pack200
8.9
KB
-rwxr-xr-x
package-cleanup
17.39
KB
-rwxr-xr-x
pacmd
18.98
KB
-rwxr-xr-x
pactl
59.42
KB
-rwxr-xr-x
padsp
2.18
KB
-rwxr-xr-x
padsp-32
2.17
KB
-rwxr-xr-x
page_owner_sort
10.2
KB
-rwxr-xr-x
pamon
43.28
KB
-rwxr-xr-x
panelctl
12.38
KB
-rwxr-xr-x
pango-list
11.1
KB
-rwxr-xr-x
pango-querymodules-64
28.26
KB
-rwxr-xr-x
pango-view
49.47
KB
-rwxr-xr-x
paperconf
11.23
KB
-rwxr-xr-x
paplay
43.28
KB
-rwxr-xr-x
paps
31.9
KB
-rwxr-xr-x
parec
43.28
KB
-rwxr-xr-x
parecord
43.28
KB
-rwxr-xr-x
passwd
27.2
KB
-rwsr-xr-x
paste
32.34
KB
-rwxr-xr-x
pasuspender
15.13
KB
-rwxr-xr-x
patch
147
KB
-rwxr-xr-x
pathchk
32.31
KB
-rwxr-xr-x
pax11publish
14.99
KB
-rwxr-xr-x
pbm2ppa
27.48
KB
-rwxr-xr-x
pbmtpg
11.12
KB
-rwxr-xr-x
pchrt
3.93
KB
-rwxr-xr-x
pcre-config
2.09
KB
-rwxr-xr-x
pdf2dsc
698
B
-rwxr-xr-x
pdf2ps
909
B
-rwxr-xr-x
pdfdetach
16.16
KB
-rwxr-xr-x
pdffonts
15.63
KB
-rwxr-xr-x
pdfimages
44.59
KB
-rwxr-xr-x
pdfinfo
28.24
KB
-rwxr-xr-x
pdfseparate
15.52
KB
-rwxr-xr-x
pdftocairo
120.45
KB
-rwxr-xr-x
pdftohtml
90.21
KB
-rwxr-xr-x
pdftoppm
19.64
KB
-rwxr-xr-x
pdftops
19.77
KB
-rwxr-xr-x
pdftotext
28.08
KB
-rwxr-xr-x
pdfunite
19.78
KB
-rwxr-xr-x
pdns_control
6.44
MB
-rwxr-xr-x
pdnsutil
51.73
MB
-rwxr-xr-x
peekfd
11.21
KB
-rwxr-xr-x
perl
11.14
KB
-rwxr-xr-x
perl5.16.3
11.14
KB
-rwxr-xr-x
perlbug
43.61
KB
-rwxr-xr-x
perldoc
203
B
-rwxr-xr-x
perlivp
10.52
KB
-rwxr-xr-x
perlml
5.98
KB
-rwxr-xr-x
perlthanks
43.61
KB
-rwxr-xr-x
perror
7.79
MB
-rwxr-xr-x
pf2afm
498
B
-rwxr-xr-x
pfbtopfa
516
B
-rwxr-xr-x
pflags
2.06
KB
-rwxr-xr-x
pftp
85.5
KB
-rwxr-xr-x
pg_basebackup
53.39
KB
-rwxr-xr-x
pg_config
28
KB
-rwxr-xr-x
pg_controldata
23.84
KB
-rwxr-xr-x
pg_ctl
36.55
KB
-rwxr-xr-x
pg_dump
305.75
KB
-rwxr-xr-x
pg_dumpall
73.89
KB
-rwxr-xr-x
pg_receivexlog
36.75
KB
-rwxr-xr-x
pg_resetxlog
32.03
KB
-rwxr-xr-x
pg_restore
126.79
KB
-rwxr-xr-x
pgawk
418.63
KB
-rwxr-xr-x
pgrep
27.67
KB
-rwxr-xr-x
php
937
B
-rwxr-xr-x
pic
180.41
KB
-rwxr-xr-x
piconv
7.99
KB
-rwxr-xr-x
pidstat
68.89
KB
-rwxr-xr-x
pinentry
2.54
KB
-rwxr-xr-x
pinentry-curses
49.19
KB
-rwxr-xr-x
pinentry-gtk
108.2
KB
-rwxr-xr-x
pinentry-gtk-2
108.2
KB
-rwxr-xr-x
pinfo
98.52
KB
-rwxr-xr-x
ping
64.63
KB
-rwxr-xr-x
ping6
64.63
KB
-rwxr-xr-x
pinky
36.57
KB
-rwxr-xr-x
pitchplay
1005
B
-rwxr-xr-x
pk12util
103.21
KB
-rwxr-xr-x
pkaction
15
KB
-rwxr-xr-x
pkcheck
23.03
KB
-rwxr-xr-x
pkcon
73.47
KB
-rwxr-xr-x
pkcs1-conv
15.52
KB
-rwxr-xr-x
pkexec
27.02
KB
-rwsr-xr-x
pkg-config
44.38
KB
-rwxr-xr-x
pkill
27.67
KB
-rwxr-xr-x
pkla-admin-identities
19.23
KB
-rwxr-xr-x
pkla-check-authorization
27.3
KB
-rwxr-xr-x
pkmon
19.83
KB
-rwxr-xr-x
pkttyagent
18.98
KB
-rwxr-xr-x
pl2pm
4.42
KB
-rwxr-xr-x
play
64.75
KB
-rwxr-xr-x
pldd
14.11
KB
-rwxr-xr-x
plistutil
11.16
KB
-rwxr-xr-x
plymouth
39.77
KB
-rwxr-xr-x
pm-is-supported
983
B
-rwxr-xr-x
pm2
56
B
-rwxr-xr-x
pm2-dev
59
B
-rwxr-xr-x
pm2-docker
67
B
-rwxr-xr-x
pm2-runtime
67
B
-rwxr-xr-x
pmap
27.61
KB
-rwxr-xr-x
pngtogd
7.05
KB
-rwxr-xr-x
pngtogd2
7.05
KB
-rwxr-xr-x
pnm2ppa
611.31
KB
-rwxr-xr-x
pod2html
4
KB
-rwxr-xr-x
pod2latex
10.1
KB
-rwxr-xr-x
pod2man
13.26
KB
-rwxr-xr-x
pod2text
10.75
KB
-rwxr-xr-x
pod2usage
3.67
KB
-rwxr-xr-x
podchecker
3.7
KB
-rwxr-xr-x
podselect
2.55
KB
-rwxr-xr-x
policyeditor
5.56
KB
-rwxr-xr-x
policyeditor.itweb
5.56
KB
-rwxr-xr-x
policytool
8.91
KB
-rwxr-xr-x
post-grohtml
187.55
KB
-rwxr-xr-x
postgres
5.41
MB
-rwxr-xr-x
postgresql-check-db-dir
2.11
KB
-rwxr-xr-x
postgresql-setup
8.63
KB
-rwxr-xr-x
postmaster
5.41
MB
-rwxr-xr-x
powernow-k8-decode
6.15
KB
-rwxr-xr-x
ppdc
19.11
KB
-rwxr-xr-x
ppdhtml
11.09
KB
-rwxr-xr-x
ppdi
11.07
KB
-rwxr-xr-x
ppdmerge
15.02
KB
-rwxr-xr-x
ppdpo
11.09
KB
-rwxr-xr-x
pphs
404
B
-rwxr-xr-x
pr
65.11
KB
-rwxr-xr-x
pre-grohtml
86.24
KB
-rwxr-xr-x
precat
5.52
KB
-rwxr-xr-x
preconv
40.88
KB
-rwxr-xr-x
preunzip
5.52
KB
-rwxr-xr-x
prezip
5.52
KB
-rwxr-xr-x
prezip-bin
11.05
KB
-rwxr-xr-x
printafm
395
B
-rwxr-xr-x
printenv
28.28
KB
-rwxr-xr-x
printf
48.61
KB
-rwxr-xr-x
prlimit
41.2
KB
-rwxr-xr-x
prove
13.13
KB
-rwxr-xr-x
prtstat
15.25
KB
-rwxr-xr-x
prxs
9.21
KB
-rwxr-xr-x
ps
97.77
KB
-rwxr-xr-x
ps2ascii
631
B
-rwxr-xr-x
ps2epsi
2.69
KB
-rwxr-xr-x
ps2pdf
272
B
-rwxr-xr-x
ps2pdf12
215
B
-rwxr-xr-x
ps2pdf13
215
B
-rwxr-xr-x
ps2pdf14
215
B
-rwxr-xr-x
ps2pdfwr
1.07
KB
-rwxr-xr-x
ps2ps
647
B
-rwxr-xr-x
ps2ps2
669
B
-rwxr-xr-x
psed
52.08
KB
-rwxr-xr-x
psfaddtable
19.48
KB
-rwxr-xr-x
psfgettable
19.48
KB
-rwxr-xr-x
psfstriptable
19.48
KB
-rwxr-xr-x
psfxtable
19.48
KB
-rwxr-xr-x
psql
438.74
KB
-rwxr-xr-x
pstack
1.05
KB
-rwxr-xr-x
pstree
27.84
KB
-rwxr-xr-x
pstree.x11
27.84
KB
-rwxr-xr-x
pstruct
35.75
KB
-rwxr-xr-x
ptar
3.43
KB
-rwxr-xr-x
ptardiff
2.41
KB
-rwxr-xr-x
ptargrep
4.13
KB
-rwxr-xr-x
ptaskset
3.8
KB
-rwxr-xr-x
ptx
65.08
KB
-rwxr-xr-x
pulseaudio
87.64
KB
-rwxr-xr-x
purple-client-example
7.04
KB
-rwxr-xr-x
purple-remote
7.92
KB
-rwxr-xr-x
purple-send
776
B
-rwxr-xr-x
purple-send-async
635
B
-rwxr-xr-x
purple-url-handler
11.79
KB
-rwxr-xr-x
pwd
32.45
KB
-rwxr-xr-x
pwdx
11.27
KB
-rwxr-xr-x
pwmake
11.13
KB
-rwxr-xr-x
pwscore
11.13
KB
-rwxr-xr-x
pydoc
78
B
-rwxr-xr-x
pygettext.py
21.57
KB
-rwxr-xr-x
pygtk-demo
188
B
-rwxr-xr-x
pyinotify
42
B
-rwxr-xr-x
pynche
137
B
-rwxr-xr-x
python
6.98
KB
-rwxr-xr-x
python-config
1.79
KB
-rwxr-xr-x
python2
6.98
KB
-rwxr-xr-x
python2-config
1.79
KB
-rwxr-xr-x
python2.7
6.98
KB
-rwxr-xr-x
python2.7-config
1.79
KB
-rwxr-xr-x
qemu-ga
267.8
KB
-rwxr-xr-x
qemu-img
800.89
KB
-rwxr-xr-x
qemu-io
772.91
KB
-rwxr-xr-x
qemu-nbd
777.15
KB
-rwxr-xr-x
qmi-network
13.14
KB
-rwxr-xr-x
qmicli
332.62
KB
-rwxr-xr-x
quota
83.31
KB
-rwsr-xr-x
quotasync
70.84
KB
-rwxr-xr-x
ranlib
61.22
KB
-rwxr-xr-x
raw
15.27
KB
-rwxr-xr-x
rb
74.96
KB
-rwxr-xr-x
rctest
149.13
KB
-rwxr-xr-x
rdate
10.3
KB
-rwxr-xr-x
rdoc
934
B
-rwxr-xr-x
read
28
B
-rwxr-xr-x
readcd
97.57
KB
-rwxr-xr-x
readelf
509.83
KB
-rwxr-xr-x
readlink
40.82
KB
-rwxr-xr-x
readmult
800
B
-rwxr-xr-x
readom
97.57
KB
-rwxr-xr-x
realpath
61.23
KB
-rwxr-xr-x
rebuild-jar-repository
1.76
KB
-rwxr-xr-x
rec
64.75
KB
-rwxr-xr-x
recode-sr-latin
15.29
KB
-rwxr-xr-x
red
89
B
-rwxr-xr-x
regdiff
24.73
KB
-rwxr-xr-x
regpatch
24.7
KB
-rwxr-xr-x
regshell
40.89
KB
-rwxr-xr-x
regtree
28.72
KB
-rwxr-xr-x
reindexdb
57.27
KB
-rwxr-xr-x
rename
11.26
KB
-rwxr-xr-x
renice
11.21
KB
-rwxr-xr-x
replace
5.16
MB
-rwxr-xr-x
repo-graph
4.09
KB
-rwxr-xr-x
repo-rss
10.07
KB
-rwxr-xr-x
repoclosure
11.42
KB
-rwxr-xr-x
repodiff
13.97
KB
-rwxr-xr-x
repomanage
6.88
KB
-rwxr-xr-x
repoquery
55.68
KB
-rwxr-xr-x
report-cli
28.03
KB
-rwxr-xr-x
report-gtk
127.45
KB
-rwxr-xr-x
reporter-bugzilla
52.74
KB
-rwxr-xr-x
reporter-mailx
32.1
KB
-rwxr-xr-x
reporter-mantisbt
56.94
KB
-rwxr-xr-x
reporter-rhtsupport
53.04
KB
-rwxr-xr-x
reporter-upload
15.29
KB
-rwxr-xr-x
reporter-ureport
19.3
KB
-rwxr-xr-x
reposync
14.14
KB
-rwxr-xr-x
repotrack
9.86
KB
-rwxr-xr-x
rescan-scsi-bus.sh
33.81
KB
-rwxr-xr-x
reset
19.6
KB
-rwxr-xr-x
resizecons
19.63
KB
-rwxr-xr-x
resolve_stack_dump
7.73
MB
-rwxr-xr-x
resolveip
7.66
MB
-rwxr-xr-x
rev
11.26
KB
-rwxr-xr-x
rfcomm
106.92
KB
-rwxr-xr-x
rhino
594
B
-rwxr-xr-x
ri
184
B
-rwxr-xr-x
rm
61.4
KB
-rwxr-xr-x
rmdir
44.46
KB
-rwxr-xr-x
rmid
8.9
KB
-rwxr-xr-x
rmiregistry
8.91
KB
-rwxr-xr-x
rnano
201.08
KB
-rwxr-xr-x
rngtest
16.02
KB
-rwxr-xr-x
rpcclient
1.17
MB
-rwxr-xr-x
rpcgen
90.45
KB
-rwxr-xr-x
rpm
15.75
KB
-rwxr-xr-x
rpm2cpio
11.16
KB
-rwxr-xr-x
rpmdb
11.73
KB
-rwxr-xr-x
rpmdumpheader
11.09
KB
-rwxr-xr-x
rpmkeys
11.73
KB
-rwxr-xr-x
rpmquery
15.75
KB
-rwxr-xr-x
rpmverify
15.75
KB
-rwxr-xr-x
rsync
488.38
KB
-rwxr-xr-x
rsyslog-recover-qi.pl
5.96
KB
-rwxr-xr-x
ruby
7.02
KB
-rwxr-xr-x
run-parts
2.04
KB
-rwxr-xr-x
run-with-aspell
85
B
-rwxr-xr-x
runcon
32.47
KB
-rwxr-xr-x
rvi
906.45
KB
-rwxr-xr-x
rview
906.45
KB
-rwxr-xr-x
rvim
2.23
MB
-rwxr-xr-x
rx
74.96
KB
-rwxr-xr-x
rxe_cfg
14.78
KB
-rwxr-xr-x
rz
74.96
KB
-rwxr-xr-x
s2p
52.08
KB
-rwxr-xr-x
sadf
168.45
KB
-rwxr-xr-x
samba-regedit
101.84
KB
-rwxr-xr-x
sandbox
17.52
KB
-rwxr-xr-x
sane-find-scanner
113.04
KB
-rwxr-xr-x
sar
95.38
KB
-rwxr-xr-x
satyr
15.4
KB
-rwxr-xr-x
saytime
5.76
KB
-rwxr-xr-x
sb
78.98
KB
-rwxr-xr-x
sbcdec
63.66
KB
-rwxr-xr-x
sbcenc
63.79
KB
-rwxr-xr-x
sbcinfo
11.13
KB
-rwxr-xr-x
scanimage
48.1
KB
-rwxr-xr-x
scl
19.5
KB
-rwxr-xr-x
scl_enabled
258
B
-rwxr-xr-x
scl_source
1.83
KB
-rwxr-xr-x
scp
89.23
KB
-rwxr-xr-x
scp-dbus-service
90
B
-rwxr-xr-x
script
19.61
KB
-rwxr-xr-x
scriptreplay
15.29
KB
-rwxr-xr-x
scsi-rescan
33.81
KB
-rwxr-xr-x
scsi_logging_level
7.72
KB
-rwxr-xr-x
scsi_mandat
3.55
KB
-rwxr-xr-x
scsi_readcap
1.3
KB
-rwxr-xr-x
scsi_ready
1.09
KB
-rwxr-xr-x
scsi_satl
3.76
KB
-rwxr-xr-x
scsi_start
1.25
KB
-rwxr-xr-x
scsi_stop
1.44
KB
-rwxr-xr-x
scsi_temperature
936
B
-rwxr-xr-x
sctp_darn
44.55
KB
-rwxr-xr-x
sctp_status
23.67
KB
-rwxr-xr-x
sctp_test
31.78
KB
-rwxr-xr-x
sdiff
48.41
KB
-rwxr-xr-x
sdp_long_message
23.03
KB
-rwxr-xr-x
sdp_run_test
11.29
KB
-rwxr-xr-x
sdptool
209.02
KB
-rwxr-xr-x
seahorse
1.06
MB
-rwxr-xr-x
sealert
26.67
KB
-rwxr-xr-x
seapplet
19.7
KB
-rwxr-xr-x
secon
24.06
KB
-rwxr-xr-x
secret-tool
19.68
KB
-rwxr-xr-x
sed
74.29
KB
-rwxr-xr-x
sedismod
249.42
KB
-rwxr-xr-x
sedispol
176.32
KB
-rwxr-xr-x
selfsign-getcert
154.2
KB
-rwxr-xr-x
semodule_package
15.3
KB
-rwxr-xr-x
sendiso
11.52
KB
-rwxr-xr-x
seq
48.48
KB
-rwxr-xr-x
servertool
8.91
KB
-rwxr-xr-x
sessreg
11.24
KB
-rwxr-xr-x
setarch
15.27
KB
-rwxr-xr-x
setcifsacl
19.1
KB
-rwxr-xr-x
setfacl
36.73
KB
-rwxr-xr-x
setfattr
15.71
KB
-rwxr-xr-x
setfont
40.38
KB
-rwxr-xr-x
setkeycodes
11.16
KB
-rwxr-xr-x
setleds
11.16
KB
-rwxr-xr-x
setmetamode
11.21
KB
-rwxr-xr-x
setpriv
36.06
KB
-rwxr-xr-x
setserial
20.54
KB
-rwxr-xr-x
setsid
11.23
KB
-rwxr-xr-x
setterm
27.48
KB
-rwxr-xr-x
setup
6.95
KB
-rwxr-xr-x
setup-nsssysinit
1.5
KB
-rwxr-xr-x
setup-nsssysinit.sh
1.5
KB
-rwxr-xr-x
setvtrgb
11.34
KB
-rwxr-xr-x
setxkbmap
23.96
KB
-rwxr-xr-x
sexp-conv
23.63
KB
-rwxr-xr-x
sftp
142.01
KB
-rwxr-xr-x
sg
40.95
KB
-rwxr-xr-x
sg_compare_and_write
15.82
KB
-rwxr-xr-x
sg_copy_results
20.02
KB
-rwxr-xr-x
sg_dd
43.63
KB
-rwxr-xr-x
sg_decode_sense
15.49
KB
-rwxr-xr-x
sg_emc_trespass
11.09
KB
-rwxr-xr-x
sg_format
24.05
KB
-rwxr-xr-x
sg_get_config
28.22
KB
-rwxr-xr-x
sg_get_lba_status
15.5
KB
-rwxr-xr-x
sg_ident
15.46
KB
-rwxr-xr-x
sg_inq
83.68
KB
-rwxr-xr-x
sg_logs
92.48
KB
-rwxr-xr-x
sg_luns
19.65
KB
-rwxr-xr-x
sg_map
15.23
KB
-rwxr-xr-x
sg_map26
23.77
KB
-rwxr-xr-x
sg_modes
29.3
KB
-rwxr-xr-x
sg_opcodes
23.88
KB
-rwxr-xr-x
sg_persist
28.34
KB
-rwxr-xr-x
sg_prevent
11.29
KB
-rwxr-xr-x
sg_raw
19.78
KB
-rwxr-xr-x
sg_rbuf
19.66
KB
-rwxr-xr-x
sg_rdac
15.13
KB
-rwxr-xr-x
sg_read
23.33
KB
-rwxr-xr-x
sg_read_block_limits
11.31
KB
-rwxr-xr-x
sg_read_buffer
15.53
KB
-rwxr-xr-x
sg_read_long
15.55
KB
-rwxr-xr-x
sg_readcap
19.66
KB
-rwxr-xr-x
sg_reassign
15.54
KB
-rwxr-xr-x
sg_referrals
15.48
KB
-rwxr-xr-x
sg_requests
15.58
KB
-rwxr-xr-x
sg_reset
11.46
KB
-rwxr-xr-x
sg_rmsn
11.32
KB
-rwxr-xr-x
sg_rtpg
15.39
KB
-rwxr-xr-x
sg_safte
19.59
KB
-rwxr-xr-x
sg_sanitize
19.88
KB
-rwxr-xr-x
sg_sat_identify
15.55
KB
-rwxr-xr-x
sg_sat_phy_event
15.87
KB
-rwxr-xr-x
sg_sat_set_features
15.41
KB
-rwxr-xr-x
sg_scan
15.34
KB
-rwxr-xr-x
sg_senddiag
20.02
KB
-rwxr-xr-x
sg_ses
67.55
KB
-rwxr-xr-x
sg_start
19.7
KB
-rwxr-xr-x
sg_stpg
19.61
KB
-rwxr-xr-x
sg_sync
15.52
KB
-rwxr-xr-x
sg_test_rwbuf
15.6
KB
-rwxr-xr-x
sg_turs
15.48
KB
-rwxr-xr-x
sg_unmap
15.5
KB
-rwxr-xr-x
sg_verify
15.7
KB
-rwxr-xr-x
sg_vpd
77.67
KB
-rwxr-xr-x
sg_wr_mode
19.55
KB
-rwxr-xr-x
sg_write_buffer
15.66
KB
-rwxr-xr-x
sg_write_long
15.55
KB
-rwxr-xr-x
sg_write_same
19.9
KB
-rwxr-xr-x
sg_xcopy
35.61
KB
-rwxr-xr-x
sginfo
65.8
KB
-rwxr-xr-x
sgm_dd
31.52
KB
-rwxr-xr-x
sgp_dd
35.83
KB
-rwxr-xr-x
sh
941.93
KB
-rwxr-xr-x
sha1sum
36.57
KB
-rwxr-xr-x
sha224sum
40.63
KB
-rwxr-xr-x
sha256sum
40.63
KB
-rwxr-xr-x
sha384sum
40.65
KB
-rwxr-xr-x
sha512sum
40.65
KB
-rwxr-xr-x
sharesec
35.09
KB
-rwxr-xr-x
shasum
8.4
KB
-rwxr-xr-x
show-changed-rco
10.13
KB
-rwxr-xr-x
show-installed
16.18
KB
-rwxr-xr-x
showconsolefont
15.47
KB
-rwxr-xr-x
showkey
15.23
KB
-rwxr-xr-x
showrgb
7.08
KB
-rwxr-xr-x
shred
52.94
KB
-rwxr-xr-x
shuf
49.13
KB
-rwxr-xr-x
signver
102.59
KB
-rwxr-xr-x
sim_client
14.97
KB
-rwxr-xr-x
sim_lsmplugin
1.22
KB
-rwxr-xr-x
simc_lsmplugin
105.79
KB
-rwxr-xr-x
size
32.35
KB
-rwxr-xr-x
skill
23.62
KB
-rwxr-xr-x
slabinfo
34.96
KB
-rwxr-xr-x
slabtop
19.52
KB
-rwxr-xr-x
sleep
32.35
KB
-rwxr-xr-x
sliceprint
1.99
KB
-rwxr-xr-x
slogin
756.39
KB
-rwxr-xr-x
smbcacls
43.14
KB
-rwxr-xr-x
smbclient
156.79
KB
-rwxr-xr-x
smbcquotas
27.07
KB
-rwxr-xr-x
smbget
27.19
KB
-rwxr-xr-x
smbprint
2.23
KB
-rwxr--r--
smbspool
23.05
KB
-rwxr-xr-x
smbtar
4.78
KB
-rwxr-xr-x
smbtree
18.98
KB
-rwxr-xr-x
smtpd.py
18.1
KB
-rwxr-xr-x
sndfile-resample
15.19
KB
-rwxr-xr-x
snice
23.62
KB
-rwxr-xr-x
soelim
32.59
KB
-rwxr-xr-x
sort
114.94
KB
-rwxr-xr-x
sotruss
4.24
KB
-rwxr-xr-x
sound_dump
15.33
KB
-rwxr-xr-x
soundstretch
26.59
KB
-rwxr-xr-x
sox
64.75
KB
-rwxr-xr-x
soxi
64.75
KB
-rwxr-xr-x
spd-conf
218
B
-rwxr-xr-x
spd-say
19.98
KB
-rwxr-xr-x
spdsend
15.55
KB
-rwxr-xr-x
speaker-test
27.93
KB
-rwxr-xr-x
speech-dispatcher
138.47
KB
-rwxr-xr-x
spell
122
B
-rwxr-xr-x
spice-streaming-agent
61.38
KB
-rwxr-xr-x
spice-vdagent
65.05
KB
-rwxr-xr-x
splain
18.03
KB
-rwxr-xr-x
split
69.47
KB
-rwxr-xr-x
sprof
22.1
KB
-rwxr-xr-x
sqlite3
54.95
KB
-rwxr-xr-x
ssh
756.39
KB
-rwxr-xr-x
ssh-add
352.48
KB
-rwxr-xr-x
ssh-agent
373.26
KB
---x--s--x
ssh-copy-id
10.22
KB
-rwxr-xr-x
ssh-keygen
409.38
KB
-rwxr-xr-x
ssh-keyscan
430.7
KB
-rwxr-xr-x
ssltap
118.42
KB
-rwxr-xr-x
sss_ssh_authorizedkeys
23.36
KB
-rwxr-xr-x
sss_ssh_knownhostsproxy
27.36
KB
-rwxr-xr-x
stap-merge
10.96
KB
-rwxr-xr-x
stap-report
4.74
KB
-rwxr-xr-x
stapbpf
64.53
KB
-rwxr-xr-x
stapdyn
195.27
KB
-rwxr-xr-x
staprun
207.11
KB
---s--x---
stapsh
23.18
KB
-rwxr-xr-x
start-pulseaudio-x11
1.31
KB
-rwxr-xr-x
start-stop
5.68
MB
-rwxrwxrwx
startx
5.44
KB
-rwxr-xr-x
stat
77.19
KB
-rwxr-xr-x
states
97.16
KB
-rwxr-xr-x
stdbuf
64.88
KB
-rwxr-xr-x
strace
1009.21
KB
-rwxr-xr-x
strace-log-merge
1.28
KB
-rwxr-xr-x
stream
7.04
KB
-rwxr-xr-x
strings
32.55
KB
-rwxr-xr-x
strip
227.34
KB
-rwxr-xr-x
stty
68.61
KB
-rwxr-xr-x
stunbdc
44.29
KB
-rwxr-xr-x
stund
40.08
KB
-rwxr-xr-x
su
31.38
KB
-rwsr-x---
sudo
147.88
KB
---s--x--x
sudoedit
147.88
KB
---s--x--x
sudoreplay
56.11
KB
---x--x--x
sum
36.55
KB
-rwxr-xr-x
sushi
546
B
-rwxr-xr-x
sw-engine
22.34
MB
-rwxr-xr-x
sx
78.98
KB
-rwxr-xr-x
sxpm
19.83
KB
-rwxr-xr-x
sync
28.33
KB
-rwxr-xr-x
synclient
18.76
KB
-rwxr-xr-x
syndaemon
19.6
KB
-rwxr-xr-x
system-config-abrt
15.27
KB
-rwxr-xr-x
system-config-printer
95
B
-rwxr-xr-x
system-config-printer-applet
80
B
-rwxr-xr-x
systemctl
704.8
KB
-rwxr-xr-x
systemd-analyze
1.49
MB
-rwxr-xr-x
systemd-ask-password
60.38
KB
-rwxr-xr-x
systemd-cat
39.98
KB
-rwxr-xr-x
systemd-cgls
326.29
KB
-rwxr-xr-x
systemd-cgtop
85.09
KB
-rwxr-xr-x
systemd-coredumpctl
154.52
KB
-rwxr-xr-x
systemd-delta
76.84
KB
-rwxr-xr-x
systemd-detect-virt
39.97
KB
-rwxr-xr-x
systemd-escape
48.2
KB
-rwxr-xr-x
systemd-firstboot
101.52
KB
-rwxr-xr-x
systemd-hwdb
85.31
KB
-rwxr-xr-x
systemd-inhibit
309.83
KB
-rwxr-xr-x
systemd-loginctl
489.62
KB
-rwxr-xr-x
systemd-machine-id-setup
52.23
KB
-rwxr-xr-x
systemd-notify
48.13
KB
-rwxr-xr-x
systemd-nspawn
545.88
KB
-rwxr-xr-x
systemd-path
52.16
KB
-rwxr-xr-x
systemd-run
387.05
KB
-rwxr-xr-x
systemd-stdio-bridge
305.77
KB
-rwxr-xr-x
systemd-sysv-convert
3.89
KB
-rwxr-xr-x
systemd-tmpfiles
146.13
KB
-rwxr-xr-x
systemd-tty-ask-password-agent
84.75
KB
-rwxr-xr-x
sz
78.98
KB
-rwxr-xr-x
tabs
15.31
KB
-rwxr-xr-x
tac
32.48
KB
-rwxr-xr-x
tail
65.25
KB
-rwxr-xr-x
tailf
23.88
KB
-rwxr-xr-x
tapestat
52.55
KB
-rwxr-xr-x
tar
338.02
KB
-rwxr-xr-x
targetcli
10.34
KB
-rwxr-xr-x
targetclid
7.97
KB
-rwxr-xr-x
targetctl
2.09
KB
-rwxr-xr-x
taskset
32.22
KB
-rwxr-xr-x
tbl
115.96
KB
-rwxr-xr-x
tclsh
7
KB
-rwxr-xr-x
tclsh8.5
7
KB
-rwxr-xr-x
tcptraceroute
1.44
KB
-rwxr-xr-x
tcsh
395.15
KB
-rwxr-xr-x
teamd
155.09
KB
-rwxr-xr-x
teamdctl
28.98
KB
-rwxr-xr-x
teamnl
19.09
KB
-rwxr-xr-x
tee
32.38
KB
-rwxr-xr-x
telepathy-gabble-xmpp-console
13.63
KB
-rwxr-xr-x
test
36.46
KB
-rwxr-xr-x
test_ppa
6.68
KB
-rwxr-xr-x
testgdbm
29.77
KB
-rwxr-xr-x
testlibraw
15.37
KB
-rwxr-xr-x
testrb
74
B
-rwxr-xr-x
text2wave
6.31
KB
-rwxr-xr-x
tgz
2.24
KB
-rwxr-xr-x
tic
64.26
KB
-rwxr-xr-x
time
15.55
KB
-rwxr-xr-x
timedatectl
330.22
KB
-rwxr-xr-x
timeout
53.31
KB
-rwxr-xr-x
tload
15.38
KB
-rwxr-xr-x
tmon
31.11
KB
-rwxr-xr-x
tnameserv
8.95
KB
-rwxr-xr-x
toc2cddb
221.41
KB
-rwxr-xr-x
toc2cue
221.37
KB
-rwxr-xr-x
toe
15.43
KB
-rwxr-xr-x
top
104.38
KB
-rwxr-xr-x
totem
15.23
KB
-rwxr-xr-x
totem-video-thumbnailer
28.13
KB
-rwxr-xr-x
touch
61.02
KB
-rwxr-xr-x
tput
15.41
KB
-rwxr-xr-x
tr
44.61
KB
-rwxr-xr-x
tracepath
15.05
KB
-rwxr-xr-x
tracepath6
15.05
KB
-rwxr-xr-x
traceroute
61.86
KB
-rwxr-xr-x
traceroute6
61.86
KB
-rwxr-xr-x
tracker
114.7
KB
-rwxr-xr-x
troff
512.96
KB
-rwxr-xr-x
true
28.26
KB
-rwxr-xr-x
truncate
52.68
KB
-rwxr-xr-x
trust
179.08
KB
-rwxr-xr-x
tset
19.6
KB
-rwxr-xr-x
tsort
36.47
KB
-rwxr-xr-x
ttmkfdir
99.04
KB
-rwxr-xr-x
tty
28.29
KB
-rwxr-xr-x
turbostat
113.15
KB
-rwxr-xr-x
tzselect
7.17
KB
-rwxr-xr-x
uapi
3.02
MB
-rwxr-xr-x
ucs2any
19.47
KB
-rwxr-xr-x
udevadm
414.27
KB
-rwxr-xr-x
udisksctl
55.45
KB
-rwxr-xr-x
ul
19.47
KB
-rwxr-xr-x
ulockmgr_server
15.11
KB
-rwxr-xr-x
umask
29
B
-rwxr-xr-x
umount
31.23
KB
-rwsr-xr-x
unalias
31
B
-rwxr-xr-x
uname
32.3
KB
-rwxr-xr-x
uncompress
24.49
KB
-rwxr-xr-x
unexpand
32.45
KB
-rwxr-xr-x
unicode_start
2.5
KB
-rwxr-xr-x
unicode_stop
363
B
-rwxr-xr-x
uniq
44.71
KB
-rwxr-xr-x
unix-lpr.sh
4.07
KB
-rwxr-xr-x
unlink
28.3
KB
-rwxr-xr-x
unlz4
105.84
KB
-rwxr-xr-x
unpack200
119.32
KB
-rwxr-xr-x
unshare
15.45
KB
-rwxr-xr-x
unxz
73.52
KB
-rwxr-xr-x
unzip
185.16
KB
-rwxr-xr-x
unzipsfx
88.66
KB
-rwxr-xr-x
update-ca-trust
1.03
KB
-rwxr-xr-x
update-desktop-database
19.7
KB
-rwxr-xr-x
update-gtk-immodules
313
B
-rwxr-xr-x
update-mime-database
52.82
KB
-rwxr-xr-x
updatedb
47.65
KB
-rwxr-xr-x
upower
15.13
KB
-rwxr-xr-x
uptime
11.22
KB
-rwxr-xr-x
urlgrabber
12.17
KB
-rwxr-xr-x
usb-devices
4.12
KB
-rwxr-xr-x
usbhid-dump
27.72
KB
-rwxr-xr-x
users
32.42
KB
-rwxr-xr-x
usleep
10.95
KB
-rwxr-xr-x
usx2yloader
15.41
KB
-rwxr-xr-x
utmpdump
15.45
KB
-rwxr-xr-x
uuclient
14.97
KB
-rwxr-xr-x
uuidgen
11.21
KB
-rwxr-xr-x
uz
2.25
KB
-rwxr-xr-x
vacuumdb
57.35
KB
-rwxr-xr-x
vcut
19.59
KB
-rwxr-xr-x
vdir
114.85
KB
-rwxr-xr-x
vdo
48.69
KB
-rwxr-xr-x
vdo-by-dev
1.44
KB
-rwxr-xr-x
vdodmeventd
62.33
KB
-rwxr-xr-x
vdodumpconfig
556.88
KB
-rwxr-xr-x
vdoforcerebuild
532.48
KB
-rwxr-xr-x
vdoformat
561.15
KB
-rwxr-xr-x
vdoprepareupgrade
532.23
KB
-rwxr-xr-x
vdoreadonly
532.24
KB
-rwxr-xr-x
vdostats
10.09
KB
-rwxr-xr-x
verify_blkparse
11.16
KB
-rwxr-xr-x
verifytree
10.79
KB
-rwxr-xr-x
vi
906.45
KB
-rwxr-xr-x
view
906.45
KB
-rwxr-xr-x
vim
2.23
MB
-rwxr-xr-x
vimdiff
2.23
MB
-rwxr-xr-x
vimtutor
2.04
KB
-rwxr-xr-x
vinagre
308.41
KB
-rwxr-xr-x
vlock
15.73
KB
-rwxr-xr-x
vm-support
9.57
KB
-rwxr-xr-x
vmhgfs-fuse
52.79
KB
-rwxr-xr-x
vmmouse_detect
11.37
KB
-rwxr-xr-x
vmstat
31.48
KB
-rwxr-xr-x
vmtoolsd
55.91
KB
-rwxr-xr-x
vmware-checkvm
11.07
KB
-rwxr-xr-x
vmware-hgfsclient
11.22
KB
-rwxr-xr-x
vmware-namespace-cmd
19.05
KB
-rwxr-xr-x
vmware-rpctool
19.47
KB
-rwxr-xr-x
vmware-toolbox-cmd
39.71
KB
-rwxr-xr-x
vmware-user
11.16
KB
-rwxr-xr-x
vmware-user-suid-wrapper
11.16
KB
-rwxr-xr-x
vmware-vgauth-cmd
15.02
KB
-rwxr-xr-x
vmware-vmblock-fuse
19.73
KB
-rwxr-xr-x
vmware-xferlogs
11.09
KB
-rwxr-xr-x
vncconfig
116.98
KB
-rwxr-xr-x
vncpasswd
27.63
KB
-rwxr-xr-x
vorbiscomment
32.35
KB
-rwxr-xr-x
vstp
23.58
KB
-rwxr-xr-x
vxloader
15.38
KB
-rwxr-xr-x
w
19.45
KB
-rwxr-xr-x
wait
28
B
-rwxr-xr-x
wall
14.98
KB
-r-xr-sr-x
watch
24.14
KB
-rwxr-xr-x
watchgnupg
15.35
KB
-rwxr-xr-x
wavpack
43.98
KB
-rwxr-xr-x
wayland-scanner
40.2
KB
-rwxr-xr-x
wc
40.67
KB
-rwxr-xr-x
wdctl
40.7
KB
-rwxr-xr-x
webpng
11.15
KB
-rwxr-xr-x
wget
408.96
KB
-rwxr-xr-x
whatis
45.49
KB
-rwxr-xr-x
whereis
20.2
KB
-rwxr-xr-x
which
23.77
KB
-rwxr-xr-x
whiptail
27.84
KB
-rwxr-xr-x
who
48.7
KB
-rwxr-xr-x
whoami
28.3
KB
-rwxr-xr-x
wish
7.04
KB
-rwxr-xr-x
wish8.5
7.04
KB
-rwxr-xr-x
withsctp
229
B
-rwxr-xr-x
wmf2eps
15.29
KB
-rwxr-xr-x
wmf2fig
15.27
KB
-rwxr-xr-x
wmf2gd
15.26
KB
-rwxr-xr-x
wmf2svg
15.3
KB
-rwxr-xr-x
wmf2x
15.25
KB
-rwxr-xr-x
wnck-urgency-monitor
11.45
KB
-rwxr-xr-x
wodim
304.54
KB
-rwxr-xr-x
word-list-compress
11.03
KB
-rwxr-xr-x
write
19.09
KB
-rwxr-sr-x
wvdial
154.39
KB
-rwxr-xr-x
wvdialconf
56.24
KB
-rwxr-xr-x
wvgain
32.3
KB
-rwxr-xr-x
wvunpack
44.12
KB
-rwxr-xr-x
x86_64
15.27
KB
-rwxr-xr-x
x86_64-redhat-linux-c++
754.59
KB
-rwxr-xr-x
x86_64-redhat-linux-g++
754.59
KB
-rwxr-xr-x
x86_64-redhat-linux-gcc
750.59
KB
-rwxr-xr-x
x86_energy_perf_policy
10.23
KB
-rwxr-xr-x
xargs
60.91
KB
-rwxr-xr-x
xauth
40.8
KB
-rwxr-xr-x
xbrlapi
78.27
KB
-rwxr-xr-x
xdg-desktop-icon
19.05
KB
-rwxr-xr-x
xdg-desktop-menu
41.91
KB
-rwxr-xr-x
xdg-email
23.4
KB
-rwxr-xr-x
xdg-icon-resource
28.05
KB
-rwxr-xr-x
xdg-mime
38.43
KB
-rwxr-xr-x
xdg-open
18.84
KB
-rwxr-xr-x
xdg-screensaver
27.86
KB
-rwxr-xr-x
xdg-settings
32.79
KB
-rwxr-xr-x
xdg-user-dir
234
B
-rwxr-xr-x
xdg-user-dirs-gtk-update
19.82
KB
-rwxr-xr-x
xdg-user-dirs-update
19.7
KB
-rwxr-xr-x
xdpyinfo
36.84
KB
-rwxr-xr-x
xdriinfo
11.16
KB
-rwxr-xr-x
xev
27.81
KB
-rwxr-xr-x
xgamma
11.15
KB
-rwxr-xr-x
xgettext
265.35
KB
-rwxr-xr-x
xhost
15.38
KB
-rwxr-xr-x
xinit
19.63
KB
-rwxr-xr-x
xinput
52.81
KB
-rwxr-xr-x
xkbcomp
208.35
KB
-rwxr-xr-x
xkill
15.27
KB
-rwxr-xr-x
xlsatoms
11.27
KB
-rwxr-xr-x
xlsclients
15.44
KB
-rwxr-xr-x
xlsfonts
19.48
KB
-rwxr-xr-x
xml2-config
1.68
KB
-rwxr-xr-x
xmlcatalog
15.3
KB
-rwxr-xr-x
xmllint
61.94
KB
-rwxr-xr-x
xmlsec1
59.93
KB
-rwxr-xr-x
xmlwf
24
KB
-rwxr-xr-x
xmodmap
32.28
KB
-rwxr-xr-x
xmvn-builddep
1.04
KB
-rwxr-xr-x
xorg-x11-fonts-update-dirs
1.29
KB
-rwxr--r--
xprop
38.4
KB
-rwxr-xr-x
xrandr
60.06
KB
-rwxr-xr-x
xrdb
27.78
KB
-rwxr-xr-x
xrefresh
11.16
KB
-rwxr-xr-x
xset
31.72
KB
-rwxr-xr-x
xsetmode
11.1
KB
-rwxr-xr-x
xsetpointer
11.13
KB
-rwxr-xr-x
xsetroot
19.38
KB
-rwxr-xr-x
xsetwacom
49.15
KB
-rwxr-xr-x
xslt-config
2.36
KB
-rwxr-xr-x
xsltproc
23.51
KB
-rwxr-xr-x
xstdcmap
15.77
KB
-rwxr-xr-x
xsubpp
4.45
KB
-rwxr-xr-x
xvattr
11.32
KB
-rwxr-xr-x
xvinfo
15.25
KB
-rwxr-xr-x
xwininfo
40.16
KB
-rwxr-xr-x
xxd
14.46
KB
-rwxr-xr-x
xz
73.52
KB
-rwxr-xr-x
xzcat
73.52
KB
-rwxr-xr-x
xzcmp
6.48
KB
-rwxr-xr-x
xzdec
11.21
KB
-rwxr-xr-x
xzdiff
6.48
KB
-rwxr-xr-x
xzegrep
5.76
KB
-rwxr-xr-x
xzfgrep
5.76
KB
-rwxr-xr-x
xzgrep
5.76
KB
-rwxr-xr-x
xzless
1.76
KB
-rwxr-xr-x
xzmore
2.11
KB
-rwxr-xr-x
yarn
1015
B
-rwxr-xr-x
yarnpkg
1015
B
-rwxr-xr-x
yelp
53.83
KB
-rwxr-xr-x
yes
28.3
KB
-rwxr-xr-x
ypdomainname
15.41
KB
-rwxr-xr-x
yum
801
B
-rwxr-xr-x
yum-builddep
9.95
KB
-rwxr-xr-x
yum-config-manager
9.35
KB
-rwxr-xr-x
yum-debug-dump
8.34
KB
-rwxr-xr-x
yum-debug-restore
7.72
KB
-rwxr-xr-x
yum-groups-manager
10.77
KB
-rwxr-xr-x
yumdownloader
10.85
KB
-rwxr-xr-x
zcat
1.9
KB
-rwxr-xr-x
zcmp
1.72
KB
-rwxr-xr-x
zdiff
5.63
KB
-rwxr-xr-x
zegrep
123
B
-rwxr-xr-x
zenheiset
1.09
KB
-rwxr-xr-x
zenity
101.2
KB
-rwxr-xr-x
zfgrep
123
B
-rwxr-xr-x
zforce
2.09
KB
-rwxr-xr-x
zgrep
5.98
KB
-rwxr-xr-x
zip
210.78
KB
-rwxr-xr-x
zipcloak
98.1
KB
-rwxr-xr-x
zipcmp
11.71
KB
-rwxr-xr-x
zipdetails
47.32
KB
-rwxr-xr-x
zipgrep
2.88
KB
-rwxr-xr-x
zipinfo
185.16
KB
-rwxr-xr-x
zipmerge
11.76
KB
-rwxr-xr-x
zipnote
93.73
KB
-rwxr-xr-x
zipsplit
97.75
KB
-rwxr-xr-x
ziptorrent
11.6
KB
-rwxr-xr-x
zless
1.99
KB
-rwxr-xr-x
zlib_decompress
164.5
KB
-rwxr-xr-x
zmore
2.79
KB
-rwxr-xr-x
znew
5.22
KB
-rwxr-xr-x
zone2json
16.53
MB
-rwxr-xr-x
zone2sql
17.06
MB
-rwxr-xr-x
zsoelim
32.59
KB
-rwxr-xr-x
Delete
Unzip
Zip
${this.title}
Close
Code Editor : h2xs
#!/usr/bin/perl eval 'exec /usr/bin/perl -S $0 ${1+"$@"}' if $running_under_some_shell; use warnings; =head1 NAME h2xs - convert .h C header files to Perl extensions =head1 SYNOPSIS B<h2xs> [B<OPTIONS> ...] [headerfile ... [extra_libraries]] B<h2xs> B<-h>|B<-?>|B<--help> =head1 DESCRIPTION I<h2xs> builds a Perl extension from C header files. The extension will include functions which can be used to retrieve the value of any #define statement which was in the C header files. The I<module_name> will be used for the name of the extension. If module_name is not supplied then the name of the first header file will be used, with the first character capitalized. If the extension might need extra libraries, they should be included here. The extension Makefile.PL will take care of checking whether the libraries actually exist and how they should be loaded. The extra libraries should be specified in the form -lm -lposix, etc, just as on the cc command line. By default, the Makefile.PL will search through the library path determined by Configure. That path can be augmented by including arguments of the form B<-L/another/library/path> in the extra-libraries argument. In spite of its name, I<h2xs> may also be used to create a skeleton pure Perl module. See the B<-X> option. =head1 OPTIONS =over 5 =item B<-A>, B<--omit-autoload> Omit all autoload facilities. This is the same as B<-c> but also removes the S<C<use AutoLoader>> statement from the .pm file. =item B<-B>, B<--beta-version> Use an alpha/beta style version number. Causes version number to be "0.00_01" unless B<-v> is specified. =item B<-C>, B<--omit-changes> Omits creation of the F<Changes> file, and adds a HISTORY section to the POD template. =item B<-F>, B<--cpp-flags>=I<addflags> Additional flags to specify to C preprocessor when scanning header for function declarations. Writes these options in the generated F<Makefile.PL> too. =item B<-M>, B<--func-mask>=I<regular expression> selects functions/macros to process. =item B<-O>, B<--overwrite-ok> Allows a pre-existing extension directory to be overwritten. =item B<-P>, B<--omit-pod> Omit the autogenerated stub POD section. =item B<-X>, B<--omit-XS> Omit the XS portion. Used to generate a skeleton pure Perl module. C<-c> and C<-f> are implicitly enabled. =item B<-a>, B<--gen-accessors> Generate an accessor method for each element of structs and unions. The generated methods are named after the element name; will return the current value of the element if called without additional arguments; and will set the element to the supplied value (and return the new value) if called with an additional argument. Embedded structures and unions are returned as a pointer rather than the complete structure, to facilitate chained calls. These methods all apply to the Ptr type for the structure; additionally two methods are constructed for the structure type itself, C<_to_ptr> which returns a Ptr type pointing to the same structure, and a C<new> method to construct and return a new structure, initialised to zeroes. =item B<-b>, B<--compat-version>=I<version> Generates a .pm file which is backwards compatible with the specified perl version. For versions < 5.6.0, the changes are. - no use of 'our' (uses 'use vars' instead) - no 'use warnings' Specifying a compatibility version higher than the version of perl you are using to run h2xs will have no effect. If unspecified h2xs will default to compatibility with the version of perl you are using to run h2xs. =item B<-c>, B<--omit-constant> Omit C<constant()> from the .xs file and corresponding specialised C<AUTOLOAD> from the .pm file. =item B<-d>, B<--debugging> Turn on debugging messages. =item B<-e>, B<--omit-enums>=[I<regular expression>] If I<regular expression> is not given, skip all constants that are defined in a C enumeration. Otherwise skip only those constants that are defined in an enum whose name matches I<regular expression>. Since I<regular expression> is optional, make sure that this switch is followed by at least one other switch if you omit I<regular expression> and have some pending arguments such as header-file names. This is ok: h2xs -e -n Module::Foo foo.h This is not ok: h2xs -n Module::Foo -e foo.h In the latter, foo.h is taken as I<regular expression>. =item B<-f>, B<--force> Allows an extension to be created for a header even if that header is not found in standard include directories. =item B<-g>, B<--global> Include code for safely storing static data in the .xs file. Extensions that do no make use of static data can ignore this option. =item B<-h>, B<-?>, B<--help> Print the usage, help and version for this h2xs and exit. =item B<-k>, B<--omit-const-func> For function arguments declared as C<const>, omit the const attribute in the generated XS code. =item B<-m>, B<--gen-tied-var> B<Experimental>: for each variable declared in the header file(s), declare a perl variable of the same name magically tied to the C variable. =item B<-n>, B<--name>=I<module_name> Specifies a name to be used for the extension, e.g., S<-n RPC::DCE> =item B<-o>, B<--opaque-re>=I<regular expression> Use "opaque" data type for the C types matched by the regular expression, even if these types are C<typedef>-equivalent to types from typemaps. Should not be used without B<-x>. This may be useful since, say, types which are C<typedef>-equivalent to integers may represent OS-related handles, and one may want to work with these handles in OO-way, as in C<$handle-E<gt>do_something()>. Use C<-o .> if you want to handle all the C<typedef>ed types as opaque types. The type-to-match is whitewashed (except for commas, which have no whitespace before them, and multiple C<*> which have no whitespace between them). =item B<-p>, B<--remove-prefix>=I<prefix> Specify a prefix which should be removed from the Perl function names, e.g., S<-p sec_rgy_> This sets up the XS B<PREFIX> keyword and removes the prefix from functions that are autoloaded via the C<constant()> mechanism. =item B<-s>, B<--const-subs>=I<sub1,sub2> Create a perl subroutine for the specified macros rather than autoload with the constant() subroutine. These macros are assumed to have a return type of B<char *>, e.g., S<-s sec_rgy_wildcard_name,sec_rgy_wildcard_sid>. =item B<-t>, B<--default-type>=I<type> Specify the internal type that the constant() mechanism uses for macros. The default is IV (signed integer). Currently all macros found during the header scanning process will be assumed to have this type. Future versions of C<h2xs> may gain the ability to make educated guesses. =item B<--use-new-tests> When B<--compat-version> (B<-b>) is present the generated tests will use C<Test::More> rather than C<Test> which is the default for versions before 5.6.2. C<Test::More> will be added to PREREQ_PM in the generated C<Makefile.PL>. =item B<--use-old-tests> Will force the generation of test code that uses the older C<Test> module. =item B<--skip-exporter> Do not use C<Exporter> and/or export any symbol. =item B<--skip-ppport> Do not use C<Devel::PPPort>: no portability to older version. =item B<--skip-autoloader> Do not use the module C<AutoLoader>; but keep the constant() function and C<sub AUTOLOAD> for constants. =item B<--skip-strict> Do not use the pragma C<strict>. =item B<--skip-warnings> Do not use the pragma C<warnings>. =item B<-v>, B<--version>=I<version> Specify a version number for this extension. This version number is added to the templates. The default is 0.01, or 0.00_01 if C<-B> is specified. The version specified should be numeric. =item B<-x>, B<--autogen-xsubs> Automatically generate XSUBs basing on function declarations in the header file. The package C<C::Scan> should be installed. If this option is specified, the name of the header file may look like C<NAME1,NAME2>. In this case NAME1 is used instead of the specified string, but XSUBs are emitted only for the declarations included from file NAME2. Note that some types of arguments/return-values for functions may result in XSUB-declarations/typemap-entries which need hand-editing. Such may be objects which cannot be converted from/to a pointer (like C<long long>), pointers to functions, or arrays. See also the section on L<LIMITATIONS of B<-x>>. =back =head1 EXAMPLES # Default behavior, extension is Rusers h2xs rpcsvc/rusers # Same, but extension is RUSERS h2xs -n RUSERS rpcsvc/rusers # Extension is rpcsvc::rusers. Still finds <rpcsvc/rusers.h> h2xs rpcsvc::rusers # Extension is ONC::RPC. Still finds <rpcsvc/rusers.h> h2xs -n ONC::RPC rpcsvc/rusers # Without constant() or AUTOLOAD h2xs -c rpcsvc/rusers # Creates templates for an extension named RPC h2xs -cfn RPC # Extension is ONC::RPC. h2xs -cfn ONC::RPC # Extension is a pure Perl module with no XS code. h2xs -X My::Module # Extension is Lib::Foo which works at least with Perl5.005_03. # Constants are created for all #defines and enums h2xs can find # in foo.h. h2xs -b 5.5.3 -n Lib::Foo foo.h # Extension is Lib::Foo which works at least with Perl5.005_03. # Constants are created for all #defines but only for enums # whose names do not start with 'bar_'. h2xs -b 5.5.3 -e '^bar_' -n Lib::Foo foo.h # Makefile.PL will look for library -lrpc in # additional directory /opt/net/lib h2xs rpcsvc/rusers -L/opt/net/lib -lrpc # Extension is DCE::rgynbase # prefix "sec_rgy_" is dropped from perl function names h2xs -n DCE::rgynbase -p sec_rgy_ dce/rgynbase # Extension is DCE::rgynbase # prefix "sec_rgy_" is dropped from perl function names # subroutines are created for sec_rgy_wildcard_name and # sec_rgy_wildcard_sid h2xs -n DCE::rgynbase -p sec_rgy_ \ -s sec_rgy_wildcard_name,sec_rgy_wildcard_sid dce/rgynbase # Make XS without defines in perl.h, but with function declarations # visible from perl.h. Name of the extension is perl1. # When scanning perl.h, define -DEXT=extern -DdEXT= -DINIT(x)= # Extra backslashes below because the string is passed to shell. # Note that a directory with perl header files would # be added automatically to include path. h2xs -xAn perl1 -F "-DEXT=extern -DdEXT= -DINIT\(x\)=" perl.h # Same with function declaration in proto.h as visible from perl.h. h2xs -xAn perl2 perl.h,proto.h # Same but select only functions which match /^av_/ h2xs -M '^av_' -xAn perl2 perl.h,proto.h # Same but treat SV* etc as "opaque" types h2xs -o '^[S]V \*$' -M '^av_' -xAn perl2 perl.h,proto.h =head2 Extension based on F<.h> and F<.c> files Suppose that you have some C files implementing some functionality, and the corresponding header files. How to create an extension which makes this functionality accessible in Perl? The example below assumes that the header files are F<interface_simple.h> and I<interface_hairy.h>, and you want the perl module be named as C<Ext::Ension>. If you need some preprocessor directives and/or linking with external libraries, see the flags C<-F>, C<-L> and C<-l> in L<"OPTIONS">. =over =item Find the directory name Start with a dummy run of h2xs: h2xs -Afn Ext::Ension The only purpose of this step is to create the needed directories, and let you know the names of these directories. From the output you can see that the directory for the extension is F<Ext/Ension>. =item Copy C files Copy your header files and C files to this directory F<Ext/Ension>. =item Create the extension Run h2xs, overwriting older autogenerated files: h2xs -Oxan Ext::Ension interface_simple.h interface_hairy.h h2xs looks for header files I<after> changing to the extension directory, so it will find your header files OK. =item Archive and test As usual, run cd Ext/Ension perl Makefile.PL make dist make make test =item Hints It is important to do C<make dist> as early as possible. This way you can easily merge(1) your changes to autogenerated files if you decide to edit your C<.h> files and rerun h2xs. Do not forget to edit the documentation in the generated F<.pm> file. Consider the autogenerated files as skeletons only, you may invent better interfaces than what h2xs could guess. Consider this section as a guideline only, some other options of h2xs may better suit your needs. =back =head1 ENVIRONMENT No environment variables are used. =head1 AUTHOR Larry Wall and others =head1 SEE ALSO L<perl>, L<perlxstut>, L<ExtUtils::MakeMaker>, and L<AutoLoader>. =head1 DIAGNOSTICS The usual warnings if it cannot read or write the files involved. =head1 LIMITATIONS of B<-x> F<h2xs> would not distinguish whether an argument to a C function which is of the form, say, C<int *>, is an input, output, or input/output parameter. In particular, argument declarations of the form int foo(n) int *n should be better rewritten as int foo(n) int &n if C<n> is an input parameter. Additionally, F<h2xs> has no facilities to intuit that a function int foo(addr,l) char *addr int l takes a pair of address and length of data at this address, so it is better to rewrite this function as int foo(sv) SV *addr PREINIT: STRLEN len; char *s; CODE: s = SvPV(sv,len); RETVAL = foo(s, len); OUTPUT: RETVAL or alternately static int my_foo(SV *sv) { STRLEN len; char *s = SvPV(sv,len); return foo(s, len); } MODULE = foo PACKAGE = foo PREFIX = my_ int foo(sv) SV *sv See L<perlxs> and L<perlxstut> for additional details. =cut # ' # Grr use strict; my( $H2XS_VERSION ) = ' $Revision: 1.23 $ ' =~ /\$Revision:\s+([^\s]+)/; my $TEMPLATE_VERSION = '0.01'; my @ARGS = @ARGV; my $compat_version = $]; use Getopt::Long; use Config; use Text::Wrap; $Text::Wrap::huge = 'overflow'; $Text::Wrap::columns = 80; use ExtUtils::Constant qw (WriteConstants WriteMakefileSnippet autoload); use File::Compare; use File::Path; sub usage { warn "@_\n" if @_; die <<EOFUSAGE; h2xs [OPTIONS ... ] [headerfile [extra_libraries]] version: $H2XS_VERSION OPTIONS: -A, --omit-autoload Omit all autoloading facilities (implies -c). -B, --beta-version Use beta \$VERSION of 0.00_01 (ignored if -v). -C, --omit-changes Omit creating the Changes file, add HISTORY heading to stub POD. -F, --cpp-flags Additional flags for C preprocessor/compile. -M, --func-mask Mask to select C functions/macros (default is select all). -O, --overwrite-ok Allow overwriting of a pre-existing extension directory. -P, --omit-pod Omit the stub POD section. -X, --omit-XS Omit the XS portion (implies both -c and -f). -a, --gen-accessors Generate get/set accessors for struct and union members (used with -x). -b, --compat-version Specify a perl version to be backwards compatible with. -c, --omit-constant Omit the constant() function and specialised AUTOLOAD from the XS file. -d, --debugging Turn on debugging messages. -e, --omit-enums Omit constants from enums in the constant() function. If a pattern is given, only the matching enums are ignored. -f, --force Force creation of the extension even if the C header does not exist. -g, --global Include code for safely storing static data in the .xs file. -h, -?, --help Display this help message. -k, --omit-const-func Omit 'const' attribute on function arguments (used with -x). -m, --gen-tied-var Generate tied variables for access to declared variables. -n, --name Specify a name to use for the extension (recommended). -o, --opaque-re Regular expression for \"opaque\" types. -p, --remove-prefix Specify a prefix which should be removed from the Perl function names. -s, --const-subs Create subroutines for specified macros. -t, --default-type Default type for autoloaded constants (default is IV). --use-new-tests Use Test::More in backward compatible modules. --use-old-tests Use the module Test rather than Test::More. --skip-exporter Do not export symbols. --skip-ppport Do not use portability layer. --skip-autoloader Do not use the module C<AutoLoader>. --skip-strict Do not use the pragma C<strict>. --skip-warnings Do not use the pragma C<warnings>. -v, --version Specify a version number for this extension. -x, --autogen-xsubs Autogenerate XSUBs using C::Scan. --use-xsloader Use XSLoader in backward compatible modules (ignored when used with -X). extra_libraries are any libraries that might be needed for loading the extension, e.g. -lm would try to link in the math library. EOFUSAGE } my ($opt_A, $opt_B, $opt_C, $opt_F, $opt_M, $opt_O, $opt_P, $opt_X, $opt_a, $opt_c, $opt_d, $opt_e, $opt_f, $opt_g, $opt_h, $opt_k, $opt_m, $opt_n, $opt_o, $opt_p, $opt_s, $opt_v, $opt_x, $opt_b, $opt_t, $new_test, $old_test, $skip_exporter, $skip_ppport, $skip_autoloader, $skip_strict, $skip_warnings, $use_xsloader ); Getopt::Long::Configure('bundling'); Getopt::Long::Configure('pass_through'); my %options = ( 'omit-autoload|A' => \$opt_A, 'beta-version|B' => \$opt_B, 'omit-changes|C' => \$opt_C, 'cpp-flags|F=s' => \$opt_F, 'func-mask|M=s' => \$opt_M, 'overwrite_ok|O' => \$opt_O, 'omit-pod|P' => \$opt_P, 'omit-XS|X' => \$opt_X, 'gen-accessors|a' => \$opt_a, 'compat-version|b=s' => \$opt_b, 'omit-constant|c' => \$opt_c, 'debugging|d' => \$opt_d, 'omit-enums|e:s' => \$opt_e, 'force|f' => \$opt_f, 'global|g' => \$opt_g, 'help|h|?' => \$opt_h, 'omit-const-func|k' => \$opt_k, 'gen-tied-var|m' => \$opt_m, 'name|n=s' => \$opt_n, 'opaque-re|o=s' => \$opt_o, 'remove-prefix|p=s' => \$opt_p, 'const-subs|s=s' => \$opt_s, 'default-type|t=s' => \$opt_t, 'version|v=s' => \$opt_v, 'autogen-xsubs|x' => \$opt_x, 'use-new-tests' => \$new_test, 'use-old-tests' => \$old_test, 'skip-exporter' => \$skip_exporter, 'skip-ppport' => \$skip_ppport, 'skip-autoloader' => \$skip_autoloader, 'skip-warnings' => \$skip_warnings, 'skip-strict' => \$skip_strict, 'use-xsloader' => \$use_xsloader, ); GetOptions(%options) || usage; usage if $opt_h; if( $opt_b ){ usage "You cannot use -b and -m at the same time.\n" if ($opt_b && $opt_m); $opt_b =~ /^v?(\d+)\.(\d+)\.(\d+)/ || usage "You must provide the backwards compatibility version in X.Y.Z form. " . "(i.e. 5.5.0)\n"; my ($maj,$min,$sub) = ($1,$2,$3); if ($maj < 5 || ($maj == 5 && $min < 6)) { $compat_version = $sub ? sprintf("%d.%03d%02d",$maj,$min,$sub) : sprintf("%d.%03d", $maj,$min); } else { $compat_version = sprintf("%d.%03d%03d",$maj,$min,$sub); } } else { my ($maj,$min,$sub) = $compat_version =~ /(\d+)\.(\d\d\d)(\d*)/; $sub ||= 0; warn sprintf <<'EOF', $maj,$min,$sub; Defaulting to backwards compatibility with perl %d.%d.%d If you intend this module to be compatible with earlier perl versions, please specify a minimum perl version with the -b option. EOF } if( $opt_B ){ $TEMPLATE_VERSION = '0.00_01'; } if( $opt_v ){ $TEMPLATE_VERSION = $opt_v; # check if it is numeric my $temp_version = $TEMPLATE_VERSION; my $beta_version = $temp_version =~ s/(\d)_(\d\d)/$1$2/; my $notnum; { local $SIG{__WARN__} = sub { $notnum = 1 }; use warnings 'numeric'; $temp_version = 0+$temp_version; } if ($notnum) { my $module = $opt_n || 'Your::Module'; warn <<"EOF"; You have specified a non-numeric version. Unless you supply an appropriate VERSION class method, users may not be able to specify a minimum required version with C<use $module versionnum>. EOF } else { $opt_B = $beta_version; } } # -A implies -c. $skip_autoloader = $opt_c = 1 if $opt_A; # -X implies -c and -f $opt_c = $opt_f = 1 if $opt_X; $opt_t ||= 'IV'; my %const_xsub; %const_xsub = map { $_,1 } split(/,+/, $opt_s) if $opt_s; my $extralibs = ''; my @path_h; while (my $arg = shift) { if ($arg =~ /^-l/i) { $extralibs .= "$arg "; next; } last if $extralibs; push(@path_h, $arg); } usage "Must supply header file or module name\n" unless (@path_h or $opt_n); my $fmask; my $tmask; $fmask = qr{$opt_M} if defined $opt_M; $tmask = qr{$opt_o} if defined $opt_o; my $tmask_all = $tmask && $opt_o eq '.'; if ($opt_x) { eval {require C::Scan; 1} or die <<EOD; C::Scan required if you use -x option. To install C::Scan, execute perl -MCPAN -e "install C::Scan" EOD unless ($tmask_all) { $C::Scan::VERSION >= 0.70 or die <<EOD; C::Scan v. 0.70 or later required unless you use -o . option. You have version $C::Scan::VERSION installed as $INC{'C/Scan.pm'}. To install C::Scan, execute perl -MCPAN -e "install C::Scan" EOD } if (($opt_m || $opt_a) && $C::Scan::VERSION < 0.73) { die <<EOD; C::Scan v. 0.73 or later required to use -m or -a options. You have version $C::Scan::VERSION installed as $INC{'C/Scan.pm'}. To install C::Scan, execute perl -MCPAN -e "install C::Scan" EOD } } elsif ($opt_o or $opt_F) { warn <<EOD if $opt_o; Option -o does not make sense without -x. EOD warn <<EOD if $opt_F and $opt_X ; Option -F does not make sense with -X. EOD } my @path_h_ini = @path_h; my ($name, %fullpath, %prefix, %seen_define, %prefixless, %const_names); my $module = $opt_n; if( @path_h ){ use File::Spec; my @paths; my $pre_sub_tri_graphs = 1; if ($^O eq 'VMS') { # Consider overrides of default location # XXXX This is not equivalent to what the older version did: # it was looking at $hadsys header-file per header-file... my($hadsys) = grep s!^sys/!!i , @path_h; @paths = qw( Sys$Library VAXC$Include ); push @paths, ($hadsys ? 'GNU_CC_Include[vms]' : 'GNU_CC_Include[000000]'); push @paths, qw( DECC$Library_Include DECC$System_Include ); } else { @paths = (File::Spec->curdir(), $Config{usrinc}, (split / +/, $Config{locincpth} // ""), '/usr/include'); } foreach my $path_h (@path_h) { $name ||= $path_h; $module ||= do { $name =~ s/\.h$//; if ( $name !~ /::/ ) { $name =~ s#^.*/##; $name = "\u$name"; } $name; }; if( $path_h =~ s#::#/#g && $opt_n ){ warn "Nesting of headerfile ignored with -n\n"; } $path_h .= ".h" unless $path_h =~ /\.h$/; my $fullpath = $path_h; $path_h =~ s/,.*$// if $opt_x; $fullpath{$path_h} = $fullpath; # Minor trickery: we can't chdir() before we processed the headers # (so know the name of the extension), but the header may be in the # extension directory... my $tmp_path_h = $path_h; my $rel_path_h = $path_h; my @dirs = @paths; if (not -f $path_h) { my $found; for my $dir (@paths) { $found++, last if -f ($path_h = File::Spec->catfile($dir, $tmp_path_h)); } if ($found) { $rel_path_h = $path_h; $fullpath{$path_h} = $fullpath; } else { (my $epath = $module) =~ s,::,/,g; $epath = File::Spec->catdir('ext', $epath) if -d 'ext'; $rel_path_h = File::Spec->catfile($epath, $tmp_path_h); $path_h = $tmp_path_h; # Used during -x push @dirs, $epath; } } if (!$opt_c) { die "Can't find $tmp_path_h in @dirs\n" if ( ! $opt_f && ! -f "$rel_path_h" ); # Scan the header file (we should deal with nested header files) # Record the names of simple #define constants into const_names # Function prototypes are processed below. open(CH, "<$rel_path_h") || die "Can't open $rel_path_h: $!\n"; defines: while (<CH>) { if ($pre_sub_tri_graphs) { # Preprocess all tri-graphs # including things stuck in quoted string constants. s/\?\?=/#/g; # | ??=| #| s/\?\?\!/|/g; # | ??!| || s/\?\?'/^/g; # | ??'| ^| s/\?\?\(/[/g; # | ??(| [| s/\?\?\)/]/g; # | ??)| ]| s/\?\?\-/~/g; # | ??-| ~| s/\?\?\//\\/g; # | ??/| \| s/\?\?</{/g; # | ??<| {| s/\?\?>/}/g; # | ??>| }| } if (/^[ \t]*#[ \t]*define\s+([\$\w]+)\b(?!\()\s*(?=[^"\s])(.*)/) { my $def = $1; my $rest = $2; $rest =~ s!/\*.*?(\*/|\n)|//.*!!g; # Remove comments $rest =~ s/^\s+//; $rest =~ s/\s+$//; # Cannot do: (-1) and ((LHANDLE)3) are OK: #print("Skip non-wordy $def => $rest\n"), # next defines if $rest =~ /[^\w\$]/; if ($rest =~ /"/) { print("Skip stringy $def => $rest\n") if $opt_d; next defines; } print "Matched $_ ($def)\n" if $opt_d; $seen_define{$def} = $rest; $_ = $def; next if /^_.*_h_*$/i; # special case, but for what? if (defined $opt_p) { if (!/^$opt_p(\d)/) { ++$prefix{$_} if s/^$opt_p//; } else { warn "can't remove $opt_p prefix from '$_'!\n"; } } $prefixless{$def} = $_; if (!$fmask or /$fmask/) { print "... Passes mask of -M.\n" if $opt_d and $fmask; $const_names{$_}++; } } } if (defined $opt_e and !$opt_e) { close(CH); } else { # Work from miniperl too - on "normal" systems my $SEEK_SET = eval 'use Fcntl qw/SEEK_SET/; SEEK_SET' || 0; seek CH, 0, $SEEK_SET; my $src = do { local $/; <CH> }; close CH; no warnings 'uninitialized'; # Remove C and C++ comments $src =~ s#/\*[^*]*\*+([^/*][^*]*\*+)*/|("(\\.|[^"\\])*"|'(\\.|[^'\\])*'|.[^/"'\\]*)#$2#gs; $src =~ s#//.*$##gm; while ($src =~ /\benum\s*([\w_]*)\s*\{\s([^}]+)\}/gsc) { my ($enum_name, $enum_body) = ($1, $2); # skip enums matching $opt_e next if $opt_e && $enum_name =~ /$opt_e/; my $val = 0; for my $item (split /,/, $enum_body) { next if $item =~ /\A\s*\Z/; my ($key, $declared_val) = $item =~ /(\w+)\s*(?:=\s*(.*))?/; $val = defined($declared_val) && length($declared_val) ? $declared_val : 1 + $val; $seen_define{$key} = $val; $const_names{$key} = { name => $key, macro => 1 }; } } # while (...) } # if (!defined $opt_e or $opt_e) } } } # Save current directory so that C::Scan can use it my $cwd = File::Spec->rel2abs( File::Spec->curdir ); # As Ilya suggested, use a name that contains - and then it can't clash with # the names of any packages. A directory 'fallback' will clash with any # new pragmata down the fallback:: tree, but that seems unlikely. my $constscfname = 'const-c.inc'; my $constsxsfname = 'const-xs.inc'; my $fallbackdirname = 'fallback'; my $ext = chdir 'ext' ? 'ext/' : ''; my @modparts = split(/::/,$module); my $modpname = join('-', @modparts); my $modfname = pop @modparts; my $modpmdir = join '/', 'lib', @modparts; my $modpmname = join '/', $modpmdir, $modfname.'.pm'; if ($opt_O) { warn "Overwriting existing $ext$modpname!!!\n" if -e $modpname; } else { die "Won't overwrite existing $ext$modpname\n" if -e $modpname; } -d "$modpname" || mkpath([$modpname], 0, 0775); chdir($modpname) || die "Can't chdir $ext$modpname: $!\n"; my %types_seen; my %std_types; my $fdecls = []; my $fdecls_parsed = []; my $typedef_rex; my %typedefs_pre; my %known_fnames; my %structs; my @fnames; my @fnames_no_prefix; my %vdecl_hash; my @vdecls; if( ! $opt_X ){ # use XS, unless it was disabled unless ($skip_ppport) { require Devel::PPPort; warn "Writing $ext$modpname/ppport.h\n"; Devel::PPPort::WriteFile('ppport.h') || die "Can't create $ext$modpname/ppport.h: $!\n"; } open(XS, ">$modfname.xs") || die "Can't create $ext$modpname/$modfname.xs: $!\n"; if ($opt_x) { warn "Scanning typemaps...\n"; get_typemap(); my @td; my @good_td; my $addflags = $opt_F || ''; foreach my $filename (@path_h) { my $c; my $filter; if ($fullpath{$filename} =~ /,/) { $filename = $`; $filter = $'; } warn "Scanning $filename for functions...\n"; my @styles = $Config{gccversion} ? qw(C++ C9X GNU) : qw(C++ C9X); $c = new C::Scan 'filename' => $filename, 'filename_filter' => $filter, 'add_cppflags' => $addflags, 'c_styles' => \@styles; $c->set('includeDirs' => ["$Config::Config{archlib}/CORE", $cwd]); $c->get('keywords')->{'__restrict'} = 1; push @$fdecls_parsed, @{ $c->get('parsed_fdecls') }; push(@$fdecls, @{$c->get('fdecls')}); push @td, @{$c->get('typedefs_maybe')}; if ($opt_a) { my $structs = $c->get('typedef_structs'); @structs{keys %$structs} = values %$structs; } if ($opt_m) { %vdecl_hash = %{ $c->get('vdecl_hash') }; @vdecls = sort keys %vdecl_hash; for (local $_ = 0; $_ < @vdecls; ++$_) { my $var = $vdecls[$_]; my($type, $post) = @{ $vdecl_hash{$var} }; if (defined $post) { warn "Can't handle variable '$type $var $post', skipping.\n"; splice @vdecls, $_, 1; redo; } $type = normalize_type($type); $vdecl_hash{$var} = $type; } } unless ($tmask_all) { warn "Scanning $filename for typedefs...\n"; my $td = $c->get('typedef_hash'); # eval {require 'dumpvar.pl'; ::dumpValue($td)} or warn $@ if $opt_d; my @f_good_td = grep $td->{$_}[1] eq '', keys %$td; push @good_td, @f_good_td; @typedefs_pre{@f_good_td} = map $_->[0], @$td{@f_good_td}; } } { local $" = '|'; $typedef_rex = qr(\b(?<!struct )(?:@good_td)\b) if @good_td; } %known_fnames = map @$_[1,3], @$fdecls_parsed; # [1,3] is NAME, FULLTEXT if ($fmask) { my @good; for my $i (0..$#$fdecls_parsed) { next unless $fdecls_parsed->[$i][1] =~ /$fmask/; # [1] is NAME push @good, $i; print "... Function $fdecls_parsed->[$i][1] passes -M mask.\n" if $opt_d; } $fdecls = [@$fdecls[@good]]; $fdecls_parsed = [@$fdecls_parsed[@good]]; } @fnames = sort map $_->[1], @$fdecls_parsed; # 1 is NAME # Sort declarations: { my %h = map( ($_->[1], $_), @$fdecls_parsed); $fdecls_parsed = [ @h{@fnames} ]; } @fnames_no_prefix = @fnames; @fnames_no_prefix = sort map { ++$prefix{$_} if s/^$opt_p(?!\d)//; $_ } @fnames_no_prefix if defined $opt_p; # Remove macros which expand to typedefs print "Typedefs are @td.\n" if $opt_d; my %td = map {($_, $_)} @td; # Add some other possible but meaningless values for macros for my $k (qw(char double float int long short unsigned signed void)) { $td{"$_$k"} = "$_$k" for ('', 'signed ', 'unsigned '); } # eval {require 'dumpvar.pl'; ::dumpValue( [\@td, \%td] ); 1} or warn $@; my $n = 0; my %bad_macs; while (keys %td > $n) { $n = keys %td; my ($k, $v); while (($k, $v) = each %seen_define) { # print("found '$k'=>'$v'\n"), $bad_macs{$k} = $td{$k} = $td{$v} if exists $td{$v}; } } # Now %bad_macs contains names of bad macros for my $k (keys %bad_macs) { delete $const_names{$prefixless{$k}}; print "Ignoring macro $k which expands to a typedef name '$bad_macs{$k}'\n" if $opt_d; } } } my (@const_specs, @const_names); for (sort(keys(%const_names))) { my $v = $const_names{$_}; push(@const_specs, ref($v) ? $v : $_); push(@const_names, $_); } -d $modpmdir || mkpath([$modpmdir], 0, 0775); open(PM, ">$modpmname") || die "Can't create $ext$modpname/$modpmname: $!\n"; $" = "\n\t"; warn "Writing $ext$modpname/$modpmname\n"; print PM <<"END"; package $module; use $compat_version; END print PM <<"END" unless $skip_strict; use strict; END print PM "use warnings;\n" unless $skip_warnings or $compat_version < 5.006; unless( $opt_X || $opt_c || $opt_A ){ # we'll have an AUTOLOAD(), and it will have $AUTOLOAD and # will want Carp. print PM <<'END'; use Carp; END } print PM <<'END' unless $skip_exporter; require Exporter; END my $use_Dyna = (not $opt_X and $compat_version < 5.006 and not $use_xsloader); print PM <<"END" if $use_Dyna; # use DynaLoader, unless XS was disabled require DynaLoader; END # Are we using AutoLoader or not? unless ($skip_autoloader) { # no autoloader whatsoever. unless ($opt_c) { # we're doing the AUTOLOAD print PM "use AutoLoader;\n"; } else { print PM "use AutoLoader qw(AUTOLOAD);\n" } } if ( $compat_version < 5.006 ) { my $vars = '$VERSION @ISA'; $vars .= ' @EXPORT @EXPORT_OK %EXPORT_TAGS' unless $skip_exporter; $vars .= ' $AUTOLOAD' unless $opt_X || $opt_c || $opt_A; $vars .= ' $XS_VERSION' if $opt_B && !$opt_X; print PM "use vars qw($vars);"; } # Determine @ISA. my @modISA; push @modISA, 'Exporter' unless $skip_exporter; push @modISA, 'DynaLoader' if $use_Dyna; # no XS my $myISA = "our \@ISA = qw(@modISA);"; $myISA =~ s/^our // if $compat_version < 5.006; print PM "\n$myISA\n\n"; my @exported_names = (@const_names, @fnames_no_prefix, map '$'.$_, @vdecls); my $tmp=''; $tmp .= <<"END" unless $skip_exporter; # Items to export into callers namespace by default. Note: do not export # names by default without a very good reason. Use EXPORT_OK instead. # Do not simply export all your public functions/methods/constants. # This allows declaration use $module ':all'; # If you do not need this, moving things directly into \@EXPORT or \@EXPORT_OK # will save memory. our %EXPORT_TAGS = ( 'all' => [ qw( @exported_names ) ] ); our \@EXPORT_OK = ( \@{ \$EXPORT_TAGS{'all'} } ); our \@EXPORT = qw( @const_names ); END $tmp .= "our \$VERSION = '$TEMPLATE_VERSION';\n"; if ($opt_B) { $tmp .= "our \$XS_VERSION = \$VERSION;\n" unless $opt_X; $tmp .= "\$VERSION = eval \$VERSION; # see L<perlmodstyle>\n"; } $tmp .= "\n"; $tmp =~ s/^our //mg if $compat_version < 5.006; print PM $tmp; if (@vdecls) { printf PM "our(@{[ join ', ', map '$'.$_, @vdecls ]});\n\n"; } print PM autoload ($module, $compat_version) unless $opt_c or $opt_X; if( ! $opt_X ){ # print bootstrap, unless XS is disabled if ($use_Dyna) { $tmp = <<"END"; bootstrap $module \$VERSION; END } else { $tmp = <<"END"; require XSLoader; XSLoader::load('$module', \$VERSION); END } $tmp =~ s:\$VERSION:\$XS_VERSION:g if $opt_B; print PM $tmp; } # tying the variables can happen only after bootstrap if (@vdecls) { printf PM <<END; { @{[ join "\n", map " _tievar_$_(\$$_);", @vdecls ]} } END } my $after; if( $opt_P ){ # if POD is disabled $after = '__END__'; } else { $after = '=cut'; } print PM <<"END"; # Preloaded methods go here. END print PM <<"END" unless $opt_A; # Autoload methods go after $after, and are processed by the autosplit program. END print PM <<"END"; 1; __END__ END my ($email,$author,$licence); eval { my $username; ($username,$author) = (getpwuid($>))[0,6]; if (defined $username && defined $author) { $author =~ s/,.*$//; # in case of sub fields my $domain = $Config{'mydomain'}; $domain =~ s/^\.//; $email = "$username\@$domain"; } }; $author =~ s/'/\\'/g if defined $author; $author ||= "A. U. Thor"; $email ||= 'a.u.thor@a.galaxy.far.far.away'; $licence = sprintf << "DEFAULT", $^V; Copyright (C) ${\(1900 + (localtime) [5])} by $author This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version %vd or, at your option, any later version of Perl 5 you may have available. DEFAULT my $revhist = ''; $revhist = <<EOT if $opt_C; # #=head1 HISTORY # #=over 8 # #=item $TEMPLATE_VERSION # #Original version; created by h2xs $H2XS_VERSION with options # # @ARGS # #=back # EOT my $exp_doc = $skip_exporter ? '' : <<EOD; # #=head2 EXPORT # #None by default. # EOD if (@const_names and not $opt_P) { $exp_doc .= <<EOD unless $skip_exporter; #=head2 Exportable constants # # @{[join "\n ", @const_names]} # EOD } if (defined $fdecls and @$fdecls and not $opt_P) { $exp_doc .= <<EOD unless $skip_exporter; #=head2 Exportable functions # EOD # $exp_doc .= <<EOD if $opt_p; #When accessing these functions from Perl, prefix C<$opt_p> should be removed. # #EOD $exp_doc .= <<EOD unless $skip_exporter; # @{[join "\n ", @known_fnames{@fnames}]} # EOD } my $meth_doc = ''; if ($opt_x && $opt_a) { my($name, $struct); $meth_doc .= accessor_docs($name, $struct) while ($name, $struct) = each %structs; } # Prefix the default licence with hash symbols. # Is this just cargo cult - it seems that the first thing that happens to this # block is that all the hashes are then s///g out. my $licence_hash = $licence; $licence_hash =~ s/^/#/gm; my $pod; $pod = <<"END" unless $opt_P; ## Below is stub documentation for your module. You'd better edit it! # #=head1 NAME # #$module - Perl extension for blah blah blah # #=head1 SYNOPSIS # # use $module; # blah blah blah # #=head1 DESCRIPTION # #Stub documentation for $module, created by h2xs. It looks like the #author of the extension was negligent enough to leave the stub #unedited. # #Blah blah blah. $exp_doc$meth_doc$revhist # #=head1 SEE ALSO # #Mention other useful documentation such as the documentation of #related modules or operating system documentation (such as man pages #in UNIX), or any relevant external documentation such as RFCs or #standards. # #If you have a mailing list set up for your module, mention it here. # #If you have a web site set up for your module, mention it here. # #=head1 AUTHOR # #$author, E<lt>${email}E<gt> # #=head1 COPYRIGHT AND LICENSE # $licence_hash # #=cut END $pod =~ s/^\#//gm unless $opt_P; print PM $pod unless $opt_P; close PM; if( ! $opt_X ){ # print XS, unless it is disabled warn "Writing $ext$modpname/$modfname.xs\n"; print XS <<"END"; #include "EXTERN.h" #include "perl.h" #include "XSUB.h" END print XS <<"END" unless $skip_ppport; #include "ppport.h" END if( @path_h ){ foreach my $path_h (@path_h_ini) { my($h) = $path_h; $h =~ s#^/usr/include/##; if ($^O eq 'VMS') { $h =~ s#.*vms\]#sys/# or $h =~ s#.*[:>\]]##; } print XS qq{#include <$h>\n}; } print XS "\n"; } print XS <<"END" if $opt_g; /* Global Data */ #define MY_CXT_KEY "${module}::_guts" XS_VERSION typedef struct { /* Put Global Data in here */ int dummy; /* you can access this elsewhere as MY_CXT.dummy */ } my_cxt_t; START_MY_CXT END my %pointer_typedefs; my %struct_typedefs; sub td_is_pointer { my $type = shift; my $out = $pointer_typedefs{$type}; return $out if defined $out; my $otype = $type; $out = ($type =~ /\*$/); # This converts only the guys which do not have trailing part in the typedef if (not $out and $typedef_rex and $type =~ s/($typedef_rex)/$typedefs_pre{$1}/go) { $type = normalize_type($type); print "Is-Pointer: Type mutation via typedefs: $otype ==> $type\n" if $opt_d; $out = td_is_pointer($type); } return ($pointer_typedefs{$otype} = $out); } sub td_is_struct { my $type = shift; my $out = $struct_typedefs{$type}; return $out if defined $out; my $otype = $type; $out = ($type =~ /^(struct|union)\b/) && !td_is_pointer($type); # This converts only the guys which do not have trailing part in the typedef if (not $out and $typedef_rex and $type =~ s/($typedef_rex)/$typedefs_pre{$1}/go) { $type = normalize_type($type); print "Is-Struct: Type mutation via typedefs: $otype ==> $type\n" if $opt_d; $out = td_is_struct($type); } return ($struct_typedefs{$otype} = $out); } print_tievar_subs(\*XS, $_, $vdecl_hash{$_}) for @vdecls; if( ! $opt_c ) { # We write the "sample" files used when this module is built by perl without # ExtUtils::Constant. # h2xs will later check that these are the same as those generated by the # code embedded into Makefile.PL unless (-d $fallbackdirname) { mkdir "$fallbackdirname" or die "Cannot mkdir $fallbackdirname: $!\n"; } warn "Writing $ext$modpname/$fallbackdirname/$constscfname\n"; warn "Writing $ext$modpname/$fallbackdirname/$constsxsfname\n"; my $cfallback = File::Spec->catfile($fallbackdirname, $constscfname); my $xsfallback = File::Spec->catfile($fallbackdirname, $constsxsfname); WriteConstants ( C_FILE => $cfallback, XS_FILE => $xsfallback, DEFAULT_TYPE => $opt_t, NAME => $module, NAMES => \@const_specs, ); print XS "#include \"$constscfname\"\n"; } my $prefix = defined $opt_p ? "PREFIX = $opt_p" : ''; # Now switch from C to XS by issuing the first MODULE declaration: print XS <<"END"; MODULE = $module PACKAGE = $module $prefix END # If a constant() function was #included then output a corresponding # XS declaration: print XS "INCLUDE: $constsxsfname\n" unless $opt_c; print XS <<"END" if $opt_g; BOOT: { MY_CXT_INIT; /* If any of the fields in the my_cxt_t struct need to be initialised, do it here. */ } END foreach (sort keys %const_xsub) { print XS <<"END"; char * $_() CODE: #ifdef $_ RETVAL = $_; #else croak("Your vendor has not defined the $module macro $_"); #endif OUTPUT: RETVAL END } my %seen_decl; my %typemap; sub print_decl { my $fh = shift; my $decl = shift; my ($type, $name, $args) = @$decl; return if $seen_decl{$name}++; # Need to do the same for docs as well? my @argnames = map {$_->[1]} @$args; my @argtypes = map { normalize_type( $_->[0], 1 ) } @$args; if ($opt_k) { s/^\s*const\b\s*// for @argtypes; } my @argarrays = map { $_->[4] || '' } @$args; my $numargs = @$args; if ($numargs and $argtypes[-1] eq '...') { $numargs--; $argnames[-1] = '...'; } local $" = ', '; $type = normalize_type($type, 1); print $fh <<"EOP"; $type $name(@argnames) EOP for my $arg (0 .. $numargs - 1) { print $fh <<"EOP"; $argtypes[$arg] $argnames[$arg]$argarrays[$arg] EOP } } sub print_tievar_subs { my($fh, $name, $type) = @_; print $fh <<END; I32 _get_$name(IV index, SV *sv) { dSP; PUSHMARK(SP); XPUSHs(sv); PUTBACK; (void)call_pv("$module\::_get_$name", G_DISCARD); return (I32)0; } I32 _set_$name(IV index, SV *sv) { dSP; PUSHMARK(SP); XPUSHs(sv); PUTBACK; (void)call_pv("$module\::_set_$name", G_DISCARD); return (I32)0; } END } sub print_tievar_xsubs { my($fh, $name, $type) = @_; print $fh <<END; void _tievar_$name(sv) SV* sv PREINIT: struct ufuncs uf; CODE: uf.uf_val = &_get_$name; uf.uf_set = &_set_$name; uf.uf_index = (IV)&_get_$name; sv_magic(sv, 0, 'U', (char*)&uf, sizeof(uf)); void _get_$name(THIS) $type THIS = NO_INIT CODE: THIS = $name; OUTPUT: SETMAGIC: DISABLE THIS void _set_$name(THIS) $type THIS CODE: $name = THIS; END } sub print_accessors { my($fh, $name, $struct) = @_; return unless defined $struct && $name !~ /\s|_ANON/; $name = normalize_type($name); my $ptrname = normalize_type("$name *"); print $fh <<"EOF"; MODULE = $module PACKAGE = ${name} $prefix $name * _to_ptr(THIS) $name THIS = NO_INIT PROTOTYPE: \$ CODE: if (sv_derived_from(ST(0), "$name")) { STRLEN len; char *s = SvPV((SV*)SvRV(ST(0)), len); if (len != sizeof(THIS)) croak("Size \%d of packed data != expected \%d", len, sizeof(THIS)); RETVAL = ($name *)s; } else croak("THIS is not of type $name"); OUTPUT: RETVAL $name new(CLASS) char *CLASS = NO_INIT PROTOTYPE: \$ CODE: Zero((void*)&RETVAL, sizeof(RETVAL), char); OUTPUT: RETVAL MODULE = $module PACKAGE = ${name}Ptr $prefix EOF my @items = @$struct; while (@items) { my $item = shift @items; if ($item->[0] =~ /_ANON/) { if (defined $item->[2]) { push @items, map [ @$_[0, 1], "$item->[2]_$_->[2]", "$item->[2].$_->[2]", ], @{ $structs{$item->[0]} }; } else { push @items, @{ $structs{$item->[0]} }; } } else { my $type = normalize_type($item->[0]); my $ttype = $structs{$type} ? normalize_type("$type *") : $type; print $fh <<"EOF"; $ttype $item->[2](THIS, __value = NO_INIT) $ptrname THIS $type __value PROTOTYPE: \$;\$ CODE: if (items > 1) THIS->$item->[-1] = __value; RETVAL = @{[ $type eq $ttype ? "THIS->$item->[-1]" : "&(THIS->$item->[-1])" ]}; OUTPUT: RETVAL EOF } } } sub accessor_docs { my($name, $struct) = @_; return unless defined $struct && $name !~ /\s|_ANON/; $name = normalize_type($name); my $ptrname = $name . 'Ptr'; my @items = @$struct; my @list; while (@items) { my $item = shift @items; if ($item->[0] =~ /_ANON/) { if (defined $item->[2]) { push @items, map [ @$_[0, 1], "$item->[2]_$_->[2]", "$item->[2].$_->[2]", ], @{ $structs{$item->[0]} }; } else { push @items, @{ $structs{$item->[0]} }; } } else { push @list, $item->[2]; } } my $methods = (join '(...)>, C<', @list) . '(...)'; my $pod = <<"EOF"; # #=head2 Object and class methods for C<$name>/C<$ptrname> # #The principal Perl representation of a C object of type C<$name> is an #object of class C<$ptrname> which is a reference to an integer #representation of a C pointer. To create such an object, one may use #a combination # # my \$buffer = $name->new(); # my \$obj = \$buffer->_to_ptr(); # #This exercises the following two methods, and an additional class #C<$name>, the internal representation of which is a reference to a #packed string with the C structure. Keep in mind that \$buffer should #better survive longer than \$obj. # #=over # #=item C<\$object_of_type_$name-E<gt>_to_ptr()> # #Converts an object of type C<$name> to an object of type C<$ptrname>. # #=item C<$name-E<gt>new()> # #Creates an empty object of type C<$name>. The corresponding packed #string is zeroed out. # #=item C<$methods> # #return the current value of the corresponding element if called #without additional arguments. Set the element to the supplied value #(and return the new value) if called with an additional argument. # #Applicable to objects of type C<$ptrname>. # #=back # EOF $pod =~ s/^\#//gm; return $pod; } # Should be called before any actual call to normalize_type(). sub get_typemap { # We do not want to read ./typemap by obvios reasons. my @tm = qw(../../../typemap ../../typemap ../typemap); my $stdtypemap = "$Config::Config{privlib}/ExtUtils/typemap"; unshift @tm, $stdtypemap; my $proto_re = "[" . quotemeta('\$%&*@;') . "]" ; # Start with useful default values $typemap{float} = 'T_NV'; foreach my $typemap (@tm) { next unless -e $typemap ; # skip directories, binary files etc. warn " Scanning $typemap\n"; warn("Warning: ignoring non-text typemap file '$typemap'\n"), next unless -T $typemap ; open(TYPEMAP, $typemap) or warn ("Warning: could not open typemap file '$typemap': $!\n"), next; my $mode = 'Typemap'; while (<TYPEMAP>) { next if /^\s*\#/; if (/^INPUT\s*$/) { $mode = 'Input'; next; } elsif (/^OUTPUT\s*$/) { $mode = 'Output'; next; } elsif (/^TYPEMAP\s*$/) { $mode = 'Typemap'; next; } elsif ($mode eq 'Typemap') { next if /^\s*($|\#)/ ; my ($type, $image); if ( ($type, $image) = /^\s*(.*?\S)\s+(\S+)\s*($proto_re*)\s*$/o # This may reference undefined functions: and not ($image eq 'T_PACKED' and $typemap eq $stdtypemap)) { $typemap{normalize_type($type)} = $image; } } } close(TYPEMAP) or die "Cannot close $typemap: $!"; } %std_types = %types_seen; %types_seen = (); } sub normalize_type { # Second arg: do not strip const's before \* my $type = shift; my $do_keep_deep_const = shift; # If $do_keep_deep_const this is heuristic only my $keep_deep_const = ($do_keep_deep_const ? '\b(?![^(,)]*\*)' : ''); my $ignore_mods = "(?:\\b(?:(?:__const__|const)$keep_deep_const|static|inline|__inline__)\\b\\s*)*"; if ($do_keep_deep_const) { # Keep different compiled /RExen/o separately! $type =~ s/$ignore_mods//go; } else { $type =~ s/$ignore_mods//go; } $type =~ s/([^\s\w])/ $1 /g; $type =~ s/\s+$//; $type =~ s/^\s+//; $type =~ s/\s+/ /g; $type =~ s/\* (?=\*)/*/g; $type =~ s/\. \. \./.../g; $type =~ s/ ,/,/g; $types_seen{$type}++ unless $type eq '...' or $type eq 'void' or $std_types{$type}; $type; } my $need_opaque; sub assign_typemap_entry { my $type = shift; my $otype = $type; my $entry; if ($tmask and $type =~ /$tmask/) { print "Type $type matches -o mask\n" if $opt_d; $entry = (td_is_struct($type) ? "T_OPAQUE_STRUCT" : "T_PTROBJ"); } elsif ($typedef_rex and $type =~ s/($typedef_rex)/$typedefs_pre{$1}/go) { $type = normalize_type $type; print "Type mutation via typedefs: $otype ==> $type\n" if $opt_d; $entry = assign_typemap_entry($type); } # XXX good do better if our UV happens to be long long return "T_NV" if $type =~ /^(unsigned\s+)?long\s+(long|double)\z/; $entry ||= $typemap{$otype} || (td_is_struct($type) ? "T_OPAQUE_STRUCT" : "T_PTROBJ"); $typemap{$otype} = $entry; $need_opaque = 1 if $entry eq "T_OPAQUE_STRUCT"; return $entry; } for (@vdecls) { print_tievar_xsubs(\*XS, $_, $vdecl_hash{$_}); } if ($opt_x) { for my $decl (@$fdecls_parsed) { print_decl(\*XS, $decl) } if ($opt_a) { while (my($name, $struct) = each %structs) { print_accessors(\*XS, $name, $struct); } } } close XS; if (%types_seen) { my $type; warn "Writing $ext$modpname/typemap\n"; open TM, ">typemap" or die "Cannot open typemap file for write: $!"; for $type (sort keys %types_seen) { my $entry = assign_typemap_entry $type; print TM $type, "\t" x (5 - int((length $type)/8)), "\t$entry\n" } print TM <<'EOP' if $need_opaque; # Older Perls do not have correct entry ############################################################################# INPUT T_OPAQUE_STRUCT if (sv_derived_from($arg, \"${ntype}\")) { STRLEN len; char *s = SvPV((SV*)SvRV($arg), len); if (len != sizeof($var)) croak(\"Size %d of packed data != expected %d\", len, sizeof($var)); $var = *($type *)s; } else croak(\"$var is not of type ${ntype}\") ############################################################################# OUTPUT T_OPAQUE_STRUCT sv_setref_pvn($arg, \"${ntype}\", (char *)&$var, sizeof($var)); EOP close TM or die "Cannot close typemap file for write: $!"; } } # if( ! $opt_X ) warn "Writing $ext$modpname/Makefile.PL\n"; open(PL, ">Makefile.PL") || die "Can't create $ext$modpname/Makefile.PL: $!\n"; my $prereq_pm = ''; if ( $compat_version < 5.006002 and $new_test ) { $prereq_pm .= q%'Test::More' => 0, %; } elsif ( $compat_version < 5.006002 ) { $prereq_pm .= q%'Test' => 0, %; } if ( $compat_version < 5.006 and !$opt_X and $use_xsloader) { $prereq_pm .= q%'XSLoader' => 0, %; } print PL <<"END"; use $compat_version; use ExtUtils::MakeMaker; # See lib/ExtUtils/MakeMaker.pm for details of how to influence # the contents of the Makefile that is written. WriteMakefile( NAME => '$module', VERSION_FROM => '$modpmname', # finds \$VERSION PREREQ_PM => {$prereq_pm}, # e.g., Module::Name => 1.1 (\$] >= 5.005 ? ## Add these new keywords supported since 5.005 (ABSTRACT_FROM => '$modpmname', # retrieve abstract from module AUTHOR => '$author <$email>') : ()), END if (!$opt_X) { # print C stuff, unless XS is disabled $opt_F = '' unless defined $opt_F; my $I = (((glob '*.h') || (glob '*.hh')) ? '-I.' : ''); my $Ihelp = ($I ? '-I. ' : ''); my $Icomment = ($I ? '' : <<EOC); # Insert -I. if you add *.h files later: EOC print PL <<END; LIBS => ['$extralibs'], # e.g., '-lm' DEFINE => '$opt_F', # e.g., '-DHAVE_SOMETHING' $Icomment INC => '$I', # e.g., '${Ihelp}-I/usr/include/other' END my $C = grep {$_ ne "$modfname.c"} (glob '*.c'), (glob '*.cc'), (glob '*.C'); my $Cpre = ($C ? '' : '# '); my $Ccomment = ($C ? '' : <<EOC); # Un-comment this if you add C files to link with later: EOC print PL <<END; $Ccomment ${Cpre}OBJECT => '\$(O_FILES)', # link all the C files too END } # ' # Grr print PL ");\n"; if (!$opt_c) { my $generate_code = WriteMakefileSnippet ( C_FILE => $constscfname, XS_FILE => $constsxsfname, DEFAULT_TYPE => $opt_t, NAME => $module, NAMES => \@const_specs, ); print PL <<"END"; if (eval {require ExtUtils::Constant; 1}) { # If you edit these definitions to change the constants used by this module, # you will need to use the generated $constscfname and $constsxsfname # files to replace their "fallback" counterparts before distributing your # changes. $generate_code } else { use File::Copy; use File::Spec; foreach my \$file ('$constscfname', '$constsxsfname') { my \$fallback = File::Spec->catfile('$fallbackdirname', \$file); copy (\$fallback, \$file) or die "Can't copy \$fallback to \$file: \$!"; } } END eval $generate_code; if ($@) { warn <<"EOM"; Attempting to test constant code in $ext$modpname/Makefile.PL: $generate_code __END__ gave unexpected error $@ Please report the circumstances of this bug in h2xs version $H2XS_VERSION using the perlbug script. EOM } else { my $fail; foreach my $file ($constscfname, $constsxsfname) { my $fallback = File::Spec->catfile($fallbackdirname, $file); if (compare($file, $fallback)) { warn << "EOM"; Files "$ext$modpname/$fallbackdirname/$file" and "$ext$modpname/$file" differ. EOM $fail++; } } if ($fail) { warn fill ('','', <<"EOM") . "\n"; It appears that the code in $ext$modpname/Makefile.PL does not autogenerate the files $ext$modpname/$constscfname and $ext$modpname/$constsxsfname correctly. Please report the circumstances of this bug in h2xs version $H2XS_VERSION using the perlbug script. EOM } else { unlink $constscfname, $constsxsfname; } } } close(PL) || die "Can't close $ext$modpname/Makefile.PL: $!\n"; # Create a simple README since this is a CPAN requirement # and it doesn't hurt to have one warn "Writing $ext$modpname/README\n"; open(RM, ">README") || die "Can't create $ext$modpname/README:$!\n"; my $thisyear = (gmtime)[5] + 1900; my $rmhead = "$modpname version $TEMPLATE_VERSION"; my $rmheadeq = "=" x length($rmhead); my $rm_prereq; if ( $compat_version < 5.006002 and $new_test ) { $rm_prereq = 'Test::More'; } elsif ( $compat_version < 5.006002 ) { $rm_prereq = 'Test'; } else { $rm_prereq = 'blah blah blah'; } print RM <<_RMEND_; $rmhead $rmheadeq The README is used to introduce the module and provide instructions on how to install the module, any machine dependencies it may have (for example C compilers and installed libraries) and any other information that should be provided before the module is installed. A README file is required for CPAN modules since CPAN extracts the README file from a module distribution so that people browsing the archive can use it get an idea of the modules uses. It is usually a good idea to provide version information here so that people can decide whether fixes for the module are worth downloading. INSTALLATION To install this module type the following: perl Makefile.PL make make test make install DEPENDENCIES This module requires these other modules and libraries: $rm_prereq COPYRIGHT AND LICENCE Put the correct copyright and licence information here. $licence _RMEND_ close(RM) || die "Can't close $ext$modpname/README: $!\n"; my $testdir = "t"; my $testfile = "$testdir/$modpname.t"; unless (-d "$testdir") { mkdir "$testdir" or die "Cannot mkdir $testdir: $!\n"; } warn "Writing $ext$modpname/$testfile\n"; my $tests = @const_names ? 2 : 1; open EX, ">$testfile" or die "Can't create $ext$modpname/$testfile: $!\n"; print EX <<_END_; # Before 'make install' is performed this script should be runnable with # 'make test'. After 'make install' it should work as 'perl $modpname.t' ######################### # change 'tests => $tests' to 'tests => last_test_to_print'; use strict; use warnings; _END_ my $test_mod = 'Test::More'; if ( $old_test or ($compat_version < 5.006002 and not $new_test )) { my $test_mod = 'Test'; print EX <<_END_; use Test; BEGIN { plan tests => $tests }; use $module; ok(1); # If we made it this far, we're ok. _END_ if (@const_names) { my $const_names = join " ", @const_names; print EX <<'_END_'; my $fail; foreach my $constname (qw( _END_ print EX wrap ("\t", "\t", $const_names); print EX (")) {\n"); print EX <<_END_; next if (eval "my \\\$a = \$constname; 1"); if (\$\@ =~ /^Your vendor has not defined $module macro \$constname/) { print "# pass: \$\@"; } else { print "# fail: \$\@"; \$fail = 1; } } if (\$fail) { print "not ok 2\\n"; } else { print "ok 2\\n"; } _END_ } } else { print EX <<_END_; use Test::More tests => $tests; BEGIN { use_ok('$module') }; _END_ if (@const_names) { my $const_names = join " ", @const_names; print EX <<'_END_'; my $fail = 0; foreach my $constname (qw( _END_ print EX wrap ("\t", "\t", $const_names); print EX (")) {\n"); print EX <<_END_; next if (eval "my \\\$a = \$constname; 1"); if (\$\@ =~ /^Your vendor has not defined $module macro \$constname/) { print "# pass: \$\@"; } else { print "# fail: \$\@"; \$fail = 1; } } ok( \$fail == 0 , 'Constants' ); _END_ } } print EX <<_END_; ######################### # Insert your test code below, the $test_mod module is use()ed here so read # its man page ( perldoc $test_mod ) for help writing this test script. _END_ close(EX) || die "Can't close $ext$modpname/$testfile: $!\n"; unless ($opt_C) { warn "Writing $ext$modpname/Changes\n"; $" = ' '; open(EX, ">Changes") || die "Can't create $ext$modpname/Changes: $!\n"; @ARGS = map {/[\s\"\'\`\$*?^|&<>\[\]\{\}\(\)]/ ? "'$_'" : $_} @ARGS; print EX <<EOP; Revision history for Perl extension $module. $TEMPLATE_VERSION @{[scalar localtime]} \t- original version; created by h2xs $H2XS_VERSION with options \t\t@ARGS EOP close(EX) || die "Can't close $ext$modpname/Changes: $!\n"; } warn "Writing $ext$modpname/MANIFEST\n"; open(MANI,'>MANIFEST') or die "Can't create MANIFEST: $!"; my @files = grep { -f } (<*>, <t/*>, <$fallbackdirname/*>, <$modpmdir/*>); if (!@files) { eval {opendir(D,'.');}; unless ($@) { @files = readdir(D); closedir(D); } } if (!@files) { @files = map {chomp && $_} `ls`; } if ($^O eq 'VMS') { foreach (@files) { # Clip trailing '.' for portability -- non-VMS OSs don't expect it s%\.$%%; # Fix up for case-sensitive file systems s/$modfname/$modfname/i && next; $_ = "\U$_" if $_ eq 'manifest' or $_ eq 'changes'; $_ = 'Makefile.PL' if $_ eq 'makefile.pl'; } } print MANI join("\n",@files), "\n"; close MANI;
Close