This file is indexed.

/usr/sbin/update-fonts-scale 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
#!/bin/sh

# $Id: update-fonts-scale 189 2005-06-11 00:04:27Z branden $

# This program generates fonts.scale files for X font directories; see
# mkfontdir(1x) for a description of the format of fonts.scale files.

# Copyright 1999-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 debugging message.
trace () {
    if [ -n "$DEBUG" ]; then
        message "note: $*" >&2
    fi
}

# 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 DIRECTORY ...
       $PROGNAME { -h | --help }
This program combines scalable X font 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-scale(8) for more information.
Options:
    -h, --help                        display this usage message and exit
EOF
}

X11R7_LAYOUT=

# Validate arguments.
case "$1" in
    -h|--help)
        usage
        exit 0
        ;;
    -7|--x11r7-layout)
        X11R7_LAYOUT=true
        shift
        ;;
esac

case "$1" in
    -*)
        usage "unrecognized option" >&2
        exit 2
        ;;
esac

if [ $# -eq 0 ]; then
    usage "one or more font directories must be specified" >&2
    exit 2
fi

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

    # Are there any files to process?
    if [ "$(echo "$ETCDIR"/*.scale "$ETC7DIR"/*.scale)" != "$ETCDIR/*.scale $ETC7DIR/*.scale" ]
    then
        if [ -n "$X11R7DIR" ] && [ -d "$X11R7DIR" ]; then
            for SCALEFILE in "$ETCDIR"/*.scale "$ETC7DIR"/*.scale; do
                [ -e "$SCALEFILE" ] || continue
                # Only write fonts to the .scale file that actually exist, so
                # that removed-but-not-purged scalable font packages do not
                # register nonexistent fonts; this has the desirable side effect
                # that the count at the top of the file is also omitted.
                #
                # XXX: This technique will be tricked into yielding false
                # negatives if the font filename has whitespace in it.
                while read FONTFILE FONTNAME; do
                    if [ -f "$X11R7DIR/$FONTFILE" ]; then
                        echo "$FONTFILE $FONTNAME" \
                          >>"$X11R7DIR/fonts.scale.update-tmp"
                    else
                        trace "$SCALEFILE references nonexistent font file" \
                          "$FONTFILE; skipping"
                    fi
                done <"$SCALEFILE"
            done
            if [ -e "$X11R7DIR/fonts.scale.update-tmp" ]; then
                # Write the new scale file to a temporary location in case we
                # are interrupted.  Write the new count to the top of file.  Use
                # cat and pipe to wc so wc doesn't report the filename.
                cat "$X11R7DIR/fonts.scale.update-tmp" \
                  | wc -l | tr -d '[:blank:]' \
                  >"$X11R7DIR/fonts.scale.update-new"
                cat "$X11R7DIR/fonts.scale.update-tmp" \
                  >>"$X11R7DIR/fonts.scale.update-new"
                mv "$X11R7DIR/fonts.scale.update-new" "$X11R7DIR/fonts.scale"
                rm "$X11R7DIR/fonts.scale.update-tmp"
            else
                # No font in the processed *.scale files was in the current
                # directory, so remove fonts.scale.
                rm -f "$X11R7DIR/fonts.scale"
            fi
        fi
    else
        if [ -n "$X11R7DIR" ] && [ -d "$X11R7DIR" ]; then
            # No files to process; remove any fonts.scale file already in the
            # font directory.
            rm -f "$X11R7DIR/fonts.scale"
            # 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: