/usr/sbin/update-fonts-alias is in xfonts-utils 1:7.7+1.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 | #!/bin/sh
# $Id: update-fonts-alias 189 2005-06-11 00:04:27Z branden $
# This program compiles fonts.alias files for X font directories; see
# mkfontdir(1x) for a description of the format of fonts.alias files.
# Copyright 1999, 2001, 2002, 2004 Branden Robinson.
# Copyright 2006 Steve Langasek.
# Licensed under the GNU General Public License, version 2. See the file
# /usr/share/common-licenses/GPL or <http://www.gnu.org/copyleft/gpl.txt>.
PROGNAME=${0##*/}
# Query the terminal to establish a default number of columns to use for
# displaying messages to the user. This is used only as a fallback in the event
# the COLUMNS variable is not set. ($COLUMNS can react to SIGWINCH while the
# script is running, and this cannot, only being calculated once.)
DEFCOLUMNS=$(stty size 2>/dev/null | awk '{print $2}') || true
if ! expr "$DEFCOLUMNS" : "[[:digit:]]\+$" >/dev/null 2>&1; then
DEFCOLUMNS=80
fi
# Display a message, wrapping lines at the terminal width.
message () {
echo "$*" | fmt -t -w ${COLUMNS:-$DEFCOLUMNS}
}
# Display a warning message.
warn () {
message "warning: $*" >&2
}
# Display an error message and exit.
die () {
message "fatal error: $*" >&2
exit 1
}
# Display a usage message.
usage () {
if [ -n "$*" ]; then
message "usage error: $*"
fi
cat <<EOF
Usage: $PROGNAME [OPTIONS] DIRECTORY ...
$PROGNAME { -h | --help }
This program combines X font alias information from several packages into a
single file that is placed in each specified X font directory DIRECTORY. This
utility is primarily useful to Debian package maintainer scripts. See
update-fonts-alias(8) for more information.
Options:
-h, --help display this usage message and exit
-i, --include ALIAS-FILE drop ALIAS-FILE from exlude list if any
-x, --exclude ALIAS-FILE add ALIAS-FILE to exclude list
EOF
}
X11R7_LAYOUT=
INCLUDE_ALIAS=
EXCLUDE_ALIAS=
EXCLUDE_CONF=/var/lib/xfonts/excluded-aliases
# Validate options.
while [ $# -gt 0 ]; do
case "$1" in
-h|--help)
usage
exit 0
;;
-7|--x11r7-layout)
X11R7_LAYOUT=true
shift
;;
-i|--include)
if [ $# -lt 2 ]; then
usage "alias file to include is missing" >&2
exit 2
fi
INCLUDE_ALIAS="$INCLUDE_ALIAS $2"
shift 2
;;
-x|--exclude)
if [ $# -lt 2 ]; then
usage "alias file to exclude is missing" >&2
exit 2
fi
EXCLUDE_ALIAS="$EXCLUDE_ALIAS $2"
shift 2
;;
-*)
usage "unrecognized option" >&2
exit 2
;;
*)
break
;;
esac
done
if [ $# -eq 0 ]; then
usage "one or more font directories must be specified" >&2
exit 2
fi
# Remove aliases to be included from exclude list
for f in $INCLUDE_ALIAS; do
sed -i "\\,^$f$,d" $EXCLUDE_CONF
done
# Add aliases to be excluded to exclude list
for f in $EXCLUDE_ALIAS; do
sed -i "\\,^$f$,d" $EXCLUDE_CONF
echo "$f" >> $EXCLUDE_CONF
done
while [ -n "$1" ]; do
# Try to be clever about the argument; were we given an absolute path?
if expr "$1" : "/.*" >/dev/null 2>&1; then
# Yes; an absolute path to an X font directory was provided.
X11R7DIR=$1
ETCDIR=/etc/X11/fonts/${X11R7DIR##*/}
ETC7DIR=/etc/X11/fonts/X11R7/${X11R7DIR##*/}
if [ "$X11R7DIR" = "$ETCDIR" ] || [ "$X11R7DIR" = "$ETC7DIR" ]; then
# We were given an /etc directory as an argument.
die "path to X font directory must be used"
else
warn "absolute path $X11R7DIR was provided"
fi
else
# No; a relative path was provided -- assume we were given just the
# basename.
X11R7DIR=/usr/share/fonts/X11/$1
ETCDIR=/etc/X11/fonts/$1
ETC7DIR=/etc/X11/fonts/X11R7/$1
fi
shift
# Confirm that the directories to be operated on exist.
VALIDSRC=
if [ -d "$ETCDIR" ]; then
VALIDSRC=yes
else
warn "$ETCDIR does not exist or is not a directory"
fi
if [ -d "$ETC7DIR" ]; then
VALIDSRC=yes
else
if [ -n "$X11R7_LAYOUT" ]; then
warn "$ETC7DIR does not exist or is not a directory"
fi
fi
VALIDDEST=
if [ -d "$X11R7DIR" ]; then
VALIDDEST=yes
else
warn "$X11R7DIR does not exist or is not a directory"
fi
if [ -z "$VALIDSRC" ] || [ -z "$VALIDDEST" ]; then
continue
fi
if [ -n "$X11R7DIR" ] && [ -d "$X11R7DIR" ]; then
# Write the new alias file in a temporary location in case we are
# interrupted.
cat >"$X11R7DIR/fonts.alias.update-new" <<EOF
!! fonts.alias -- automatically generated file. DO NOT EDIT.
!! To modify, see update-fonts-alias(8).
EOF
has_data=0
for FILE in "$ETCDIR"/*.alias "$ETC7DIR"/*.alias; do
[ -e "$FILE" ] || continue
# Skip excluded aliases
grep -q "^$FILE$" $EXCLUDE_CONF && continue
echo "!! $FILE" >>"$X11R7DIR/fonts.alias.update-new"
cat "$FILE" >>"$X11R7DIR/fonts.alias.update-new"
has_data=1
done
if [ $has_data -eq 1 ]; then
mv "$X11R7DIR/fonts.alias.update-new" "$X11R7DIR/fonts.alias"
else
rm -f "$X11R7DIR/fonts.alias.update-new"
# There are no files to process; remove any alias file already in
# the font directory.
rm -f "$X11R7DIR/fonts.alias"
# Remove the font directory if it is empty.
rmdir "$X11R7DIR" >/dev/null 2>&1 || true
fi
fi
done
exit 0
# vim:set ai et sts=4 sw=4 tw=80:
|