scripts: always use printf with embedded gettext

This addresses two problems:

1) echo's behavior is inconsistent when dealing with flags, and can
potentially be problematic.

  $ echo -n
  $ echo -- -n
  -- -n

2) Always using the end of options markers prevents translated strings
from throwing errors, as shown in FS#28069.

The remaining "inconsistencies" are because printf is being used in a
guaranteed safe manner, e.g.

  printf '%s\n' "$(gettext "--this can never break")"

Signed-off-by: Dave Reisner <dreisner@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
This commit is contained in:
Dave Reisner 2012-01-23 17:14:25 -05:00 committed by Dan McGee
parent 7ff1b945f6
commit 9e9835f464
6 changed files with 96 additions and 96 deletions

View file

@ -664,7 +664,7 @@ check_checksums() {
echo -n " $file ... " >&2
if ! file="$(get_filepath "$file")"; then
echo "$(gettext "NOT FOUND")" >&2
printf -- "$(gettext "NOT FOUND")\n" >&2
errors=1
found=0
fi
@ -674,9 +674,9 @@ check_checksums() {
local realsum="$(openssl dgst -${integ} "$file")"
realsum="${realsum##* }"
if [[ $expectedsum = $realsum ]]; then
echo "$(gettext "Passed")" >&2
printf -- "$(gettext "Passed")\n" >&2
else
echo "$(gettext "FAILED")" >&2
printf -- "$(gettext "FAILED")\n" >&2
errors=1
fi
fi
@ -1827,51 +1827,51 @@ m4_include(library/parse_options.sh)
usage() {
printf "makepkg (pacman) %s\n" "$myver"
echo
printf "$(gettext "Usage: %s [options]")\n" "$0"
printf -- "$(gettext "Usage: %s [options]")\n" "$0"
echo
echo "$(gettext "Options:")"
printf "$(gettext " -A, --ignorearch Ignore incomplete %s field in %s")\n" "arch" "$BUILDSCRIPT"
echo "$(gettext " -c, --clean Clean up work files after build")"
echo "$(gettext " -d, --nodeps Skip all dependency checks")"
printf "$(gettext " -e, --noextract Do not extract source files (use existing %s dir)")\n" "src/"
echo "$(gettext " -f, --force Overwrite existing package")"
echo "$(gettext " -g, --geninteg Generate integrity checks for source files")"
echo "$(gettext " -h, --help Show this help message and exit")"
echo "$(gettext " -i, --install Install package after successful build")"
echo "$(gettext " -L, --log Log package build process")"
echo "$(gettext " -m, --nocolor Disable colorized output messages")"
echo "$(gettext " -o, --nobuild Download and extract files only")"
printf "$(gettext " -p <file> Use an alternate build script (instead of '%s')")\n" "$BUILDSCRIPT"
echo "$(gettext " -r, --rmdeps Remove installed dependencies after a successful build")"
echo "$(gettext " -R, --repackage Repackage contents of the package without rebuilding")"
printf "$(gettext " -s, --syncdeps Install missing dependencies with %s")\n" "pacman"
echo "$(gettext " -S, --source Generate a source-only tarball without downloaded sources")"
echo "$(gettext " --allsource Generate a source-only tarball including downloaded sources")"
printf "$(gettext " --asroot Allow %s to run as root user")\n" "makepkg"
printf "$(gettext " --check Run the %s function in the %s")\n" "check()" "$BUILDSCRIPT"
printf "$(gettext " --config <file> Use an alternate config file (instead of '%s')")\n" "$confdir/makepkg.conf"
printf "$(gettext " --holdver Prevent automatic version bumping for development %ss")\n" "$BUILDSCRIPT"
printf "$(gettext " --key <key> Specify a key to use for %s signing instead of the default")\n" "gpg"
printf "$(gettext " --nocheck Do not run the %s function in the %s")\n" "check()" "$BUILDSCRIPT"
echo "$(gettext " --nosign Do not create a signature for the package")"
echo "$(gettext " --pkg <list> Only build listed packages from a split package")"
printf "$(gettext " --sign Sign the resulting package with %s")\n" "gpg"
echo "$(gettext " --skipchecksums Do not verify checksums of the source files")"
echo "$(gettext " --skipinteg Do not perform any verification checks on source files")"
echo "$(gettext " --skippgpcheck Do not verify source files with PGP signatures")"
printf -- "$(gettext "Options:")"
printf -- "$(gettext " -A, --ignorearch Ignore incomplete %s field in %s")\n" "arch" "$BUILDSCRIPT"
printf -- "$(gettext " -c, --clean Clean up work files after build")\n"
printf -- "$(gettext " -d, --nodeps Skip all dependency checks")\n"
printf -- "$(gettext " -e, --noextract Do not extract source files (use existing %s dir)")\n" "src/"
printf -- "$(gettext " -f, --force Overwrite existing package")\n"
printf -- "$(gettext " -g, --geninteg Generate integrity checks for source files")\n"
printf -- "$(gettext " -h, --help Show this help message and exit")\n"
printf -- "$(gettext " -i, --install Install package after successful build")\n"
printf -- "$(gettext " -L, --log Log package build process")\n"
printf -- "$(gettext " -m, --nocolor Disable colorized output messages")\n"
printf -- "$(gettext " -o, --nobuild Download and extract files only")\n"
printf -- "$(gettext " -p <file> Use an alternate build script (instead of '%s')")\n" "$BUILDSCRIPT"
printf -- "$(gettext " -r, --rmdeps Remove installed dependencies after a successful build")\n"
printf -- "$(gettext " -R, --repackage Repackage contents of the package without rebuilding")\n"
printf -- "$(gettext " -s, --syncdeps Install missing dependencies with %s")\n" "pacman"
printf -- "$(gettext " -S, --source Generate a source-only tarball without downloaded sources")\n"
printf -- "$(gettext " --allsource Generate a source-only tarball including downloaded sources")\n"
printf -- "$(gettext " --asroot Allow %s to run as root user")\n" "makepkg"
printf -- "$(gettext " --check Run the %s function in the %s")\n" "check()" "$BUILDSCRIPT"
printf -- "$(gettext " --config <file> Use an alternate config file (instead of '%s')")\n" "$confdir/makepkg.conf"
printf -- "$(gettext " --holdver Prevent automatic version bumping for development %ss")\n" "$BUILDSCRIPT"
printf -- "$(gettext " --key <key> Specify a key to use for %s signing instead of the default")\n" "gpg"
printf -- "$(gettext " --nocheck Do not run the %s function in the %s")\n" "check()" "$BUILDSCRIPT"
printf -- "$(gettext " --nosign Do not create a signature for the package")\n"
printf -- "$(gettext " --pkg <list> Only build listed packages from a split package")\n"
printf -- "$(gettext " --sign Sign the resulting package with %s")\n" "gpg"
printf -- "$(gettext " --skipchecksums Do not verify checksums of the source files")\n"
printf -- "$(gettext " --skipinteg Do not perform any verification checks on source files")\n"
printf -- "$(gettext " --skippgpcheck Do not verify source files with PGP signatures")\n"
echo
printf "$(gettext "These options can be passed to %s:")\n" "pacman"
printf -- "$(gettext "These options can be passed to %s:")\n" "pacman"
echo
echo "$(gettext " --noconfirm Do not ask for confirmation when resolving dependencies")"
echo "$(gettext " --noprogressbar Do not show a progress bar when downloading files")"
printf -- "$(gettext " --noconfirm Do not ask for confirmation when resolving dependencies")\n"
printf -- "$(gettext " --noprogressbar Do not show a progress bar when downloading files")\n"
echo
printf "$(gettext "If %s is not specified, %s will look for '%s'")\n" "-p" "makepkg" "$BUILDSCRIPT"
printf -- "$(gettext "If %s is not specified, %s will look for '%s'")\n" "-p" "makepkg" "$BUILDSCRIPT"
echo
}
version() {
printf "makepkg (pacman) %s\n" "$myver"
printf "$(gettext "\
printf -- "$(gettext "\
Copyright (c) 2006-2012 Pacman Development Team <pacman-dev@archlinux.org>.\n\
Copyright (C) 2002-2006 Judd Vinet <jvinet@zeroflux.org>.\n\n\
This is free software; see the source for copying conditions.\n\

View file

@ -32,12 +32,12 @@ m4_include(library/output_format.sh)
usage() {
printf "pacman-db-upgrade (pacman) %s\n\n" "$myver"
printf "$(gettext "Usage: %s [pacman_db_root]")\n\n" "$0"
printf -- "$(gettext "Usage: %s [pacman_db_root]")\n\n" "$0"
}
version() {
printf "pacman-db-upgrade (pacman) %s\n" "$myver"
printf "$(gettext "\
printf -- "$(gettext "\
Copyright (c) 2010-2011 Pacman Development Team <pacman-dev@archlinux.org>.\n\
This is free software; see the source for copying conditions.\n\
There is NO WARRANTY, to the extent permitted by law.\n")"

View file

@ -54,40 +54,40 @@ m4_include(library/parse_options.sh)
usage() {
printf "pacman-key (pacman) %s\n" ${myver}
echo
printf "$(gettext "Usage: %s [options]")\n" $(basename $0)
printf -- "$(gettext "Usage: %s [options]")\n" $(basename $0)
echo
printf "$(gettext "Manage pacman's list of trusted keys")\n"
printf -- "$(gettext "Manage pacman's list of trusted keys")\n"
echo
echo "$(gettext "Options:")"
echo "$(gettext " -a, --add [file(s)] Add the specified keys (empty for stdin)")"
echo "$(gettext " -d, --delete <keyid(s)> Remove the specified keyids")"
echo "$(gettext " -e, --export [keyid(s)] Export the specified or all keyids")"
echo "$(gettext " -f, --finger [keyid(s)] List fingerprint for specified or all keyids")"
echo "$(gettext " -h, --help Show this help message and exit")"
echo "$(gettext " -l, --list-keys [keyid(s)] List the specified or all keys")"
echo "$(gettext " -r, --recv-keys <keyid(s)> Fetch the specified keyids")"
echo "$(gettext " -u, --updatedb Update the trustdb of pacman")"
echo "$(gettext " -v, --verify <signature> Verify the file specified by the signature")"
echo "$(gettext " -V, --version Show program version")"
printf "$(gettext " --config <file> Use an alternate config file (instead of\n\
printf -- "$(gettext "Options:")\n"
printf -- "$(gettext " -a, --add [file(s)] Add the specified keys (empty for stdin)")\n"
printf -- "$(gettext " -d, --delete <keyid(s)> Remove the specified keyids")\n"
printf -- "$(gettext " -e, --export [keyid(s)] Export the specified or all keyids")\n"
printf -- "$(gettext " -f, --finger [keyid(s)] List fingerprint for specified or all keyids")\n"
printf -- "$(gettext " -h, --help Show this help message and exit")\n"
printf -- "$(gettext " -l, --list-keys [keyid(s)] List the specified or all keys")\n"
printf -- "$(gettext " -r, --recv-keys <keyid(s)> Fetch the specified keyids")\n"
printf -- "$(gettext " -u, --updatedb Update the trustdb of pacman")\n"
printf -- "$(gettext " -v, --verify <signature> Verify the file specified by the signature")\n"
printf -- "$(gettext " -V, --version Show program version")\n"
printf -- "$(gettext " --config <file> Use an alternate config file (instead of\n\
'%s')")\n" "@sysconfdir@/pacman.conf"
echo "$(gettext " --edit-key <keyid(s)> Present a menu for key management task on keyids")"
printf "$(gettext " --gpgdir <dir> Set an alternate directory for GnuPG (instead\n\
printf -- "$(gettext " --edit-key <keyid(s)> Present a menu for key management task on keyids")\n"
printf -- "$(gettext " --gpgdir <dir> Set an alternate directory for GnuPG (instead\n\
of '%s')")\n" "@sysconfdir@/pacman.d/gnupg"
echo "$(gettext " --import <dir(s)> Imports pubring.gpg from dir(s)")"
echo "$(gettext " --import-trustdb <dir(s)> Imports ownertrust values from trustdb.gpg in dir(s)")"
echo "$(gettext " --init Ensure the keyring is properly initialized")"
echo "$(gettext " --keyserver Specify a keyserver to use if necessary")"
echo "$(gettext " --list-sigs [keyid(s)] List keys and their signatures")"
echo "$(gettext " --lsign-key <keyid> Locally sign the specified keyid")"
printf "$(gettext " --populate [keyring(s)] Reload the default keys from the (given) keyrings\n\
printf -- "$(gettext " --import <dir(s)> Imports pubring.gpg from dir(s)")\n"
printf -- "$(gettext " --import-trustdb <dir(s)> Imports ownertrust values from trustdb.gpg in dir(s)")\n"
printf -- "$(gettext " --init Ensure the keyring is properly initialized")\n"
printf -- "$(gettext " --keyserver Specify a keyserver to use if necessary")\n"
printf -- "$(gettext " --list-sigs [keyid(s)] List keys and their signatures")\n"
printf -- "$(gettext " --lsign-key <keyid> Locally sign the specified keyid")\n"
printf -- "$(gettext " --populate [keyring(s)] Reload the default keys from the (given) keyrings\n\
in '%s'")\n" "@pkgdatadir@/keyrings"
echo "$(gettext " --refresh-keys [keyid(s)] Update specified or all keys from a keyserver")"
printf -- "$(gettext " --refresh-keys [keyid(s)] Update specified or all keys from a keyserver")\n"
}
version() {
printf "pacman-key (pacman) %s\n" "${myver}"
printf "$(gettext "\
printf -- "$(gettext "\
Copyright (c) 2010-2012 Pacman Development Team <pacman-dev@archlinux.org>.\n\
This is free software; see the source for copying conditions.\n\
There is NO WARRANTY, to the extent permitted by law.\n")"

View file

@ -33,11 +33,11 @@ m4_include(library/output_format.sh)
usage() {
printf "pacman-optimize (pacman) %s\n\n" "$myver"
printf "$(gettext "Usage: %s [pacman_db_root]")\n\n" "$0"
printf "$(gettext "\
printf -- "$(gettext "Usage: %s [pacman_db_root]")\n\n" "$0"
printf -- "$(gettext "\
pacman-optimize is a little hack that should improve the performance\n\
of pacman when reading/writing to its filesystem-based database.\n\n")"
printf "$(gettext "\
printf -- "$(gettext "\
Because pacman uses many small files to keep track of packages,\n\
there is a tendency for these files to become fragmented over time.\n\
This script attempts to relocate these small files into one\n\
@ -48,7 +48,7 @@ does not have to move around the disk as much.\n")"
version() {
printf "pacman-optimize (pacman) %s\n" "$myver"
printf "$(gettext "\
printf -- "$(gettext "\
Copyright (c) 2006-2011 Pacman Development Team <pacman-dev@archlinux.org>.\n\
Copyright (C) 2002-2006 Judd Vinet <jvinet@zeroflux.org>.\n\n\
This is free software; see the source for copying conditions.\n\

View file

@ -38,16 +38,16 @@ m4_include(library/output_format.sh)
# print usage instructions
usage() {
printf "pkgdelta (pacman) %s\n\n" "$myver"
printf "$(gettext "Usage: pkgdelta [-q] <package1> <package2>\n")"
printf "$(gettext "\
printf -- "$(gettext "Usage: pkgdelta [-q] <package1> <package2>\n")"
printf -- "$(gettext "\
pkgdelta will create a delta file between two packages.\n\
This delta file can then be added to a database using repo-add.\n\n")"
echo "$(gettext "Example: pkgdelta pacman-3.0.0.pkg.tar.gz pacman-3.0.1.pkg.tar.gz")"
printf -- "$(gettext "Example: pkgdelta pacman-3.0.0.pkg.tar.gz pacman-3.0.1.pkg.tar.gz")\n"
}
version() {
printf "pkgdelta (pacman) %s\n\n" "$myver"
printf "$(gettext "\
printf -- "$(gettext "\
Copyright (c) 2009 Xavier Chantry <shiningxc@gmail.com>.\n\n\
This is free software; see the source for copying conditions.\n\
There is NO WARRANTY, to the extent permitted by law.\n")"

View file

@ -45,48 +45,48 @@ m4_include(library/output_format.sh)
# print usage instructions
usage() {
cmd=${0##*/}
printf "%s (pacman) %s\n\n" "$cmd" "$myver"
printf -- "%s (pacman) %s\n\n" "$cmd" "$myver"
if [[ $cmd == "repo-add" ]] ; then
printf "$(gettext "Usage: repo-add [options] <path-to-db> <package|delta> ...\n")"
printf "\n"
printf "$(gettext "\
printf -- "$(gettext "Usage: repo-add [options] <path-to-db> <package|delta> ...\n")"
printf -- "\n"
printf -- "$(gettext "\
repo-add will update a package database by reading a package file.\n\
Multiple packages to add can be specified on the command line.\n")"
printf "\n"
printf "$(gettext "Options:\n")"
printf "$(gettext " -d, --delta generate and add delta for package update\n")"
printf "$(gettext " -f, --files update database's file list\n")"
printf -- "\n"
printf -- "$(gettext "Options:\n")"
printf -- "$(gettext " -d, --delta generate and add delta for package update\n")"
printf -- "$(gettext " -f, --files update database's file list\n")"
elif [[ $cmd == "repo-remove" ]] ; then
printf "$(gettext "Usage: repo-remove [options] <path-to-db> <packagename|delta> ...\n")"
printf "\n"
printf "$(gettext "\
printf -- "$(gettext "Usage: repo-remove [options] <path-to-db> <packagename|delta> ...\n")"
printf -- "\n"
printf -- "$(gettext "\
repo-remove will update a package database by removing the package name\n\
specified on the command line from the given repo database. Multiple\n\
packages to remove can be specified on the command line.\n")"
printf "\n"
printf "$(gettext "Options:\n")"
printf -- "\n"
printf -- "$(gettext "Options:\n")"
else
printf "$(gettext "Please move along, there is nothing to see here.\n")"
printf -- "$(gettext "Please move along, there is nothing to see here.\n")"
return
fi
printf "$(gettext " -q, --quiet minimize output\n")"
printf "$(gettext " -s, --sign sign database with GnuPG after update\n")"
printf "$(gettext " -k, --key <key> use the specified key to sign the database\n")"
printf "$(gettext " -v, --verify verify database's signature before update\n")"
printf "$(gettext "\n\
printf -- "$(gettext " -q, --quiet minimize output\n")"
printf -- "$(gettext " -s, --sign sign database with GnuPG after update\n")"
printf -- "$(gettext " -k, --key <key> use the specified key to sign the database\n")"
printf -- "$(gettext " -v, --verify verify database's signature before update\n")"
printf -- "$(gettext "\n\
See %s(8) for more details and descriptions of the available options.\n")" $cmd
printf "\n"
if [[ $cmd == "repo-add" ]] ; then
printf "$(gettext "Example: repo-add /path/to/repo.db.tar.gz pacman-3.0.0-1-i686.pkg.tar.gz\n")"
printf -- "$(gettext "Example: repo-add /path/to/repo.db.tar.gz pacman-3.0.0-1-i686.pkg.tar.gz\n")"
elif [[ $cmd == "repo-remove" ]] ; then
printf "$(gettext "Example: repo-remove /path/to/repo.db.tar.gz kernel26\n")"
printf -- "$(gettext "Example: repo-remove /path/to/repo.db.tar.gz kernel26\n")"
fi
}
version() {
cmd=${0##*/}
printf "%s (pacman) %s\n\n" "$cmd" "$myver"
printf "$(gettext "\
printf -- "$(gettext "\
Copyright (c) 2006-2012 Pacman Development Team <pacman-dev@archlinux.org>\n\n\
This is free software; see the source for copying conditions.\n\
There is NO WARRANTY, to the extent permitted by law.\n")"