%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /sbin/
Upload File :
Create Path :
Current File : //sbin/update-fonts-dir

#!/bin/sh

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

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

# Copyright 1999, 2001, 2002, 2004 Branden Robinson.
# 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##*/}
ENCDIR=/usr/share/fonts/X11/encodings

# 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 DIRECTORY ...
       $PROGNAME { -7 | --x11r7-layout } 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-dir(8) for more information.
Options:
    -h, --help                        display this usage message and exit
    -7, --x11r7-layout                use new font layout introduced with X11R7
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.
        XDIRS=$1
        if [ -n "$X11R7_LAYOUT" ]; then
            ETCDIR=/etc/X11/fonts/X11R7/${XDIRS##*/}
        else
            ETCDIR=/etc/X11/fonts/${XDIRS##*/}
        fi
        if [ "$XDIRS" = "$ETCDIR" ]; then
            # We were given an /etc directory as an argument.
            die "path to X font directory must be used"
        else
            warn "absolute path $XDIRS was provided"
        fi
    else
        # No; a relative path was provided -- assume we were given just the
        # basename.
	XDIRS="/usr/share/fonts/X11/$1"
    fi
    # Confirm that the directories to be operated on exist.
    for XDIR in $XDIRS; do
        VALID=yes
        if ! [ -d "$XDIR" ]; then
            warn "$XDIR does not exist or is not a directory"
            VALID=
        fi
        if [ -n "$VALID" ]; then
            # Use encoding directories if they are available.
            if [ -d "$ENCDIR" ] && [ -d "$ENCDIR/large" ]; then
                mkfontdir -e "$ENCDIR" -e "$ENCDIR/large" "$XDIR"
            else
                mkfontdir "$XDIR"
            fi
            # Are there any fonts in the font directory?
            if [ "$(head -n 1 "$XDIR/fonts.dir")" = "0" ]; then
                # There are no files to process; remove any generated files already
                # in the font directory.
                rm -f "$XDIR/fonts.dir" "$XDIR/encodings.dir"
                # Remove the font dirextory if it is empty.
                rmdir "$XDIR" >/dev/null 2>&1 || true
            fi
        fi
    done
    shift
done

exit 0

# vim:set ai et sts=4 sw=4 tw=80:

Zerion Mini Shell 1.0