Linux asiatechwebsite 3.10.0-1160.144.1.el7.tuxcare.els3.x86_64 #1 SMP Fri Mar 6 13:52:53 UTC 2026 x86_64
Apache
: 10.190.0.3 | : 216.73.216.156
2134 Domain
7.4.33
asiatechinc
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
2to3
95
B
-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
[
40.52
KB
-rwxr-xr-x
a2p
105.32
KB
-rwxr-xr-x
ab
55.48
KB
-rwxr-xr-x
abs2rel
1.62
KB
-rwxr-xr-x
aclocal
35.87
KB
-rwxr-xr-x
aclocal-1.13
35.87
KB
-rwxr-xr-x
acpi_listen
15.35
KB
-rwxr-xr-x
addftinfo
24.27
KB
-rwxr-xr-x
addr2line
28.42
KB
-rwxr-xr-x
afm2tfm
38.41
KB
-rwxr-xr-x
alias
29
B
-rwxr-xr-x
allcm
3.4
KB
-rwxr-xr-x
allec
3.4
KB
-rwxr-xr-x
allneeded
903
B
-rwxr-xr-x
alt-java
8.87
KB
-rwxr-xr-x
alt-mysql-reconfigure
27.42
KB
-rwxr-xr-x
alt-php-mysql-reconfigure
27.42
KB
-rwxr-xr-x
alt-php-mysql-reconfigure.py
27.42
KB
-rwxr-xr-x
animate
7.05
KB
-rwxr-xr-x
annotate
11.13
KB
-rwxr-xr-x
annotate-output
1.74
KB
-rwxr-xr-x
anthoscli
132.86
MB
-rwxr-xr-x
applydeltarpm
68.53
KB
-rwxr-xr-x
apropos
45.49
KB
-rwxr-xr-x
ar
61.21
KB
-rwxr-xr-x
arch
32.3
KB
-rwxr-xr-x
arpaname
7.03
KB
-rwxr-xr-x
as
377.28
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
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.55
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
bdftogd
3.91
KB
-rwxr-xr-x
bdftopcf
44.19
KB
-rwxr-xr-x
bdftruncate
11.2
KB
-rwxr-xr-x
berkeley_db47_svc
58.46
KB
-rwxr-xr-x
bg
26
B
-rwxr-xr-x
bibtex
105.88
KB
-rwxr-xr-x
bind9-config
3.47
KB
-rwxr-xr-x
bison
393.34
KB
-rwxr-xr-x
bond2team
22.74
KB
-rwxr-xr-x
bootctl
68.99
KB
-rwxr-xr-x
bq
5.7
KB
-rwxr-xr-x
brotli
765.84
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.15
KB
-rwxr-xr-x
byacc
84.48
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-x---
c++filt
27.92
KB
-rwxr-xr-x
c2ph
35.75
KB
-rwxr-xr-x
c89
224
B
-rwxr-x---
c99
215
B
-rwxr-x---
ca-legacy
1.6
KB
-rwxr-xr-x
cairo-sphinx
69.99
KB
-rwxr-xr-x
cal
36.8
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.58
KB
-rwxr-x---
ccache-swig
48.48
KB
-rwxr-xr-x
cd
26
B
-rwxr-xr-x
centrino-decode
6.13
KB
-rwxr-xr-x
certutil
179.75
KB
-rwxr-xr-x
chacl
15.27
KB
-rwxr-xr-x
chage
72.16
KB
-rwxr-xr-x
chardetect
307
B
-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
checkbashisms
21.69
KB
-rwxr-xr-x
checkmodule
400.48
KB
-rwxr-xr-x
checkpolicy
412.46
KB
-rwxr-xr-x
checksctp
7
KB
-rwxr-xr-x
chfn
23.41
KB
-rwx--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
ci
801
B
-rwxr-xr-x
cifsiostat
48.52
KB
-rwxr-xr-x
cksum
32.38
KB
-rwxr-xr-x
cl-linksafe-apply-group
554
B
-rwxr-xr-x
cl-linksafe-reconfigure
4.83
KB
-rwxr-xr-x
clean-binary-files
12.91
KB
-rwxr-xr-x
clear
7.02
KB
-rwxr-xr-x
cmp
44.14
KB
-rwxr-xr-x
cmsutil
110.59
KB
-rwxr-xr-x
co
801
B
-rwxr-xr-x
col
23.88
KB
-rwxr-xr-x
colcrt
11.29
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
combinediff
48.7
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.05
KB
-rwxr-xr-x
config_data
7.05
KB
-rwxr-xr-x
conjure
7.05
KB
-rwxr-xr-x
convert
7.05
KB
-rwxr-xr-x
coredumpctl
154.52
KB
-rwxr-xr-x
corelist
10.02
KB
-rwxr-xr-x
cp
151.55
KB
-rwxr-xr-x
cpan
4.97
KB
-rwxr-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.04
MB
-rwxr-xr-x
cpapi2
3.04
MB
-rwxr-xr-x
cpapi3
3.04
MB
-rwxr-xr-x
cpio
142.58
KB
-rwxr-xr-x
cpp
754.58
KB
-rwxr-xr-x
cpupower
66.34
KB
-rwxr-xr-x
create-jar-links
4.55
KB
-rwxr-xr-x
crlutil
127
KB
-rwxr-xr-x
crontab
56.23
KB
-rwsr-xr-x
cscope
656.2
KB
-rwxr-xr-x
cscope-indexer
3.77
KB
-rwxr-xr-x
csplit
48.82
KB
-rwxr-xr-x
csslint-0.6
19.55
KB
-rwxr-xr-x
ctags
237.99
KB
-rwxr-xr-x
curl
153
KB
-rwxr-xr-x
cut
40.61
KB
-rwxr-xr-x
cvtsudoers
241.7
KB
-rwxr-xr-x
cxpm
28.05
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-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
dc
44.33
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
dehtmldiff
1.32
KB
-rwxr-xr-x
delv
39.98
KB
-rwxr-xr-x
df
102.55
KB
-rwxr-xr-x
dgawk
502.12
KB
-rwxr-xr-x
dict_util
419.6
KB
-rwxr-xr-x
dict_util_string
389.46
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
diffstat
35.76
KB
-rwxr-xr-x
dig
146.96
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.05
KB
-rwxr-xr-x
dltest
11.05
KB
-rwxr-xr-x
dmesg
48.52
KB
-rwxr-xr-x
dnf
1.9
KB
-rwxr-xr-x
dnf-2
1.9
KB
-rwxr-xr-x
dnsdomainname
15.41
KB
-rwxr-xr-x
docker-credential-gcloud
5.72
KB
-rwxr-xr-x
domainname
15.41
KB
-rwxr-xr-x
doveadm
2.94
MB
-rwxr-xr-x
doveconf
541.95
KB
-rwxr-xr-x
dovecot-sysreport
5.81
KB
-rwxr-xr-x
doxygen
8.47
MB
-rwxr-xr-x
dpkg
275.27
KB
-rwxr-xr-x
dpkg-deb
140.41
KB
-rwxr-xr-x
dpkg-divert
132.63
KB
-rwxr-xr-x
dpkg-maintscript-helper
18.58
KB
-rwxr-xr-x
dpkg-query
140.8
KB
-rwxr-xr-x
dpkg-split
111.28
KB
-rwxr-xr-x
dpkg-statoverride
70.52
KB
-rwxr-xr-x
dpkg-trigger
66.26
KB
-rwxr-xr-x
dracut
55.83
KB
-rwxr-xr-x
dsync
2.94
MB
-rwxr-xr-x
dtrace
16.66
KB
-rwxr-xr-x
du
110.34
KB
-rwxr-xr-x
dumpkeys
77.51
KB
-rwxr-xr-x
dumpsexp
15.19
KB
-rwxr-xr-x
dvi2fax
1.07
KB
-rwxr-xr-x
dvilualatex
5.8
MB
-rwxr-xr-x
dviluatex
5.8
MB
-rwxr-xr-x
dvipdf
1
KB
-rwxr-xr-x
dvipdfm
603.09
KB
-rwxr-xr-x
dvipdfmx
603.09
KB
-rwxr-xr-x
dvipdft
2.63
KB
-rwxr-xr-x
dvips
200.07
KB
-rwxr-xr-x
dvired
3.01
KB
-rwxr-xr-x
dwp
3.03
MB
-rwxr-xr-x
dwz
162.6
KB
-rwxr-xr-x
ea-php71
19.22
MB
-rwxr-xr-x
ea-php71-pear
383
B
-rwxr-xr-x
ea-php71-pecl
299
B
-rwxr-xr-x
ea-php73
4.84
MB
-rwxr-xr-x
ea-php73-pear
383
B
-rwxr-xr-x
ea-php73-pecl
299
B
-rwxr-xr-x
ea-php74
6.09
MB
-rwxr-xr-x
ea-php74-pear
383
B
-rwxr-xr-x
ea-php74-pecl
299
B
-rwxr-xr-x
ea-php80
6.67
MB
-rwxr-xr-x
ea-php80-pear
383
B
-rwxr-xr-x
ea-php80-pecl
299
B
-rwxr-xr-x
ea-php81
6.71
MB
-rwxr-xr-x
ea-php81-pear
383
B
-rwxr-xr-x
ea-php81-pecl
299
B
-rwxr-xr-x
ea-php82
6.73
MB
-rwxr-xr-x
ea-php82-pear
383
B
-rwxr-xr-x
ea-php82-pecl
299
B
-rwxr-xr-x
ea-php83
6.74
MB
-rwxr-xr-x
ea-php83-pear
383
B
-rwxr-xr-x
ea-php83-pecl
299
B
-rwxr-xr-x
easy_install
320
B
-rwxr-xr-x
easy_install-2.7
328
B
-rwxr-xr-x
easy_install-3.6
234
B
-rwxr-xr-x
ebb
603.09
KB
-rwxr-xr-x
echo
32.31
KB
-rwxr-xr-x
editdiff
2
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
env
28.33
KB
-rwxr-xr-x
envsubst
36.01
KB
-rwxr-xr-x
eps2eps
639
B
-rwxr-xr-x
eqn
144.41
KB
-rwxr-xr-x
eqn2graph
2.62
KB
-rwxr-xr-x
espdiff
1.53
KB
-rwxr-xr-x
etex
715.38
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
ex
906.4
KB
-rwxr-xr-x
expand
32.48
KB
-rwxr-xr-x
expr
36.53
KB
-rwxr-xr-x
extractbb
603.09
KB
-rwxr-xr-x
f95
754.58
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-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
fg
26
B
-rwxr-xr-x
fgconsole
11.16
KB
-rwxr-xr-x
fgrep
290
B
-rwxr-xr-x
filan
89.13
KB
-rwxr-xr-x
file
19.3
KB
-rwxr-xr-x
filterdiff
45.2
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
fipscheck
15.37
KB
-rwxr-xr-x
fipshmac
11.3
KB
-rwxr-xr-x
firewall-cmd
113.48
KB
-rwxr-xr-x
firewall-offline-cmd
101.18
KB
-rwxr-xr-x
fixcvsdiff
1.83
KB
-rwxr-xr-x
flex
318.07
KB
-rwxr-xr-x
flex++
318.07
KB
-rwxr-xr-x
flipdiff
48.7
KB
-rwxr-xr-x
flock
23.88
KB
-rwxr-xr-x
fmt
36.48
KB
-rwxr-xr-x
fmtutil
32.28
KB
-rwxr-xr-x
fmtutil-sys
831
B
-rwxr-xr-x
fold
36.46
KB
-rwxr-xr-x
fonttosfnt
35.99
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
ftp
85.5
KB
-rwxr-xr-x
funzip
31.38
KB
-rwxr-xr-x
g++
754.59
KB
-rwxr-x---
gapplication
19.48
KB
-rwxr-xr-x
gawk
418.55
KB
-rwxr-xr-x
gcc
750.58
KB
-rwxr-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
gce_workload_cert_refresh
13.27
MB
-rwxr-xr-x
gcloud
5.69
KB
-rwxr-xr-x
gcore
2.12
KB
-rwxr-xr-x
gcov
311.45
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
gdiffmk
6.88
KB
-rwxr-xr-x
gdk-pixbuf-query-loaders-64
15.31
KB
-rwxr-xr-x
gdk-pixbuf-thumbnailer
15.52
KB
-rwxr-xr-x
gdlib-config
2.52
KB
-rwxr-xr-x
gdparttopng
11.07
KB
-rwxr-xr-x
gdtopng
7.04
KB
-rwxr-xr-x
gencat
22.11
KB
-rwxr-xr-x
gendiff
586
B
-rwxr-xr-x
genl-ctrl-list
11.27
KB
-rwxr-xr-t
geoiplookup
15.28
KB
-rwxr-xr-x
geoiplookup6
11.16
KB
-rwxr-xr-x
geoipupdate
31.28
KB
-rwxr-xr-x
geqn
144.41
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
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
gfortran
754.58
KB
-rwxr-xr-x
gftodvi
43.96
KB
-rwxr-xr-x
gftopk
27.63
KB
-rwxr-xr-x
gftype
27.58
KB
-rwxr-xr-x
ghostscript
10.97
KB
-rwxr-xr-x
giftogd2
7.05
KB
-rwxr-xr-x
gindxbib
36.89
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-credential-gcloud.sh
6.16
KB
-rwxr-xr-x
git-receive-pack
1.46
MB
-rwxr-xr-x
git-shell
722.02
KB
-rwxr-xr-x
git-upload-archive
1.46
MB
-rwxr-xr-x
git-upload-pack
795.52
KB
-rwxr-xr-x
glib-compile-schemas
44.38
KB
-rwxr-xr-x
glookbib
41.27
KB
-rwxr-xr-x
gmake
178.47
KB
-rwxr-xr-x
gneqn
271
B
-rwxr-xr-x
gnroff
3.31
KB
-rwxr-xr-x
google_authorized_keys
713.51
KB
-rwxr-xr-x
google_authorized_keys_sk
714.52
KB
-rwxr-xr-x
google_authorized_principals
718.98
KB
-rwxr-xr-x
google_disk_expand
1.26
KB
-rwxr-xr-x
google_guest_agent
14.18
MB
-rwxr-xr-x
google_metadata_script_runner
15.27
MB
-rwxr-xr-x
google_optimize_local_ssd
2.46
KB
-rwxr-xr-x
google_osconfig_agent
16.95
MB
-rwxr-xr-x
google_oslogin_nss_cache
718.34
KB
-rwxr-xr-x
google_set_hostname
3.03
KB
-rwxr-xr-x
google_set_multiqueue
10.96
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
gprof
98.41
KB
-rwxr-xr-x
gr2fonttest
23.66
KB
-rwxr-xr-x
grap2graph
2.39
KB
-rwxr-xr-x
grefer
118.5
KB
-rwxr-xr-x
grep
155.3
KB
-rwxr-xr-x
grepdiff
45.2
KB
-rwxr-xr-x
grn
77.74
KB
-rwxr-xr-x
grodvi
98.61
KB
-rwxr-xr-x
groff
81.63
KB
-rwxr-xr-x
grolbp
107.45
KB
-rwxr-xr-x
grolj4
94.37
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
grub2-editenv
396.09
KB
-rwxr-xr-x
grub2-file
838.38
KB
-rwxr-xr-x
grub2-fstest
1.03
MB
-rwxr-xr-x
grub2-glue-efi
258.8
KB
-rwxr-xr-x
grub2-kbdcomp
1.63
KB
-rwxr-xr-x
grub2-menulst2cfg
241.83
KB
-rwxr-xr-x
grub2-mkfont
287.6
KB
-rwxr-xr-x
grub2-mkimage
379.24
KB
-rwxr-xr-x
grub2-mklayout
264.87
KB
-rwxr-xr-x
grub2-mknetdir
429.77
KB
-rwxr-xr-x
grub2-mkpasswd-pbkdf2
271.3
KB
-rwxr-xr-x
grub2-mkrelpath
258.48
KB
-rwxr-xr-x
grub2-mkrescue
1
MB
-rwxr-xr-x
grub2-mkstandalone
534.3
KB
-rwxr-xr-x
grub2-render-label
843.2
KB
-rwxr-xr-x
grub2-script-check
295.41
KB
-rwxr-xr-x
grub2-syslinux2cfg
767.74
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
gsftopk
27.88
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
gss-client
23.17
KB
-rwxr-xr-x
gstack
1.05
KB
-rwxr-xr-x
gsutil
5.74
KB
-rwxr-xr-x
gtar
338.02
KB
-rwxr-xr-x
gtbl
115.96
KB
-rwxr-xr-x
gtk-query-immodules-2.0-64
15.29
KB
-rwxr-xr-x
gtk-update-icon-cache
32.45
KB
-rwxr-xr-x
gtroff
512.96
KB
-rwxr-xr-x
gunzip
2.2
KB
-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
hdsploader
11.18
KB
-rwxr-xr-x
head
40.51
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
hpftodit
114.38
KB
-rwxr-xr-x
htdbm
23.1
KB
-rwxr-xr-x
htdigest
15.07
KB
-rwxr-xr-x
htop
165.65
KB
-rwxr-xr-x
htpasswd
23.11
KB
-rwxr-xr-x
httxt2dbm
10.99
KB
-rwxr-xr-x
hunspell
53.11
KB
-rwxr-xr-x
i360-check-flow
389.46
KB
-rwxr-xr-x
i360-exclcomp
449.79
KB
-rwxr-xr-x
i360-pkg-watcher
6.87
MB
-rwxr-xr-x
i360-renameat2
7.06
KB
-rwxr-xr-x
i360-storage
992
B
-rwxr-xr-x
i360-storage-hdb
114.51
KB
-rwxr-xr-x
i360-storage-mkcustom
1.18
KB
-rwxr-xr-x
i360-storage-new
5.54
KB
-rwxr-xr-x
i360-storage-replacehdb-v2
857
B
-rwxr-xr-x
i360-storage.immunity
652.03
KB
-rwxr-xr-x
i360-storage.v2
9.85
MB
-rwxr-xr-x
i360-sync-config
6.4
MB
-rwxr-xr-x
i360-sync-config.sh
180
B
-rwxr-xr-x
i360_wafd_check
3.32
MB
-rwxr-xr-x
i360_wafd_list
2.73
MB
-rwxr-xr-x
i386
15.27
KB
-rwxr-xr-x
iceauth
31.73
KB
-rwxr-xr-x
iconv
58.14
KB
-rwxr-xr-x
id
36.52
KB
-rwxr-xr-x
ident
110.45
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
ifnames
4.03
KB
-rwxr-xr-x
igawk
3.11
KB
-rwxr-xr-x
im360-k8s-syncer
56.02
MB
-rwxr-xr-x
import
7.05
KB
-rwxr-xr-x
imunify-agent-proxy
12.53
MB
-rwxr-xr-x
imunify-antivirus
1
KB
-rwxr-xr-x
imunify-fgw-dump
5.82
MB
-rwxr-xr-x
imunify-resident
12.75
MB
-rwxr-xr-x
imunify-service
1020
B
-rwxr-xr-x
imunify360-agent
1.01
KB
-rwxr-xr-x
imunify360-command-wrapper
9.14
KB
-rwxr-xr-x
imunify360-dos-protection
7.31
MB
-rwxr-xr-x
indent
73.82
KB
-rwxr-xr-x
indxbib
36.89
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
inimf
285.68
KB
-rwxr-xr-x
initex
313.38
KB
-rwxr-xr-x
innochecksum
9.68
MB
-rwxr-xr-x
inotifywait
27.56
KB
-rwxr-xr-x
inotifywatch
23.49
KB
-rwxr-xr-x
install
139.59
KB
-rwxr-xr-x
install-catalog
4.27
KB
-rwxr-xr-x
instmodsh
4.15
KB
-rwxr-xr-x
interdiff
48.7
KB
-rwxr-xr-x
intltool-extract
28.06
KB
-rwxr-xr-x
intltool-merge
38.87
KB
-rwxr-xr-x
intltool-prepare
8.4
KB
-rwxr-xr-x
intltool-update
34.18
KB
-rwxr-xr-x
intltoolize
6.98
KB
-rwxr-xr-x
ionice
23.86
KB
-rwxr-xr-x
iostat
60.79
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-t
isc-config.sh
3.47
KB
-rwxr-xr-x
isosize
23.83
KB
-rwxr-xr-x
ispell
988
B
-rwxr-xr-x
isql
31.69
KB
-rwxr-xr-x
iusql
23.61
KB
-rwxr-xr-x
jade
621.21
KB
-rwxr-xr-x
java
8.77
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
json_xs
6.74
KB
-rwxr-xr-x
jvmjar
1.7
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
kcare-scanner-interface
4.68
KB
-rwxr-xr-x
kcare-uname
582
B
-rwxr-xr-x
kcarectl
1.21
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
kmod
143.24
KB
-rwxr-xr-x
kpseaccess
7.02
KB
-rwxr-xr-x
kpsepath
3.38
KB
-rwxr-xr-x
kpsereadlink
7.04
KB
-rwxr-xr-x
kpsestat
11.04
KB
-rwxr-xr-x
kpsetool
3.38
KB
-rwxr-xr-x
kpsewhere
1.41
KB
-rwxr-xr-x
kpsewhich
20.18
KB
-rwxr-xr-x
kpsexpand
3.38
KB
-rwxr-xr-x
krb5-config
6.96
KB
-rwxr-xr-x
last
19.11
KB
-rwxr-xr-x
lastb
19.11
KB
-rwxr-xr-x
lastlog
19.15
KB
-rwxr-xr-x
latex
715.38
KB
-rwxr-xr-x
lchfn
15.52
KB
-rwxr-xr-x
lchsh
15.49
KB
-rwxr-xr-x
ld
982.59
KB
-rwxr-x---
ld.bfd
982.59
KB
-rwxr-x---
ld.gold
5.11
MB
-rwxr-xr-x
ldd
5.18
KB
-rwxr-xr-x
less
154.56
KB
-rwxr-xr-x
lessecho
11.13
KB
-rwxr-xr-x
lesskey
16.67
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
libcare-cron
1.07
KB
-rwxr-xr-x
libgcrypt-config
3.78
KB
-rwxr-xr-x
libmcrypt-config
1.38
KB
-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
libtool
314.04
KB
-rwxr-xr-x
libtoolize
76.8
KB
-rwxr-xr-x
libwmf-fontmap
12.78
KB
-rwxr-xr-x
licensecheck
19.66
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
linuxdoc
1.6
KB
-rwxr-xr-x
lkbib
41.26
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
locale
37.11
KB
-rwxr-xr-x
localectl
326.23
KB
-rwxr-xr-x
localedef
318.31
KB
-rwxr-xr-x
logger
28.62
KB
-rwxr-xr-x
login
36.38
KB
-rwxr-xr-x
loginctl
489.6
KB
-rwxr-xr-x
logname
28.31
KB
-rwxr-xr-x
logresolve
14.99
KB
-rwxr-xr-x
look
11.27
KB
-rwxr-xr-x
lookbib
41.27
KB
-rwxr-xr-x
lprsetup.sh
5.34
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
lscpu
60.75
KB
-rwxr-xr-x
lsdiff
45.2
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
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
lua
15.47
KB
-rwxr-xr-x
luac
119.03
KB
-rwxr-xr-x
lualatex
5.8
MB
-rwxr-xr-x
luatex
5.8
MB
-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
lz4
105.87
KB
-rwxr-xr-x
lz4_decompress
627
KB
-rwxr-xr-x
lz4c
105.87
KB
-rwxr-xr-x
lz4cat
105.87
KB
-rwxr-xr-x
m4
151.17
KB
-rwxr-xr-x
machinectl
533.93
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
makeindex
77.96
KB
-rwxr-xr-x
makeinfo
50.83
KB
-rwxr-xr-x
man
100.44
KB
-rwxr-xr-x
mandb
122.25
KB
-rwxr-xr-x
manpage-alert
2.51
KB
-rwxr-xr-x
manpath
32.55
KB
-rwxr-xr-x
mapscrn
19.78
KB
-rwxr-xr-x
mcookie
15.44
KB
-rwxr-xr-x
mcrypt
85.29
KB
-rwxr-xr-x
md5sum
40.53
KB
-rwxr-xr-x
mdecrypt
85.29
KB
-rwxr-xr-x
mdig
44.2
KB
-rwxr-xr-x
merge
110.43
KB
-rwxr-xr-x
mesg
10.98
KB
-rwxr-xr-x
mf
285.68
KB
-rwxr-xr-x
mf-nowin
281.03
KB
-rwxr-xr-x
mft
51.7
KB
-rwxr-xr-x
mixartloader
15.38
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
mkindex
947
B
-rwxr-xr-x
mkinitrd
2.94
KB
-rwxr-xr-x
mkluatexfontdb
2.55
KB
-rwxr-xr-x
mknod
65.61
KB
-rwxr-xr-x
mkocp
171
B
-rwxr-xr-x
mkofm
85
B
-rwxr-xr-x
mktemp
40.66
KB
-rwxr-xr-x
mktexfmt
32.28
KB
-rwxr-xr-x
mktexlsr
7.39
KB
-rwxr-xr-x
mktexmf
3.72
KB
-rwxr-xr-x
mktexpk
9.51
KB
-rwxr-xr-x
mktextfm
4.74
KB
-rwxr-xr-x
modulemd-validator
11.66
KB
-rwxr-xr-x
modutil
165.78
KB
-rwxr-xr-x
mogrify
7.05
KB
-rwxr-xr-x
mokutil
44.94
KB
-rwxr-xr-x
montage
7.05
KB
-rwxr-xr-x
more
40.15
KB
-rwxr-xr-x
mount
43.23
KB
-rwxr-xr-x
mountpoint
15.32
KB
-rwxr-xr-x
mpstat
56.54
KB
-rwxr-xr-x
mptopdf
4.13
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
mv
127.3
KB
-rwxr-xr-x
my_print_defaults
8.81
MB
-rwxr-xr-x
myisam_ftdump
11.08
MB
-rwxr-xr-x
myisamchk
11.55
MB
-rwxr-xr-x
myisamlog
7.42
MB
-rwxr-xr-x
myisampack
11.21
MB
-rwxr-xr-x
mysql
12.1
MB
-rwxr-xr-x
mysql_config
840
B
-rwxr-xr-x
mysql_config-64
5.11
KB
-rwxr-xr-x
mysql_config_editor
8.98
MB
-rwxr-xr-x
mysql_install_db
11.44
MB
-rwxr-xr-x
mysql_plugin
8.88
MB
-rwxr-xr-x
mysql_secure_installation
10.71
MB
-rwxr-xr-x
mysql_ssl_rsa_setup
9.23
MB
-rwxr-xr-x
mysql_tzinfo_to_sql
4.99
MB
-rwxr-xr-x
mysql_upgrade
14.18
MB
-rwxr-xr-x
mysqladmin
10.76
MB
-rwxr-xr-x
mysqlbinlog
12.69
MB
-rwxr-xr-x
mysqlcheck
11.04
MB
-rwxr-xr-x
mysqld_pre_systemd
3.74
KB
-rwxr-xr-x
mysqldump
11.13
MB
-rwxr-xr-x
mysqldumpslow
7.66
KB
-rwxr-xr-x
mysqlimport
10.76
MB
-rwxr-xr-x
mysqlpump
20.23
MB
-rwxr-xr-x
mysqlshow
10.72
MB
-rwxr-xr-x
mysqlslap
10.82
MB
-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
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
ndptool
23.63
KB
-rwxr-xr-x
needs-restarting
8.17
KB
-rwxr-xr-x
neqn
271
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
nfsiostat-sysstat
52.55
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-t
nl-class-delete
11.55
KB
-rwxr-xr-t
nl-class-list
11.48
KB
-rwxr-xr-t
nl-classid-lookup
11.29
KB
-rwxr-xr-t
nl-cls-add
11.76
KB
-rwxr-xr-t
nl-cls-delete
11.68
KB
-rwxr-xr-t
nl-cls-list
11.58
KB
-rwxr-xr-t
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-t
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-t
nl-qdisc-add
11.6
KB
-rwxr-xr-t
nl-qdisc-delete
11.54
KB
-rwxr-xr-t
nl-qdisc-list
11.63
KB
-rwxr-xr-t
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-online
15.16
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
nohup
32.42
KB
-rwxr-xr-x
nproc
32.37
KB
-rwxr-xr-x
nroff
3.31
KB
-rwxr-xr-x
nsenter
28.22
KB
-rwxr-xr-x
nsgmls
106.91
KB
-rwxr-xr-x
nslookup
130.93
KB
-rwxr-xr-x
nss-policy-check
15.26
KB
-rwxr-xr-x
nsupdate
65.2
KB
-rwxr-xr-x
numfmt
64.71
KB
-rwxr-xr-x
objcopy
227.34
KB
-rwxr-xr-x
objdump
357.75
KB
-rwxr-xr-x
ocs
7.11
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
oldfind
186.41
KB
-rwxr-xr-x
onsgmls
106.91
KB
-rwxr-xr-x
open
19.48
KB
-rwxr-xr-x
openjade
621.21
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
os-prober
5.51
KB
-rwxr-xr-x
osgmlnorm
44.69
KB
-rwxr-xr-x
ospam
65.63
KB
-rwxr-xr-x
ospcat
31.71
KB
-rwxr-xr-x
ospent
23.6
KB
-rwxr-xr-x
osx
77.5
KB
-rwxr-xr-x
p11-kit
32.18
KB
-rwxr-xr-x
pack200
8.9
KB
-rwxr-xr-x
package-cleanup
17.39
KB
-rwxr-xr-x
page_owner_sort
10.2
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
passwd
27.2
KB
-rwsr-xr-x
paste
32.34
KB
-rwxr-xr-x
patch
147
KB
-rwxr-xr-x
pathchk
32.31
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
pdfetex
715.38
KB
-rwxr-xr-x
pdflatex
715.38
KB
-rwxr-xr-x
pdfroff
20.12
KB
-rwxr-xr-x
pdftex
715.38
KB
-rwxr-xr-x
pdns_control
7.57
MB
-rwxr-xr-x
pdnsutil
70.77
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
8.95
MB
-rwxr-xr-x
pf2afm
498
B
-rwxr-xr-x
pfbtopfa
516
B
-rwxr-xr-x
pfbtops
15.21
KB
-rwxr-xr-x
pflags
2.06
KB
-rwxr-xr-x
pftp
85.5
KB
-rwxr-xr-x
pgawk
418.59
KB
-rwxr-xr-x
pgrep
27.67
KB
-rwxr-xr-x
php
937
B
-rwxr-xr-x
pic
180.41
KB
-rwxr-xr-x
pic2graph
2.95
KB
-rwxr-xr-x
piconv
7.99
KB
-rwxr-xr-x
pidstat
68.91
KB
-rwxr-xr-x
pinentry
2.54
KB
-rwxr-xr-x
pinentry-curses
49.19
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
pip-3
407
B
-rwxr-xr-x
pip-3.6
407
B
-rwxr-xr-x
pip3
407
B
-rwxr-xr-x
pip3.6
407
B
-rwxr-xr-x
pk12util
103.22
KB
-rwxr-xr-x
pkaction
15
KB
-rwxr-xr-x
pkcheck
23.03
KB
-rwxr-xr-x
pkcs1-conv
15.52
KB
-rwxr-xr-x
pkexec
27.02
KB
-rwxr-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
pktogf
23.61
KB
-rwxr-xr-x
pkttyagent
18.98
KB
-rwxr-xr-x
pktype
19.51
KB
-rwxr-xr-x
pl2pm
4.42
KB
-rwxr-xr-x
pldd
14.11
KB
-rwxr-xr-x
plesk_configure
342
B
-rwxr-xr-x
plymouth
39.77
KB
-rwxr-xr-x
pmap
27.61
KB
-rwxr-xr-x
pngtogd
7.05
KB
-rwxr-xr-x
pngtogd2
7.05
KB
-rwxr-xr-x
pod2html
4
KB
-rwxr-xr-x
pod2latex
10.1
KB
-rwxr-xr-x
pod2man
13.26
KB
-rwxr-xr-x
pod2texi
19.21
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
policytool
8.91
KB
-rwxr-xr-x
polkitd
1.19
MB
-rwx------
post-grohtml
187.55
KB
-rwxr-xr-x
powernow-k8-decode
6.15
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
procan
76.99
KB
-rwxr-xr-x
prove
13.13
KB
-rwxr-xr-x
prtstat
15.25
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
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
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
pydoc3
78
B
-rwxr-xr-x
pydoc3.6
78
B
-rwxr-xr-x
pygettext.py
21.57
KB
-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
python3
11.07
KB
-rwxr-xr-x
python3.6
11.07
KB
-rwxr-xr-x
python3.6m
11.07
KB
-rwxr-xr-x
pyvenv
435
B
-rwxr-xr-x
pyvenv-3.6
435
B
-rwxr-xr-x
qemu-ga
267.8
KB
-rwxr-xr-x
quota
83.31
KB
-rwsr-xr-x
quotasync
70.84
KB
-rwxr-xr-x
ranlib
61.21
KB
-rwxr-xr-x
raw
15.27
KB
-rwxr-xr-x
rcs
175.6
KB
-rwxr-xr-x
rcsclean
819
B
-rwxr-xr-x
rcsdiff
816
B
-rwxr-xr-x
rcsfreeze
4.34
KB
-rwxr-xr-x
rcsmerge
819
B
-rwxr-xr-x
rdate
10.3
KB
-rwxr-xr-x
read
28
B
-rwxr-xr-x
readelf
509.84
KB
-rwxr-xr-x
readlink
40.82
KB
-rwxr-xr-x
realpath
61.23
KB
-rwxr-xr-x
rebuild-jar-repository
1.76
KB
-rwxr-xr-x
recode-sr-latin
15.29
KB
-rwxr-xr-x
recountdiff
3.36
KB
-rwxr-xr-x
rediff
36.04
KB
-rwxr-xr-x
refer
118.5
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
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.59
KB
-rwxr-xr-x
resizecons
19.63
KB
-rwxr-xr-x
resolve_stack_dump
8.88
MB
-rwxr-xr-x
resolveip
8.81
MB
-rwxr-xr-x
restore_infected
1019
B
-rwxr-xr-x
rev
11.26
KB
-rwxr-xr-x
rlog
807
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
rpcgen
90.45
KB
-rwxr-xr-x
rpm
15.75
KB
-rwxr-xr-x
rpm2cpio
11.16
KB
-rwxr-xr-x
rpmbuild
25.57
KB
-rwxr-xr-x
rpmdb
11.73
KB
-rwxr-xr-x
rpmdev-bumpspec
9.64
KB
-rwxr-xr-x
rpmdev-checksig
4.74
KB
-rwxr-xr-x
rpmdev-cksum
1.43
KB
-rwxr-xr-x
rpmdev-diff
6.56
KB
-rwxr-xr-x
rpmdev-extract
7.83
KB
-rwxr-xr-x
rpmdev-md5
1.43
KB
-rwxr-xr-x
rpmdev-newinit
2.92
KB
-rwxr-xr-x
rpmdev-newspec
8.28
KB
-rwxr-xr-x
rpmdev-packager
2.99
KB
-rwxr-xr-x
rpmdev-rmdevelrpms
9.82
KB
-rwxr-xr-x
rpmdev-setuptree
2.31
KB
-rwxr-xr-x
rpmdev-sha1
1.43
KB
-rwxr-xr-x
rpmdev-sha224
1.43
KB
-rwxr-xr-x
rpmdev-sha256
1.43
KB
-rwxr-xr-x
rpmdev-sha384
1.43
KB
-rwxr-xr-x
rpmdev-sha512
1.43
KB
-rwxr-xr-x
rpmdev-sort
2.33
KB
-rwxr-xr-x
rpmdev-sum
1.43
KB
-rwxr-xr-x
rpmdev-vercmp
2.81
KB
-rwxr-xr-x
rpmdev-wipetree
1.48
KB
-rwxr-xr-x
rpmdumpheader
11.09
KB
-rwxr-xr-x
rpminfo
9.88
KB
-rwxr-xr-x
rpmkeys
11.73
KB
-rwxr-xr-x
rpmls
1.01
KB
-rwxr-xr-x
rpmquery
15.75
KB
-rwxr-xr-x
rpmsign
15.8
KB
-rwxr-xr-x
rpmspec
15.99
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
rtf2rtf
23.58
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.4
KB
-rwxr-xr-x
rview
906.4
KB
-rwxr-xr-x
rvim
2.23
MB
-rwxr-xr-x
s2p
52.08
KB
-rwxr-xr-x
sadf
168.46
KB
-rwxr-xr-x
sandbox
17.52
KB
-rwxr-xr-x
sar
95.4
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.25
KB
-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
secon
24.06
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
semodule_package
15.3
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
setfacl
36.73
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
setsid
11.23
KB
-rwxr-xr-x
setterm
27.48
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
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
sgml2html
1.6
KB
-rwxr-xr-x
sgml2info
1.6
KB
-rwxr-xr-x
sgml2latex
1.6
KB
-rwxr-xr-x
sgml2lyx
1.6
KB
-rwxr-xr-x
sgml2rtf
1.6
KB
-rwxr-xr-x
sgml2txt
1.6
KB
-rwxr-xr-x
sgml2xml
77.5
KB
-rwxr-xr-x
sgmlcheck
1.6
KB
-rwxr-xr-x
sgmlnorm
44.69
KB
-rwxr-xr-x
sgmlpre
15.32
KB
-rwxr-xr-x
sgmlsasp
23.65
KB
-rwxr-xr-x
sgmlwhich
265
B
-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
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.6
KB
-rwxr-xr-x
sim_client
14.97
KB
-rwxr-xr-x
simpdftex
20.9
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
slogin
760.45
KB
-rwxr-xr-x
smtpd.py
18.1
KB
-rwxr-xr-x
snice
23.62
KB
-rwxr-xr-x
socat
380.43
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
spam
65.63
KB
-rwxr-xr-x
spectool
10
KB
-rwxr-xr-x
spell
122
B
-rwxr-xr-x
spent
23.6
KB
-rwxr-xr-x
splain
18.03
KB
-rwxr-xr-x
split
69.47
KB
-rwxr-xr-x
splitdiff
3.11
KB
-rwxr-xr-x
sprof
22.1
KB
-rwxr-xr-x
sqlite3
54.95
KB
-rwxr-xr-x
ssh
760.45
KB
-rwxr-xr-x
ssh-add
352.46
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
434.7
KB
-rwxr-xr-x
ssltap
118.41
KB
-rwxr-xr-x
stap
3.39
MB
-rwxr-xr-x
stap-merge
10.96
KB
-rwxr-xr-x
stap-prep
4.08
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
stat
77.19
KB
-rwxr-xr-x
stdbuf
64.88
KB
-rwxr-xr-x
strace
1009.22
KB
-rwxr-xr-x
strace-log-merge
1.28
KB
-rwxr-xr-x
stream
7.05
KB
-rwxr-xr-x
strings
36.53
KB
-rwxr-xr-x
strip
227.32
KB
-rwxr-xr-x
stty
68.61
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
svn
232.45
KB
-rwxr-xr-x
svnadmin
67.4
KB
-rwxr-xr-x
svndumpfilter
35.32
KB
-rwxr-xr-x
svnlook
67.45
KB
-rwxr-xr-x
svnrdump
51.54
KB
-rwxr-xr-x
svnserve
83.95
KB
-rwxr-xr-x
svnsync
51.59
KB
-rwxr-xr-x
svnversion
15.15
KB
-rwxr-xr-x
swig
1.35
MB
-rwxr-xr-x
sxpm
19.83
KB
-rwxr-xr-x
sync
28.33
KB
-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.31
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.6
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
tabs
15.3
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.56
KB
-rwxr-xr-x
tar
338.02
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
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
telnet
99.41
KB
-rwxr-xr-x
test
36.46
KB
-rwxr-xr-x
testgdbm
29.77
KB
-rwxr-xr-x
tex
313.38
KB
-rwxr-xr-x
texconfig
42.64
KB
-rwxr-xr-x
texconfig-dialog
12.38
KB
-rwxr-xr-x
texconfig-sys
894
B
-rwxr-xr-x
texhash
7.39
KB
-rwxr-xr-x
texi2any
50.83
KB
-rwxr-xr-x
texlinks
10.05
KB
-rwxr-xr-x
texlua
5.8
MB
-rwxr-xr-x
texluac
5.8
MB
-rwxr-xr-x
tfmtodit
32.77
KB
-rwxr-xr-x
thumbpdf
41.4
KB
-rwxr-xr-x
tic
64.26
KB
-rwxr-xr-x
timedatectl
330.2
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
tmpwatch
27.87
KB
-rwxr-xr-t
tnameserv
8.95
KB
-rwxr-xr-x
toe
15.42
KB
-rwxr-xr-x
top
104.38
KB
-rwxr-xr-x
touch
61.02
KB
-rwxr-xr-x
tput
15.43
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
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.59
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.04
MB
-rwxr-xr-x
ucs2any
19.47
KB
-rwxr-xr-x
udevadm
414.27
KB
-rwxr-xr-x
ul
19.47
KB
-rwxr-xr-x
umask
29
B
-rwxr-xr-x
umount
31.23
KB
-rwxr-xr-x
unalias
31
B
-rwxr-xr-x
uname
32.3
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.87
KB
-rwxr-xr-x
unpack200
119.29
KB
-rwxr-xr-x
unshare
15.45
KB
-rwxr-xr-x
unwrapdiff
5.8
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-gtk-immodules
313
B
-rwxr-xr-x
update-mime-database
52.82
KB
-rwxr-xr-x
updmap
76.79
KB
-rwxr-xr-x
updmap-sys
829
B
-rwxr-xr-x
uptime
11.22
KB
-rwxr-xr-x
urlgrabber
12.17
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
vdir
114.85
KB
-rwxr-xr-x
verifytree
10.79
KB
-rwxr-xr-x
vi
906.4
KB
-rwxr-xr-x
view
906.4
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
vlock
15.73
KB
-rwxr-xr-x
vmstat
31.48
KB
-rwxr-xr-x
vxloader
15.38
KB
-rwxr-xr-x
w
19.45
KB
-rwxr-xr-x
w3m
1.37
MB
-rwxr-xr-x
w3mman
1.37
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
wc
40.67
KB
-rwxr-xr-x
wdctl
40.7
KB
-rwxr-xr-x
webpng
11.15
KB
-rwxr-xr-x
wget
408.97
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
word-list-compress
11.03
KB
-rwxr-xr-x
write
19.09
KB
-rwxr-xr-x
x86_64
15.27
KB
-rwxr-xr-x
x86_64-redhat-linux-c++
754.59
KB
-rwxr-x---
x86_64-redhat-linux-g++
754.59
KB
-rwxr-x---
x86_64-redhat-linux-gcc
750.58
KB
-rwxr-x---
x86_energy_perf_policy
10.23
KB
-rwxr-xr-x
xargs
60.91
KB
-rwxr-xr-x
xdvi
1.82
KB
-rwxr-xr-x
xdvi-xaw
627.39
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
xinput
52.81
KB
-rwxr-xr-x
xkill
15.27
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
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--
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
xslt-config
2.36
KB
-rwxr-xr-x
xsltproc
23.5
KB
-rwxr-xr-x
xstdcmap
15.77
KB
-rwxr-xr-x
xsubpp
4.45
KB
-rwxr-xr-x
xxd
14.42
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
yacc
84.48
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
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.46
KB
-rwxr-xr-x
zmore
2.79
KB
-rwxr-xr-x
znew
5.22
KB
-rwxr-xr-x
zone2json
21.41
MB
-rwxr-xr-x
zone2sql
21.9
MB
-rwxr-xr-x
zsoelim
32.59
KB
-rwxr-xr-x
Delete
Unzip
Zip
${this.title}
Close
Code Editor : updmap
#!/usr/bin/perl # mupdmap: utility to maintain map files for outline fonts. # $Id: updmap.pl 27264 2012-07-31 05:10:29Z preining $ # # Copyright 2011, 2012 Norbert Preining # This file is licensed under the GNU General Public License version 2 # or any later version. # # History: # Original shell script (C) 2002 Thomas Esser # first perl variant (C) Fabrice Popineau # later adaptions by Reinhard Kotucha and Karl Berry # the original versions were licensed under the following agreement: # Anyone may freely use, modify, and/or distribute this file, without # limitation. # # TODO # - check all other invocations # - after TL2012? Maybe remove support for reading updmap-local.cfg # my $TEXMFROOT; BEGIN { $^W=1; $TEXMFROOT = `kpsewhich -var-value=TEXMFROOT`; if ($?) { print STDERR "updmap: Cannot find TEXMFROOT, aborting!\n"; exit 1; } chomp($TEXMFROOT); unshift (@INC, "$TEXMFROOT/tlpkg"); } my $version = '$Id: updmap.pl 27264 2012-07-31 05:10:29Z preining $'; use Getopt::Long qw(:config no_autoabbrev ignore_case_always); use strict; use TeXLive::TLUtils qw(mkdirhier mktexupd win32 basename dirname sort_uniq member); #use Data::Dumper; #$Data::Dumper::Indent = 1; (my $prg = basename($0)) =~ s/\.pl$//; # sudo sometimes does not reset the home dir of root, check on that # see more comments at the definition of the function itself # this function checks by itself whether it is running on windows or not reset_root_home(); chomp(my $TEXMFMAIN = `kpsewhich --var-value=TEXMFMAIN`); chomp(my $TEXMFVAR = `kpsewhich -var-value=TEXMFVAR`); chomp(my $TEXMFCONFIG = `kpsewhich -var-value=TEXMFCONFIG`); chomp(my $TEXMFHOME = `kpsewhich -var-value=TEXMFHOME`); # make sure that on windows *everything* is in lower case for comparison if (win32()) { $TEXMFMAIN = lc($TEXMFMAIN); $TEXMFVAR = lc($TEXMFVAR); $TEXMFCONFIG = lc($TEXMFCONFIG); $TEXMFROOT = lc($TEXMFROOT); $TEXMFHOME = lc($TEXMFHOME); } my %opts = ( quiet => 0, nohash => 0, nomkmap => 0 ); my $alldata; my $updLSR; my @cmdline_options = ( "listfiles", "cnffile=s@", "copy", "disable=s@", "dvipdfmoutputdir=s", "dvipdfmxoutputdir=s", "dvipsoutputdir=s", # the following does not work, Getopt::Long looses the first # entry in a multi setting, treat it separately in processOptions # furthermore, it is not supported by older perls, so do it differently #"enable=s{1,2}", "edit", "force", "listavailablemaps", "listmaps|l", "nohash", "nomkmap", "dry-run|n", "outputdir=s", "pdftexoutputdir=s", "pxdvioutputdir=s", "quiet|silent|q", # the following is a correct specification of an option according # to the manual, but it does not work! # we will treat that option by itself in processOptions # furthermore, it is not supported by older perls, so do it differently #"setoption=s@{1,2}", "showoptions=s@", "showoption=s@", "syncwithtrees", "version", "help|h", # some debugging invocations "_readsave=s", ); my %settings = ( dvipsPreferOutline => { type => "binary", default => "true", }, LW35 => { type => "string", possible => [ qw/URW URWkb ADOBE ADOBEkb/ ], default => "URWkb", }, dvipsDownloadBase35 => { type => "binary", default => "true", }, pdftexDownloadBase14 => { type => "binary", default => "true", }, dvipdfmDownloadBase14 => { type => "binary", default => "true", }, pxdviUse => { type => "binary", default => "false", }, kanjiEmbed => { type => "any", default => "noEmbed", }, kanjiVariant => { type => "any", default => "", }, ); &main(); ############### sub main { processOptions(); help() if $opts{'help'}; if ($opts{'version'}) { print version(); exit (0); } if ($opts{'dvipdfmoutputdir'} && !defined($opts{'dvipdfmxoutputdir'})) { $opts{'dvipdfmxoutputdir'} = $opts{'dvipdfmoutputdir'}; printf STDERR "Using --dvipdfmoutputdir options for dvipdfmx, but please use --dvipdfmxoutputdir\n"; } if ($opts{'dvipdfmoutputdir'} && $opts{'dvipdfmxoutputdir'} && $opts{'dvipdfmoutputdir'} ne $opts{'dvipdfmxoutputdir'}) { printf STDERR "Options for --dvipdfmoutputdir and --dvipdfmxoutputdir do not agree\nplease use only --dvipdfmxoutputdir. Exiting.\n"; exit(1); } if ($opts{'_readsave'}) { read_updmap_files($opts{'_readsave'}); merge_settings_replace_kanji(); print "READING DONE ============================\n"; #print Dumper($alldata); $alldata->{'updmap'}{$opts{'_readsave'}}{'changed'} = 1; save_updmap($opts{'_readsave'}); exit 0; } if ($opts{'showoptions'}) { for my $o (@{$opts{'showoptions'}}) { if (defined($settings{$o})) { if ($settings{$o}{'type'} eq "binary") { print "true false\n"; } elsif ($settings{$o}{'type'} eq "string") { print "@{$settings{$o}{'possible'}}\n"; } elsif ($settings{$o}{'type'} eq "any") { print "(any string)\n"; } else { print "strange: unknown type of option $o\nplease report\n"; } } else { print "$prg: unknown option: $o\n"; } } exit 0; } # config file for changes my $changes_config_file; # determine which config files should be used # replaces the former "setupCfgFile" # # we also determine here where changes will be saved to if ($opts{'cnffile'}) { my @tmp; for my $f (@{$opts{'cnffile'}}) { if (! -f $f) { die "$prg: Config file \"$f\" not found."; } push @tmp, (win32() ? lc($f) : $f); } @{$opts{'cnffile'}} = @tmp; # in case that config files are given on the command line, the first # in the list is the one where changes will be written to. ($changes_config_file) = @{$opts{'cnffile'}}; } else { my @all_files = `kpsewhich -all updmap.cfg`; chomp(@all_files); my @used_files; for my $f (@all_files) { push @used_files, (win32() ? lc($f) : $f); } # my $TEXMFLOCALVAR; my @TEXMFLOCAL; if (win32()) { chomp($TEXMFLOCALVAR =`kpsewhich --expand-path=\$TEXMFLOCAL`); @TEXMFLOCAL = map { lc } split(/;/ , $TEXMFLOCALVAR); } else { chomp($TEXMFLOCALVAR =`kpsewhich --expand-path='\$TEXMFLOCAL'`); @TEXMFLOCAL = split /:/ , $TEXMFLOCALVAR; } # # search for TEXMFLOCAL/web2c/updmap.cfg # check for compatibility with old updmap-local.cfg my @tmlused; for my $tml (@TEXMFLOCAL) { my $TMLabs = Cwd::abs_path($tml); next if (!$TMLabs); my $oldfound = 0; if (-r "$TMLabs/web2c/updmap-local.cfg") { push @tmlused, "$TMLabs/web2c/updmap-local.cfg"; warning("Old configuration file\n $TMLabs/web2c/updmap-local.cfg\nfound! "); $oldfound = 1; } if (-r "$TMLabs/web2c/updmap.cfg") { if ($oldfound) { warning("Will read it *instead* of\n $TMLabs/web2c/updmap.cfg\n"); } else { push @tmlused, "$TMLabs/web2c/updmap.cfg"; } } warning("Please consider moving the information from updmap-local.cfg to\n $TMLabs/web2c/updmap.cfg\n") if ($oldfound); } # # reorder used files: we move TEXMFLOCAL (if used) just above TEXMFMAIN # as sysadmins will probably adjust values there # # updmap (user): # ============== # as found: # TEXMFCONFIG $HOME/.texliveYYYY/texmf-config/web2c/updmap.cfg # TEXMFVAR $HOME/.texliveYYYY/texmf-var/web2c/updmap.cfg # TEXMFHOME $HOME/texmf/web2c/updmap.cfg # TEXMFSYSCONFIG $TEXLIVE/YYYY/texmf-config/web2c/updmap.cfg # TEXMFSYSVAR $TEXLIVE/YYYY/texmf-var/web2c/updmap.cfg # TEXMFMAIN $TEXLIVE/YYYY/texmf/web2c/updmap.cfg # TEXMFLOCAL $TEXLIVE/texmf-local/web2c/updmap.cfg # TEXMFDIST $TEXLIVE/YYYY/texmf-dist/web2c/updmap.cfg # # as used: # TEXMFCONFIG $HOME/.texliveYYYY/texmf-config/web2c/updmap.cfg # TEXMFVAR $HOME/.texliveYYYY/texmf-var/web2c/updmap.cfg # TEXMFHOME $HOME/texmf/web2c/updmap.cfg # TEXMFSYSCONFIG $TEXLIVE/YYYY/texmf-config/web2c/updmap.cfg # TEXMFSYSVAR $TEXLIVE/YYYY/texmf-var/web2c/updmap.cfg # TEXMFLOCAL $TEXLIVE/texmf-local/web2c/updmap.cfg # TEXMFMAIN $TEXLIVE/YYYY/texmf/web2c/updmap.cfg # TEXMFDIST $TEXLIVE/YYYY/texmf-dist/web2c/updmap.cfg # # updmap-sys (root): # ================== # as found: # TEXMFSYSCONFIG $TEXLIVE/YYYY/texmf-config/web2c/updmap.cfg # TEXMFSYSVAR $TEXLIVE/YYYY/texmf-var/web2c/updmap.cfg # TEXMFMAIN $TEXLIVE/YYYY/texmf/web2c/updmap.cfg # TEXMFLOCAL $TEXLIVE/texmf-local/web2c/updmap.cfg # TEXMFDIST $TEXLIVE/YYYY/texmf-dist/web2c/updmap.cfg # # as used: # TEXMFSYSCONFIG $TEXLIVE/YYYY/texmf-config/web2c/updmap.cfg # TEXMFSYSVAR $TEXLIVE/YYYY/texmf-var/web2c/updmap.cfg # TEXMFLOCAL $TEXLIVE/texmf-local/web2c/updmap.cfg # TEXMFMAIN $TEXLIVE/YYYY/texmf/web2c/updmap.cfg # TEXMFDIST $TEXLIVE/YYYY/texmf-dist/web2c/updmap.cfg # if (@tmlused) { my @tmp; for my $f (@used_files) { if ($f =~ m!\Q$TEXMFMAIN/\E!) { push @tmp, @tmlused; push @tmp, $f; } else { my $pushit = 1; for my $tml (@TEXMFLOCAL) { if ($f =~ m!\Q$tml\E!) { $pushit = 0; last; } } push @tmp, $f if ($pushit); } } @used_files = @tmp; } @{$opts{'cnffile'}} = @used_files; # # determine the config file that we will use for changes # if in the list of used files contains either one from # TEXMFHOME or TEXMFCONFIG (which is TEXMFSYSCONFIG in the -sys case) # then use the *top* file (which will be either one of the two), # if none of the two exists, create a file in TEXMFCONFIG and use it my $use_top = 0; for my $f (@used_files) { if ($f =~ m!(\Q$TEXMFHOME\E|\Q$TEXMFCONFIG\E)/web2c/updmap.cfg!) { $use_top = 1; last; } } if ($use_top) { ($changes_config_file) = @used_files; } else { # add the empty config file my $dn = "$TEXMFCONFIG/web2c"; $changes_config_file = "$dn/updmap.cfg"; } } if (!$opts{'quiet'}) { print "$prg is using the following updmap.cfg files (in precedence order):\n"; for my $f (@{$opts{'cnffile'}}) { print " $f\n"; } print "$prg is using the following updmap.cfg file for writing changes:\n"; print " $changes_config_file\n"; } if ($opts{'listfiles'}) { # we listed it above, so be done exit 0; } $alldata->{'changes_config'} = $changes_config_file; read_updmap_files(@{$opts{'cnffile'}}); if ($opts{'showoption'}) { merge_settings_replace_kanji(); for my $o (@{$opts{'showoption'}}) { if (defined($settings{$o})) { my ($v, $vo) = get_cfg($o); $v = "\"$v\"" if ($v =~ m/\s/); print "$o=$v ($vo)\n"; } else { printf STDERR "$prg: unknown option: $o\n"; } } exit 0; } if ($opts{'listmaps'}) { merge_settings_replace_kanji(); for my $m (keys %{$alldata->{'maps'}}) { my $origin = $alldata->{'maps'}{$m}{'origin'}; print $alldata->{'updmap'}{$origin}{'maps'}{$m}{'type'}, " $m ", $alldata->{'updmap'}{$origin}{'maps'}{$m}{'status'}, " in $origin\n"; } exit 0; } # we do changes always in the used config file with the highest # priority my $bakFile = $changes_config_file; $bakFile =~ s/\.cfg$/.bak/; my $changed = 0; if ($opts{'syncwithtrees'}) { merge_settings_replace_kanji(); my @missing = read_map_files(); if (@missing) { print "Missing map files found, disabling\n"; for my $m (@missing) { my $orig = $alldata->{'maps'}{$m}{'origin'}; print "\t$m (in $orig)\n"; } print "in $changes_config_file\n"; print "Do you really want to continue (y/N)? "; my $answer = <STDIN>; $answer = "n" if !defined($answer); chomp($answer); print "answer =$answer=\n"; if ($answer ne "y" && $answer ne "Y") { print "Please fix manually before running updmap(-sys) again!\n"; exit 0; } $changed ||= enable_disable_maps(@missing); print "finished.\n"; # the original script did not run any update of the map files here, # should we do that? } exit 0; } $updLSR = &mktexupd(); $updLSR->{mustexist}(0); my $cmd; if ($opts{'edit'}) { if ($opts{"dry-run"}) { printf STDERR "No, are you joking, you want to edit with --dry-run?\n"; exit 1; } # it's not a good idea to edit updmap.cfg manually these days, # but for compatibility we'll silently keep the option. $cmd = 'edit'; my $editor = $ENV{'VISUAL'} || $ENV{'EDITOR'}; $editor ||= (&win32 ? "notepad" : "vi"); if (-r $changes_config_file) { ©File($changes_config_file, $bakFile); } else { touch($bakFile); touch($changes_config_file); } system($editor, $changes_config_file); $changed = files_are_different($bakFile, $changes_config_file); } elsif ($opts{'setoption'}) { $cmd = 'setOption'; $changed = setOptions (@{$opts{'setoption'}}); } elsif ($opts{'enable'} || $opts{'disable'}) { $cmd = 'enableMap'; $changed ||= enable_disable_maps(@{$opts{'enable'}}, @{$opts{'disable'}}); } if ($cmd && !$opts{'force'} && !$changed) { print "$changes_config_file unchanged. Map files not recreated.\n" if !$opts{'quiet'}; } else { if (!$opts{'nomkmap'}) { # before we continue we have to make sure that a newly created config # file is acually used. So we have to push the $changes_config_file # onto the list of available files. Since it is already properly # initialized and the merging is done later, all settings should be # honored my @aaa = @{$alldata->{'order'}}; unshift @aaa, $changes_config_file; $alldata->{'order'} = [ @aaa ]; # setupOutputDir("dvips"); setupOutputDir("pdftex"); setupOutputDir("dvipdfmx"); setupOutputDir("pxdvi"); merge_settings_replace_kanji(); my @missing = read_map_files(); if (@missing) { print STDERR "\nERROR: The following map file(s) couldn't be found:\n"; for my $m (@missing) { my $orig = $alldata->{'maps'}{$m}{'origin'}; print STDERR "\t$m (in $orig)\n"; } print STDERR "\n\tDid you run mktexlsr?\n\n" . "\tYou can disable non-existent map entries using the option\n". "\t --syncwithtrees.\n\n"; exit 1; } merge_data(); # for inspecting the output #print STDERR Data::Dumper->Dump([$alldata], [qw(mapdata)]); #print Dumper($alldata); mkMaps(); } unlink ($bakFile) if (-r $bakFile); } if (!$opts{'nohash'}) { print "$prg: Updating ls-R files.\n" if !$opts{'quiet'}; $updLSR->{exec}() unless $opts{"dry-run"}; } return 0; } ################################################################## # # sub getFonts { my ($first, @rest) = @_; my $getall = 0; my @maps = (); return if !defined($first); if ($first eq "-all") { $getall = 1; @maps = @rest; } else { @maps = ($first, @rest); } my @lines = (); for my $m (@maps) { if (defined($alldata->{'maps'}{$m})) { print LOG "\n" . $alldata->{'maps'}{$m}{'fullpath'} . ":\n" unless $opts{'dry-run'}; push @lines, "% $m"; for my $k (sort keys %{$alldata->{'maps'}{$m}{'fonts'}}) { if ($getall || $alldata->{'fonts'}{$k}{'origin'} eq $m) { if (defined($alldata->{'maps'}{$m}{'fonts'}{$k})) { push @lines, "$k " . $alldata->{'maps'}{$m}{'fonts'}{$k}; } else { print "undefined fonts for $k in $m ?!?!?\n"; } print LOG "$k\n" unless $opts{'dry-run'}; } } } } chomp @lines; return @lines; } ############################################################################### # writeLines() # write the lines in $filename # sub writeLines { my ($fname, @lines) = @_; return if $opts{"dry-run"}; map { ($_ !~ m/\n$/ ? s/$/\n/ : $_ ) } @lines; open FILE, ">$fname" or die "$prg: can't write lines to $fname: $!"; print FILE @lines; close FILE; } ############################################################################### # to_pdftex() # if $pdftexStripEnc is set, strip "PS_Encoding_Name ReEncodeFont" # from map entries; they are ignored by pdftex. But since the sh # incarnation of updmap included them, and we want to minimize # differences, this is not done by default. # sub to_pdftex { my $pdftexStripEnc = 0; return @_ unless $pdftexStripEnc; my @in = @_; my @out; foreach my $line (@in) { if ($line =~ /^(.*\s+)(\S+\s+ReEncodeFont\s)(.*)/) { $line = "$1$3"; $line =~ s/\s+\"\s+\"\s+/ /; } push @out, $line; } return @out; } ############################################################################### # setupSymlinks() # set symlink for psfonts.map according to dvipsPreferOutline variable # sub setupSymlinks { my ($dvipsPreferOutline, $dvipsoutputdir, $pdftexDownloadBase14, $pdftexoutputdir) = @_; my $src; my %link; my @link; if ($dvipsPreferOutline eq "true") { $src = "psfonts_t1.map"; } else { $src = "psfonts_pk.map"; } unlink "$dvipsoutputdir/psfonts.map" unless $opts{"dry-run"}; push @link, &SymlinkOrCopy("$dvipsoutputdir", "$src", "psfonts.map"); if ($pdftexDownloadBase14 eq "true") { $src = "pdftex_dl14.map"; } else { $src = "pdftex_ndl14.map"; } unlink "$pdftexoutputdir/pdftex.map" unless $opts{"dry-run"}; push @link, &SymlinkOrCopy("$pdftexoutputdir", "$src", "pdftex.map"); %link = @link; return \%link; } ############################################################################### # SymlinkOrCopy(dir, src, dest) # create symlinks if possible, otherwise copy files # sub SymlinkOrCopy { my ($dir, $src, $dest) = @_; return ($src, $dest) if $opts{"dry-run"}; if (&win32 || $opts{'copy'}) { # always copy ©File("$dir/$src", "$dir/$dest"); } else { # symlink if supported by fs, copy otherwise system("cd \"$dir\" && ln -s $src $dest 2>/dev/null || " . "cp -p \"$dir/$src\" \"$dir/$dest\""); } # remember for "Files generated" in &mkMaps. return ($dest, $src); } ############################################################################### # transLW35(mode args ...) # transform fontname and filenames according to transformation specified # by mode. Possible values: # URW|URWkb|ADOBE|ADOBEkb # sub transLW35 { my ($mode, @lines) = @_; my @psADOBE = ( 's/ URWGothicL-Demi / AvantGarde-Demi /', 's/ URWGothicL-DemiObli / AvantGarde-DemiOblique /', 's/ URWGothicL-Book / AvantGarde-Book /', 's/ URWGothicL-BookObli / AvantGarde-BookOblique /', 's/ URWBookmanL-DemiBold / Bookman-Demi /', 's/ URWBookmanL-DemiBoldItal / Bookman-DemiItalic /', 's/ URWBookmanL-Ligh / Bookman-Light /', 's/ URWBookmanL-LighItal / Bookman-LightItalic /', 's/ NimbusMonL-Bold / Courier-Bold /', 's/ NimbusMonL-BoldObli / Courier-BoldOblique /', 's/ NimbusMonL-Regu / Courier /', 's/ NimbusMonL-ReguObli / Courier-Oblique /', 's/ NimbusSanL-Bold / Helvetica-Bold /', 's/ NimbusSanL-BoldCond / Helvetica-Narrow-Bold /', 's/ NimbusSanL-BoldItal / Helvetica-BoldOblique /', 's/ NimbusSanL-BoldCondItal / Helvetica-Narrow-BoldOblique /', 's/ NimbusSanL-Regu / Helvetica /', 's/ NimbusSanL-ReguCond / Helvetica-Narrow /', 's/ NimbusSanL-ReguItal / Helvetica-Oblique /', 's/ NimbusSanL-ReguCondItal / Helvetica-Narrow-Oblique /', 's/ CenturySchL-Bold / NewCenturySchlbk-Bold /', 's/ CenturySchL-BoldItal / NewCenturySchlbk-BoldItalic /', 's/ CenturySchL-Roma / NewCenturySchlbk-Roman /', 's/ CenturySchL-Ital / NewCenturySchlbk-Italic /', 's/ URWPalladioL-Bold / Palatino-Bold /', 's/ URWPalladioL-BoldItal / Palatino-BoldItalic /', 's/ URWPalladioL-Roma / Palatino-Roman /', 's/ URWPalladioL-Ital / Palatino-Italic /', 's/ StandardSymL / Symbol /', 's/ NimbusRomNo9L-Medi / Times-Bold /', 's/ NimbusRomNo9L-MediItal / Times-BoldItalic /', 's/ NimbusRomNo9L-Regu / Times-Roman /', 's/ NimbusRomNo9L-ReguItal / Times-Italic /', 's/ URWChanceryL-MediItal / ZapfChancery-MediumItalic /', 's/ Dingbats / ZapfDingbats /', ); my @fileADOBEkb = ( 's/\buagd8a.pfb\b/pagd8a.pfb/', 's/\buagdo8a.pfb\b/pagdo8a.pfb/', 's/\buagk8a.pfb\b/pagk8a.pfb/', 's/\buagko8a.pfb\b/pagko8a.pfb/', 's/\bubkd8a.pfb\b/pbkd8a.pfb/', 's/\bubkdi8a.pfb\b/pbkdi8a.pfb/', 's/\bubkl8a.pfb\b/pbkl8a.pfb/', 's/\bubkli8a.pfb\b/pbkli8a.pfb/', 's/\bucrb8a.pfb\b/pcrb8a.pfb/', 's/\bucrbo8a.pfb\b/pcrbo8a.pfb/', 's/\bucrr8a.pfb\b/pcrr8a.pfb/', 's/\bucrro8a.pfb\b/pcrro8a.pfb/', 's/\buhvb8a.pfb\b/phvb8a.pfb/', 's/\buhvb8ac.pfb\b/phvb8an.pfb/', 's/\buhvbo8a.pfb\b/phvbo8a.pfb/', 's/\buhvbo8ac.pfb\b/phvbo8an.pfb/', 's/\buhvr8a.pfb\b/phvr8a.pfb/', 's/\buhvr8ac.pfb\b/phvr8an.pfb/', 's/\buhvro8a.pfb\b/phvro8a.pfb/', 's/\buhvro8ac.pfb\b/phvro8an.pfb/', 's/\buncb8a.pfb\b/pncb8a.pfb/', 's/\buncbi8a.pfb\b/pncbi8a.pfb/', 's/\buncr8a.pfb\b/pncr8a.pfb/', 's/\buncri8a.pfb\b/pncri8a.pfb/', 's/\buplb8a.pfb\b/pplb8a.pfb/', 's/\buplbi8a.pfb\b/pplbi8a.pfb/', 's/\buplr8a.pfb\b/pplr8a.pfb/', 's/\buplri8a.pfb\b/pplri8a.pfb/', 's/\busyr.pfb\b/psyr.pfb/', 's/\butmb8a.pfb\b/ptmb8a.pfb/', 's/\butmbi8a.pfb\b/ptmbi8a.pfb/', 's/\butmr8a.pfb\b/ptmr8a.pfb/', 's/\butmri8a.pfb\b/ptmri8a.pfb/', 's/\buzcmi8a.pfb\b/pzcmi8a.pfb/', 's/\buzdr.pfb\b/pzdr.pfb/', ); my @fileURW = ( 's/\buagd8a.pfb\b/a010015l.pfb/', 's/\buagdo8a.pfb\b/a010035l.pfb/', 's/\buagk8a.pfb\b/a010013l.pfb/', 's/\buagko8a.pfb\b/a010033l.pfb/', 's/\bubkd8a.pfb\b/b018015l.pfb/', 's/\bubkdi8a.pfb\b/b018035l.pfb/', 's/\bubkl8a.pfb\b/b018012l.pfb/', 's/\bubkli8a.pfb\b/b018032l.pfb/', 's/\bucrb8a.pfb\b/n022004l.pfb/', 's/\bucrbo8a.pfb\b/n022024l.pfb/', 's/\bucrr8a.pfb\b/n022003l.pfb/', 's/\bucrro8a.pfb\b/n022023l.pfb/', 's/\buhvb8a.pfb\b/n019004l.pfb/', 's/\buhvb8ac.pfb\b/n019044l.pfb/', 's/\buhvbo8a.pfb\b/n019024l.pfb/', 's/\buhvbo8ac.pfb\b/n019064l.pfb/', 's/\buhvr8a.pfb\b/n019003l.pfb/', 's/\buhvr8ac.pfb\b/n019043l.pfb/', 's/\buhvro8a.pfb\b/n019023l.pfb/', 's/\buhvro8ac.pfb\b/n019063l.pfb/', 's/\buncb8a.pfb\b/c059016l.pfb/', 's/\buncbi8a.pfb\b/c059036l.pfb/', 's/\buncr8a.pfb\b/c059013l.pfb/', 's/\buncri8a.pfb\b/c059033l.pfb/', 's/\buplb8a.pfb\b/p052004l.pfb/', 's/\buplbi8a.pfb\b/p052024l.pfb/', 's/\buplr8a.pfb\b/p052003l.pfb/', 's/\buplri8a.pfb\b/p052023l.pfb/', 's/\busyr.pfb\b/s050000l.pfb/', 's/\butmb8a.pfb\b/n021004l.pfb/', 's/\butmbi8a.pfb\b/n021024l.pfb/', 's/\butmr8a.pfb\b/n021003l.pfb/', 's/\butmri8a.pfb\b/n021023l.pfb/', 's/\buzcmi8a.pfb\b/z003034l.pfb/', 's/\buzdr.pfb\b/d050000l.pfb/', ); my @fileADOBE = ( 's/\buagd8a.pfb\b/agd_____.pfb/', 's/\buagdo8a.pfb\b/agdo____.pfb/', 's/\buagk8a.pfb\b/agw_____.pfb/', 's/\buagko8a.pfb\b/agwo____.pfb/', 's/\bubkd8a.pfb\b/bkd_____.pfb/', 's/\bubkdi8a.pfb\b/bkdi____.pfb/', 's/\bubkl8a.pfb\b/bkl_____.pfb/', 's/\bubkli8a.pfb\b/bkli____.pfb/', 's/\bucrb8a.pfb\b/cob_____.pfb/', 's/\bucrbo8a.pfb\b/cobo____.pfb/', 's/\bucrr8a.pfb\b/com_____.pfb/', 's/\bucrro8a.pfb\b/coo_____.pfb/', 's/\buhvb8a.pfb\b/hvb_____.pfb/', 's/\buhvb8ac.pfb\b/hvnb____.pfb/', 's/\buhvbo8a.pfb\b/hvbo____.pfb/', 's/\buhvbo8ac.pfb\b/hvnbo___.pfb/', 's/\buhvr8a.pfb\b/hv______.pfb/', 's/\buhvr8ac.pfb\b/hvn_____.pfb/', 's/\buhvro8a.pfb\b/hvo_____.pfb/', 's/\buhvro8ac.pfb\b/hvno____.pfb/', 's/\buncb8a.pfb\b/ncb_____.pfb/', 's/\buncbi8a.pfb\b/ncbi____.pfb/', 's/\buncr8a.pfb\b/ncr_____.pfb/', 's/\buncri8a.pfb\b/nci_____.pfb/', 's/\buplb8a.pfb\b/pob_____.pfb/', 's/\buplbi8a.pfb\b/pobi____.pfb/', 's/\buplr8a.pfb\b/por_____.pfb/', 's/\buplri8a.pfb\b/poi_____.pfb/', 's/\busyr.pfb\b/sy______.pfb/', 's/\butmb8a.pfb\b/tib_____.pfb/', 's/\butmbi8a.pfb\b/tibi____.pfb/', 's/\butmr8a.pfb\b/tir_____.pfb/', 's/\butmri8a.pfb\b/tii_____.pfb/', 's/\buzcmi8a.pfb\b/zcmi____.pfb/', 's/\buzdr.pfb\b/zd______.pfb/', ); if ($mode eq "" || $mode eq "URWkb") { # do nothing } elsif ($mode eq "URW") { for my $r (@fileURW) { map { eval($r); } @lines; } } elsif ($mode eq "ADOBE" || $mode eq "ADOBEkb") { for my $r (@psADOBE) { map { eval($r); } @lines; } my @filemode = eval ("\@file" . $mode); for my $r (@filemode) { map { eval($r); } @lines; } } return @lines; } ############################################################################### # cidx2dvips() # reads from stdin, writes to stdout. It transforms "cid-x"-like syntax into # "dvips"-like syntax. # # Specifying the PS Name: # dvips needs the PSname instead of the file name. Thus we allow specifying # the PSname in the comment: # The PS Name can be specified in the font definition line # by including the following sequence somewhere after the # other components: # # %!PS<SPACE-TAB><PSNAME><NON-WORD-CHAR-OR-EOL> # # where # <SPACE-TAB> is either a space or a tab character # <PSNAME> is *one* word, defined by \w\w* perl re # <NON-WORD-CHAR-OR-EOL> is a non-\w char or the end of line # # That means we could have # ... %here the PS font name: %!PS fontname some other comment # ... %!PS fontname %other comments # ... %!PS fontname # ############################################################################### # reimplementation of the cryptic code that was there before sub cidx2dvips { my ($s) = @_; my %fname_psname = ( # Morisawa 'A-OTF-FutoGoB101Pr6N-Bold' => 'FutoGoB101Pr6N-Bold', 'A-OTF-FutoGoB101Pro-Bold' => 'FutoGoB101Pro-Bold', 'A-OTF-FutoMinA101Pr6N-Bold' => 'FutoMinA101Pr6N-Bold', 'A-OTF-FutoMinA101Pro-Bold' => 'FutoMinA101Pro-Bold', 'A-OTF-GothicBBBPr6N-Medium' => 'GothicBBBPr6N-Medium', 'A-OTF-GothicBBBPro-Medium' => 'GothicBBBPro-Medium', 'A-OTF-Jun101Pr6N-Light' => 'Jun101Pr6N-Light', 'A-OTF-Jun101Pro-Light' => 'Jun101Pro-Light', 'A-OTF-MidashiGoPr6N-MB31' => 'MidashiGoPr6N-MB31', 'A-OTF-MidashiGoPro-MB31' => 'MidashiGoPro-MB31', 'A-OTF-RyuminPr6N-Light' => 'RyuminPr6N-Light', 'A-OTF-RyuminPro-Light' => 'RyuminPro-Light', # Hiragino font file names and PS names are the same # # IPA 'ipaexg' => 'IPAexGothic', 'ipaexm' => 'IPAexMincho', 'ipag' => 'IPAGothic', 'ipam' => 'IPAMincho', # # Kozuka font names and PS names are the same ); my @d; foreach (@$s) { # ship empty lines and comment lines out as is if (m/^\s*(%.*)?$/) { push(@d, $_); next; } # get rid of new lines for now chomp; # save the line for warnings my $l = $_; # first check whether a PSname is given my $psname; # # the matching on \w* is greedy, so will take all the word chars available # that means we do not need to test for end of word if ($_ =~ m/%!PS\s\s*([0-9A-Za-z-_][0-9A-Za-z-_]*)/) { $psname = $1; } # remove comments s/[^0-9A-Za-z-_]*%.*$//; # replace supported ",SOMETHING" constructs my $italicmax = 0; if (m/,BoldItalic/) { $italicmax = .3; s/,BoldItalic//; } s/,Bold//; if (m/,Italic/) { $italicmax = .3; s/,Italic//; } # break out if unsupported constructs are found: @ / , next if (m![\@/,]!); # make everything single spaced s/\s\s*/ /g; # unicode encoded fonts are not supported next if (m!^\w\w* unicode !); # now we have the following format # <word> <word> <word> some options like -e or -s if ($_ !~ m/([^ ][^ ]*) ([^ ][^ ]*) ([^ ][^ ]*)( (.*))?$/) { print STDERR "cidx2dvips warning: Cannot translate font line:\n==> $l\n"; print STDERR "Current translation status: ==>$_==\n"; next; } my $tfmname = $1; my $cid = $2; my $fname = $3; my $opts = (defined($5) ? " $5" : ""); # remove extensions from $fname $fname =~ s/\.[Oo][Tt][Ff]//; $fname =~ s/\.[Tt][Tt][FfCc]//; # remove leading ! from $fname $fname =~ s/^!//; # remove leading :<number>: from $fname $fname =~ s/:[0-9]+://; # remove leading space from $opt $opts =~ s/^\s+//; # replace -e and -s in the options $opts =~ s/-e ([.0-9-][.0-9-]*)/ "$1 ExtendFont"/; if (m/-s ([.0-9-][.0-9-]*)/) { if ($italicmax > 0) { # we have already a definition of SlantFont via ,Italic or ,BoldItalic # warn the user that larger one is kept print STDERR "cidx2dvips: warning: Double slant specified via Italic and -s:\n==> $l\n==> Using only the biggest slant value.\n"; } $italicmax = $1 if ($1 > $italicmax); $opts =~ s/-s ([.0-9-][.0-9-]*)//; } if ($italicmax != 0) { $opts .= " \"$italicmax SlantFont\""; } # print out the result if (defined($psname)) { push @d, "$tfmname $psname-$cid$opts\n"; } else { if (defined($fname_psname{$fname})) { push @d, "$tfmname $fname_psname{$fname}-$cid$opts\n"; } else { push @d, "$tfmname $fname-$cid$opts\n"; } } } return @d; } sub cidx2dvips_old { my ($s) = @_; my @d; foreach (@$s) { if (m/^%/) { push(@d, $_); next; } s/,BoldItalic/ -s .3/; s/,Bold//; s/,Italic/ -s .3/; s/\s\s*/ /g; if ($_ =~ /.*[@\:\/,]/) {next;} elsif ($_ =~ /^[^ ][^ ]* unicode /) {next;} s/^([^ ][^ ]* [^ ][^ ]* [^ ][^ ]*)\.[Oo][Tt][Ff]/$1/; s/^([^ ][^ ]* [^ ][^ ]* [^ ][^ ]*)\.[Tt][Tt][FfCc]/$1/; s/$/ %/; s/^(([^ ]*).*)/$1$2/; s/^([^ ][^ ]* ([^ ][^ ]*) !*([^ ][^ ]*).*)/$1 $3-$2/; s/^(.* -e ([.0-9-][.0-9-]*).*)/$1 "$2 ExtendFont"/; s/^(.* -s ([.0-9-][.0-9-]*).*)/$1 "$2 SlantFont"/; s/.*%//; push(@d, $_); } return @d } sub get_cfg { my ($v) = @_; if (defined($alldata->{'merged'}{'setting'}{$v})) { return ( $alldata->{'merged'}{'setting'}{$v}{'val'}, $alldata->{'merged'}{'setting'}{$v}{'origin'} ); } else { return ($settings{$v}{'default'}, "default"); } } sub mkMaps { my $logfile; $logfile = "$TEXMFVAR/web2c/updmap.log"; if (! $opts{'dry-run'}) { mkdirhier("$TEXMFVAR/web2c"); open LOG, ">$logfile" or die "$prg: Can't open log file \"$logfile\": $!"; print LOG &version(); printf LOG "%s\n\n", scalar localtime(); print LOG "Using the following config files:\n"; for (@{$opts{'cnffile'}}) { print LOG " $_\n"; } } sub print_and_log { my $str=shift; print $str if !$opts{'quiet'}; print LOG $str unless $opts{'dry-run'}; } sub only_log { print LOG shift unless $opts{'dry-run'}; } my ($mode, $mode_origin) = get_cfg('LW35'); my ($dvipsPreferOutline, $dvipsPreferOutline_origin) = get_cfg('dvipsPreferOutline'); my ($dvipsDownloadBase35, $dvipsDownloadBase35_origin) = get_cfg('dvipsDownloadBase35'); my ($pdftexDownloadBase14, $pdftexDownloadBase14_origin) = get_cfg('pdftexDownloadBase14'); my ($pxdviUse, $pxdviUse_origin) = get_cfg('pxdviUse'); my ($kanjiEmbed, $kanjiEmbed_origin) = get_cfg('kanjiEmbed'); my ($kanjiVariant, $kanjiVariant_origin) = get_cfg('kanjiVariant'); print_and_log ("\n$prg is creating new map files" . "\nusing the following configuration:" . "\n LW35 font names : " . "$mode ($mode_origin)" . "\n prefer outlines : " . "$dvipsPreferOutline ($dvipsPreferOutline_origin)" . "\n texhash enabled : " . ($opts{'nohash'} ? "false" : "true") . "\n download standard fonts (dvips) : " . "$dvipsDownloadBase35 ($dvipsDownloadBase35_origin)" . "\n download standard fonts (pdftex) : " . "$pdftexDownloadBase14 ($pdftexDownloadBase14_origin)" . "\n kanjiEmbed replacement string : " . "$kanjiEmbed ($kanjiEmbed_origin)" . "\n kanjiVariant replacement string : " . "$kanjiVariant ($kanjiVariant_origin)" . "\n create a mapfile for pxdvi : " . "$pxdviUse ($pxdviUse_origin)" . "\n\n"); print_and_log ("Scanning for LW35 support files"); my $dvips35 = $alldata->{'maps'}{"dvips35.map"}{'fullpath'}; my $pdftex35 = $alldata->{'maps'}{"pdftex35.map"}{'fullpath'}; my $ps2pk35 = $alldata->{'maps'}{"ps2pk35.map"}{'fullpath'}; my $LW35 = "\n$dvips35\n$pdftex35\n$ps2pk35\n\n"; only_log ("\n"); only_log ($LW35); print_and_log (" [ 3 files]\n"); only_log ("\n"); print_and_log ("Scanning for MixedMap entries"); my @mixedmaps; my @notmixedmaps; my @kanjimaps; for my $m (keys %{$alldata->{'maps'}}) { my $origin = $alldata->{'maps'}{$m}{'origin'}; next if !defined($origin); next if ($alldata->{'updmap'}{$origin}{'maps'}{$m}{'status'} eq "disabled"); push @mixedmaps, $m if ($alldata->{'updmap'}{$origin}{'maps'}{$m}{'type'} eq "MixedMap"); push @notmixedmaps, $m if ($alldata->{'updmap'}{$origin}{'maps'}{$m}{'type'} eq "Map"); push @kanjimaps, $m if ($alldata->{'updmap'}{$origin}{'maps'}{$m}{'type'} eq "KanjiMap"); } @mixedmaps = sort @mixedmaps; @notmixedmaps = sort @notmixedmaps; @kanjimaps = sort @kanjimaps; only_log("\n"); foreach my $m (sort @mixedmaps) { if (defined($alldata->{'maps'}{$m}{'fullpath'})) { only_log($alldata->{'maps'}{$m}{'fullpath'} . "\n"); } else { only_log("$m (full path not set?)\n"); } } only_log("\n"); print_and_log (sprintf(" [%3d files]\n", scalar @mixedmaps)); only_log("\n"); print_and_log ("Scanning for KanjiMap entries"); only_log("\n"); foreach my $m (@kanjimaps) { if (defined($alldata->{'maps'}{$m}{'fullpath'})) { only_log($alldata->{'maps'}{$m}{'fullpath'} . "\n"); } else { only_log("$m (full path not set?)\n"); } } only_log("\n"); print_and_log (sprintf(" [%3d files]\n", scalar @kanjimaps)); only_log("\n"); print_and_log ("Scanning for Map entries"); only_log("\n"); foreach my $m (@notmixedmaps) { if (defined($alldata->{'maps'}{$m}{'fullpath'})) { only_log($alldata->{'maps'}{$m}{'fullpath'} . "\n"); } else { only_log("$m (full path not set?)\n"); } } only_log("\n"); print_and_log (sprintf(" [%3d files]\n\n", scalar @notmixedmaps)); only_log("\n"); # Create psfonts_t1.map, psfonts_pk.map, ps2pk.map and pdftex.map: my $dvipsoutputdir = $opts{'dvipsoutputdir'}; my $pdftexoutputdir = $opts{'pdftexoutputdir'}; my $dvipdfmxoutputdir = $opts{'dvipdfmxoutputdir'}; my $pxdvioutputdir = $opts{'pxdvioutputdir'}; if (!$opts{'dry-run'}) { my @managed_files = ("$dvipsoutputdir/download35.map", "$dvipsoutputdir/builtin35.map", "$dvipsoutputdir/psfonts_t1.map", "$dvipsoutputdir/psfonts_pk.map", "$pdftexoutputdir/pdftex_dl14.map", "$pdftexoutputdir/pdftex_ndl14.map", "$dvipdfmxoutputdir/kanjix.map", "$dvipsoutputdir/ps2pk.map"); push @managed_files, "$pxdvioutputdir/xdvi-ptex.map" if ($pxdviUse eq "true"); for my $file (@managed_files) { open FILE, ">$file"; print FILE "% $file:\ % maintained by updmap[-sys] (multi).\ % Don't change this file directly. Use updmap[-sys] instead.\ % See the updmap documentation.\ % A log of the run that created this file is available here:\ % $logfile\ "; close FILE; } } my @kanjimaps_fonts = getFonts(@kanjimaps); @kanjimaps_fonts = &normalizeLines(@kanjimaps_fonts); my @ps2pk_fonts = getFonts('-all', "ps2pk35.map"); my @dvips35_fonts = getFonts('-all', "dvips35.map"); my @pdftex35_fonts = getFonts('-all', "pdftex35.map"); my @mixedmaps_fonts = getFonts(@mixedmaps); my @notmixedmaps_fonts = getFonts(@notmixedmaps); print "Generating output for dvipdfmx...\n" if !$opts{'quiet'}; &writeLines(">$dvipdfmxoutputdir/kanjix.map", @kanjimaps_fonts); if ($pxdviUse eq "true") { # we use the very same data as for kanjix.map, but generate # a different file, so that in case a user wants to hand-craft it print "Generating output for pxdvi...\n" if !$opts{'quiet'}; &writeLines(">$pxdvioutputdir/xdvi-ptex.map", @kanjimaps_fonts); } print "Generating output for ps2pk...\n" if !$opts{'quiet'}; my @ps2pk_map; push @ps2pk_map, "% ps2pk35.map"; push @ps2pk_map, transLW35($mode, @ps2pk_fonts); push @ps2pk_map, @mixedmaps_fonts; push @ps2pk_map, @notmixedmaps_fonts; &writeLines(">$dvipsoutputdir/ps2pk.map", normalizeLines(@ps2pk_map)); print "Generating output for dvips...\n" if !$opts{'quiet'}; my @download35_map; push @download35_map, "% ps2pk35.map"; push @download35_map, transLW35($mode, @ps2pk_fonts); &writeLines(">$dvipsoutputdir/download35.map", normalizeLines(@download35_map)); my @builtin35_map; push @builtin35_map, "% dvips35.map"; push @builtin35_map, transLW35($mode, @dvips35_fonts); &writeLines(">$dvipsoutputdir/builtin35.map", normalizeLines(@builtin35_map)); my @dftdvips_fonts = (($dvipsDownloadBase35 eq "true") ? @ps2pk_fonts : @dvips35_fonts); my @psfonts_t1_map; if ($dvipsDownloadBase35 eq "true") { push @psfonts_t1_map, "% ps2pk35.map"; @dftdvips_fonts = @ps2pk_fonts; } else { push @psfonts_t1_map, "% dvips35.map"; @dftdvips_fonts = @dvips35_fonts; } push @psfonts_t1_map, transLW35($mode, @dftdvips_fonts); my @tmpkanji2 = cidx2dvips(\@kanjimaps_fonts); push @psfonts_t1_map, @mixedmaps_fonts; push @psfonts_t1_map, @notmixedmaps_fonts; push @psfonts_t1_map, @tmpkanji2; &writeLines(">$dvipsoutputdir/psfonts_t1.map", normalizeLines(@psfonts_t1_map)); my @psfonts_pk_map; push @psfonts_pk_map, transLW35($mode, @dftdvips_fonts); push @psfonts_pk_map, @notmixedmaps_fonts; push @psfonts_pk_map, @tmpkanji2; &writeLines(">$dvipsoutputdir/psfonts_pk.map", normalizeLines(@psfonts_pk_map)); print "Generating output for pdftex...\n" if !$opts{'quiet'}; # remove PaintType due to Sebastian's request my @pdftexmaps_ndl; push @pdftexmaps_ndl, "% pdftex35.map"; push @pdftexmaps_ndl, transLW35($mode, @pdftex35_fonts); push @pdftexmaps_ndl, @mixedmaps_fonts; push @pdftexmaps_ndl, @notmixedmaps_fonts; @pdftexmaps_ndl = grep { $_ !~ m/(^%\|PaintType)/ } @pdftexmaps_ndl; my @pdftexmaps_dl; push @pdftexmaps_dl, "% ps2pk35.map"; push @pdftexmaps_dl, transLW35($mode, @ps2pk_fonts); push @pdftexmaps_dl, @mixedmaps_fonts; push @pdftexmaps_dl, @notmixedmaps_fonts; @pdftexmaps_dl = grep { $_ !~ m/(^%\|PaintType)/ } @pdftexmaps_dl; my @pdftex_ndl14_map = @pdftexmaps_ndl; @pdftex_ndl14_map = &normalizeLines(@pdftex_ndl14_map); @pdftex_ndl14_map = &to_pdftex(@pdftex_ndl14_map); &writeLines(">$pdftexoutputdir/pdftex_ndl14.map", @pdftex_ndl14_map); my @pdftex_dl14_map = @pdftexmaps_dl; @pdftex_dl14_map = &normalizeLines(@pdftex_dl14_map); @pdftex_dl14_map = &to_pdftex(@pdftex_dl14_map); &writeLines(">$pdftexoutputdir/pdftex_dl14.map", @pdftex_dl14_map); our $link = &setupSymlinks($dvipsPreferOutline, $dvipsoutputdir, $pdftexDownloadBase14, $pdftexoutputdir); print_and_log ("\nFiles generated:\n"); sub dir { my ($d, $f, $target)=@_; our $link; if (-e "$d/$f") { my @stat=lstat("$d/$f"); my ($s,$m,$h,$D,$M,$Y)=localtime($stat[9]); my $timestamp=sprintf ("%04d-%02d-%02d %02d:%02d:%02d", $Y+1900, $M+1, $D, $h, $m, $s); my $date=sprintf "%12d %s %s", $stat[7], $timestamp, $f; print_and_log ($date); if (-l "$d/$f") { my $lnk=sprintf " -> %s\n", readlink ("$d/$f"); print_and_log ($lnk); } elsif ($f eq $target) { if (&files_are_identical("$d/$f", "$d/" . $link->{$target})) { print_and_log (" = $link->{$target}\n"); } else { print_and_log (" = ?????\n"); # This shouldn't happen. } } else { print_and_log ("\n"); } } else { print STDERR "Warning: File $d/$f doesn't exist.\n"; print LOG "Warning: File $d/$f doesn't exist.\n" unless $opts{'dry-run'}; } } my $d; $d = "$dvipsoutputdir"; print_and_log(" $d:\n"); foreach my $f ('builtin35.map', 'download35.map', 'psfonts_pk.map', 'psfonts_t1.map', 'ps2pk.map', 'psfonts.map') { dir ($d, $f, 'psfonts.map'); $updLSR->{add}("$d/$f") unless $opts{'dry-run'}; } $d = "$pdftexoutputdir"; print_and_log(" $d:\n"); foreach my $f ('pdftex_dl14.map', 'pdftex_ndl14.map', 'pdftex.map') { dir ($d, $f, 'pdftex.map'); $updLSR->{add}("$d/$f") unless $opts{'dry-run'}; } $d="$dvipdfmxoutputdir"; print_and_log(" $d:\n"); foreach my $f ('kanjix.map') { dir ($d, $f, ''); $updLSR->{add}("$d/$f") unless $opts{'dry-run'}; } if ($pxdviUse eq "true") { $d="$pxdvioutputdir"; print_and_log(" $d:\n"); foreach my $f ('xdvi-ptex.map') { dir ($d, $f, ''); $updLSR->{add}("$d/$f") unless $opts{'dry-run'}; } } close LOG unless $opts{'dry-run'}; print "\nTranscript written on \"$logfile\".\n" if !$opts{'quiet'}; } sub locateMap { my $map = shift; my $ret = `kpsewhich --format=map $map`; chomp($ret); return $ret; } sub processOptions { # first process the stupid setoption= s@{1,2} which is not accepted # furthermore, try to work around missing s{1,2} support in older perls my $oldconfig = Getopt::Long::Configure(qw(pass_through)); our @setoptions; our @enable; sub read_one_or_two { my ($opt, $val) = @_; our @setoptions; our @enable; # check if = occirs in $val, if not, get the next argument if ($val =~ m/=/) { if ($opt eq "setoption") { push @setoptions, $val; } else { push @enable, $val; } } else { my $vv = shift @ARGV; die "Try \"$prg --help\" for more information.\n" if !defined($vv); if ($opt eq "setoption") { push @setoptions, "$val=$vv"; } else { push @enable, "$val=$vv"; } } } GetOptions("setoption=s@" => \&read_one_or_two, "enable=s@" => \&read_one_or_two) or die "Try \"$prg --help\" for more information.\n"; @{$opts{'setoption'}} = @setoptions if (@setoptions); @{$opts{'enable'}} = @enable if (@enable); Getopt::Long::Configure($oldconfig); # now continue with normal option handling GetOptions(\%opts, @cmdline_options) or die "Try \"$prg --help\" for more information.\n"; } # determines the output dir for driver from cmd line, or if not given # from TEXMFVAR sub setupOutputDir { my $driver = shift; if (!$opts{$driver . "outputdir"}) { if ($opts{'outputdir'}) { $opts{$driver . "outputdir"} = $opts{'outputdir'}; } else { $opts{$driver . "outputdir"} = "$TEXMFVAR/fonts/map/$driver/updmap"; } } my $od = $opts{$driver . "outputdir"}; if (!$opts{"dry-run"}) { &mkdirhier($od); if (! -w $od) { die "$prg: Directory \"$od\" isn't writable: $!"; } } print "$driver output dir: \"$od\"\n" if !$opts{'quiet'}; return $od; } ############################################################################### # setOption (@options) # parse @options for "key=value" (one element of @options) # we can only have "key=value" since that is the way it was prepared # in process_options # (These were the values provided to --setoption.) # sub setOptions { my (@options) = @_; for (my $i = 0; $i < @options; $i++) { my $o = $options[$i]; my ($key,$val) = split (/=/, $o, 2); die "$prg: unexpected empty key or val for options (@options), goodbye.\n" if !$key || !defined($val); &setOption ($key, $val); } return save_updmap($alldata->{'changes_config'}); } sub enable_disable_maps { my (@what) = @_; my $tc = $alldata->{'changes_config'}; die "$prg: top config file $tc has not been read." if (!defined($alldata->{'updmap'}{$tc})); my $changed = 0; for my $w (@what) { if ($w =~ m/=/) { # this is --enable MapType=MapName my ($type, $map) = split ('=', $w); enable_map($tc, $type, $map); } else { # this is --disable MapName disable_map($tc, $w); } } return save_updmap($tc); } sub enable_map { my ($tc, $type, $map) = @_; die "$prg: invalid mapType $type" if ($type !~ m/^(Map|MixedMap|KanjiMap)$/); if (defined($alldata->{'updmap'}{$tc}{'maps'}{$map})) { # the map data has already been read in, no special precautions necessary if (($alldata->{'updmap'}{$tc}{'maps'}{$map}{'status'} eq "enabled") && ($alldata->{'updmap'}{$tc}{'maps'}{$map}{'type'} eq $type)) { # nothing to do here ... be happy! return; } else { $alldata->{'updmap'}{$tc}{'maps'}{$map}{'status'} = "enabled"; $alldata->{'updmap'}{$tc}{'maps'}{$map}{'type'} = $type; $alldata->{'maps'}{$map}{'origin'} = $tc; $alldata->{'maps'}{$map}{'status'} = "enabled"; $alldata->{'updmap'}{$tc}{'changed'} = 1; } } else { # add a new map file! $alldata->{'updmap'}{$tc}{'maps'}{$map}{'type'} = $type; $alldata->{'updmap'}{$tc}{'maps'}{$map}{'status'} = "enabled"; $alldata->{'updmap'}{$tc}{'maps'}{$map}{'line'} = -1; $alldata->{'updmap'}{$tc}{'changed'} = 1; $alldata->{'maps'}{$map}{'origin'} = $tc; $alldata->{'maps'}{$map}{'status'} = "enabled"; } } sub disable_map { my ($tc, $map) = @_; if (defined($alldata->{'updmap'}{$tc}{'maps'}{$map})) { # the map data has already been read in, no special precautions necessary if ($alldata->{'updmap'}{$tc}{'maps'}{$map}{'status'} eq "disabled") { # nothing to do here ... be happy! } else { $alldata->{'updmap'}{$tc}{'maps'}{$map}{'status'} = "disabled"; $alldata->{'maps'}{$map}{'origin'} = $tc; $alldata->{'maps'}{$map}{'status'} = "disabled"; $alldata->{'updmap'}{$tc}{'changed'} = 1; } } else { # disable a Map type that might be activated in a lower ranked updmap.cfg if (!defined($alldata->{'maps'}{$map})) { warning("Map is not present anywhere, why should I disable it?\n"); return; } my $orig = $alldata->{'maps'}{$map}{'origin'}; # add a new entry to the top level where we disable it # copy over the type from the last entry $alldata->{'updmap'}{$tc}{'maps'}{$map}{'type'} = $alldata->{'updmap'}{$orig}{'maps'}{$map}{'type'}; $alldata->{'updmap'}{$tc}{'maps'}{$map}{'status'} = "disabled"; $alldata->{'updmap'}{$tc}{'maps'}{$map}{'line'} = -1; # rewrite the origin $alldata->{'maps'}{$map}{'origin'} = $tc; $alldata->{'maps'}{$map}{'status'} = "disabled"; # go on for writing $alldata->{'updmap'}{$tc}{'changed'} = 1; } } # returns 1 if actually saved due to changes sub save_updmap { my $fn = shift; return if $opts{'dry-run'}; my %upd = %{$alldata->{'updmap'}{$fn}}; if ($upd{'changed'}) { mkdirhier(dirname($fn)); open (FN, ">$fn") || die "$prg: can't write to $fn: $!"; my @lines = @{$upd{'lines'}}; if (!@lines) { print "Creating new config file $fn\n"; # update lsR database $updLSR->{add}($fn); $updLSR->{exec}(); # reset the LSR stuff, otherwise we add files several times $updLSR->{reset}(); } # collect the lines with data my %line_to_setting; my %line_to_map; my @add_setting; my @add_map; if (defined($upd{'setting'})) { for my $k (keys %{$upd{'setting'}}) { if ($upd{'setting'}{$k}{'line'} == -1) { push @add_setting, $k; } else { $line_to_setting{$upd{'setting'}{$k}{'line'}} = $k; } } } if (defined($upd{'maps'})) { for my $k (keys %{$upd{'maps'}}) { if ($upd{'maps'}{$k}{'line'} == -1) { push @add_map, $k; } else { $line_to_map{$upd{'maps'}{$k}{'line'}} = $k; } } } for my $i (0..$#lines) { if (defined($line_to_setting{$i})) { my $k = $line_to_setting{$i}; my $v = $upd{'setting'}{$k}{'val'}; print FN "$k $v\n"; } elsif (defined($line_to_map{$i})) { my $m = $line_to_map{$i}; my $rm; if (defined($upd{'maps'}{$m}{'original'})) { # we have the case that @noEmbed@ was replaced by the respective # setting. Before writing out we have to replace this back with # the original line!A $rm = $upd{'maps'}{$m}{'original'}; } else { $rm = $m; } my $t = $upd{'maps'}{$m}{'type'}; my $p = ($upd{'maps'}{$m}{'status'} eq "disabled" ? "#! " : ""); print FN "$p$t $rm\n"; } else { print FN "$lines[$i]\n"; } } # add the new settings and maps for my $k (@add_setting) { my $v = $upd{'setting'}{$k}{'val'}; print FN "$k $v\n"; } for my $m (@add_map) { my $t = $upd{'maps'}{$m}{'type'}; my $p = ($upd{'maps'}{$m}{'status'} eq "disabled" ? "#! " : ""); print FN "$p$t $m\n"; } close(FN) || warn("Cannot close file handle for $fn: $!"); delete $alldata->{'updmap'}{$fn}{'changed'}; return 1; } return 0; } ###################### # check for correct option value # sub check_option { my ($opt, $val) = @_; if ((($settings{$opt}{'type'} eq "binary") && $val ne "true" && $val ne "false") || (($settings{$opt}{'type'} eq "string") && !member($val, @{$settings{$opt}{'possible'}}))) { return 0; } return 1; } ############################################################################### # setOption (conf_file, option, value) # sets option to value in the config file (replacing the existing setting # or by adding a new line to the config file). # sub setOption { my ($opt, $val) = @_; die "$prg: Unsupported option $opt." if (!defined($settings{$opt})); die "$0: Invalid value $val for option $opt." if (!check_option($opt, $val)); # silently accept this old option name, just in case. return if $opt eq "dvipdfmDownloadBase14"; #print "Setting option $opt to $val...\n" if !$opts{'quiet'}; my $tc = $alldata->{'changes_config'}; die "$prg: top config file $tc has not been read." if (!defined($alldata->{'updmap'}{$tc})); if (defined($alldata->{'updmap'}{$tc}{'setting'}{$opt}{'val'})) { # the value is already set, do nothing if ($alldata->{'updmap'}{$tc}{'setting'}{$opt}{'val'} eq $val) { return; } $alldata->{'updmap'}{$tc}{'setting'}{$opt}{'val'} = $val; $alldata->{'updmap'}{$tc}{'changed'} = 1; } else { $alldata->{'updmap'}{$tc}{'setting'}{$opt}{'val'} = $val; $alldata->{'updmap'}{$tc}{'setting'}{$opt}{'line'} = -1; $alldata->{'updmap'}{$tc}{'changed'} = 1; } } ############################################################################### # copyFile() # copy file $src to $dst, sets $dst creation and mod time # sub copyFile { my ($src, $dst) = @_; my $dir; ($dir=$dst)=~s/(.*)\/.*/$1/; mkdirhier($dir); $src eq $dst && return "can't copy $src to itself!\n"; open IN, "<$src" or die "$0: can't open source file $src for copying: $!"; open OUT, ">$dst"; binmode(IN); binmode(OUT); print OUT <IN>; close(OUT); close(IN); my @t = stat($src); utime($t[8], $t[9], $dst); } ############################################################################### # files_are_identical(file_A, file_B) # compare two files. Same as cmp(1). # sub files_are_identical { my $file_A=shift; my $file_B=shift; my $retval=0; open IN, "$file_A"; my $A=(<IN>); close IN; open IN, "$file_B"; my $B=(<IN>); close IN; $retval=1 if ($A eq $B); return $retval; } ############################################################################### # files_are_different(file_A, file_B[, comment_char]) # compare two equalized files. # sub files_are_different { my $file_A=shift; my $file_B=shift; my $comment=shift; my $retval=0; my $A=equalize_file("$file_A", $comment); my $B=equalize_file("$file_B", $comment); $retval=1 unless ($A eq $B); return $retval; } ############################################################################### # equalize_file(filename[, comment_char]) # read a file and return its processed content as a string. # look into the source code for more details. # sub equalize_file { my $file=shift; my $comment=shift; my @temp; open IN, "$file"; my @lines = (<IN>); close IN; chomp(@lines); for (@lines) { s/\s*${comment}.*// if (defined $comment); # remove comments next if /^\s*$/; # remove empty lines s/\s+/ /g; # replace multiple whitespace chars by a single one push @temp, $_; } return join('X', sort(@temp)); } ############################################################################### # normalizeLines() # not the original function, we want it to keep comments, that are # anyway only the file names we are adding! # whitespace is exactly one space, no empty lines, # no whitespace at end of line, one space before and after " # sub normalizeLines { my @lines = @_; my %count = (); # @lines = grep { $_ !~ m/^[*#;%]/ } @lines; map {$_ =~ s/\s+/ /gx } @lines; @lines = grep { $_ !~ m/^\s*$/x } @lines; map { $_ =~ s/\s$//x ; $_ =~ s/\s*\"\s*/ \" /gx; $_ =~ s/\" ([^\"]*) \"/\"$1\"/gx; } @lines; # @lines = grep {++$count{$_} < 2 } (sort @lines); @lines = grep {++$count{$_} < 2 } (@lines); return @lines; } ################################################################# # # reading updmap-cfg files and the actual map files # # the following hash saves *all* the information and is passed around # we do not fill everything from the very beginning to make sure that # we only read what is necessary (speed!) # # initialized by main # $alldata->{'changes_config'} = the config file where changes are saved # # initialized by read_updmap_files # $alldata->{'order'} = [ list of updmap in decreasing priority ] # $alldata->{'updmap'}{$full_path_name_of_updmap}{'lines'} = \@lines # $alldata->{'updmap'}{$full_path_name_of_updmap}{'setting'}{$key}{'val'} = $val # $alldata->{'updmap'}{$full_path_name_of_updmap}{'setting'}{$key}{'line'} = $i # $alldata->{'updmap'}{$full_path_name_of_updmap}{'maps'}{$mapname}{'type'} # = 'Map'|'MixedMap'|'KanjiMap'|'disabled' # $alldata->{'updmap'}{$full_path_name_of_updmap}{'maps'}{$mapname}{'status'} # = 'enabled'|'disabled' # $alldata->{'updmap'}{$full_path_name_of_updmap}{'maps'}{$mapname}{'line'} = $i # $alldata->{'maps'}{$m}{'origin'} = $updmap_path_name # $alldata->{'maps'}{$m}{'status'} = enabled | disabled # # initialized by read_map_files # $alldata->{'maps'}{$m}{'fonts'}{$font} = $definition # $alldata->{'fonts'}{$f}{'origin'} = $map # # initialized by merge_data # $alldata->{'merged'}{'setting'}{$key}{'val'} = $val # $alldata->{'merged'}{'setting'}{$key}{'origin'} = $origin_updmap_cfg # $alldata->{'merged'}{'allMaps'}{'fonts'}{$fontdef} = $rest # $alldata->{'merged'}{'noMixedMaps'}{'fonts'}{$fontdef} = $rest # $alldata->{'merged'}{'KanjiMaps'}{'fonts'}{$fontdef} = $rest # sub read_updmap_files { my (@l) = @_; for my $l (@l) { my $updmap = read_updmap_file($l); $alldata->{'updmap'}{$l}{'lines'} = $updmap->{'lines'}; if (defined($updmap->{'setting'})) { for my $k (keys %{$updmap->{'setting'}}) { $alldata->{'updmap'}{$l}{'setting'}{$k}{'val'} = $updmap->{'setting'}{$k}{'val'}; $alldata->{'updmap'}{$l}{'setting'}{$k}{'line'} = $updmap->{'setting'}{$k}{'line'}; } } if (defined($updmap->{'maps'})) { for my $k (keys %{$updmap->{'maps'}}) { $alldata->{'updmap'}{$l}{'maps'}{$k}{'type'} = $updmap->{'maps'}{$k}{'type'}; $alldata->{'updmap'}{$l}{'maps'}{$k}{'status'} = $updmap->{'maps'}{$k}{'status'}; $alldata->{'updmap'}{$l}{'maps'}{$k}{'line'} = $updmap->{'maps'}{$k}{'line'}; } } } # in case the changes_config is a new one read it in and initialize it here my $cc = $alldata->{'changes_config'}; if (! -r $cc) { $alldata->{'updmap'}{$cc}{'lines'} = [ ]; } # $alldata->{'order'} = \@l; } sub merge_settings_replace_kanji { # my @l = @{$alldata->{'order'}}; # # for security clean out everything that was there %{$alldata->{'merged'}} = (); # # first read in the settings # we read it in *reverse* order and simple fill up the combined data # thus if there are multiple definitions/settings, the one coming from # the first in the original list will win! for my $l (reverse @l) { # merge settings if (defined($alldata->{'updmap'}{$l}{'setting'})) { for my $k (keys %{$alldata->{'updmap'}{$l}{'setting'}}) { $alldata->{'merged'}{'setting'}{$k}{'val'} = $alldata->{'updmap'}{$l}{'setting'}{$k}{'val'}; $alldata->{'merged'}{'setting'}{$k}{'origin'} = $l; } } } # my ($kanjiEmbed, $kanjiEmbed_origin) = get_cfg('kanjiEmbed'); my ($kanjiVariant, $kanjiVariant_origin) = get_cfg('kanjiVariant'); # # go through all map files and check that the text is properly replaced # after the replacement check that the generated map file actually # exists, we do NOT want to break in this case! # for my $l (@l) { for my $m (keys %{$alldata->{'updmap'}{$l}{'maps'}}) { if ($m =~ m/\@kanjiEmbed@/ || $m =~ m/\@kanjiVariant@/) { my $newm = $m; $newm =~ s/\@kanjiEmbed@/$kanjiEmbed/; $newm =~ s/\@kanjiVariant@/$kanjiVariant/; if (locateMap($newm)) { # now we have to update various linked items $alldata->{'updmap'}{$l}{'maps'}{$newm}{'type'} = $alldata->{'updmap'}{$l}{'maps'}{$m}{'type'}; $alldata->{'updmap'}{$l}{'maps'}{$newm}{'status'} = $alldata->{'updmap'}{$l}{'maps'}{$m}{'status'}; $alldata->{'updmap'}{$l}{'maps'}{$newm}{'line'} = $alldata->{'updmap'}{$l}{'maps'}{$m}{'line'}; $alldata->{'updmap'}{$l}{'maps'}{$newm}{'original'} = $m; } else { print "$prg: generated map $newm (from $m) does not exists, not activating it!\n"; } # in any case delete the @kanji...@ entry line, such a map will # never exist delete $alldata->{'updmap'}{$l}{'maps'}{$m}; } } } # # first round determine which maps should be used and which type, as # different updmap.cfg files might specify different types of maps # (MixedMap or Map or KanjiMap). # Again, we have to do that in reverse order for my $l (reverse @l) { if (defined($alldata->{'updmap'}{$l}{'maps'})) { for my $m (keys %{$alldata->{'updmap'}{$l}{'maps'}}) { $alldata->{'maps'}{$m}{'origin'} = $l; $alldata->{'maps'}{$m}{'status'} = $alldata->{'updmap'}{$l}{'maps'}{$m}{'status'}; } } } } sub read_updmap_file { my $fn = shift; my $is_old_local = ($fn =~ m/updmap-local.cfg/ ? 1 : 0); my %data; if (!open(FN,"<$fn")) { die ("Cannot read $fn: $!"); } # we count lines from 0 ..!!!! my $i = -1; my @lines = <FN>; chomp(@lines); $data{'lines'} = [ @lines ]; close(FN) || warn("Cannot close $fn: $!"); for (@lines) { $i++; chomp; if ($is_old_local) { # in case we read an old updmap-local.cfg we have to make sure # that the disable lines # ^#!foo.map # are rewritten to proper disable lines # ^#! Map foo.map # we are guessing here the type of the map (namely Map) $_ =~ s/^#!([^ ])/#! Map $1/; } next if /^\s*$/; next if /^\s*#$/; next if /^\s*#[^!]/; next if /^\s*##/; next if /^#![^ ]/; # allow for commands on the line itself s/([^#].*)#.*$/$1/; my ($a, $b, @rest) = split ' '; # make sure we get empty strings as arguments $b = "" if (!defined($b)); if ($a eq "#!") { if ($b eq "Map" || $b eq "MixedMap" || $b eq "KanjiMap") { my $c = shift @rest; if (!defined($c)) { warning("$prg: apparently not a real disable line, ignored: $_\n"); } else { if (defined($data{'maps'}{$c})) { warning("$prg: double mention of $c in $fn\n"); } $data{'maps'}{$c}{'status'} = 'disabled'; $data{'maps'}{$c}{'type'} = $b; $data{'maps'}{$c}{'line'} = $i; } } next; } if (@rest) { warning("$prg: line $i in $fn contains a syntax error, more than two words!\n"); } if (defined($settings{$a})) { if (check_option($a, $b)) { $data{'setting'}{$a}{'val'} = $b; $data{'setting'}{$a}{'line'} = $i; } else { warning("$prg: unknown setting for $a: $b, ignored!\n"); } } elsif ($a eq "Map" || $a eq "MixedMap" || $a eq "KanjiMap") { if (defined($data{'maps'}{$b}) && $data{'maps'}{$b}{'type'} ne $a) { warning("$prg: double mention of $b with conflicting types in $fn\n"); } else { $data{'maps'}{$b}{'type'} = $a; $data{'maps'}{$b}{'status'} = 'enabled'; $data{'maps'}{$b}{'line'} = $i; } } else { warning("$prg: unrecognized line $i in $fn: $_\n"); } } return \%data; } sub read_map_files { if (!defined($alldata->{'updmap'})) { return; } my @missing; my @l = @{$alldata->{'order'}}; # first collect all the map files we are interested in # and determine whether they exist, and get their full path my @maps; for my $f (@l) { next if !defined($alldata->{'updmap'}{$f}{'maps'}); for my $m (keys %{$alldata->{'updmap'}{$f}{'maps'}}) { # only read a map file if its final status is enabled! push @maps, $m if ($alldata->{'maps'}{$m}{'status'} eq 'enabled'); } } for my $m (qw/dvips35.map pdftex35.map ps2pk35.map/) { push @maps, $m; $alldata->{'maps'}{$m}{'status'} = 'enabled'; } @maps = sort_uniq(@maps); my @fullpath = `kpsewhich --format=map @maps`; chomp @fullpath; foreach my $map (@maps) { my ($ff) = grep /\/$map(\.map)?$/, @fullpath; if ($ff) { $alldata->{'maps'}{$map}{'fullpath'} = $ff; } else { # if the map file is not found, then push it onto the list of # missing map files, since we know that it is enabled push @missing, $map; } } # # read in the three basic fonts definition maps for my $m (qw/dvips35.map pdftex35.map ps2pk35.map/) { my $ret = read_map_file($alldata->{'maps'}{$m}{'fullpath'}); my @ff = (); for my $font (keys %$ret) { $alldata->{'fonts'}{$font}{'origin'} = $m; $alldata->{'maps'}{$m}{'fonts'}{$font} = $ret->{$font}; } } # we read the updmap in reverse directions, since we # replace the origin field of font definition always with the # top one for my $f (reverse @l) { my @maps = keys %{$alldata->{'updmap'}{$f}{'maps'}}; for my $m (@maps) { # we do not read a map file multiple times, if $alldata{'maps'}{$m} is # defined we expect that it was read and do skip it next if defined($alldata->{'maps'}{$m}{'fonts'}); # we do not read a map files content if it is disabled next if ($alldata->{'maps'}{$m}{'status'} eq 'disabled'); if (!defined($alldata->{'maps'}{$m}{'fullpath'})) { # we have already pushed these map files onto the list of missing # map files, so do nothing here next; } my $ret = read_map_file($alldata->{'maps'}{$m}{'fullpath'}); if (defined($ret)) { for my $font (keys %$ret) { if (defined($alldata->{'fonts'}{$font})) { # we got another definition, warn on that # if the origin is not defined by now, the font is defined # multiple times in the same map file, otherwise it is # defined in another map file already if (defined($alldata->{'fonts'}{$font}{'origin'})) { my $fontorig = $alldata->{'fonts'}{$font}{'origin'}; my $maporig; if (($fontorig eq "ps2pk35.map") || ($fontorig eq "pdftex35.map") || ($fontorig eq "dvips35.map")) { $maporig = "built in map - both used - warning!"; } else { $maporig = "from " . $alldata->{'maps'}{$fontorig}{'origin'}; } warning("$prg: font $font is defined multiple times:\n"); warning("$prg: $fontorig ($maporig)\n"); warning("$prg: $m (from $f) (used)\n"); } else { warning("$prg: font $font is multiply defined in $m, using an arbitrary instance!\n"); } } $alldata->{'fonts'}{$font}{'origin'} = $m; $alldata->{'maps'}{$m}{'fonts'}{$font} = $ret->{$font}; } } } } return (@missing); } sub read_map_file { my $fn = shift; my @lines; if (!open(MF,"<$fn")) { warn("cannot open $fn: $!"); return; } @lines = <MF>; close(MF); chomp(@lines); my %data; for (@lines) { next if /^\s*#/; next if /^\s*%/; next if /^\s*$/; my ($a, $b) = split(' ', $_, 2); $data{$a} = $b; } return \%data; } # # merging the various font definitions # sub merge_data { my @l = @{$alldata->{'order'}}; # # now merge the data # for my $m (keys %{$alldata->{'maps'}}) { my $origin = $alldata->{'maps'}{$m}{'origin'}; next if !defined($origin); next if ($alldata->{'updmap'}{$origin}{'maps'}{$m}{'status'} eq "disabled"); for my $f (keys %{$alldata->{'maps'}{$m}{'fonts'}}) { # use the font definition only for those fonts where the origin matches if ($alldata->{'fonts'}{$f}{'origin'} eq $m) { $alldata->{'merged'}{'allMaps'}{'fonts'}{$f} = $alldata->{'maps'}{$m}{'fonts'}{$f} if ($alldata->{'updmap'}{$origin}{'maps'}{$m}{'type'} ne "KanjiMap"); $alldata->{'merged'}{'noMixedMaps'}{'fonts'}{$f} = $alldata->{'maps'}{$m}{'fonts'}{$f} if ($alldata->{'updmap'}{$origin}{'maps'}{$m}{'type'} eq "Map"); $alldata->{'merged'}{'KanjiMap'}{'fonts'}{$f} = $alldata->{'maps'}{$m}{'fonts'}{$f} if ($alldata->{'updmap'}{$origin}{'maps'}{$m}{'type'} eq "KanjiMap"); } } } } # # $HOME and sudo and updmap-sys horror # some instances of sudo do not reset $HOME to the home of root # as an effect of "sudo updmap" creates root owned files in the home # of a normal user, and "sudo updmap-sys" uses map files and updmap.cfg # files from the directory of a normal user, but creating files # in TEXMFSYSCONFIG. This is *all* wrong. # we check: if we are running as UID 0 (root) on Unix and the # ENV{HOME} is NOT the same as the one of root, then give a warning # and reset it to the real home dir of root. sub reset_root_home { if (!win32() && ($> == 0)) { # $> is effective uid my $envhome = $ENV{'HOME'}; # if $HOME isn't an existing directory, we don't care. if (defined($envhome) && (-d $envhome)) { # we want to avoid calling getpwuid as far as possible, so if # $envhome is one of some usual values we accept it without worrying. if ($envhome =~ m,^(/|/root|/var/root)/*$,) { return; } # $HOME is defined, check what is the home of root in reality my (undef,undef,undef,undef,undef,undef,undef,$roothome) = getpwuid(0); if (defined($roothome)) { if ($envhome ne $roothome) { # warning("$prg: resetting \$HOME value (was $envhome) to root's " # . "actual home ($roothome).\n"); $ENV{'HOME'} = $roothome; } else { # envhome and roothome do agree, nothing to do, that is the good case } } else { warning("$prg: home of root not defined, strange!\n"); } } } } sub warning { print STDERR @_; } # # help, version etc etc # sub version { my $ret = sprintf "%s (TeX Live, multi) version %s\n", $prg, $version; return $ret; } sub help { my $usage = <<"EOF"; Usage: $prg [OPTION] ... [COMMAND] or: $prg-sys [OPTION] ... [COMMAND] Update the default font map files used by pdftex, dvips, and dvipdfm(x), and optionally pxdvi, as determined by all configuration files updmap.cfg (the ones returned by running "kpsewhich --all updmap.cfg", but see below). Among other things, these map files are used to determine which fonts should be used as bitmaps and which as outlines, and to determine which font files are included in the PDF or PostScript output. By default, the TeX filename database (ls-R) is also updated. Options: --cnffile FILE read FILE for the updmap configuration (can be given multiple times, in which case all the files are used) --dvipdfmxoutputdir DIR specify output directory (dvipdfm(x) syntax) --dvipsoutputdir DIR specify output directory (dvips syntax) --pdftexoutputdir DIR specify output directory (pdftex syntax) --pxdvioutputdir DIR specify output directory (pxdvi syntax) --outputdir DIR specify output directory (for all files) --copy cp generic files rather than using symlinks --force recreate files even if config hasn't changed --nomkmap do not recreate map files --nohash do not run texhash -n, --dry-run only show the configuration, no output --quiet, --silent reduce verbosity Commands: --help show this message and exit --version show version information and exit --showoption OPTION show the current setting of OPTION --showoptions OPTION show possible settings for OPTION --setoption OPTION VALUE set OPTION to value; option names below --setoption OPTION=VALUE as above, just different syntax --enable MAPTYPE MAPFILE add "MAPTYPE MAPFILE" to updmap.cfg, where MAPTYPE is Map, MixedMap, or KanjiMap --enable Map=MAPFILE add \"Map MAPFILE\" to updmap.cfg --enable MixedMap=MAPFILE add \"MixedMap MAPFILE\" to updmap.cfg --enable KanjiMap=MAPFILE add \"KanjiMap MAPFILE\" to updmap.cfg --disable MAPFILE disable MAPFILE, of whatever type --listmaps list all active and inactive maps --listavailablemaps same as --listmaps, but without unavailable map files --syncwithtrees disable unavailable map files in updmap.cfg Explanation of the map types: the (only) difference between Map and MixedMap is that MixedMap entries are not added to psfonts_pk.map. The purpose is to help users with devices that render Type 1 outline fonts worse than mode-tuned Type 1 bitmap fonts. So, MixedMap is used for fonts that are available as both Type 1 and Metafont. KanjiMap entries are added to psfonts_t1.map and kanjix.map. Explanation of the OPTION names for --showoptions, --showoption, --setoption: dvipsPreferOutline true|false (default true) Whether dvips uses bitmaps or outlines, when both are available. dvipsDownloadBase35 true|false (default true) Whether dvips includes the standard 35 PostScript fonts in its output. pdftexDownloadBase14 true|false (default true) Whether pdftex includes the standard 14 PDF fonts in its output. pxdviUse true|false (default false) Whether maps for pxdvi (Japanese-patched xdvi) are under updmap's control. kanjiEmbed (any string) kanjiVariant (any string) See below. LW35 URWkb|URW|ADOBEkb|ADOBE (default URWkb) Adapt the font and file names of the standard 35 PostScript fonts. URWkb URW fonts with "berry" filenames (e.g. uhvbo8ac.pfb) URW URW fonts with "vendor" filenames (e.g. n019064l.pfb) ADOBEkb Adobe fonts with "berry" filenames (e.g. phvbo8an.pfb) ADOBE Adobe fonts with "vendor" filenames (e.g. hvnbo___.pfb) These options are only read and acted on by updmap; dvips, pdftex, etc., do not know anything about them. They work by changing the default map file which the programs read, so they can be overridden by specifying command-line options or configuration files to the programs, as explained at the beginning of updmap.cfg. The options kanjiEmbed and kanjiVariant specify special replacements in the map lines. If a map contains the string \@kanjiEmbed\@, then this will be replaced by the value of that option; similarly for kanjiVariant. In this way, users of Japanese TeX can select different fonts to be included in the final output. Explanation of trees and files normally used: If --cnffile is specified on the command line (possibly multiple times), its value(s) are used. Otherwise, updmap reads all the updmap.cfg files found by running \`kpsewhich -all updmap.cfg', in the order returned by kpsewhich, with one exception: an updmap.cfg found in TEXMFLOCAL is given higher priority than the updmap.cfg in TEXMFMAIN, to ensure that local adjustments by administrators take precedence over what is shipped in TeX Live. In any case, if multiple updmap.cfg files are found, all the maps mentioned in all the updmap.cfg files are merged. Thus, if updmap.cfg files are present in all trees, and the default layout is used as shipped with TeX Live, the following files are read, in the given order. For updmap-sys: TEXMFSYSCONFIG \$TEXLIVE/YYYY/texmf-config/web2c/updmap.cfg TEXMFSYSVAR \$TEXLIVE/YYYY/texmf-var/web2c/updmap.cfg TEXMFLOCAL \$TEXLIVE/texmf-local/web2c/updmap.cfg TEXMFMAIN \$TEXLIVE/YYYY/texmf/web2c/updmap.cfg TEXMFDIST \$TEXLIVE/YYYY/texmf-dist/web2c/updmap.cfg For updmap: TEXMFCONFIG \$HOME/.texliveYYYY/texmf-config/web2c/updmap.cfg TEXMFVAR \$HOME/.texliveYYYY/texmf-var/web2c/updmap.cfg TEXMFHOME \$HOME/texmf/web2c/updmap.cfg TEXMFSYSCONFIG \$TEXLIVE/YYYY/texmf-config/web2c/updmap.cfg TEXMFSYSVAR \$TEXLIVE/YYYY/texmf-var/web2c/updmap.cfg TEXMFLOCAL \$TEXLIVE/texmf-local/web2c/updmap.cfg TEXMFMAIN \$TEXLIVE/YYYY/texmf/web2c/updmap.cfg TEXMFDIST \$TEXLIVE/YYYY/texmf-dist/web2c/updmap.cfg (where YYYY is the TeX Live release version). There is another exception to keep upgradability from earlier versions of TeX Live: if a file TEXMFLOCAL/web2c/updmap-local.cfg exists (formerly used by tlmgr to merge local fonts), then the file TEXMFLOCAL/web2c/updmap.cfg is ignored (if it exists) and that updmap-local.cfg is used instead. In this case, updmap recognizes the previous syntax for disabling map files in updmap-local.cfg (this syntax is different from what is used now). According to the actions, updmap might write to one of the given files or create a new updmap.cfg, described further below. Where changes are saved: if config files are given on the command line, then the first one given will be used to save any changes from --setoption, --enable or --disable. If the config files are taken from kpsewhich output, then the algorithm is more complex: 1) If \$TEXMFCONFIG/web2c/updmap.cfg or \$TEXMFHOME/web2c/updmap.cfg appears in the list of used files, then the one listed first by kpsewhich --all (equivalently, the one returned by kpsewhich updmap.cfg), is used. 2) If neither of the above two are present and changes are made, a new config file is created in \$TEXMFCONFIG/web2c/updmap.cfg. Resolving multiple definitions of a font: If a font is defined in more than one map file, then the definition coming from the first-listed updmap.cfg is used. If a font is defined multiple times within the same map file, one is chosen arbitrarily. In both cases a warning is issued. Disabling maps: updmap.cfg files with higher priority (listed earlier) can disable maps mentioned in lower priority (listed later) updmap.cfg files by writing, e.g., \#! Map mapname.map or \#! MixedMap mapname.map in the higher-priority updmap.cfg file. As an example, suppose you have a copy of MathTime Pro fonts and want to disable the Belleek version of the fonts; that is, disable the map belleek.map. You can create the file \$TEXMFCONFIG/web2c/updmap.cfg with the content #! Map belleek.map Map mt-plus.map Map mt-yy.map and call $prg. updmap writes the map files for dvips (psfonts.map) and pdftex (pdftex.map) to the TEXMFVAR/fonts/map/updmap/{dvips,pdftex}/ directories. The log file is written to TEXMFVAR/web2c/updmap.log. When updmap-sys is run, TEXMFSYSCONFIG and TEXMFSYSVAR are used instead of TEXMFCONFIG and TEXMFVAR, respectively. This is the only difference between updmap-sys and updmap. Other locations may be used if you give them on the command line, or these trees don't exist, or you are not using the original TeX Live. To see the precise locations of the various files that will be read and written, give the -n option (or read the source). For step-by-step instructions on making new fonts known to TeX, read http://tug.org/fonts/fontinstall.html. For even more terse instructions, read the beginning of updmap.cfg. Report bugs to: tex-k\@tug.org TeX Live home page: <http://tug.org/texlive/> EOF ; print &version(); print $usage; exit 0; } ### Local Variables: ### perl-indent-level: 2 ### tab-width: 2 ### indent-tabs-mode: nil ### End: # vim:set tabstop=2 expandtab: #
Close