This file is indexed.

/usr/sbin/update-fonts-alias is in xfonts-utils 1:7.7+4.

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 <https://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: