tazpkg rev 694

Code reformatting: use '_' and '_n' gettext functions, split solid "text" into "chapters" and "paragraphs", tiny misc.
author Aleksej Bobylev <al.bobylev@gmail.com>
date Mon Dec 01 01:06:57 2014 +0200 (2014-12-01)
parents 0dedae7db044
children 52d1418d89d7
files Makefile tazpkg
line diff
     1.1 --- a/Makefile	Fri Nov 21 14:41:44 2014 +0100
     1.2 +++ b/Makefile	Mon Dec 01 01:06:57 2014 +0200
     1.3 @@ -18,7 +18,7 @@
     1.4  pot:
     1.5  	xgettext -o po/tazpkg.pot -L Shell \
     1.6  		--package-name=TazPkg \
     1.7 -		--package-version="$(VERSION)" -kaction -ktitle \
     1.8 +		--package-version="$(VERSION)" -kaction -ktitle -k_ -k_n \
     1.9  		./tazpkg ./tazpkg-box ./pkgs ./pkgs.cgi ./tazpkg-notify
    1.10  
    1.11  msgmerge:
     2.1 --- a/tazpkg	Fri Nov 21 14:41:44 2014 +0100
     2.2 +++ b/tazpkg	Mon Dec 01 01:06:57 2014 +0200
     2.3 @@ -28,44 +28,61 @@
     2.4  
     2.5  # Internationalization.
     2.6  #. /usr/bin/gettext.sh
     2.7 -TEXTDOMAIN='tazpkg'
     2.8 -export TEXTDOMAIN
     2.9 +export TEXTDOMAIN='tazpkg'
    2.10 +
    2.11  
    2.12  #
    2.13  # Functions set for translate categories
    2.14  #
    2.15  
    2.16 +
    2.17  # No operations, only for xgettext collect
    2.18 +
    2.19  gettext_noop() {
    2.20 -	gettext "base-system"; gettext "x-window"; gettext "utilities";
    2.21 -	gettext "network"; gettext "graphics"; gettext "multimedia";
    2.22 -	gettext "office"; gettext "development"; gettext "system-tools";
    2.23 -	gettext "security"; gettext "games"; gettext "misc"; gettext "meta";
    2.24 -	gettext "non-free"
    2.25 +	_ 'base-system'; _ 'x-window'; _ 'utilities'; _ 'network'; _ 'graphics';
    2.26 +	_ 'multimedia'; _ 'office'; _ 'development'; _ 'system-tools'; _ 'security';
    2.27 +	_ 'games'; _ 'misc'; _ 'meta'; _ "non-free"
    2.28  }
    2.29 +
    2.30 +
    2.31  # Make array of pre-translated categories
    2.32 +
    2.33  cat_i18n=""
    2.34  for c in "base-system" "x-window" "utilities" "network" "graphics" "multimedia" "office" "development" "system-tools" "security" "games" "misc" "meta" "non-free"; do
    2.35  	cat_i18n="$cat_i18n
    2.36  $(gettext "$c")	$c"
    2.37  done
    2.38 +
    2.39 +
    2.40  # If category is not one of those translated in native language, keep it
    2.41  # untranslated. This allows both native and english language support.
    2.42  # This also supports custom categories.
    2.43  # And now we support spaces in translated categories
    2.44 +
    2.45  reverse_translate_category()
    2.46  {
    2.47  	echo "$cat_i18n" | awk "BEGIN{FS=\"	\"}{if (/^$@	/) a=\$2}END{if (a==\"\") a=\"$@\"; print a}"
    2.48  }
    2.49  
    2.50 +
    2.51 +
    2.52  #
    2.53  # TazPKG output functions
    2.54  #
    2.55 +
    2.56 +
    2.57  # Print localized title
    2.58 +
    2.59  title() { newline; boldify "$(eval_gettext "$1")"; separator; }
    2.60 +
    2.61 +
    2.62  # Print footer
    2.63 -footer() { separator; echo "$1"; newline; }
    2.64 +
    2.65 +footer() { separator; echo "$1"; [ -n "$1" ] && newline; }
    2.66 +
    2.67 +
    2.68  # Print current action in brown color (separate from any other msgs)
    2.69 +
    2.70  action() {
    2.71  	case $output in
    2.72  		raw|gtk|html) eval_gettext "$@" ;;
    2.73 @@ -73,22 +90,22 @@
    2.74  	esac
    2.75  }
    2.76  
    2.77 +
    2.78  # Initialize some variables to use words rather than numbers for functions
    2.79  # and actions.
    2.80  COMMAND=$1
    2.81  PACKAGE=${2%/}
    2.82  PACKAGE_DIR="$(cd $(dirname $PACKAGE 2>/dev/null) 2>/dev/null; pwd)"
    2.83 -[ -n "$PACKAGE" ] &&
    2.84 -PACKAGE_FILE="$PACKAGE_DIR/${PACKAGE##*/}"
    2.85 +[ -n "$PACKAGE" ] && PACKAGE_FILE="$PACKAGE_DIR/${PACKAGE##*/}"
    2.86  if [ -f "$PACKAGE" ]; then
    2.87  	# Set pkg basename for install, extract
    2.88 -	PACKAGE=$(basename ${PACKAGE%.tazpkg} 2>/dev/null)
    2.89 +	PACKAGE=$(basename $PACKAGE .tazpkg 2>/dev/null)
    2.90  else
    2.91  	# Pkg name for remove, search and all other cmds
    2.92  	PACKAGE=${PACKAGE%.tazpkg}
    2.93  fi
    2.94  TARGET_DIR=$3
    2.95 -TOP_DIR=`pwd`
    2.96 +TOP_DIR=$(pwd)
    2.97  TMP_DIR=/tmp/$RANDOM
    2.98  INSTALL_LIST=""
    2.99  SAVE_CACHE_DIR="$CACHE_DIR"
   2.100 @@ -102,85 +119,92 @@
   2.101  # Need by check_depends
   2.102  TMPLOCALSTATE=
   2.103  
   2.104 +
   2.105 +
   2.106  ####################
   2.107  # Script functions #
   2.108  ####################
   2.109  
   2.110 +
   2.111  # Print the usage.
   2.112 +
   2.113  usage () {
   2.114  	cat << EOT
   2.115  
   2.116 -$(eval_gettext 'SliTaz package manager - Version:') $(colorize 34 $VERSION)
   2.117 -
   2.118 -$(boldify "$(gettext 'Usage:')")
   2.119 -  $(gettext 'tazpkg [command] [package|dir|pattern|list|cat|--opt] [dir|--opt]')
   2.120 -
   2.121 -$(boldify "$(gettext 'SHell:')") tazpkg shell
   2.122 -
   2.123 -$(boldify "$(gettext 'Commands:')")
   2.124 -  usage            $(gettext 'Print this short usage')
   2.125 -  bugs             $(gettext 'Show known bugs in packages')
   2.126 -  activity|-a      $(gettext 'Show TazPKG activity log')
   2.127 -  list|-l          $(gettext 'List installed packages on the system by category or all')
   2.128 -  list-mirror|-lm  $(gettext 'List all available packages on the mirror (--diff for new)')
   2.129 -  info             $(gettext 'Print information about a package')
   2.130 -  desc             $(gettext 'Print description of a package (if it exists)')
   2.131 -  list-files|-lf   $(gettext 'List the files installed with a package')
   2.132 -  list-config      $(gettext 'List the configuration files')
   2.133 -  search|-s        $(gettext 'Search for a package by pattern or name (options: -i|-l|-m)')
   2.134 -  search-pkgname   $(gettext 'Search on mirror for package having a particular file')
   2.135 -  search-file|-sf  $(gettext 'Search for file(s) in all installed packages files')
   2.136 -  install|-i       $(gettext 'Install a local (*.tazpkg) package (--forced to force)')
   2.137 -  install-list     $(gettext 'Install all packages from a list of packages.')
   2.138 -  remove|-r        $(gettext 'Remove the specified package and all installed files')
   2.139 -  extract|-e       $(gettext 'Extract a (*.tazpkg) package into a directory')
   2.140 -  pack             $(gettext 'Pack an unpacked or prepared package tree')
   2.141 -  recharge         $(gettext 'Recharge your packages.list from the mirror')
   2.142 -  up|help-up       $(eval_gettext 'Check packages $CHECKSUM to list and install latest upgrades')
   2.143 -  repack           $(gettext 'Create a package archive from an installed package')
   2.144 -  repack-config    $(gettext 'Create a package archive with configuration files')
   2.145 -  recompress       $(gettext 'Rebuild a package with a better compression ratio')
   2.146 -  block|unblock    $(gettext 'Block an installed package version or unblock it for upgrade')
   2.147 -  get              $(gettext 'Download a package into the current directory')
   2.148 -  get-install|-gi  $(gettext 'Download and install a package from the mirror')
   2.149 -  get-install-list $(gettext 'Download and install a list of packages from the mirror')
   2.150 -  check            $(gettext 'Verify consistency of installed packages')
   2.151 -  add-flavor       $(gettext 'Install the flavor list of packages')
   2.152 -  install-flavor   $(gettext 'Install the flavor list of packages and remove other ones')
   2.153 -  set-release      $(gettext 'Change release and update packages')
   2.154 -  clean-cache|-cc  $(gettext 'Clean all packages downloaded in cache directory')
   2.155 -  depends          $(gettext 'Display dependencies tree')
   2.156 -  rdepends         $(gettext 'Display reverse dependencies tree')
   2.157 -  convert          $(gettext 'Convert deb/rpm/tgz/pet/sfs/sb/arch/ipk package to tazpkg)')
   2.158 -  link             $(gettext 'Link a package from another slitaz installation')
   2.159 -  setup-mirror|-sm $(gettext 'Change the mirror url configuration')
   2.160 -  list-undigest    $(gettext 'List undigest mirrors')
   2.161 -  remove-undigest  $(gettext 'Remove an undigest mirror')
   2.162 -  add-undigest     $(gettext 'Add an undigest mirror')
   2.163 -  setup-undigest   $(gettext 'Update an undigest mirror')
   2.164 -  reconfigure      $(gettext 'Replay post install script from package')
   2.165 +$(_ 'SliTaz package manager - Version:') $(colorize 34 $VERSION)
   2.166 +
   2.167 +$(boldify "$(_ 'Usage:')")
   2.168 +  $(_ 'tazpkg [command] [package|dir|pattern|list|cat|--opt] [dir|--opt]')
   2.169 +
   2.170 +$(boldify "$(_ 'SHell:')") tazpkg shell
   2.171 +
   2.172 +$(boldify "$(_ 'Commands:')")
   2.173 +  usage            $(_ 'Print this short usage')
   2.174 +  bugs             $(_ 'Show known bugs in packages')
   2.175 +  activity|-a      $(_ 'Show TazPKG activity log')
   2.176 +  list|-l          $(_ 'List installed packages on the system by category or all')
   2.177 +  list-mirror|-lm  $(_ 'List all available packages on the mirror (--diff for new)')
   2.178 +  info             $(_ 'Print information about a package')
   2.179 +  desc             $(_ 'Print description of a package (if it exists)')
   2.180 +  list-files|-lf   $(_ 'List the files installed with a package')
   2.181 +  list-config      $(_ 'List the configuration files')
   2.182 +  search|-s        $(_ 'Search for a package by pattern or name (options: -i|-l|-m)')
   2.183 +  search-pkgname   $(_ 'Search on mirror for package having a particular file')
   2.184 +  search-file|-sf  $(_ 'Search for file(s) in all installed packages files')
   2.185 +  install|-i       $(_ 'Install a local (*.tazpkg) package (--forced to force)')
   2.186 +  install-list     $(_ 'Install all packages from a list of packages.')
   2.187 +  remove|-r        $(_ 'Remove the specified package and all installed files')
   2.188 +  extract|-e       $(_ 'Extract a (*.tazpkg) package into a directory')
   2.189 +  pack             $(_ 'Pack an unpacked or prepared package tree')
   2.190 +  recharge         $(_ 'Recharge your packages.list from the mirror')
   2.191 +  up|help-up       $(_ 'Check packages $CHECKSUM to list and install latest upgrades')
   2.192 +  repack           $(_ 'Create a package archive from an installed package')
   2.193 +  repack-config    $(_ 'Create a package archive with configuration files')
   2.194 +  recompress       $(_ 'Rebuild a package with a better compression ratio')
   2.195 +  block|unblock    $(_ 'Block an installed package version or unblock it for upgrade')
   2.196 +  get              $(_ 'Download a package into the current directory')
   2.197 +  get-install|-gi  $(_ 'Download and install a package from the mirror')
   2.198 +  get-install-list $(_ 'Download and install a list of packages from the mirror')
   2.199 +  check            $(_ 'Verify consistency of installed packages')
   2.200 +  add-flavor       $(_ 'Install the flavor list of packages')
   2.201 +  install-flavor   $(_ 'Install the flavor list of packages and remove other ones')
   2.202 +  set-release      $(_ 'Change release and update packages')
   2.203 +  clean-cache|-cc  $(_ 'Clean all packages downloaded in cache directory')
   2.204 +  depends          $(_ 'Display dependencies tree')
   2.205 +  rdepends         $(_ 'Display reverse dependencies tree')
   2.206 +  convert          $(_ 'Convert deb/rpm/tgz/pet/sfs/sb/arch/ipk package to tazpkg)')
   2.207 +  link             $(_ 'Link a package from another slitaz installation')
   2.208 +  setup-mirror|-sm $(_ 'Change the mirror url configuration')
   2.209 +  list-undigest    $(_ 'List undigest mirrors')
   2.210 +  remove-undigest  $(_ 'Remove an undigest mirror')
   2.211 +  add-undigest     $(_ 'Add an undigest mirror')
   2.212 +  setup-undigest   $(_ 'Update an undigest mirror')
   2.213 +  reconfigure      $(_ 'Replay post install script from package')
   2.214  
   2.215  EOT
   2.216  }
   2.217  
   2.218 +
   2.219  usage_up() {
   2.220  	cat << EOT
   2.221 -$(emsg "<b>$(gettext 'Usage for command up:')</b>") tazpkg up [$(gettext 'option')]
   2.222 -
   2.223 - * $(gettext 'Without options run in interactive mode and ask before install')
   2.224 -
   2.225 -$(boldify "$(gettext 'Where options are:')")
   2.226 -  --check    |-c   $(gettext 'Check only for available upgrades')
   2.227 -  --recharge |-r   $(gettext 'Force recharge of packages list and check')
   2.228 -  --install  |-i   $(gettext 'Check for upgrades and install them all')
   2.229 -
   2.230 -$(boldify "$(gettext 'Example:')")
   2.231 +$(emsg "<b>$(_ 'Usage for command up:')</b>") tazpkg up [$(_ 'option')]
   2.232 +
   2.233 + * $(_ 'Without options run in interactive mode and ask before install')
   2.234 +
   2.235 +$(boldify "$(_ 'Where options are:')")
   2.236 +  --check    |-c   $(_ 'Check only for available upgrades')
   2.237 +  --recharge |-r   $(_ 'Force recharge of packages list and check')
   2.238 +  --install  |-i   $(_ 'Check for upgrades and install them all')
   2.239 +
   2.240 +$(boldify "$(_ 'Example:')")
   2.241    tazpkg up --recharge --install
   2.242    tazpkg up -c -r
   2.243  EOT
   2.244  }
   2.245  
   2.246 +
   2.247  # Check if dir exists
   2.248 +
   2.249  check_dir()
   2.250  {
   2.251  	if ! [ -d "$1" ]; then
   2.252 @@ -192,8 +216,10 @@
   2.253  	fi
   2.254  }
   2.255  
   2.256 +
   2.257  # Check if the directories and files used by TazPKG
   2.258  # exist. If not and user is root we create them.
   2.259 +
   2.260  check_base_dir()
   2.261  {
   2.262  	if [ "$(id -u)" = "0" ]; then
   2.263 @@ -208,63 +234,73 @@
   2.264  }
   2.265  check_base_dir
   2.266  
   2.267 +
   2.268  # Check for a package name on cmdline.
   2.269 +
   2.270  check_for_package_on_cmdline()
   2.271  {
   2.272  	if [ -z "$PACKAGE" ]; then
   2.273  		newline
   2.274 -		gettext "Please specify a package name on the command line."; echo
   2.275 +		_ 'Please specify a package name on the command line.'
   2.276  		newline
   2.277  		exit 0
   2.278  	fi
   2.279  }
   2.280  
   2.281 +
   2.282  # Check if the package (*.tazpkg) exists before installing or extracting.
   2.283 +
   2.284  check_for_package_file()
   2.285  {
   2.286  	if [ ! -f "$PACKAGE_FILE" ]; then
   2.287  		newline
   2.288 -		eval_gettext "Unable to find: \$PACKAGE_FILE"; echo
   2.289 +		_ 'Unable to find: $PACKAGE_FILE'
   2.290  		newline
   2.291  		exit 0
   2.292  	fi
   2.293  }
   2.294  
   2.295 +
   2.296  # Check for the receipt of an installed package.
   2.297 +
   2.298  check_for_receipt()
   2.299  {
   2.300  	receipt_path="$1$INSTALLED/$PACKAGE/receipt"
   2.301  	if [ ! -f $receipt_path ]; then
   2.302  		newline
   2.303 -		eval_gettext 'Unable to find the receipt: $receipt_path'; echo
   2.304 +		_ 'Unable to find the receipt: $receipt_path'
   2.305  		newline
   2.306  		exit 0
   2.307  	fi
   2.308  }
   2.309  
   2.310 +
   2.311  # Get repositories priority using $LOCALSTATE/priority.
   2.312  # In this files, undigest are called by their name and main mirror
   2.313  # by main. Sort order: priority
   2.314 +
   2.315  look_for_priority()
   2.316  {
   2.317 -[ -s $LOCALSTATE/priority ] && priority=$(cat $LOCALSTATE/priority)
   2.318 -for rep in main $(ls $LOCALSTATE/undigest 2>/dev/null); do
   2.319 -	if [ ! -s $LOCALSTATE/priority ] || \
   2.320 -		! grep -q ^$rep$ $LOCALSTATE/priority; then
   2.321 -		priority=$(echo -e "$priority\n$rep")
   2.322 -	fi
   2.323 -done
   2.324 -priority=$(echo "$priority" | sed '/^$/d' | \
   2.325 -	while read line; do
   2.326 -	if [ "$line" = main ]; then
   2.327 -		echo $LOCALSTATE
   2.328 -	else
   2.329 -		echo $LOCALSTATE/undigest/$line
   2.330 -	fi
   2.331 -done)
   2.332 +	[ -s $LOCALSTATE/priority ] && priority=$(cat $LOCALSTATE/priority)
   2.333 +	for rep in main $(ls $LOCALSTATE/undigest 2>/dev/null); do
   2.334 +		if [ ! -s $LOCALSTATE/priority ] || \
   2.335 +			! grep -q ^$rep$ $LOCALSTATE/priority; then
   2.336 +			priority=$(echo -e "$priority\n$rep")
   2.337 +		fi
   2.338 +	done
   2.339 +	priority=$(echo "$priority" | sed '/^$/d' | \
   2.340 +		while read line; do
   2.341 +		if [ "$line" = main ]; then
   2.342 +			echo $LOCALSTATE
   2.343 +		else
   2.344 +			echo $LOCALSTATE/undigest/$line
   2.345 +		fi
   2.346 +	done)
   2.347  }
   2.348  
   2.349 +
   2.350  # Get package name in a directory
   2.351 +
   2.352  package_fullname_in_dir()
   2.353  {
   2.354  	[ -f $1/receipt ] || return
   2.355 @@ -273,7 +309,9 @@
   2.356  	echo $PACKAGE-$VERSION$EXTRAVERSION
   2.357  }
   2.358  
   2.359 +
   2.360  # Get package name that is already installed.
   2.361 +
   2.362  get_installed_package_pathname()
   2.363  {
   2.364  	for i in $2$INSTALLED/${1%%-*}*; do
   2.365 @@ -285,13 +323,16 @@
   2.366  	done
   2.367  }
   2.368  
   2.369 +
   2.370  # Check if a package is already installed.
   2.371 +
   2.372  check_for_installed_package()
   2.373  {
   2.374  	if [ -n "$(get_installed_package_pathname $PACKAGE $1)" ]; then
   2.375  		newline
   2.376 +		# FIXME
   2.377  		cat << EOT
   2.378 -$(colorize 34 $PACKAGE) $(gettext "package is already installed.
   2.379 +$(colorize 34 $PACKAGE) $(_ "package is already installed.
   2.380  You can use the --forced option to force installation.")
   2.381  EOT
   2.382  		newline
   2.383 @@ -299,7 +340,9 @@
   2.384  	fi
   2.385  }
   2.386  
   2.387 +
   2.388  # Check for packages.list to download and install packages.
   2.389 +
   2.390  check_for_packages_list()
   2.391  {
   2.392  	list_path="$LOCALSTATE/packages.list"
   2.393 @@ -308,16 +351,17 @@
   2.394  			tazpkg recharge
   2.395  		else
   2.396  			newline
   2.397 -			eval_gettext 'Unable to find the list: $list_path'; echo
   2.398 -			gettext \
   2.399 +			_ 'Unable to find the list: $list_path'
   2.400 +			_ \
   2.401  "You must probably run 'tazpkg recharge' as root to get the latest list of
   2.402 -packages available on the mirror."; echo
   2.403 +packages available on the mirror."
   2.404  			newline
   2.405  			exit 0
   2.406  		fi
   2.407  	fi
   2.408  }
   2.409  
   2.410 +
   2.411  get_cache_dir()
   2.412  {
   2.413  	echo $rep > $tmp/rep
   2.414 @@ -333,7 +377,9 @@
   2.415  	echo $CACHE_DIR > $tmp/cachedir
   2.416  }
   2.417  
   2.418 +
   2.419  # get an already installed package from packages.equiv
   2.420 +
   2.421  equivalent_pkg()
   2.422  {
   2.423  	for i in $(grep -hs "^$1=" $LOCALSTATE/packages.equiv \
   2.424 @@ -359,7 +405,9 @@
   2.425  	echo $1
   2.426  }
   2.427  
   2.428 +
   2.429  # get a virtual package from packages.equiv
   2.430 +
   2.431  virtual_pkg()
   2.432  {
   2.433  	for i in $(for rep in $priority; do
   2.434 @@ -381,23 +429,21 @@
   2.435  	done
   2.436  }
   2.437  
   2.438 +
   2.439  # Get package filename available on the mirror
   2.440 +
   2.441  get_package_filename()
   2.442  {
   2.443  	local pkg
   2.444  	for rep in $priority; do
   2.445 -		pkg=$(grep -A 1 -sh "^$1$" $rep/packages.txt | tail -1 | \
   2.446 -			sed 's/^ *//')
   2.447 -		[ "$pkg" ] && pkg=$(grep -sh "^$1-$pkg" \
   2.448 -			$rep/packages.list | head -1)
   2.449 +		pkg=$(grep -A 1 -sh "^$1$" $rep/packages.txt | tail -1 | sed 's/^ *//')
   2.450 +		[ "$pkg" ] && pkg=$(grep -sh "^$1-$pkg" $rep/packages.list | head -1)
   2.451  
   2.452  		# Allow user to call a package with his version number.
   2.453  		[ "$pkg" ] || pkg=$(grep -sh "^$1$" $rep/packages.list | head -1)
   2.454  
   2.455 -		[ "$pkg" ] || pkg=$(grep -sh "^$1-[0-9]" \
   2.456 -			$rep/packages.list | head -1)
   2.457 -		[ "$pkg" ] || pkg=$(grep -sh "^$1-.[\.0-9]" \
   2.458 -		$rep/packages.list | head -1)
   2.459 +		[ "$pkg" ] || pkg=$(grep -sh "^$1-[0-9]" $rep/packages.list | head -1)
   2.460 +		[ "$pkg" ] || pkg=$(grep -sh "^$1-.[\.0-9]" $rep/packages.list | head -1)
   2.461  		[ "$pkg" ] && get_cache_dir && break
   2.462  	done
   2.463  	if [ -z "$pkg" ]; then
   2.464 @@ -413,8 +459,10 @@
   2.465  	echo $pkg
   2.466  }
   2.467  
   2.468 +
   2.469  # Check for a package in packages.list. Used by get and get-install to grep
   2.470  # package basename.
   2.471 +
   2.472  check_for_package_in_list()
   2.473  {
   2.474  	local filename
   2.475 @@ -428,27 +476,33 @@
   2.476  		rm -f $tmp/rep $tmp/cachedir
   2.477  	else
   2.478  		newline
   2.479 -		eval_gettext "Unable to find: \$PACKAGE in the mirrored packages list."; echo
   2.480 +		_ 'Unable to find: $PACKAGE in the mirrored packages list.'
   2.481  		newline
   2.482  		[ -n "$check_only" ] && return 1
   2.483  		exit 0
   2.484  	fi
   2.485  }
   2.486  
   2.487 +
   2.488  # Log this activity
   2.489  # (there log_pkg because we have log() in libtaz.sh)
   2.490 +
   2.491  log_pkg()
   2.492  {
   2.493  	local extra
   2.494 +
   2.495  	[ "$1" = "Installed" ] && \
   2.496  	extra=" - $(fgrep $PACKAGE-$VERSION $LOCALSTATE/installed.$SUM | awk '{ print $1 }')"
   2.497 +
   2.498  	[ -e $LOG ] || touch $LOG
   2.499 -	DATE=`date +'%F %T'`
   2.500 +
   2.501  	[ -w $LOG ] &&
   2.502 -	echo "$DATE - $1 - $PACKAGE ($VERSION$EXTRAVERSION)$extra" >> $LOG
   2.503 +	echo "$(date +'%F %T') - $1 - $PACKAGE ($VERSION$EXTRAVERSION)$extra" >> $LOG
   2.504  }
   2.505  
   2.506 +
   2.507  # Download a get-package script from this mirror
   2.508 +
   2.509  download_get_script()
   2.510  {
   2.511  	local p
   2.512 @@ -456,16 +510,17 @@
   2.513  		local i
   2.514  		for i in $(cat $p/mirror) ; do
   2.515  			case "$i" in
   2.516 -			http://*|ftp://*)
   2.517 -				wget -O $2 ${i%packages/*}packages/get/$1 &&
   2.518 -				return 0 ;;
   2.519 +				http://*|ftp://*)
   2.520 +					wget -O $2 ${i%packages/*}packages/get/$1 && return 0 ;;
   2.521  			esac
   2.522  		done
   2.523  	done
   2.524  	return 1
   2.525  }
   2.526  
   2.527 +
   2.528  # Download a file from this mirror
   2.529 +
   2.530  download_from()
   2.531  {
   2.532  	local i
   2.533 @@ -475,13 +530,17 @@
   2.534  	for i in $mirrors; do
   2.535  		case "$i" in
   2.536  			# Mirror URL can have a trailing slash or not.
   2.537 -			http://*|ftp://*) busybox wget -c ${i%/}/$@ && break ;;
   2.538 -			*) ln -sf $i/$1 . && break ;;
   2.539 +			http://*|ftp://*)
   2.540 +				busybox wget -c ${i%/}/$@ && break ;;
   2.541 +			*)
   2.542 +				ln -sf $i/$1 . && break ;;
   2.543  		esac
   2.544  	done
   2.545  }
   2.546  
   2.547 +
   2.548  # Download a file trying all mirrors
   2.549 +
   2.550  download()
   2.551  {
   2.552  	local i
   2.553 @@ -492,16 +551,17 @@
   2.554  			download_from "$(cat $i/mirror)" "$@" && return
   2.555  		done
   2.556  	esac
   2.557 -	for i in $(cat `for rep in $priority; do echo $rep/mirror; done` \
   2.558 -		2> /dev/null); do
   2.559 +	for i in $(cat $(for rep in $priority; do echo $rep/mirror; done) 2>/dev/null); do
   2.560  		download_from "$i" "$@" && break
   2.561  	done
   2.562  }
   2.563  
   2.564 +
   2.565  # Extract a package with cpio and gzip/lzma.
   2.566 +
   2.567  extract_package()
   2.568  {
   2.569 -	action "Extracting \$PACKAGE..."
   2.570 +	action 'Extracting $PACKAGE...'
   2.571  	cpio -idm --quiet < ${PACKAGE_FILE##*/} && rm -f ${PACKAGE_FILE##*/}
   2.572  	status
   2.573  	if [ -f fs.cpio.lzma ]; then
   2.574 @@ -511,6 +571,7 @@
   2.575  	fi
   2.576  }
   2.577  
   2.578 +
   2.579  remove_with_path()
   2.580  {
   2.581  	# Avoid dirname errors by checking for argument.
   2.582 @@ -525,18 +586,21 @@
   2.583  	done
   2.584  }
   2.585  
   2.586 +
   2.587  grepesc()
   2.588  {
   2.589  	sed 's/\[/\\[/g'
   2.590  }
   2.591  
   2.592 +
   2.593  # This function installs a package in the rootfs.
   2.594 +
   2.595  install_package()
   2.596  {
   2.597  	ROOT=$1
   2.598  	if [ -n "$ROOT" ]; then
   2.599 -		 # Get absolute path
   2.600 -		 ROOT=$(cd $ROOT; pwd)
   2.601 +		# Get absolute path
   2.602 +		ROOT=$(realpath $ROOT)
   2.603  	fi
   2.604  	{
   2.605  		# Create package path early to avoid dependencies loop
   2.606 @@ -546,10 +610,12 @@
   2.607  		if grep -q ^pre_depends $TMP_DIR/receipt; then
   2.608  			pre_depends $ROOT
   2.609  		fi
   2.610 +
   2.611  		# Keep modifiers and file list on upgrade
   2.612  		cp $ROOT$INSTALLED/$PACKAGE/modifiers \
   2.613  		   $ROOT$INSTALLED/$PACKAGE/files.list $TMP_DIR 2> /dev/null
   2.614  		rm -rf $ROOT$INSTALLED/$PACKAGE 2> /dev/null
   2.615 +
   2.616  		# Make the installed package data dir to store
   2.617  		# the receipt and the files list.
   2.618  		mkdir -p $ROOT$INSTALLED/$PACKAGE
   2.619 @@ -561,35 +627,42 @@
   2.620  		cd $(dirname $PACKAGE_FILE)
   2.621  		$CHECKSUM $(basename $PACKAGE_FILE) >> $ROOT$LOCALSTATE/installed.$SUM
   2.622  	}
   2.623 +
   2.624  	# Resolve package deps.
   2.625  	check_for_deps $ROOT
   2.626 -	if [ ! "$MISSING_PACKAGE" = "" ]; then
   2.627 +	if [ -n "$MISSING_PACKAGE" ]; then
   2.628  		install_deps $ROOT
   2.629  	fi
   2.630  	mkdir -p $TMP_DIR
   2.631  	[ -n "$INSTALL_LIST" ] && echo "$PACKAGE_FILE" >> $ROOT$LOCALSTATE/$INSTALL_LIST-processed
   2.632 +
   2.633  	title 'Installation of: $PACKAGE'
   2.634 -	action "Copying \$PACKAGE..."
   2.635 +
   2.636 +	action 'Copying $PACKAGE...'
   2.637  	cp $PACKAGE_FILE $TMP_DIR
   2.638  	status
   2.639 +
   2.640  	cd $TMP_DIR
   2.641  	extract_package
   2.642  	SELF_INSTALL=0
   2.643  	EXTRAVERSION=""
   2.644  	CONFIG_FILES=""
   2.645 +
   2.646  	# Include temporary receipt to get the right variables.
   2.647  	. $PWD/receipt
   2.648  	cd $ROOT$INSTALLED
   2.649 +
   2.650  	if [ $SELF_INSTALL -ne 0 -a -n "$ROOT" ]; then
   2.651  		action "Checking post install dependencies..."
   2.652  		[ -f $INSTALLED/$PACKAGE/receipt ]
   2.653  		if ! status; then
   2.654  			command="tazpkg install $PACKAGE_FILE"
   2.655 -			eval_gettext "Please run '\$command' in / and retry."; echo
   2.656 +			_ "Please run '\$command' in / and retry."
   2.657  			rm -rf $TMP_DIR
   2.658  			exit 1
   2.659  		fi
   2.660  	fi
   2.661 +
   2.662  	# Get files to remove if upgrading
   2.663  	if [ -f $PACKAGE/files.list ]; then
   2.664  		while read file; do
   2.665 @@ -601,19 +674,23 @@
   2.666  			echo $file
   2.667  		done < $PACKAGE/files.list > $TMP_DIR/files2remove.list
   2.668  	fi
   2.669 +
   2.670  	# Remember modified packages
   2.671 -	{ check=false
   2.672 -	  for i in $(fgrep -v [ $TMP_DIR/files.list); do
   2.673 -		[ -e "$ROOT$i" ] || continue
   2.674 -		[ -d "$ROOT$i" ] && continue
   2.675 -		echo "- $i"
   2.676 -		check=true
   2.677 -	  done ;
   2.678 -	  $check && for i in *; do
   2.679 -	  	[ "$i" == "$PACKAGE" ] && continue
   2.680 -	  	[ -s $i/files.list ] || continue
   2.681 -	  	awk "{ printf \"$i %s\\n\",\$1 }" < $i/files.list
   2.682 -	  done; } | awk '
   2.683 +	{
   2.684 +		check=false
   2.685 +		for i in $(fgrep -v [ $TMP_DIR/files.list); do
   2.686 +			[ -e "$ROOT$i" ] || continue
   2.687 +			[ -d "$ROOT$i" ] && continue
   2.688 +			echo "- $i"
   2.689 +			check=true
   2.690 +		done ;
   2.691 +		$check && \
   2.692 +		for i in *; do
   2.693 +			[ "$i" == "$PACKAGE" ] && continue
   2.694 +			[ -s $i/files.list ] || continue
   2.695 +			awk "{ printf \"$i %s\\n\",\$1 }" < $i/files.list
   2.696 +		done;
   2.697 +	} | awk '
   2.698  {
   2.699  	if ($1 == "-" || file[$2] != "") {
   2.700  		file[$2] = file[$2] " " $1
   2.701 @@ -645,25 +722,29 @@
   2.702  
   2.703  	cd $TMP_DIR
   2.704  	cp receipt files.list $ROOT$INSTALLED/$PACKAGE
   2.705 +
   2.706  	# Copy the description if found.
   2.707  	if [ -f "description.txt" ]; then
   2.708  		cp description.txt $ROOT$INSTALLED/$PACKAGE
   2.709  	fi
   2.710 +
   2.711  	# Copy the md5sum if found.
   2.712  	if [ -f "$CHECKSUM" ]; then
   2.713  		cp $CHECKSUM $ROOT$INSTALLED/$PACKAGE
   2.714  	fi
   2.715 +
   2.716  	# Pre install commands.
   2.717  	if grep -q ^pre_install $ROOT$INSTALLED/$PACKAGE/receipt; then
   2.718  		pre_install $ROOT
   2.719  	fi
   2.720  	if [ -n "$CONFIG_FILES" ]; then
   2.721  		# save 'official' configuration files
   2.722 -		action "Saving configuration files for \$PACKAGE..."
   2.723 +		action 'Saving configuration files for $PACKAGE...'
   2.724  		for i in $CONFIG_FILES; do
   2.725  			{ cd fs ; find ${i#/} -type f 2> /dev/null; cd ..; }
   2.726  		done | { cd fs ; cpio -o -H newc --quiet | gzip -9; cd ..; } > \
   2.727  			$ROOT$INSTALLED/$PACKAGE/volatile.cpio.gz
   2.728 +
   2.729  		# keep user configuration files
   2.730  		for i in $CONFIG_FILES; do
   2.731  			{ cd fs ; find ${i#/} -type f 2> /dev/null; cd ..; }
   2.732 @@ -673,53 +754,66 @@
   2.733  		done
   2.734  		status
   2.735  	fi
   2.736 -	action "Installing \$PACKAGE..."
   2.737 +
   2.738 +	action 'Installing $PACKAGE...'
   2.739  	[ "$(busybox ls fs/* 2> /dev/null)" ] && cp -a fs/* $ROOT/
   2.740  	status
   2.741 +
   2.742  	if [ -s files2remove.list ]; then
   2.743 -		action "Removing old \$PACKAGE..."
   2.744 +		action 'Removing old $PACKAGE...'
   2.745  		while read file; do
   2.746  			remove_with_path $ROOT$file
   2.747  		done < files2remove.list
   2.748  		true
   2.749  		status
   2.750  	fi
   2.751 +
   2.752  	# Remove the temporary random directory.
   2.753  	action "Removing all tmp files..."
   2.754 -	cd .. && rm -rf $TMP_DIR
   2.755 +	cd ..; rm -rf $TMP_DIR
   2.756  	status
   2.757 +
   2.758  	# Post install commands.
   2.759  	if grep -q ^post_install $ROOT$INSTALLED/$PACKAGE/receipt; then
   2.760  		post_install $ROOT
   2.761  	fi
   2.762 - 	# Update-desktop-database if needed.
   2.763 +
   2.764 +	# Update-desktop-database if needed.
   2.765  	if [ "$(fgrep .desktop $ROOT$INSTALLED/$PACKAGE/files.list | fgrep /usr/share/applications/)" ]; then
   2.766  		updatedesktopdb=yes
   2.767  	fi
   2.768 +
   2.769  	# Update-mime-database if needed.
   2.770  	if [ "$(fgrep /usr/share/mime $ROOT$INSTALLED/$PACKAGE/files.list)" ]; then
   2.771  		updatemimedb=yes
   2.772  	fi
   2.773 +
   2.774  	# Update-icon-database
   2.775  	if [ "$(fgrep /usr/share/icon/hicolor $ROOT$INSTALLED/$PACKAGE/files.list)" ]; then
   2.776  		updateicondb=yes
   2.777  	fi
   2.778 +
   2.779  	# Compile glib schemas if needed.
   2.780  	if [ "$(fgrep /usr/share/glib-2.0/schemas $ROOT$INSTALLED/$PACKAGE/files.list)" ]; then
   2.781  		compile_schemas=yes
   2.782  	fi
   2.783 +
   2.784  	# Update depmod list
   2.785  	if [ "$(fgrep /lib/modules $ROOT$INSTALLED/$PACKAGE/files.list)" ]; then
   2.786  		updatedepmod=yes
   2.787  	fi
   2.788 +
   2.789  	cd $TOP_DIR
   2.790  	pkg_name="$PACKAGE ($VERSION$EXTRAVERSION)"
   2.791 -	footer "$(eval_gettext '$pkg_name is installed.')"
   2.792 +	footer "$(_ '$pkg_name is installed.')"
   2.793 +
   2.794  	# Log this activity
   2.795  	[ -n "$ROOT" ] || log_pkg Installed
   2.796  }
   2.797  
   2.798 +
   2.799  # This function may be called by a get script.
   2.800 +
   2.801  abort_package()
   2.802  {
   2.803  	cd $CUR_DIR
   2.804 @@ -728,7 +822,9 @@
   2.805  	exit 1
   2.806  }
   2.807  
   2.808 +
   2.809  # This function installs a package from a get script in the rootfs.
   2.810 +
   2.811  install_package_from_get_script()
   2.812  {
   2.813  	SCRIPT="$1"
   2.814 @@ -767,7 +863,7 @@
   2.815  	DEPENDS="$(unset DEPENDS; . $PACKAGE-$VERSION/receipt ; echo $DEPENDS)"
   2.816  	for i in $(find_depends $PACKAGE-$VERSION/fs); do
   2.817  		case " $DEPENDS " in
   2.818 -		*\ $i\ *) continue;;
   2.819 +			*\ $i\ *) continue;;
   2.820  		esac
   2.821  		grep -q '^DEPENDS="' $PACKAGE-$VERSION/receipt ||
   2.822  			echo 'DEPENDS=""' >> $PACKAGE-$VERSION/receipt
   2.823 @@ -788,7 +884,9 @@
   2.824  	rm -rf $TMP_DIR
   2.825  }
   2.826  
   2.827 +
   2.828  # Check for loop in deps tree.
   2.829 +
   2.830  check_for_deps_loop()
   2.831  {
   2.832  	local list
   2.833 @@ -798,6 +896,7 @@
   2.834  	shift
   2.835  	[ -n "$1" ] || return
   2.836  	list=""
   2.837 +
   2.838  	# Filter out already processed deps
   2.839  	for i in $@; do
   2.840  		case " $ALL_DEPS" in
   2.841 @@ -816,7 +915,9 @@
   2.842  	done
   2.843  }
   2.844  
   2.845 +
   2.846  # Check for missing deps listed in a receipt packages.
   2.847 +
   2.848  check_for_deps()
   2.849  {
   2.850  	local saved;
   2.851 @@ -828,37 +929,37 @@
   2.852  	rm -rf $TMP_DIR
   2.853  
   2.854  	num=0
   2.855 -	for pkgorg in $DEPENDS
   2.856 -	do
   2.857 +	for pkgorg in $DEPENDS; do
   2.858  		i=$(equivalent_pkg $pkgorg $1)
   2.859  		if [ ! -d "$1$INSTALLED/$i" ]; then
   2.860  			MISSING_PACKAGE=$i
   2.861  			num=$(($num+1))
   2.862  		elif [ ! -f "$1$INSTALLED/$i/receipt" ]; then
   2.863 -			eval_gettext "WARNING Dependency loop between \$PACKAGE and \$i."; echo
   2.864 +			_ 'WARNING Dependency loop between $PACKAGE and $i.'
   2.865  		fi
   2.866  	done
   2.867  
   2.868  	if [ ! "$MISSING_PACKAGE" = "" ]; then
   2.869 -		title "$(eval_gettext 'Tracking dependencies for: $PACKAGE')"
   2.870 -		for pkgorg in $DEPENDS
   2.871 -		do
   2.872 +		title "$(_ 'Tracking dependencies for: $PACKAGE')"
   2.873 +		for pkgorg in $DEPENDS; do
   2.874  			i=$(equivalent_pkg $pkgorg $1)
   2.875  			if [ ! -d "$1$INSTALLED/$i" ]; then
   2.876  				MISSING_PACKAGE=$i
   2.877 -				eval_gettext "Missing: \$MISSING_PACKAGE"; echo
   2.878 +				_ 'Missing: $MISSING_PACKAGE'
   2.879  			fi
   2.880  		done
   2.881  		separator
   2.882  		eval_ngettext \
   2.883 -			"\$num missing package to install." \
   2.884 -			"\$num missing packages to install." $num; echo
   2.885 +			'$num missing package to install.' \
   2.886 +			'$num missing packages to install.' $num; echo
   2.887  	fi
   2.888  }
   2.889  
   2.890 +
   2.891  # Install all missing deps. Auto install or ask user then install all missing
   2.892  # deps from local dir, cdrom, media or from the mirror. In case we want to
   2.893  # install packages from local, we need a packages.list to find the version.
   2.894 +
   2.895  install_deps()
   2.896  {
   2.897  	local root
   2.898 @@ -868,13 +969,12 @@
   2.899  		answer=0
   2.900  	else
   2.901  		newline
   2.902 -		gettext "Install all missing dependencies" && confirm
   2.903 +		_n 'Install all missing dependencies'; confirm
   2.904  		answer=$?
   2.905  		newline
   2.906  	fi
   2.907  	if [ $answer = 0 ]; then
   2.908 -		for pkgorg in $DEPENDS
   2.909 -		do
   2.910 +		for pkgorg in $DEPENDS; do
   2.911  			pkg=$(equivalent_pkg $pkgorg $1)
   2.912  			if [ ! -d "$1$INSTALLED/$pkg" ]; then
   2.913  				local list
   2.914 @@ -884,7 +984,7 @@
   2.915  				# the TAZPKG_BASENAME in the local packages.list.
   2.916  				found=0
   2.917  				if [ -f "$list" ]; then
   2.918 -					eval_gettext "Checking if \$pkg exists in local list..."; echo
   2.919 +					_ 'Checking if $pkg exists in local list...'
   2.920  					mkdir $TMP_DIR
   2.921  					for i in $pkg-*.tazpkg; do
   2.922  						[ -f $i ] || continue
   2.923 @@ -910,31 +1010,33 @@
   2.924  		done
   2.925  	else
   2.926  		newline
   2.927 -		eval_gettext \
   2.928 +		_ \
   2.929  "Leaving dependencies for \$PACKAGE unresolved.
   2.930 -The package is installed but will probably not work."; echo
   2.931 +The package is installed but will probably not work."
   2.932  		newline
   2.933  	fi
   2.934  }
   2.935  
   2.936 +
   2.937  # Search pattern in installed packages.
   2.938 +
   2.939  search_in_installed_packages()
   2.940  {
   2.941 -	gettext "Installed packages"; echo
   2.942 +	_ 'Installed packages'
   2.943  	separator
   2.944  	list=`ls -1 $INSTALLED | grep -i "$PATTERN"`
   2.945  	num=0
   2.946 -	for pkg in $list
   2.947 -	do
   2.948 +	for pkg in $list; do
   2.949  		EXTRAVERSION=""
   2.950  		[ -f $INSTALLED/$pkg/receipt ] || continue
   2.951  		. $INSTALLED/$pkg/receipt
   2.952 -		emsg "$PACKAGE<i 24> $VERSION$EXTRAVERSION<i 42> $(gettext $CATEGORY)"
   2.953 +		emsg "$PACKAGE<i 24> $VERSION$EXTRAVERSION<i 42> $(_n $CATEGORY)"
   2.954  		num=$(($num+1))
   2.955  	done
   2.956 +
   2.957  	# Set correct ending messages.
   2.958  	if [ x$num == x ]; then
   2.959 -		eval_gettext "No installed packages found for: \$PATTERN"; echo
   2.960 +		_ 'No installed packages found for: $PATTERN'
   2.961  		newline
   2.962  	else
   2.963  		footer "$(eval_ngettext \
   2.964 @@ -943,25 +1045,28 @@
   2.965  	fi
   2.966  }
   2.967  
   2.968 +
   2.969  # Search in packages.list for available pkgs.
   2.970 +
   2.971  search_in_packages_list()
   2.972  {
   2.973 -	gettext "Available packages name-version"; echo
   2.974 +	_ 'Available packages name-version'
   2.975  	separator
   2.976  	num=0
   2.977 +	BPATTERN="$(emsg "<b>$PATTERN</b>")"
   2.978  	for i in $LOCALSTATE/packages.list $LOCALSTATE/undigest/*/packages.list; do
   2.979 -		grep -is "$PATTERN" $i
   2.980 +		grep -is "$PATTERN" $i | sed "s|$PATTERN|$BPATTERN|"
   2.981  		num=$(($num + `grep -is "$PATTERN" $i | wc -l`))
   2.982  	done
   2.983  	if [ ! -f "$LOCALSTATE/packages.list" ]; then
   2.984  		newline
   2.985 -		gettext \
   2.986 +		_ \
   2.987  "No 'packages.list' found to check for mirrored packages. For more results,
   2.988 -please run 'tazpkg recharge' once as root before searching."; echo
   2.989 +please run 'tazpkg recharge' once as root before searching."
   2.990  		newline
   2.991  	fi
   2.992  	if [ "$num" = "0" ]; then
   2.993 -		eval_gettext "No available packages found for: \$PATTERN"; echo
   2.994 +		_ 'No available packages found for: $PATTERN'
   2.995  		newline
   2.996  	else
   2.997  		footer "$(eval_ngettext \
   2.998 @@ -970,11 +1075,13 @@
   2.999  	fi
  2.1000  }
  2.1001  
  2.1002 +
  2.1003  # search --mirror: Search in packages.txt for available pkgs and give more
  2.1004  # info than --list or default.
  2.1005 +
  2.1006  search_in_packages_txt()
  2.1007  {
  2.1008 -	gettext "Matching packages name with version and desc"; echo
  2.1009 +	_ 'Matching packages name with version and desc'
  2.1010  	separator
  2.1011  	num=0
  2.1012  	for i in $LOCALSTATE/packages.txt $LOCALSTATE/undigest/*/packages.txt; do
  2.1013 @@ -983,13 +1090,13 @@
  2.1014  	done
  2.1015  	if [ ! -f "$LOCALSTATE/packages.txt" ]; then
  2.1016  		newline
  2.1017 -		gettext \
  2.1018 +		_ \
  2.1019  "No 'packages.txt' found to check for mirrored packages. For more results,
  2.1020 -please run 'tazpkg recharge' once as root before searching."; echo
  2.1021 +please run 'tazpkg recharge' once as root before searching."
  2.1022  		newline
  2.1023  	fi
  2.1024  	if [ "$num" = "0" ]; then
  2.1025 -		eval_gettext "No available packages found for: \$PATTERN"; echo
  2.1026 +		_ 'No available packages found for: $PATTERN'
  2.1027  		newline
  2.1028  	else
  2.1029  		footer "$(eval_ngettext \
  2.1030 @@ -998,7 +1105,9 @@
  2.1031  	fi
  2.1032  }
  2.1033  
  2.1034 +
  2.1035  # Install package-list from a flavor
  2.1036 +
  2.1037  install_flavor()
  2.1038  {
  2.1039  	check_root $@
  2.1040 @@ -1013,6 +1122,7 @@
  2.1041  	cd $TMP_DIR
  2.1042  	if [ -f $FLAVOR.flavor ] || download $FLAVOR.flavor; then
  2.1043  		zcat < $FLAVOR.flavor | cpio --quiet -i >/dev/null
  2.1044 +
  2.1045  		while read file; do
  2.1046  			for pkg in $(ls -d $INSTALLED/${file%%-*}*); do
  2.1047  				[ -f $pkg/receipt ] || continue
  2.1048 @@ -1024,13 +1134,15 @@
  2.1049  			cd $CACHE_DIR
  2.1050  			download $file.tazpkg
  2.1051  			cd $TMP_DIR
  2.1052 -		        tazpkg install $CACHE_DIR/$file.tazpkg --forced
  2.1053 +			tazpkg install $CACHE_DIR/$file.tazpkg --forced
  2.1054  		done < $FLAVOR.pkglist
  2.1055 +
  2.1056  		[ -f $FLAVOR.nonfree ] && while read pkg; do
  2.1057  			[ -d $INSTALLED/$pkg ] || continue
  2.1058  			[ -d $INSTALLED/get-$pkg ] && tazpkg get-install get-$pkg
  2.1059  			get-$pkg
  2.1060  		done < $FLAVOR.nonfree
  2.1061 +
  2.1062  		[ "$ARG" == "--purge" ] && for pkg in $(ls $INSTALLED); do
  2.1063  			[ -f $INSTALLED/$pkg/receipt ] || continue
  2.1064  			EXTRAVERSION=""
  2.1065 @@ -1040,13 +1152,15 @@
  2.1066  			tazpkg remove $PACKAGE
  2.1067  		done
  2.1068  	else
  2.1069 -		eval_gettext "Can't find flavor \$FLAVOR. Abort."; echo
  2.1070 +		_ "Can't find flavor \$FLAVOR. Abort."
  2.1071  	fi
  2.1072  	cd $TOP_DIR
  2.1073  	rm -rf $TMP_DIR
  2.1074  }
  2.1075  
  2.1076 +
  2.1077  # Update mirror urls
  2.1078 +
  2.1079  setup_mirror()
  2.1080  {
  2.1081  	# Backup old list.
  2.1082 @@ -1055,11 +1169,11 @@
  2.1083  	fi
  2.1084  	title 'Current mirror(s)'
  2.1085  	echo "  `cat $1/mirror 2> /dev/null`"
  2.1086 -	gettext \
  2.1087 +	_ \
  2.1088  "Please enter URL of the new mirror (http, ftp or local path). You must specify
  2.1089 -the complete address to the directory of the packages and packages.list file."; echo
  2.1090 +the complete address to the directory of the packages and packages.list file."
  2.1091  	newline
  2.1092 -	gettext "New mirror(s) URL: "
  2.1093 +	_n 'New mirror(s) URL: '
  2.1094  	NEW_MIRROR_URL=$2
  2.1095  	if [ -n "$NEW_MIRROR_URL" ]; then
  2.1096  		echo $NEW_MIRROR_URL
  2.1097 @@ -1067,9 +1181,9 @@
  2.1098  		read NEW_MIRROR_URL
  2.1099  	fi
  2.1100  	if [ "$NEW_MIRROR_URL" = "" ]; then
  2.1101 -		gettext "Nothing has been changed."; echo
  2.1102 +		_ 'Nothing has been changed.'
  2.1103  	else
  2.1104 -		eval_gettext "Setting mirror(s) to: \$NEW_MIRROR_URL"; echo
  2.1105 +		_ 'Setting mirror(s) to: $NEW_MIRROR_URL'
  2.1106  		rm -f $1/mirror
  2.1107  		for i in $NEW_MIRROR_URL; do
  2.1108  			echo "${i%/}/" >> $1/mirror
  2.1109 @@ -1078,33 +1192,37 @@
  2.1110  	newline
  2.1111  }
  2.1112  
  2.1113 +
  2.1114  # recursive dependencies scan
  2.1115 +
  2.1116  dep_scan()
  2.1117  {
  2.1118 -for i in $1; do
  2.1119 -	case " $ALL_DEPS " in
  2.1120 -	*\ $i\ *) continue;;
  2.1121 -	esac
  2.1122 -	ALL_DEPS="$ALL_DEPS $i"
  2.1123 -	[ -n "$2" ] && echo "$2$i ($(fgrep -A 3 $i $LOCALSTATE/packages.txt \
  2.1124 -				     | tail -1 | sed 's/.*(\([^ ]*\).*/\1/'))"
  2.1125 -	[ -f $i/receipt ] || continue
  2.1126 -	DEPENDS=""
  2.1127 -	. $i/receipt
  2.1128 -	[ -n "$DEPENDS" ] && dep_scan "$DEPENDS" "$2  "
  2.1129 -done
  2.1130 +	for i in $1; do
  2.1131 +		case " $ALL_DEPS " in
  2.1132 +			*\ $i\ *) continue;;
  2.1133 +		esac
  2.1134 +		ALL_DEPS="$ALL_DEPS $i"
  2.1135 +		[ -n "$2" ] && echo "$2$i ($(fgrep -A 3 $i $LOCALSTATE/packages.txt | \
  2.1136 +						tail -1 | sed 's/.*(\([^ ]*\).*/\1/'))"
  2.1137 +		[ -f $i/receipt ] || continue
  2.1138 +		DEPENDS=""
  2.1139 +		. $i/receipt
  2.1140 +		[ -n "$DEPENDS" ] && dep_scan "$DEPENDS" "$2  "
  2.1141 +	done
  2.1142  }
  2.1143  
  2.1144 +
  2.1145  # recursive reverse dependencies scan
  2.1146 +
  2.1147  rdep_scan()
  2.1148  {
  2.1149 -SEARCH=$1
  2.1150 -
  2.1151 -for i in * ; do
  2.1152 -	DEPENDS=""
  2.1153 -	. $i/receipt
  2.1154 -	echo "$i $(echo $DEPENDS)"
  2.1155 -done | busybox awk -v search=$SEARCH '
  2.1156 +	SEARCH=$1
  2.1157 +
  2.1158 +	for i in * ; do
  2.1159 +		DEPENDS=""
  2.1160 +		. $i/receipt
  2.1161 +		echo "$i $(echo $DEPENDS)"
  2.1162 +	done | busybox awk -v search=$SEARCH '
  2.1163  function show_deps(deps, all_deps, pkg, space)
  2.1164  {
  2.1165  	if (all_deps[pkg] == 1) return
  2.1166 @@ -1125,27 +1243,33 @@
  2.1167  	show_deps(deps, all_deps, search, "")
  2.1168  }
  2.1169  ' | while read spc pkg; do
  2.1170 -	echo -n $spc | sed 's/=/ /g'
  2.1171 -	echo -n $pkg
  2.1172 -	echo -n ' ('
  2.1173 -	fgrep -A 3 $pkg $LOCALSTATE/packages.txt  | tail -1 | \
  2.1174 -				    sed 's/.*(\([^ ]*\).*/\1)/'
  2.1175 -done
  2.1176 +		echo -n $spc | sed 's/=/ /g'
  2.1177 +		echo -n $pkg
  2.1178 +		echo -n ' ('
  2.1179 +		fgrep -A 3 $pkg $LOCALSTATE/packages.txt  | tail -1 | \
  2.1180 +			sed 's/.*(\([^ ]*\).*/\1)/'
  2.1181 +	done
  2.1182  }
  2.1183  
  2.1184 +
  2.1185  # Check for ELF file
  2.1186 +
  2.1187  is_elf()
  2.1188  {
  2.1189  	[ "$(dd if=$1 bs=1 skip=1 count=3 2> /dev/null)" = "ELF" ]
  2.1190  }
  2.1191  
  2.1192 +
  2.1193  # Print shared library dependencies
  2.1194 +
  2.1195  ldd()
  2.1196  {
  2.1197  	LD_TRACE_LOADED_OBJECTS=1 /lib/ld*.so $1 2> /dev/null
  2.1198  }
  2.1199  
  2.1200 +
  2.1201  # search dependencies for files in $TMP_DIR/$file/fs
  2.1202 +
  2.1203  find_depends()
  2.1204  {
  2.1205  	DEFAULT_DEPENDS="glibc-base gcc-lib-base"
  2.1206 @@ -1153,58 +1277,69 @@
  2.1207  	[ -n "$TMPLOCALSTATE" ] || TMPLOCALSTATE=$LOCALSTATE
  2.1208  	[ -f $TMPLOCALSTATE/files.list.lzma ] || tazpkg recharge > /dev/null
  2.1209  	for i in $TMPLOCALSTATE/files.list.lzma \
  2.1210 - 		$TMPLOCALSTATE/undigest/*/files.list.lzma ; do
  2.1211 - 		[ -f $i ] && lzma d $i -so >> $TMP_DIR/files.list
  2.1212 +		$TMPLOCALSTATE/undigest/*/files.list.lzma ; do
  2.1213 +		[ -f $i ] && lzma d $i -so >> $TMP_DIR/files.list
  2.1214  	done
  2.1215 -	find ${1:-$TMP_DIR/$file/fs} -type f | while read chkfile ; do
  2.1216 +
  2.1217 +	find ${1:-$TMP_DIR/$file/fs} -type f | \
  2.1218 +	while read chkfile ; do
  2.1219  		is_elf $chkfile || continue
  2.1220  		case "$chkfile" in
  2.1221 -		*.o|*.ko|*.ko.gz) continue;;
  2.1222 +			*.o|*.ko|*.ko.gz) continue;;
  2.1223  		esac
  2.1224 -		ldd $chkfile | while read lib rem; do
  2.1225 +
  2.1226 +		ldd $chkfile | \
  2.1227 +		while read lib rem; do
  2.1228  			case "$lib" in
  2.1229 -			statically|linux-gate.so*|ld-*.so|*/ld-*.so)
  2.1230 -				continue;;
  2.1231 +				statically|linux-gate.so*|ld-*.so|*/ld-*.so) continue;;
  2.1232  			esac
  2.1233  			find ${1:-$TMP_DIR/$file/fs} | grep -q /$lib$ && continue
  2.1234 +
  2.1235  			for dep in $(fgrep $lib files.list | cut -d: -f1); do
  2.1236  				case " $DEFAULT_DEPENDS " in
  2.1237 -				*\ $dep\ *) continue 2;;
  2.1238 +					*\ $dep\ *) continue 2;;
  2.1239  				esac
  2.1240  				grep -qs "^$dep$" $TMP_DIR/depends && continue 2
  2.1241  			done
  2.1242 +
  2.1243  			if [ -n "$dep" ]; then
  2.1244  				echo "$dep" >> $TMP_DIR/depends
  2.1245  			else
  2.1246  				grep -qs ^$lib$ $TMP_DIR/unresolved ||
  2.1247 -				echo "$lib" >> $TMP_DIR/unresolved
  2.1248 +					echo "$lib" >> $TMP_DIR/unresolved
  2.1249  			fi
  2.1250  		done
  2.1251  	done
  2.1252 +
  2.1253  	spc=""
  2.1254 -	sort < $TMP_DIR/depends 2> /dev/null | uniq | while read file; do
  2.1255 +	sort < $TMP_DIR/depends 2> /dev/null | uniq | \
  2.1256 +	while read file; do
  2.1257  		echo -n "$spc$file"
  2.1258  		spc=" "
  2.1259  	done
  2.1260  }
  2.1261  
  2.1262 +
  2.1263  show_unresolved_lib()
  2.1264  {
  2.1265  	if [ -s $TMP_DIR/unresolved ]; then
  2.1266  		echo -e "BUGS=\"`gettext \"No dependency for\"`" >> $1
  2.1267 -		sort < $TMP_DIR/unresolved | uniq | while read file; do
  2.1268 -			eval_gettext "WARNING: unknown dependency for \$lib"; echo
  2.1269 +		sort < $TMP_DIR/unresolved | uniq | \
  2.1270 +		while read file; do
  2.1271 +			_ 'WARNING: unknown dependency for $lib'
  2.1272  			echo -n " $file" >> $1
  2.1273  		done
  2.1274  		echo "\"" >> $1
  2.1275  	fi
  2.1276  }
  2.1277  
  2.1278 +
  2.1279  # convert a .tar.bz2 package to .tazpkg
  2.1280 +
  2.1281  convert_upkg()
  2.1282  {
  2.1283  	mkdir -p $TMP_DIR/fs
  2.1284 -	tar xjf $PACKAGE_FILE -C $TMP_DIR/fs 	
  2.1285 +	tar xjf $PACKAGE_FILE -C $TMP_DIR/fs
  2.1286  	if [ -d $TMP_DIR/fs/var/lib/upkg/packages ]; then
  2.1287  		cd $TMP_DIR
  2.1288  		package="$(sed '/^Package:/!d;s/.*: //' fs/var/lib/upkg/packages/*.info)"
  2.1289 @@ -1246,13 +1381,15 @@
  2.1290  		tazpkg pack $file
  2.1291  		mv $TMP_DIR/$file.tazpkg $TOP_DIR
  2.1292  	else
  2.1293 -		eval_gettext "\$PACKAGE_FILE does not look like an upkg package!"; echo
  2.1294 +		_ '$PACKAGE_FILE does not look like an upkg package!'
  2.1295  	fi
  2.1296  	cd $TOP_DIR
  2.1297  	rm -rf $TMP_DIR
  2.1298  }
  2.1299  
  2.1300 +
  2.1301  # convert a .spack package to .tazpkg
  2.1302 +
  2.1303  convert_spack()
  2.1304  {
  2.1305  	mkdir -p $TMP_DIR
  2.1306 @@ -1299,7 +1436,9 @@
  2.1307  	rm -rf $TMP_DIR
  2.1308  }
  2.1309  
  2.1310 +
  2.1311  # convert a .ipk package to .tazpkg
  2.1312 +
  2.1313  convert_ipk()
  2.1314  {
  2.1315  	mkdir -p $TMP_DIR
  2.1316 @@ -1314,8 +1453,7 @@
  2.1317  	i386|all)
  2.1318  		file=$package-$version
  2.1319  		mkdir -p $TMP_DIR/$file/fs
  2.1320 -		tar xOzf $PACKAGE_FILE ./data.tar.gz | \
  2.1321 -			tar xzf - -C $TMP_DIR/$file/fs
  2.1322 +		tar xOzf $PACKAGE_FILE ./data.tar.gz | tar xzf - -C $TMP_DIR/$file/fs
  2.1323  		cd $TMP_DIR
  2.1324  		cat > $file/receipt <<EOT
  2.1325  # SliTaz package receipt.
  2.1326 @@ -1360,13 +1498,15 @@
  2.1327  		mv $TMP_DIR/$file.tazpkg .
  2.1328  		;;
  2.1329  	*)
  2.1330 -		eval_gettext "Invalid target: \$target (expected i386)"; echo
  2.1331 +		_ 'Invalid target: $target (expected i386)'
  2.1332  		;;
  2.1333  	esac
  2.1334  	rm -rf $TMP_DIR
  2.1335  }
  2.1336  
  2.1337 +
  2.1338  # convert a .pkg.tar.gz/.pkg.tar.xz/.apk package to .tazpkg
  2.1339 +
  2.1340  convert_arch()
  2.1341  {
  2.1342  	mkdir -p $TMP_DIR/fs
  2.1343 @@ -1397,13 +1537,15 @@
  2.1344  		tazpkg pack $file
  2.1345  		mv $file.tazpkg $TOP_DIR
  2.1346  	else
  2.1347 -		eval_gettext "\$PACKAGE_FILE does not look like an Archlinux/Alpine package!"; echo
  2.1348 +		_ '$PACKAGE_FILE does not look like an Archlinux/Alpine package!'
  2.1349  	fi
  2.1350  	cd $TOP_DIR
  2.1351  	rm -rf $TMP_DIR
  2.1352  }
  2.1353  
  2.1354 +
  2.1355  # get package and version from PACKAGE_FILE
  2.1356 +
  2.1357  parse_pkgname()
  2.1358  {
  2.1359  	package=$(basename ${2:-$PACKAGE_FILE} $1)
  2.1360 @@ -1420,6 +1562,7 @@
  2.1361  	mkdir $file
  2.1362  }
  2.1363  
  2.1364 +
  2.1365  finish_convert_puppy()
  2.1366  {
  2.1367  	rm -f fs/*.specs
  2.1368 @@ -1455,12 +1598,14 @@
  2.1369  	rm -rf $TMP_DIR
  2.1370  }
  2.1371  
  2.1372 +
  2.1373  # convert a .sfs package to .tazpkg
  2.1374 +
  2.1375  convert_sfs()
  2.1376  {
  2.1377  	[ -n "$(which unsquashfs)" ] || tazpkg get-install squashfs 
  2.1378  	if ! unsquashfs -l $PACKAGE_FILE | grep -q squashfs-root/pet.specs$ ; then
  2.1379 -		eval_gettext "\$PACKAGE_FILE does not look like a Puppy package!"; echo
  2.1380 +		_ '$PACKAGE_FILE does not look like a Puppy package!'
  2.1381  		return 1
  2.1382  	fi
  2.1383  	mkdir -p $TMP_DIR 
  2.1384 @@ -1473,7 +1618,9 @@
  2.1385  	finish_convert_puppy
  2.1386  }
  2.1387  
  2.1388 +
  2.1389  # convert a .pet package to .tazpkg
  2.1390 +
  2.1391  convert_pet()
  2.1392  {
  2.1393  	mkdir -p $TMP_DIR 
  2.1394 @@ -1486,12 +1633,14 @@
  2.1395  	finish_convert_puppy
  2.1396  }
  2.1397  
  2.1398 +
  2.1399  # convert a .sb package to .tazpkg
  2.1400 +
  2.1401  convert_sb()
  2.1402  {
  2.1403  	[ -n "$(which unsquashfs)" ] || tazpkg get-install squashfs 
  2.1404  	if ! unsquashfs -l $PACKAGE_FILE | grep -q squashfs-root/var/log/removed_scripts ; then
  2.1405 -		eval_gettext "\$PACKAGE_FILE does not look like a Slax package!"; echo
  2.1406 +		_ '$PACKAGE_FILE does not look like a Slax package!'
  2.1407  		return 1
  2.1408  	fi
  2.1409  	mkdir -p $TMP_DIR 
  2.1410 @@ -1530,7 +1679,9 @@
  2.1411  	rm -rf $TMP_DIR
  2.1412  }
  2.1413  
  2.1414 +
  2.1415  # convert a .tgz package to .tazpkg
  2.1416 +
  2.1417  convert_tgz()
  2.1418  {
  2.1419  	parse_pkgname
  2.1420 @@ -1569,13 +1720,15 @@
  2.1421  		tazpkg pack $file
  2.1422  		mv $file.tazpkg $TOP_DIR
  2.1423  	else
  2.1424 -		eval_gettext "\$PACKAGE_FILE does not look like a Slackware package!"; echo
  2.1425 +		_ '$PACKAGE_FILE does not look like a Slackware package!'
  2.1426  	fi
  2.1427  	cd $TOP_DIR
  2.1428  	rm -rf $TMP_DIR
  2.1429  }
  2.1430  
  2.1431 +
  2.1432  # convert a .deb package to .tazpkg
  2.1433 +
  2.1434  convert_deb()
  2.1435  {
  2.1436  	mkdir -p $TMP_DIR
  2.1437 @@ -1624,14 +1777,16 @@
  2.1438  		mv $file.tazpkg $TOP_DIR
  2.1439  		;;
  2.1440  	*)
  2.1441 -		eval_gettext "Invalid target: \$target (expected i386)"; echo
  2.1442 +		_ 'Invalid target: $target (expected i386)'
  2.1443  		;;
  2.1444  	esac
  2.1445  	cd $TOP_DIR
  2.1446  	rm -rf $TMP_DIR
  2.1447  }
  2.1448  
  2.1449 +
  2.1450  # convert a .rpm package to .tazpkg
  2.1451 +
  2.1452  convert_rpm()
  2.1453  {
  2.1454  	mkdir -p $TMP_DIR
  2.1455 @@ -1673,8 +1828,8 @@
  2.1456  	# rpm2cpio can't extract some new RPMs
  2.1457  	if [ $? == 1 ]; then
  2.1458  		if [ ! -e $INSTALLED/p7zip-full/receipt ]; then
  2.1459 -			boldify $(gettext "Unable to extract the RPM using standard tools (rpm2cpio).")
  2.1460 -			gettext "Do you want to install 'p7zip-full' package" && confirm
  2.1461 +			boldify $(_ 'Unable to extract the RPM using standard tools (rpm2cpio).')
  2.1462 +			_n "Do you want to install 'p7zip-full' package"; confirm
  2.1463  			if [ $? = 0 ]; then
  2.1464  				tazpkg -gi p7zip-full
  2.1465  			else
  2.1466 @@ -1696,6 +1851,7 @@
  2.1467  	rm -rf $TMP_DIR
  2.1468  }
  2.1469  
  2.1470 +
  2.1471  update_desktop_database()
  2.1472  {
  2.1473  	if [ -f $1/usr/bin/update-desktop-database ] && [ -n "$updatedesktopdb" ]; then
  2.1474 @@ -1703,6 +1859,7 @@
  2.1475  	fi
  2.1476  }
  2.1477  
  2.1478 +
  2.1479  update_mime_database()
  2.1480  {
  2.1481  	if [ -f $1/usr/bin/update-mime-database ] && [ -n "$updatemimedb" ]; then
  2.1482 @@ -1710,6 +1867,7 @@
  2.1483  	fi
  2.1484  }
  2.1485  
  2.1486 +
  2.1487  update_icon_database()
  2.1488  {
  2.1489  	if [ -f $1/usr/bin/gtk-update-icon-cache ] && [ -n "$updateicondb" ]; then
  2.1490 @@ -1717,6 +1875,7 @@
  2.1491  	fi
  2.1492  }
  2.1493  
  2.1494 +
  2.1495  compile_glib_schemas()
  2.1496  {
  2.1497  	if [ -f $1/usr/bin/glib-compile-schemas ] && [ -n "$compile_schemas" ]; then
  2.1498 @@ -1724,6 +1883,7 @@
  2.1499  	fi
  2.1500  }
  2.1501  
  2.1502 +
  2.1503  update_kernel_modules()
  2.1504  {
  2.1505  	if [ -f $1/sbin/depmod ] && [ -n "$updatedepmod" ]; then
  2.1506 @@ -1731,6 +1891,10 @@
  2.1507  	fi
  2.1508  }
  2.1509  
  2.1510 +
  2.1511 +
  2.1512 +
  2.1513 +
  2.1514  ###################
  2.1515  # TazPKG commands #
  2.1516  ###################
  2.1517 @@ -1738,35 +1902,36 @@
  2.1518  case "$COMMAND" in
  2.1519  	list|-l)
  2.1520  		shift
  2.1521 +
  2.1522  		# List all installed packages or a specific category.
  2.1523  		if [ "$1" = "blocked" ]; then
  2.1524  			title 'Blocked packages'
  2.1525  			if [ -s "$BLOCKED" ];then
  2.1526  				cat $BLOCKED
  2.1527  			else
  2.1528 -				gettext "No blocked packages found."; echo
  2.1529 +				_ 'No blocked packages found.'
  2.1530  			fi
  2.1531 -			newline && exit 0
  2.1532 +			newline; exit 0
  2.1533  		fi
  2.1534 +
  2.1535  		# Display the list of categories.
  2.1536  		if [ "$1" = "cat" -o "$1" = "categories" ]; then
  2.1537  			title 'Packages categories'
  2.1538  			num=0
  2.1539 -			for i in $PKGS_CATEGORIES
  2.1540 -			do
  2.1541 -				gettext $i; echo
  2.1542 +			for i in $PKGS_CATEGORIES; do
  2.1543 +				_ $i
  2.1544  				num=$(($num+1))
  2.1545  			done
  2.1546  			footer "$(eval_ngettext '$num category' '$num categories' $num)"; echo
  2.1547  			exit 0
  2.1548  		fi
  2.1549 +
  2.1550  		# Check for an asked category.
  2.1551  		ASKED_CATEGORY_I18N="$@"
  2.1552  		if [ -n "$ASKED_CATEGORY_I18N" ]; then
  2.1553  			ASKED_CATEGORY=$(reverse_translate_category "$ASKED_CATEGORY_I18N")
  2.1554  			title 'Installed packages of category: $ASKED_CATEGORY_I18N'
  2.1555 -			for pkg in $INSTALLED/*
  2.1556 -			do
  2.1557 +			for pkg in $INSTALLED/*; do
  2.1558  				[ -f $pkg/receipt ] || continue
  2.1559  				EXTRAVERSION=""
  2.1560  				. $pkg/receipt
  2.1561 @@ -1781,14 +1946,14 @@
  2.1562  				'$num packages installed of category $cat_name.' \
  2.1563  				$packages))"; echo
  2.1564  		else
  2.1565 +
  2.1566  			# By default list all packages and versions.
  2.1567  			title 'List of all installed packages'
  2.1568 -			for pkg in $INSTALLED/*
  2.1569 -			do
  2.1570 +			for pkg in $INSTALLED/*; do
  2.1571  				[ -f $pkg/receipt ] || continue
  2.1572  				EXTRAVERSION=""
  2.1573  				. $pkg/receipt
  2.1574 -				echo -e "$PACKAGE\033[35G $VERSION$EXTRAVERSION\033[53G $(gettext $CATEGORY)"
  2.1575 +				echo -e "$PACKAGE\033[35G $VERSION$EXTRAVERSION\033[53G $(_ $CATEGORY)"
  2.1576  				packages=$(($packages+1))
  2.1577  			done
  2.1578  			num="<c 32>$packages</c>"
  2.1579 @@ -1796,6 +1961,8 @@
  2.1580  				'$num package installed.' \
  2.1581  				'$num packages installed.' $packages))"
  2.1582  		fi ;;
  2.1583 +
  2.1584 +
  2.1585  	list-mirror|-lm)
  2.1586  		# List all available packages on the mirror. Option --diff displays
  2.1587  		# last mirrored packages diff (see recharge).
  2.1588 @@ -1811,10 +1978,10 @@
  2.1589  						'$num new packages listed on the mirror.' $num)"
  2.1590  				else
  2.1591  					newline
  2.1592 -					gettext "Unable to list anything, no packages.diff found."; echo
  2.1593 -					gettext "Recharge your current list to create a first diff."; echo
  2.1594 +					_ 'Unable to list anything, no packages.diff found.'
  2.1595 +					_ 'Recharge your current list to create a first diff.'
  2.1596  					newline
  2.1597 -				fi && exit 0 ;;
  2.1598 +				fi; exit 0 ;;
  2.1599  			--text|--txt|--raw|*)
  2.1600  				title 'List of available packages on the mirror'
  2.1601  				cat $LOCALSTATE/packages.txt ;;
  2.1602 @@ -1825,6 +1992,8 @@
  2.1603  			'$num package in the last recharged list.' \
  2.1604  			'$num packages in the last recharged list.' $pkgs)"
  2.1605  		;;
  2.1606 +
  2.1607 +
  2.1608  	list-files|-lf)
  2.1609  		# List files installed with the package.
  2.1610  		check_for_package_on_cmdline
  2.1611 @@ -1837,6 +2006,8 @@
  2.1612  			'$num file installed with $PACKAGE' \
  2.1613  			'$num files installed with $PACKAGE' $files)"
  2.1614  		;;
  2.1615 +
  2.1616 +
  2.1617  	info)
  2.1618  		# Information about package.
  2.1619  		check_for_package_on_cmdline
  2.1620 @@ -1850,19 +2021,20 @@
  2.1621  			[ "x$LOCDESC" != "x" ] && SHORT_DESC="$LOCDESC"
  2.1622  		fi
  2.1623  		emsg "\
  2.1624 -<b>$(gettext 'Package    :')</b> $PACKAGE
  2.1625 -<b>$(gettext 'Version    :')</b> $VERSION$EXTRAVERSION
  2.1626 -<b>$(gettext 'Category   :')</b> $(gettext $CATEGORY)
  2.1627 -<b>$(gettext 'Short desc :')</b> $SHORT_DESC
  2.1628 -<b>$(gettext 'Maintainer :')</b> $MAINTAINER"
  2.1629 -		[ "$LICENSE" ] && emsg "<b>$(gettext 'License    :')</b> $LICENSE"
  2.1630 -		[ "$DEPENDS" ] && emsg "<b>$(gettext 'Depends    :')</b> $DEPENDS"
  2.1631 -		[ "$SUGGESTED" ] &&	emsg "<b>$(gettext 'Suggested  :')</b> $SUGGESTED"
  2.1632 -		[ "$BUILD_DEPENDS" ] &&	emsg "<b>$(gettext 'Build deps :')</b> $BUILD_DEPENDS"
  2.1633 -		[ "$WANTED" ] && emsg "<b>$(gettext 'Wanted src :')</b> $WANTED"
  2.1634 -		[ "$WEB_SITE" ] && emsg "<b>$(gettext 'Web site   :')</b> $WEB_SITE"
  2.1635 +<b>$(_ 'Package    :')</b> $PACKAGE
  2.1636 +<b>$(_ 'Version    :')</b> $VERSION$EXTRAVERSION
  2.1637 +<b>$(_ 'Category   :')</b> $(_ $CATEGORY)
  2.1638 +<b>$(_ 'Short desc :')</b> $SHORT_DESC
  2.1639 +<b>$(_ 'Maintainer :')</b> $MAINTAINER"
  2.1640 +		[ -n "$LICENSE" ]       && emsg "<b>$(_ 'License    :')</b> $LICENSE"
  2.1641 +		[ -n "$DEPENDS" ]       && emsg "<b>$(_ 'Depends    :')</b> $DEPENDS"
  2.1642 +		[ -n "$SUGGESTED" ]     && emsg "<b>$(_ 'Suggested  :')</b> $SUGGESTED"
  2.1643 +		[ -n "$BUILD_DEPENDS" ] && emsg "<b>$(_ 'Build deps :')</b> $BUILD_DEPENDS"
  2.1644 +		[ -n "$WANTED" ]        && emsg "<b>$(_ 'Wanted src :')</b> $WANTED"
  2.1645 +		[ -n "$WEB_SITE" ]      && emsg "<b>$(_ 'Web site   :')</b> $WEB_SITE"
  2.1646  		footer ;;
  2.1647 -	
  2.1648 +
  2.1649 +
  2.1650  	desc)
  2.1651  		# Display package description.txt if available.
  2.1652  		if [ -f "$INSTALLED/$PACKAGE/description.txt" ]; then
  2.1653 @@ -1871,36 +2043,39 @@
  2.1654  			footer
  2.1655  		else
  2.1656  			newline
  2.1657 -			gettext "Sorry, no description available for this package."; echo
  2.1658 +			_ 'Sorry, no description available for this package.'
  2.1659  			newline
  2.1660  		fi ;;
  2.1661 -	
  2.1662 +
  2.1663 +
  2.1664  	activity|log|-a)
  2.1665  		# Show activity log
  2.1666  		[ "$nb" ] || nb=18
  2.1667  		title 'TazPKG Activity'
  2.1668  		IFS=" "
  2.1669 -		tail -n ${nb} ${LOG} | while read date hour none action none pkg vers none
  2.1670 -		do
  2.1671 -			case "$action" in
  2.1672 +		tail -n ${nb} ${LOG} | \
  2.1673 +		while read date hour none action none pkg vers none; do
  2.1674 +			case $action in
  2.1675  				Installed)
  2.1676 -					echo "$date $hour : $(colorize 32 $action) $pkg $vers" ;;
  2.1677 +					action=$(colorize 32 $action) ;;
  2.1678  				Removed)
  2.1679 -					echo "$date $hour : $(colorize 31 $action) $pkg $vers" ;;
  2.1680 +					action=$(colorize 31 $action) ;;
  2.1681  				*)
  2.1682 -					echo "$date $hour : $(boldify $action) $pkg $vers" ;;
  2.1683 +					action=$(boldify $action) ;;
  2.1684  			esac
  2.1685 -		done 
  2.1686 -		unset IFS 
  2.1687 -		separator && newline ;;
  2.1688 -	
  2.1689 +			echo "$date $hour : $action $pkg $vers"
  2.1690 +		done
  2.1691 +		unset IFS
  2.1692 +		footer ;;
  2.1693 +
  2.1694 +
  2.1695  	search|-s)
  2.1696  		# Search for a package by pattern or name.
  2.1697  		PATTERN="$2"
  2.1698  		if [ -z "$PATTERN" ]; then
  2.1699  			newline
  2.1700 -			gettext "Please specify a pattern or package name to search for."; echo
  2.1701 -			echo "$(gettext 'Example:') 'tazpkg search paint'"
  2.1702 +			_ 'Please specify a pattern or package name to search for.'
  2.1703 +			echo "$(_ 'Example:') 'tazpkg search paint'"
  2.1704  			newline
  2.1705  			exit 0
  2.1706  		fi
  2.1707 @@ -1917,13 +2092,14 @@
  2.1708  				search_in_installed_packages
  2.1709  				search_in_packages_list ;;
  2.1710  		esac ;;
  2.1711 -	
  2.1712 +
  2.1713 +
  2.1714  	search-file|-sf)
  2.1715  		# Search for a file by pattern or name in all files.list.
  2.1716  		if [ -z "$2" ]; then
  2.1717  			newline
  2.1718 -			gettext "Please specify a pattern or file name to search for."; echo
  2.1719 -			echo "$(gettext 'Example:') 'tazpkg search-file libnss'"
  2.1720 +			_ 'Please specify a pattern or file name to search for.'
  2.1721 +			echo "$(_ 'Example:') 'tazpkg search-file libnss'"
  2.1722  			newline
  2.1723  			exit 0
  2.1724  		fi
  2.1725 @@ -1934,8 +2110,8 @@
  2.1726  
  2.1727  			match=0
  2.1728  			for i in $LOCALSTATE/files.list.lzma \
  2.1729 -				 $LOCALSTATE/undigest/*/files.list.lzma; do
  2.1730 -				 [ -f $i ] || continue
  2.1731 +				$LOCALSTATE/undigest/*/files.list.lzma; do
  2.1732 +				[ -f $i ] || continue
  2.1733  				unlzma -c $i | grep -- ".*:.*$2" | awk '
  2.1734  					BEGIN { last="" }
  2.1735  					{
  2.1736 @@ -1954,12 +2130,11 @@
  2.1737  
  2.1738  			# Check all pkg files.list in search match which specify the package
  2.1739  			# name and the full path to the file(s).
  2.1740 -			for pkg in $INSTALLED/*
  2.1741 -			do
  2.1742 +			for pkg in $INSTALLED/*; do
  2.1743  				if grep -qs "$2" $pkg/files.list; then
  2.1744  					. $pkg/receipt
  2.1745  					newline
  2.1746 -					boldify "$(eval_gettext 'Package $PACKAGE:')"
  2.1747 +					boldify "$(_ 'Package $PACKAGE:')"
  2.1748  					grep "$2" $pkg/files.list
  2.1749  					files=`grep $2 $pkg/files.list | wc -l`
  2.1750  					match=$(($match+$files))
  2.1751 @@ -1969,7 +2144,8 @@
  2.1752  		fi
  2.1753  		pkg=$2
  2.1754  		if [ "$match" = "" ]; then
  2.1755 -			eval_gettext "0 file found for: \$pkg"; echo
  2.1756 +			# FIXME
  2.1757 +			_ '0 files found for: $pkg'
  2.1758  		else
  2.1759  			num=$(emsg "<c 32>$files</c>")
  2.1760  			footer "$(eval_ngettext \
  2.1761 @@ -1977,12 +2153,14 @@
  2.1762  				'$num files found for: $pkg' $match)"
  2.1763  		fi
  2.1764  		;;
  2.1765 +
  2.1766 +
  2.1767  	search-pkgname)
  2.1768  		# Search for a package name
  2.1769  		if [ -z "$2" ]; then
  2.1770  			newline
  2.1771 -			gettext "Please specify a pattern or file name to search for."; echo
  2.1772 -			echo "$(gettext 'Example:') 'tazpkg search-pkgname libnss'"
  2.1773 +			_ 'Please specify a pattern or file name to search for.'
  2.1774 +			echo "$(_ 'Example:') 'tazpkg search-pkgname libnss'"
  2.1775  			newline
  2.1776  			exit 0
  2.1777  		fi
  2.1778 @@ -1999,7 +2177,7 @@
  2.1779  		done
  2.1780  		file=$2
  2.1781  		if [ "$match" = "0" ]; then
  2.1782 -			eval_gettext "No file found for: \$file"; echo
  2.1783 +			_ 'No file found for: $file'
  2.1784  			newline
  2.1785  		else
  2.1786  			num=$(emsg "<c 32>$files</c>")
  2.1787 @@ -2008,6 +2186,8 @@
  2.1788  				'$num packages found with file: $file' $match)"
  2.1789  		fi
  2.1790  		;;
  2.1791 +
  2.1792 +
  2.1793  	install|-i)
  2.1794  		# Install .tazpkg packages.
  2.1795  		check_root $@
  2.1796 @@ -2039,23 +2219,25 @@
  2.1797  		update_mime_database $ROOT
  2.1798  		update_icon_database $ROOT
  2.1799  		compile_glib_schemas $ROOT ;;
  2.1800 +
  2.1801 +
  2.1802  	install-list|get-install-list)
  2.1803  		# Install a set of packages from a list.
  2.1804  		check_root $@
  2.1805  		if [ -z "$2" ]; then
  2.1806  			newline
  2.1807 -			gettext \
  2.1808 +			_ \
  2.1809  "Please change directory (cd) to the packages repository and specify the
  2.1810  list of packages to install. Example: tazpkg install-list packages.list"
  2.1811 -			newline && exit 0
  2.1812 +			exit 0
  2.1813  		fi
  2.1814  		# Check if the packages list exist.
  2.1815  		list_file=$2
  2.1816  		if [ ! -f "$list_file" ]; then
  2.1817 -			eval_gettext "Unable to find: \$list_file"; echo
  2.1818 +			_ 'Unable to find: $list_file'
  2.1819  			exit 0
  2.1820  		else
  2.1821 -			LIST=`cat $2`
  2.1822 +			LIST=$(cat $2)
  2.1823  		fi
  2.1824  
  2.1825  		# Remember processed list
  2.1826 @@ -2075,31 +2257,36 @@
  2.1827  			   slitaz-base-files tazpkg ; do
  2.1828  			pkg=$(egrep $pkg-[0-9] $INSTALL_LIST)
  2.1829  			[ -n "$pkg" ] || continue
  2.1830 -			eval_gettext "Adding implicit depends \$pkg..."; echo
  2.1831 +			_ 'Adding implicit depends $pkg...'
  2.1832  			LIST="$pkg
  2.1833  $LIST"
  2.1834  		done
  2.1835  
  2.1836 -		for pkg in $LIST
  2.1837 -		do
  2.1838 +		for pkg in $LIST; do
  2.1839  			grep -qs ^$pkg$ $2-processed && continue
  2.1840  			[ -d "$root/var/lib/tazpkg/installed" ] && continue
  2.1841  			tazpkg $COMMAND $pkg --list="$2" "$3" "$4" "$5"
  2.1842  		done
  2.1843  		rm -f $2-processed ;;
  2.1844 +
  2.1845 +
  2.1846  	add-flavor)
  2.1847  		# Install a set of packages from a flavor.
  2.1848  		install_flavor $2 ;;
  2.1849 +
  2.1850 +
  2.1851  	install-flavor)
  2.1852  		# Install a set of packages from a flavor and purge other ones.
  2.1853  		install_flavor $2 --purge ;;
  2.1854 +
  2.1855 +
  2.1856  	set-release)
  2.1857  		# Change current release and upgrade packages.
  2.1858  		RELEASE=$2
  2.1859  		if [ -z "$RELEASE" ]; then
  2.1860  			newline
  2.1861 -			gettext "Please specify the release you want on the command line."; echo
  2.1862 -			echo "$(gettext 'Example:') tazpkg set-release cooking"
  2.1863 +			_ 'Please specify the release you want on the command line.'
  2.1864 +			echo "$(_ 'Example:') tazpkg set-release cooking"
  2.1865  			newline
  2.1866  			exit 0
  2.1867  		fi
  2.1868 @@ -2116,15 +2303,17 @@
  2.1869  				[ -d $j ] || tazpkg get-install $j
  2.1870  			done
  2.1871  		done ;;
  2.1872 +
  2.1873 +
  2.1874  	remove|-r)
  2.1875  		# Remove packages.
  2.1876  		check_root $@
  2.1877  		check_for_package_on_cmdline
  2.1878  
  2.1879 -		[ "$root" ] && ROOT="$root"
  2.1880 +		[ -n "$root" ] && ROOT="$root"
  2.1881  		if [ ! -f "$ROOT$INSTALLED/$PACKAGE/receipt" ]; then
  2.1882  			newline
  2.1883 -			eval_gettext "\$PACKAGE is not installed."; echo
  2.1884 +			_ '$PACKAGE is not installed.'
  2.1885  			exit 0
  2.1886  		else
  2.1887  			ALTERED=""
  2.1888 @@ -2142,14 +2331,14 @@
  2.1889  		fi
  2.1890  		newline
  2.1891  		if [ -n "$ALTERED" ]; then
  2.1892 -			eval_gettext "The following packages depend on \$PACKAGE:"; echo
  2.1893 +			_ 'The following packages depend on $PACKAGE:'
  2.1894  			for i in $ALTERED; do
  2.1895  				echo "  $i"
  2.1896  			done
  2.1897  		fi
  2.1898  		REFRESH=$(cd $ROOT$INSTALLED ; grep -sl ^$PACKAGE$ */modifiers)
  2.1899  		if [ -n "$REFRESH" ]; then
  2.1900 -			eval_gettext "The following packages have been modified by \$PACKAGE:"; echo
  2.1901 +			_ 'The following packages have been modified by $PACKAGE:'
  2.1902  			for i in $REFRESH; do
  2.1903  				echo "  ${i%/modifiers}"
  2.1904  			done
  2.1905 @@ -2157,7 +2346,7 @@
  2.1906  		if [ "$auto" ]; then
  2.1907  			answer=0
  2.1908  		else
  2.1909 -			eval_gettext "Remove \$PACKAGE (\$VERSION\$EXTRAVERSION)" && confirm
  2.1910 +			_n 'Remove $PACKAGE ($VERSION$EXTRAVERSION)'; confirm
  2.1911  			answer=$?
  2.1912  		fi
  2.1913  		if [ $answer = 0 ]; then
  2.1914 @@ -2168,17 +2357,14 @@
  2.1915  			fi
  2.1916  			action "Removing all files installed..."
  2.1917  			if [ -f $ROOT$INSTALLED/$PACKAGE/modifiers ]; then
  2.1918 -				for file in `cat $ROOT$INSTALLED/$PACKAGE/files.list`
  2.1919 -				do
  2.1920 -					for mod in `cat $ROOT$INSTALLED/$PACKAGE/modifiers`
  2.1921 -					do
  2.1922 +				for file in $(cat $ROOT$INSTALLED/$PACKAGE/files.list); do
  2.1923 +					for mod in $(cat $ROOT$INSTALLED/$PACKAGE/modifiers); do
  2.1924  						[ -f $ROOT$INSTALLED/$mod/files.list ] && [ $(grep "^$(echo $file | grepesc)$" $ROOT$INSTALLED/$mod/files.list | wc -l) -gt 1 ] && continue 2
  2.1925  					done
  2.1926  					remove_with_path $ROOT$file
  2.1927  				done
  2.1928  			else
  2.1929 -				for file in `cat $ROOT$INSTALLED/$PACKAGE/files.list`
  2.1930 -				do
  2.1931 +				for file in $(cat $ROOT$INSTALLED/$PACKAGE/files.list); do
  2.1932  					remove_with_path $ROOT$file
  2.1933  				done
  2.1934  			fi
  2.1935 @@ -2186,19 +2372,22 @@
  2.1936  			if grep -q ^post_remove $ROOT$INSTALLED/$PACKAGE/receipt; then
  2.1937  				post_remove $ROOT
  2.1938  			fi
  2.1939 +
  2.1940  			# Remove package receipt.
  2.1941  			action "Removing package receipt..."
  2.1942  			rm -rf $ROOT$INSTALLED/$PACKAGE
  2.1943  			status
  2.1944 +
  2.1945  			sed -i "/ $PACKAGE-$VERSION$EXTRAVERSION$/d" \
  2.1946  				$LOCALSTATE/installed.$SUM 2> /dev/null
  2.1947 +
  2.1948  			# Log this activity
  2.1949  			log_pkg Removed
  2.1950  			if [ "$ALTERED" ]; then
  2.1951  				if [ "$auto" ]; then
  2.1952  					answer=0
  2.1953  				else
  2.1954 -					eval_gettext "Remove packages depending on \$PACKAGE" && confirm
  2.1955 +					_n 'Remove packages depending on $PACKAGE'; confirm
  2.1956  					answer=$?
  2.1957  				fi
  2.1958  				if [ $answer = 0 ]; then
  2.1959 @@ -2213,13 +2402,13 @@
  2.1960  				if [ "$auto" ]; then
  2.1961  					answer=0
  2.1962  				else
  2.1963 -					eval_gettext "Reinstall packages modified by \$PACKAGE" && confirm
  2.1964 +					_n 'Reinstall packages modified by $PACKAGE'; confirm
  2.1965  					answer=$?
  2.1966  				fi
  2.1967  				if [ $answer = 0 ]; then
  2.1968  					for i in $REFRESH; do
  2.1969  						if [ $(wc -l < $ROOT$INSTALLED/$i) -gt 1 ]; then
  2.1970 -							eval_gettext "Check \$INSTALLED/\$i for reinstallation"; echo
  2.1971 +							_ 'Check $INSTALLED/$i for reinstallation'
  2.1972  							continue
  2.1973  						fi
  2.1974  						rm -r $ROOT$INSTALLED/$i
  2.1975 @@ -2229,14 +2418,17 @@
  2.1976  			fi
  2.1977  		else
  2.1978  			newline
  2.1979 -			eval_gettext "Uninstallation of \$PACKAGE cancelled."; echo
  2.1980 +			_ 'Uninstallation of $PACKAGE cancelled.'
  2.1981  		fi
  2.1982  		newline ;;
  2.1983 +
  2.1984 +
  2.1985  	extract|-e)
  2.1986  		# Extract .tazpkg cpio archive into a directory.
  2.1987  		check_for_package_on_cmdline
  2.1988  		check_for_package_file
  2.1989  		title 'Extracting: $PACKAGE'
  2.1990 +
  2.1991  		# If no directory destination is found on the cmdline
  2.1992  		# we create one in the current dir using the package name.
  2.1993  		if [ -n "$TARGET_DIR" ]; then
  2.1994 @@ -2245,37 +2437,48 @@
  2.1995  			DESTDIR=$PACKAGE
  2.1996  		fi
  2.1997  		mkdir -p $DESTDIR
  2.1998 +
  2.1999  		action "Copying original package..."
  2.2000  		cp $PACKAGE_FILE $DESTDIR
  2.2001  		status
  2.2002 +
  2.2003  		cd $DESTDIR
  2.2004  		extract_package
  2.2005 -		[ -e "receipt" ] && footer "$(eval_gettext '$PACKAGE is extracted to: $DESTDIR')"
  2.2006 +		[ -e "receipt" ] && footer "$(_ '$PACKAGE is extracted to: $DESTDIR')"
  2.2007  		;;
  2.2008 +
  2.2009 +
  2.2010  	recompress)
  2.2011  		# Recompress .tazpkg cpio archive with lzma.
  2.2012  		check_for_package_on_cmdline
  2.2013  		check_for_package_file
  2.2014  		title 'Recompressing: $PACKAGE'
  2.2015  		mkdir -p $TMP_DIR
  2.2016 +
  2.2017  		action "Copying original package..."
  2.2018  		cp $PACKAGE_FILE $TMP_DIR
  2.2019  		status
  2.2020 +
  2.2021  		cd $TMP_DIR
  2.2022  		extract_package
  2.2023 +
  2.2024  		action "Recompressing the fs..."
  2.2025  		find fs | cpio -o -H newc --quiet | lzma e fs.cpio.lzma -si
  2.2026  		rm -rf fs
  2.2027  		status
  2.2028 +
  2.2029  		action "Creating new package..."
  2.2030  		find . -print | cpio -o -H newc --quiet > \
  2.2031  			$TOP_DIR/$(basename $PACKAGE_FILE).$$ && mv -f \
  2.2032  			$TOP_DIR/$(basename $PACKAGE_FILE).$$ \
  2.2033  			$TOP_DIR/$(basename $PACKAGE_FILE)
  2.2034  		status
  2.2035 +
  2.2036  		cd $TOP_DIR
  2.2037  		rm -rf $TMP_DIR
  2.2038  		separator; newline ;;
  2.2039 +
  2.2040 +
  2.2041  	list-config)
  2.2042  		# List configuration files installed.
  2.2043  		if [ "$2" = "--box" ]; then
  2.2044 @@ -2286,10 +2489,10 @@
  2.2045  				zcat $i | cpio -idm --quiet > /dev/null
  2.2046  				find * -type f 2>/dev/null | while read file; do
  2.2047  					if [ ! -e /$file ]; then
  2.2048 -					echo -en "----------|----|----|`gettext \"File lost\"`"
  2.2049 +						echo -n "----------|----|----|$(_n 'File lost')"
  2.2050  					else
  2.2051 -					echo -n "$(stat -c "%A|%U|%G|%s|" /$file)"
  2.2052 -					cmp $file /$file > /dev/null 2>&1 || \
  2.2053 +						echo -n "$(stat -c "%A|%U|%G|%s|" /$file)"
  2.2054 +						cmp $file /$file > /dev/null 2>&1 || \
  2.2055  						echo -n "$(stat -c "%.16y" /$file)"
  2.2056  					fi
  2.2057  					echo "|/$file"
  2.2058 @@ -2308,6 +2511,8 @@
  2.2059  			separator
  2.2060  			newline
  2.2061  		fi ;;
  2.2062 +
  2.2063 +
  2.2064  	repack-config)
  2.2065  		# Create SliTaz package archive from configuration files.
  2.2066  		mkdir -p $TMP_DIR && cd $TMP_DIR
  2.2067 @@ -2335,7 +2540,7 @@
  2.2068  PACKAGE="config"
  2.2069  VERSION="$CONFIG_VERSION"
  2.2070  CATEGORY="base-system"
  2.2071 -SHORT_DESC="$(eval_gettext 'User configuration backup on $pkg_date')"
  2.2072 +SHORT_DESC="$(_n 'User configuration backup on $pkg_date')"
  2.2073  DEPENDS="$(ls $INSTALLED)"
  2.2074  EOT
  2.2075  		cd ..
  2.2076 @@ -2344,6 +2549,8 @@
  2.2077  		cd $TOP_DIR
  2.2078  		rm -rf $TMP_DIR
  2.2079  		;;
  2.2080 +
  2.2081 +
  2.2082  	repack)
  2.2083  		# Create SliTaz package archive from an installed package.
  2.2084  		check_for_package_on_cmdline
  2.2085 @@ -2352,11 +2559,11 @@
  2.2086  		. $INSTALLED/$PACKAGE/receipt
  2.2087  		title 'Repacking: $PACKAGE-$VERSION$EXTRAVERSION.tazpkg'
  2.2088  		if grep -qs ^NO_REPACK= $INSTALLED/$PACKAGE/receipt; then
  2.2089 -			eval_gettext "Can't repack \$PACKAGE"; echo
  2.2090 +			_ "Can't repack \$PACKAGE"
  2.2091  			exit 1
  2.2092  		fi
  2.2093  		if [ -s $INSTALLED/$PACKAGE/modifiers ]; then
  2.2094 -			eval_gettext "Can't repack, \$PACKAGE files have been modified by:"; echo
  2.2095 +			_ "Can't repack, \$PACKAGE files have been modified by:"
  2.2096  			for i in $(cat $INSTALLED/$PACKAGE/modifiers); do
  2.2097  				echo "  $i"
  2.2098  			done
  2.2099 @@ -2368,7 +2575,7 @@
  2.2100  			[ -L "$i" ] || MISSING="$MISSING\n  $i"
  2.2101  		done < $INSTALLED/$PACKAGE/files.list
  2.2102  		if [ -n "$MISSING" ]; then
  2.2103 -			gettext "Can't repack, the following files are lost:"
  2.2104 +			_n "Can't repack, the following files are lost:"
  2.2105  			echo -e "$MISSING"
  2.2106  			exit 1
  2.2107  		fi
  2.2108 @@ -2395,7 +2602,7 @@
  2.2109  		if [ -f $INSTALLED/$PACKAGE/$CHECKSUM ]; then
  2.2110  			sed 's,  ,  fs,' < $INSTALLED/$PACKAGE/$CHECKSUM | \
  2.2111  			$CHECKSUM -s -c || {
  2.2112 -				eval_gettext "Can't repack, \$CHECKSUM error."; echo
  2.2113 +				_ "Can't repack, \$CHECKSUM error."
  2.2114  				cd $TOP_DIR
  2.2115  				rm -rf $TMP_DIR
  2.2116  				exit 1
  2.2117 @@ -2406,17 +2613,19 @@
  2.2118  			$TOP_DIR/$PACKAGE-$VERSION$EXTRAVERSION.tazpkg
  2.2119  		cd $TOP_DIR
  2.2120  		\rm -R $TMP_DIR
  2.2121 -		eval_gettext "Package \$PACKAGE repacked successfully."; echo
  2.2122 +		_ 'Package $PACKAGE repacked successfully.'
  2.2123  		pkg_size=$(du -sh $PACKAGE-$VERSION$EXTRAVERSION.tazpkg)
  2.2124 -		eval_gettext "Size: \$pkg_size"; echo
  2.2125 +		_ 'Size: $pkg_size'
  2.2126  		newline ;;
  2.2127 +
  2.2128 +
  2.2129  	pack)
  2.2130  		# Create SliTaz package archive using cpio and lzma.
  2.2131  		# TODO: Cook also pack packages, we should share code in libpkg.sh
  2.2132  		check_for_package_on_cmdline
  2.2133  		cd $PACKAGE
  2.2134  		if [ ! -f "receipt" ]; then
  2.2135 -			gettext "Receipt is missing. Please read the documentation."; echo
  2.2136 +			_ 'Receipt is missing. Please read the documentation.'
  2.2137  			exit 0
  2.2138  		else
  2.2139  			title 'Packing: $PACKAGE'
  2.2140 @@ -2427,12 +2636,12 @@
  2.2141  			find . -type l -print >> ../files.list
  2.2142  			cd .. && sed -i s/'^.'/''/ files.list
  2.2143  			status
  2.2144 -			action "Creating \$CHECKSUM of files..."
  2.2145 +			action 'Creating $CHECKSUM of files...'
  2.2146  			while read file; do
  2.2147  				[ -L "fs$file" ] && continue
  2.2148  				[ -f "fs$file" ] || continue
  2.2149  				case "$file" in
  2.2150 -				/lib/modules/*/modules.*|*.pyc) continue;;
  2.2151 +					/lib/modules/*/modules.*|*.pyc) continue;;
  2.2152  				esac
  2.2153  				$CHECKSUM "fs$file" | sed 's/  fs/  /'
  2.2154  			done < files.list > $CHECKSUM
  2.2155 @@ -2460,15 +2669,17 @@
  2.2156  			unlzma -c fs.cpio.lzma | cpio -idm --quiet
  2.2157  			status
  2.2158  			rm fs.cpio.lzma && cd ..
  2.2159 -			footer "$(eval_gettext 'Package $PACKAGE compressed successfully.')"
  2.2160 +			footer "$(_ 'Package $PACKAGE compressed successfully.')"
  2.2161  			pkg_size=$(du -sh $PACKAGE.tazpkg)
  2.2162 -			eval_gettext "Size: \$pkg_size"; echo
  2.2163 +			_ 'Size: $pkg_size'
  2.2164  			newline
  2.2165  		fi ;;
  2.2166 +
  2.2167 +
  2.2168  	recharge)
  2.2169  		# Recharge packages.list from a mirror.
  2.2170  		#
  2.2171 -		# WARNING: The mirrors file has all SliTaz mirrors but mirror
  2.2172 +		# WARNING: The 'mirrors' file has all SliTaz mirrors but 'mirror'
  2.2173  		# must have only the chosen main mirror.
  2.2174  		#
  2.2175  		check_root $@
  2.2176 @@ -2485,8 +2696,7 @@
  2.2177  				repository_to_recharge=$LOCALSTATE/undigest/$ARG
  2.2178  			else
  2.2179  				repo="$LOCALSTATE/undigest/$ARG"
  2.2180 -				eval_gettext "\$repo doesn't exist." >&2
  2.2181 -				echo >&2
  2.2182 +				_ "\$repo doesn't exist." >&2
  2.2183  				exit 1
  2.2184  			fi
  2.2185  		else
  2.2186 @@ -2499,14 +2709,14 @@
  2.2187  			# Quietly check if recharging is needed.
  2.2188  			[ -f ID ] && mv ID ID.bak
  2.2189  			download_from "$(cat mirror)" ID >/dev/null 2>/dev/null
  2.2190 -			if [ -f ID ] && fgrep -q `cat ID.bak 2>/dev/null || echo "null"` ID; then
  2.2191 +			if [ -f ID ] && fgrep -q $(cat ID.bak 2>/dev/null || echo "null") ID; then
  2.2192  				if [ "$path" = "$LOCALSTATE" ]; then
  2.2193  					repository_name=Main
  2.2194  				else
  2.2195  					base_path="$(basename $path)"
  2.2196 -					repository_name="$(eval_gettext 'Undigest $base_path')"
  2.2197 +					repository_name="$(_n 'Undigest $base_path')"
  2.2198  				fi
  2.2199 -				eval_gettext "\$repository_name is up to date."; echo
  2.2200 +				_ '$repository_name is up to date.'
  2.2201  				rm ID.bak
  2.2202  				continue
  2.2203  			fi
  2.2204 @@ -2521,7 +2731,7 @@
  2.2205  			newline
  2.2206  			if [ "$path" != "$LOCALSTATE" ]; then
  2.2207  				base_path="$(basename $path)"
  2.2208 -				eval_gettext "Recharging undigest \$base_path:"; echo
  2.2209 +				_ 'Recharging undigest $base_path:'
  2.2210  			fi
  2.2211  
  2.2212  			if [ -f "packages.list" ]; then
  2.2213 @@ -2556,20 +2766,24 @@
  2.2214  						'$num new package on the mirror.' \
  2.2215  						'$num new packages on the mirror.' $new_pkgs)"
  2.2216  				else
  2.2217 -					gettext "No new packages on the mirror."; echo
  2.2218 +					_ 'No new packages on the mirror.'
  2.2219  					newline
  2.2220  				fi
  2.2221  			else
  2.2222 -				footer "$(gettext \
  2.2223 +				footer "$(_ \
  2.2224  'Last packages.list is ready to use. Note that next time you recharge the
  2.2225  list, a list of differences will be displayed to show new and upgradeable
  2.2226  packages.')"
  2.2227  			fi
  2.2228  		done ;;
  2.2229 +
  2.2230 +
  2.2231  	help-up)
  2.2232  		# Options available for the command: up
  2.2233  		newline; usage_up; newline
  2.2234  		exit 1 ;;
  2.2235 +
  2.2236 +
  2.2237  	up|upgrade)
  2.2238  		#
  2.2239  		# This is the new way to upgrade packages making 'upgrade' and
  2.2240 @@ -2596,11 +2810,11 @@
  2.2241  				else
  2.2242  					repo_name="${repo##*/}"
  2.2243  				fi
  2.2244 -				eval_gettext "\$pkg_list is older than one week... recharging"; echo
  2.2245 +				_ '$pkg_list is older than one week... recharging'
  2.2246  				tazpkg recharge $repo_name
  2.2247  			fi
  2.2248  		done
  2.2249 -		emsg "<n><b>$(gettext 'Package')</b><i 28> $(gettext 'Version')<i 48> $(gettext 'Status')<->"
  2.2250 +		emsg "<n><b>$(_ 'Package')</b><i 28> $(_ 'Version')<i 48> $(_ 'Status')<->"
  2.2251  		cd $INSTALLED
  2.2252  		newline > $UP_LIST
  2.2253  		blocked_count=0
  2.2254 @@ -2625,16 +2839,16 @@
  2.2255  					# Skip pkgs listed in $LOCALSTATE/blocked-packages.list
  2.2256  					if $(grep -qs "^$PACKAGE" $BLOCKED); then
  2.2257  						blocked_count=$(($blocked_count + 1))
  2.2258 -						emsg "<i 48><c 31> $(gettext 'Blocked')</c>"
  2.2259 +						emsg "<i 48><c 31> $(_ 'Blocked')</c>"
  2.2260  						break
  2.2261  					fi
  2.2262  
  2.2263  					new=$(grep "^$PACKAGE |" $pkg_desc | awk '{print $3}')
  2.2264  
  2.2265  					if [ "$VERSION" == "$new" ]; then
  2.2266 -						emsg "<i 48><c 34> $(gettext 'New build')</c>"
  2.2267 +						emsg "<i 48><c 34> $(_ 'New build')</c>"
  2.2268  					else
  2.2269 -						emsg "<i 48><c 32> $(eval_gettext 'New version $new')</c>"
  2.2270 +						emsg "<i 48><c 32> $(_ 'New version $new')</c>"
  2.2271  					fi
  2.2272  					echo "$PACKAGE" >> $UP_LIST
  2.2273  					break
  2.2274 @@ -2647,7 +2861,7 @@
  2.2275  		time=$(($(date +%s) - $time))
  2.2276  		if [ "$upnb" = 0 ]; then
  2.2277  			install="n"
  2.2278 -			gettext "System is up-to-date..."; echo
  2.2279 +			_ 'System is up-to-date...'
  2.2280  		fi
  2.2281  		num=$(emsg "<c 32>$pkgs</c>")
  2.2282  		footer "$(eval_ngettext \
  2.2283 @@ -2658,7 +2872,8 @@
  2.2284  				num=$blocked_count
  2.2285  				blocked=$(eval_ngettext '$num blocked' '$num blocked' $num)
  2.2286  			else
  2.2287 -				blocked="$(gettext '0 blocked')"
  2.2288 +				# FIXME
  2.2289 +				blocked="$(_ '0 blocked')"
  2.2290  			fi
  2.2291  			num=$upnb
  2.2292  			boldify "$(eval_ngettext \
  2.2293 @@ -2672,7 +2887,7 @@
  2.2294  			if [ "$install" == "y" ]; then
  2.2295  				continue
  2.2296  			else
  2.2297 -				gettext "Do you wish to install them now: y/n ? "
  2.2298 +				_n 'Do you wish to install them now: y/n ? '
  2.2299  				read install
  2.2300  			fi
  2.2301  			case "$install" in
  2.2302 @@ -2684,33 +2899,37 @@
  2.2303  					# tazpkg-notify doesn't find upgrades anymore.
  2.2304  					rm $UP_LIST && touch $UP_LIST ;;
  2.2305  				*)
  2.2306 -					gettext "Leaving without any upgrades installed."; echo
  2.2307 +					_ 'Leaving without any upgrades installed.'
  2.2308  					newline
  2.2309  					exit 0 ;;
  2.2310  			esac
  2.2311  		fi
  2.2312  		newline ;;
  2.2313 +
  2.2314 +
  2.2315  	bugs)
  2.2316  		# Show known bugs in package(s)
  2.2317  		cd $INSTALLED
  2.2318  		shift
  2.2319  		LIST=$@
  2.2320 -		[ -n "$LIST" ] || LIST=`ls`
  2.2321 -		MSG=$(gettext "No known bugs.")
  2.2322 +		[ -n "$LIST" ] || LIST=$(ls)
  2.2323 +		MSG=$(_n 'No known bugs.')
  2.2324  		for PACKAGE in $LIST; do
  2.2325  			BUGS=""
  2.2326  			EXTRAVERSION=""
  2.2327  			. $PACKAGE/receipt
  2.2328  			if [ -n "$BUGS" ]; then
  2.2329 -				MSG=$(gettext "Bug list completed")
  2.2330 +				MSG=$(_n 'Bug list completed')
  2.2331  				newline
  2.2332 -				eval_gettext "Bugs in package \$PACKAGE version \$VERSION\$EXTRAVERSION:"; echo
  2.2333 +				_ 'Bugs in package $PACKAGE version $VERSION$EXTRAVERSION:'
  2.2334  				cat <<EOT
  2.2335    $BUGS
  2.2336  EOT
  2.2337  			fi
  2.2338  		done
  2.2339  		echo "$MSG" ;;
  2.2340 +
  2.2341 +
  2.2342  	check)
  2.2343  		# Check installed packages set.
  2.2344  		check_root $@
  2.2345 @@ -2719,43 +2938,44 @@
  2.2346  		look_for_priority
  2.2347  
  2.2348  		cd $INSTALLED
  2.2349 -		for PACKAGE in `ls`; do
  2.2350 +		for PACKAGE in $(ls); do
  2.2351  			if [ ! -f $PACKAGE/receipt ]; then
  2.2352 -				eval_gettext "The package \$PACKAGE installation has not completed"; echo
  2.2353 +				_ 'The package $PACKAGE installation has not completed'
  2.2354  				continue
  2.2355  			fi
  2.2356  			DEPENDS=""
  2.2357  			EXTRAVERSION=""
  2.2358  			. $PACKAGE/receipt
  2.2359  			if [ -s $PACKAGE/modifiers ]; then
  2.2360 -				eval_gettext \
  2.2361 -					"The package \$PACKAGE-\$VERSION\$EXTRAVERSION has been modified by:"; echo
  2.2362 +				_ 'The package $PACKAGE-$VERSION$EXTRAVERSION has been modified by:'
  2.2363  				for i in $(cat $PACKAGE/modifiers); do
  2.2364  					echo "  $i"
  2.2365  				done
  2.2366  			fi
  2.2367 -			MSG="$(eval_gettext 'Files lost from $PACKAGE-$VERSION$EXTRAVERSION:')\n"
  2.2368 +			MSG="$(_n 'Files lost from $PACKAGE-$VERSION$EXTRAVERSION:')\n"
  2.2369  			while read file; do
  2.2370  				[ -e "$file" ] && continue
  2.2371  				if [ -L "$file" ]; then
  2.2372 -					MSG="$MSG  $(gettext 'target of symlink')"
  2.2373 +					MSG="$MSG  $(_n 'target of symlink')"
  2.2374  				fi
  2.2375  				echo -e "$MSG  $file"
  2.2376  				MSG=""
  2.2377  			done < $PACKAGE/files.list
  2.2378 -			MSG="$(eval_gettext 'Missing dependencies for $PACKAGE-$VERSION$EXTRAVERSION:')\n"
  2.2379 +			MSG="$(_n 'Missing dependencies for $PACKAGE-$VERSION$EXTRAVERSION:')\n"
  2.2380  			for i in $DEPENDS; do
  2.2381  				[ -d $i ] && continue
  2.2382  				[ -d $(equivalent_pkg $i) ] && continue
  2.2383  				echo -e "$MSG  $i"
  2.2384  				MSG=""
  2.2385  			done
  2.2386 -			MSG="$(eval_gettext 'Dependencies loop between $PACKAGE and:')\n"
  2.2387 +			MSG="$(_n 'Dependencies loop between $PACKAGE and:')\n"
  2.2388  			ALL_DEPS=""
  2.2389  			check_for_deps_loop $PACKAGE $DEPENDS
  2.2390  		done
  2.2391 -		gettext "Looking for known bugs..."; echo
  2.2392 +
  2.2393 +		_ 'Looking for known bugs...'
  2.2394  		tazpkg bugs
  2.2395 +
  2.2396  		if [ "$PACKAGE_FILE" = "--full" ]; then
  2.2397  			for file in */$CHECKSUM; do
  2.2398  				CONFIG_FILES=""
  2.2399 @@ -2765,7 +2985,7 @@
  2.2400  					[ -f $f ] || continue
  2.2401  					for i in $CONFIG_FILES; do
  2.2402  						case "$f" in
  2.2403 -						$i|$i/*) continue 2;;
  2.2404 +							$i|$i/*) continue 2;;
  2.2405  						esac
  2.2406  					done
  2.2407  					echo "$md5  $f"
  2.2408 @@ -2779,13 +2999,13 @@
  2.2409  				[ $(grep "^$(echo $file | grepesc)$" */files.list 2> /dev/null | \
  2.2410  					wc -l) -gt 1 ] || continue
  2.2411  				FILES="$FILES$file "
  2.2412 -				eval_gettext "The following packages provide \$file:"; echo
  2.2413 -				grep -l "^$(echo $file | grepesc)$" */files.list | while read f
  2.2414 -				do
  2.2415 +				_ 'The following packages provide $file:'
  2.2416 +				grep -l "^$(echo $file | grepesc)$" */files.list | \
  2.2417 +				while read f; do
  2.2418  					pkg=${f%/files.list}
  2.2419  					if [ -f $pkg/modifiers ]; then
  2.2420  						pkg_list="$(cat $pkg/modifiers)"
  2.2421 -						overriders=$(eval_gettext '(overridden by $pkg_list)')
  2.2422 +						overriders=$(_n '(overridden by $pkg_list)')
  2.2423  					else
  2.2424  						overriders=''
  2.2425  					fi
  2.2426 @@ -2793,27 +3013,27 @@
  2.2427  					newline
  2.2428  				done
  2.2429  			done
  2.2430 -			MSG="$(gettext 'No package has installed the following files:')\n"
  2.2431 -			find /etc /bin /sbin /lib /usr /var/www \
  2.2432 -				-not -type d 2> /dev/null | while read file; do
  2.2433 +			MSG="$(_n 'No package has installed the following files:')\n"
  2.2434 +			find /etc /bin /sbin /lib /usr /var/www -not -type d 2>/dev/null | \
  2.2435 +			while read file; do
  2.2436  				case "$file" in *\[*) continue;; esac
  2.2437  				grep -q "^$(echo $file | grepesc)$" */files.list && continue
  2.2438  				echo -e "$MSG  $file"
  2.2439  				MSG=""
  2.2440  			done
  2.2441  		fi
  2.2442 -		gettext "Check completed."; echo ;;
  2.2443 +		_ 'Check completed.'; echo ;;
  2.2444 +
  2.2445 +
  2.2446  	block)
  2.2447  		# Add a pkg name to the list of blocked packages.
  2.2448  		check_root $@
  2.2449  		check_for_package_on_cmdline
  2.2450  		newline
  2.2451  		if grep -qs "^$PACKAGE" $BLOCKED; then
  2.2452 -			eval_gettext "\$PACKAGE is already in the blocked packages list."; echo
  2.2453 -			newline
  2.2454 -			exit 0
  2.2455 +			_ '$PACKAGE is already in the blocked packages list.'
  2.2456  		else
  2.2457 -			action "Add \$PACKAGE to: \$BLOCKED..."
  2.2458 +			action 'Add $PACKAGE to: $BLOCKED...'
  2.2459  			echo $PACKAGE >> $BLOCKED
  2.2460  			status
  2.2461  			# Log this activity
  2.2462 @@ -2821,13 +3041,15 @@
  2.2463  			log_pkg Blocked
  2.2464  		fi
  2.2465  		newline ;;
  2.2466 +
  2.2467 +
  2.2468  	unblock)
  2.2469  		# Remove a pkg name from the list of blocked packages.
  2.2470  		check_root $@
  2.2471  		check_for_package_on_cmdline
  2.2472  		newline
  2.2473  		if grep -qs "^$PACKAGE" $BLOCKED; then
  2.2474 -			action "Removing \$PACKAGE from: \$BLOCKED..."
  2.2475 +			action 'Removing $PACKAGE from: $BLOCKED...'
  2.2476  			sed -i s/$PACKAGE/''/ $BLOCKED
  2.2477  			sed -i '/^$/d' $BLOCKED
  2.2478  			status
  2.2479 @@ -2835,11 +3057,11 @@
  2.2480  			. $INSTALLED/$PACKAGE/receipt
  2.2481  			log_pkg Unblocked
  2.2482  		else
  2.2483 -			eval_gettext "\$PACKAGE is not in the blocked packages list."; echo
  2.2484 -			newline
  2.2485 -			exit 0
  2.2486 +			_ '$PACKAGE is not in the blocked packages list.'
  2.2487  		fi
  2.2488  		newline ;;
  2.2489 +
  2.2490 +
  2.2491  	get)
  2.2492  		# Download a package with wget.
  2.2493  		check_root $@
  2.2494 @@ -2853,8 +3075,7 @@
  2.2495  				SAVE_CACHE_DIR=$CACHE_DIR
  2.2496  				LOCALSTATE=$root/$LOCALSTATE
  2.2497  			else
  2.2498 -				gettext "rootconfig needs --root= option used." >&2
  2.2499 -				echo >&2
  2.2500 +				_ 'rootconfig needs --root= option used.' >&2
  2.2501  				exit 1
  2.2502  			fi
  2.2503  		fi
  2.2504 @@ -2866,10 +3087,10 @@
  2.2505  		check_for_package_in_list
  2.2506  		cd $CACHE_DIR
  2.2507  		if [ -f "$PACKAGE.tazpkg" ]; then
  2.2508 -			eval_gettext "\$PACKAGE already in the cache"; echo
  2.2509 +			_ '$PACKAGE already in the cache'
  2.2510  			# Check package download was finished
  2.2511  			tail -c 2k $PACKAGE.tazpkg | fgrep -q 00000000TRAILER || {
  2.2512 -				eval_gettext "Continuing \$PACKAGE download"; echo
  2.2513 +				_ 'Continuing $PACKAGE download'
  2.2514  				download $PACKAGE.tazpkg
  2.2515  			}
  2.2516  			if [ "$($CHECKSUM $PACKAGE.tazpkg)" != "$(fgrep "  $PACKAGE.tazpkg" $rep/packages.$SUM)" ]; then
  2.2517 @@ -2881,7 +3102,8 @@
  2.2518  		fi
  2.2519  		PACKAGE_FILE=$CACHE_DIR/$PACKAGE.tazpkg
  2.2520  		cp -a $PACKAGE_FILE $CURRENT_DIR ;;
  2.2521 -	
  2.2522 +
  2.2523 +
  2.2524  	get-install|-gi)
  2.2525  		# Download and install a package.
  2.2526  		check_root $@
  2.2527 @@ -2898,8 +3120,7 @@
  2.2528  				SAVE_CACHE_DIR=$CACHE_DIR
  2.2529  				LOCALSTATE=$root/$LOCALSTATE
  2.2530  			else
  2.2531 -				gettext "rootconfig needs --root= option used." >&2
  2.2532 -				echo >&2
  2.2533 +				_ 'rootconfig needs --root= option used.' >&2
  2.2534  				exit 1
  2.2535  			fi
  2.2536  		fi
  2.2537 @@ -2930,10 +3151,10 @@
  2.2538  		fi
  2.2539  		cd $CACHE_DIR
  2.2540  		if [ -f "$PACKAGE.tazpkg" ]; then
  2.2541 -			eval_gettext "\$PACKAGE already in the cache: \$CACHE_DIR"; echo
  2.2542 +			_ '$PACKAGE already in the cache: $CACHE_DIR'
  2.2543  			# Check package download was finished
  2.2544  			tail -c 2k $PACKAGE.tazpkg | fgrep -q 00000000TRAILER || {
  2.2545 -				eval_gettext "Continuing \$PACKAGE download"; echo
  2.2546 +				_ 'Continuing $PACKAGE download'
  2.2547  				download $PACKAGE.tazpkg
  2.2548  			}
  2.2549  			if [ "$($CHECKSUM $PACKAGE.tazpkg)" != "$(fgrep "  $PACKAGE.tazpkg" $rep/packages.$SUM)" ]; then
  2.2550 @@ -2950,7 +3171,8 @@
  2.2551  		[ "$AUTOEXEC" != "no" ] && $PACKAGE $ROOT
  2.2552  		update_desktop_database $ROOT
  2.2553  		update_mime_database $ROOT ;;
  2.2554 -	
  2.2555 +
  2.2556 +
  2.2557  	clean-cache|-cc)
  2.2558  		# Remove all downloaded packages.
  2.2559  		check_root $@
  2.2560 @@ -2960,12 +3182,14 @@
  2.2561  		rm -rf $CACHE_DIR/*
  2.2562  		status
  2.2563  		num=$(colorize 32 "$files")
  2.2564 -		if [ "$files" == 0 ]; then
  2.2565 -			footer "$(eval_gettext '$num file removed from cache.')"
  2.2566 -		else
  2.2567 -			footer "$(eval_gettext '$num files removed from cache.')"
  2.2568 -		fi ;;
  2.2569 -	
  2.2570 +
  2.2571 +		footer "$(eval_ngettext \
  2.2572 +			'$num file removed from cache.' \
  2.2573 +			'$num files removed from cache.' \
  2.2574 +			$files)"
  2.2575 +		;;
  2.2576 +
  2.2577 +
  2.2578  	list-undigest)
  2.2579  		# list undigest URLs.
  2.2580  		if [ "$2" = "--box" ]; then
  2.2581 @@ -2977,28 +3201,32 @@
  2.2582  			title 'Current undigest(s)'
  2.2583  			for i in $LOCALSTATE/undigest/*/mirror; do
  2.2584  				if [ ! -f $i ]; then
  2.2585 -					gettext "No undigest mirror found."; echo
  2.2586 +					_ 'No undigest mirror found.'
  2.2587  					exit 1
  2.2588  				fi
  2.2589  				echo "$(basename $(dirname $i))	$(cat $i)"
  2.2590  			done
  2.2591  			newline
  2.2592  		fi ;;
  2.2593 +
  2.2594 +
  2.2595  	remove-undigest)
  2.2596  		# remove undigest URL.
  2.2597  		check_root $@
  2.2598  		undigest="$2"
  2.2599  		if [ -d $LOCALSTATE/undigest/$2 ]; then
  2.2600 -			eval_gettext "Remove \$undigest undigest" && confirm
  2.2601 +			_n 'Remove $undigest undigest'; confirm
  2.2602  			if [ $? = 0 ]; then
  2.2603 -				action "Removing \$undigest undigest..."
  2.2604 +				action 'Removing $undigest undigest...'
  2.2605  				rm -rf $LOCALSTATE/undigest/$2
  2.2606  				status
  2.2607  				rmdir $LOCALSTATE/undigest 2> /dev/null
  2.2608  			fi
  2.2609  		else
  2.2610 -			eval_gettext "Undigest \$undigest not found"; echo
  2.2611 +			_ 'Undigest $undigest not found'
  2.2612  		fi ;;
  2.2613 +
  2.2614 +
  2.2615  	add-undigest|setup-undigest)
  2.2616  		# Add undigest URL.
  2.2617  		check_root $@
  2.2618 @@ -3012,14 +3240,18 @@
  2.2619  			undigest=$i
  2.2620  		fi
  2.2621  		if [ ! -d $LOCALSTATE/undigest/$undigest ]; then
  2.2622 -			eval_gettext "Creating new undigest \$undigest."; echo
  2.2623 +			_ 'Creating new undigest $undigest.'
  2.2624  			mkdir $LOCALSTATE/undigest/$undigest
  2.2625  		fi
  2.2626  		setup_mirror $LOCALSTATE/undigest/$undigest $3 ;;
  2.2627 +
  2.2628 +
  2.2629  	setup-mirror|-sm)
  2.2630  		# Change mirror URL.
  2.2631  		check_root $@
  2.2632  		setup_mirror $LOCALSTATE $2 ;;
  2.2633 +
  2.2634 +
  2.2635  	reconfigure)
  2.2636  		# Replay post_install from receipt
  2.2637  		check_for_package_on_cmdline
  2.2638 @@ -3027,12 +3259,14 @@
  2.2639  		ROOT=""
  2.2640  		while [ -n "$3" ]; do
  2.2641  			case "$3" in
  2.2642 -			--root=*)
  2.2643 -				ROOT="${3#--root=}/" ;;
  2.2644 -			*)	shift 2
  2.2645 -				u_opt="$*"
  2.2646 -				echo -e "\n$(gettext 'Unknown option $u_opt.')\n" >&2
  2.2647 -				exit 1 ;;
  2.2648 +				--root=*)
  2.2649 +					ROOT="${3#--root=}/" ;;
  2.2650 +				*)
  2.2651 +					shift 2
  2.2652 +					u_opt="$*"
  2.2653 +					newline >&2
  2.2654 +					_ 'Unknown option $u_opt.' >&2
  2.2655 +					exit 1 ;;
  2.2656  			esac
  2.2657  			shift
  2.2658  		done
  2.2659 @@ -3046,14 +3280,16 @@
  2.2660  				[ -n "$ROOT" ] || log_pkg Reconfigured
  2.2661  			else
  2.2662  				newline
  2.2663 -				eval_gettext "Nothing to do for \$PACKAGE."; echo
  2.2664 +				_ 'Nothing to do for $PACKAGE.'
  2.2665  			fi
  2.2666  		else
  2.2667  			newline
  2.2668 -			eval_gettext "Package \$PACKAGE is not installed."; echo
  2.2669 -			gettext "Install package with 'tazpkg install' or 'tazpkg get-install'"; echo
  2.2670 +			_ 'Package $PACKAGE is not installed.'
  2.2671 +			_ "Install package with 'tazpkg install' or 'tazpkg get-install'"
  2.2672  			newline
  2.2673  		fi ;;
  2.2674 +
  2.2675 +
  2.2676  	shell)
  2.2677  		# TazPKG SHell
  2.2678  		if test $(id -u) = 0 ; then
  2.2679 @@ -3064,17 +3300,16 @@
  2.2680  		if [ ! "$2" = "--noheader" ]; then
  2.2681  			clear
  2.2682  			title 'TazPKG SHell.'
  2.2683 -			gettext "Type 'usage' to list all available commands or 'quit' or 'q' to exit."; echo
  2.2684 +			_ "Type 'usage' to list all available commands or 'quit' or 'q' to exit."
  2.2685  			newline
  2.2686  		fi
  2.2687 -		while true
  2.2688 -		do
  2.2689 +		while true; do
  2.2690  			echo -en "$PROMPT"; read cmd
  2.2691  			case $cmd in
  2.2692  				q|quit)
  2.2693  					break ;;
  2.2694  				shell)
  2.2695 -					gettext "You are already running a TazPKG SHell."; echo ;;
  2.2696 +					_ 'You are already running a TazPKG SHell.' ;;
  2.2697  				su)
  2.2698  					su -c 'exec tazpkg shell --noheader' && break ;;
  2.2699  				"")
  2.2700 @@ -3083,6 +3318,8 @@
  2.2701  					tazpkg $cmd ;;
  2.2702  			esac
  2.2703  		done ;;
  2.2704 +
  2.2705 +
  2.2706  	depends)
  2.2707  		# Display dependencies tree
  2.2708  		cd $INSTALLED
  2.2709 @@ -3090,6 +3327,8 @@
  2.2710  		if [ -f $2/receipt ]; then
  2.2711  			dep_scan $2 ""
  2.2712  		fi ;;
  2.2713 +
  2.2714 +
  2.2715  	rdepends)
  2.2716  		# Display reverse dependencies tree
  2.2717  		cd $INSTALLED
  2.2718 @@ -3097,6 +3336,8 @@
  2.2719  		if [ -f $2/receipt ]; then
  2.2720  			rdep_scan $2
  2.2721  		fi ;;
  2.2722 +
  2.2723 +
  2.2724  	convert|-c)
  2.2725  		# convert misc package format to .tazpkg
  2.2726  		check_for_package_file
  2.2727 @@ -3106,37 +3347,39 @@
  2.2728  		      == "debian-b" ]; then
  2.2729  			convert_deb
  2.2730  		else
  2.2731 -		case "$PACKAGE_FILE" in
  2.2732 -		*.deb|*.udeb)
  2.2733 -			convert_deb;;
  2.2734 -		*.rpm)
  2.2735 -			convert_rpm;;
  2.2736 -		*.sb)
  2.2737 -			convert_sb;;
  2.2738 -		*.sfs)
  2.2739 -			convert_sfs;;
  2.2740 -		*.pet)
  2.2741 -			convert_pet;;
  2.2742 -		*.tgz)
  2.2743 -			convert_tgz;;
  2.2744 -		*.apk|*.pkg.tar.gz|*.pkg.tar.xz)
  2.2745 -			convert_arch;;
  2.2746 -		*.ipk|*.opk)
  2.2747 -			convert_ipk;;
  2.2748 -		*.spack)
  2.2749 -			convert_spack;;
  2.2750 -		*.tar.bz2)
  2.2751 -			convert_upkg;;
  2.2752 -		*)
  2.2753 -			gettext "Unsupported format"; echo ;;
  2.2754 +			case "$PACKAGE_FILE" in
  2.2755 +				*.deb|*.udeb)
  2.2756 +					convert_deb;;
  2.2757 +				*.rpm)
  2.2758 +					convert_rpm;;
  2.2759 +				*.sb)
  2.2760 +					convert_sb;;
  2.2761 +				*.sfs)
  2.2762 +					convert_sfs;;
  2.2763 +				*.pet)
  2.2764 +					convert_pet;;
  2.2765 +				*.tgz)
  2.2766 +					convert_tgz;;
  2.2767 +				*.apk|*.pkg.tar.gz|*.pkg.tar.xz)
  2.2768 +					convert_arch;;
  2.2769 +				*.ipk|*.opk)
  2.2770 +					convert_ipk;;
  2.2771 +				*.spack)
  2.2772 +					convert_spack;;
  2.2773 +				*.tar.bz2)
  2.2774 +					convert_upkg;;
  2.2775 +				*)
  2.2776 +					_ 'Unsupported format' ;;
  2.2777  		esac
  2.2778  		fi ;;
  2.2779 +
  2.2780 +
  2.2781  	link)
  2.2782  		# link a package from another slitaz installation
  2.2783  		PACKAGE=$2
  2.2784  		if [ ! -d "$TARGET_DIR" -o \
  2.2785  		     ! -d "$TARGET_DIR$INSTALLED/$PACKAGE" ]; then
  2.2786 -			gettext "
  2.2787 +			_n "
  2.2788  usage:   tazpkg link package_name slitaz_root
  2.2789  example: 'tazpkg link openoffice /mnt' will use less than 100k in
  2.2790           your running system ram.
  2.2791 @@ -3144,7 +3387,7 @@
  2.2792  			exit 1
  2.2793  		fi
  2.2794  		if [ -e "$INSTALLED/$PACKAGE" ]; then
  2.2795 -			eval_gettext "\$PACKAGE is already installed."; echo
  2.2796 +			_ '$PACKAGE is already installed.'
  2.2797  			exit 1
  2.2798  		fi
  2.2799  		ln -s $TARGET_DIR$INSTALLED/$PACKAGE $INSTALLED
  2.2800 @@ -3153,11 +3396,11 @@
  2.2801  		for i in $DEPENDS; do
  2.2802  			[ -e $INSTALLED/$i ] && continue
  2.2803  			MISSING="$MISSING$i "
  2.2804 -			eval_gettext "Missing: \$i"; echo
  2.2805 +			_ 'Missing: $i'
  2.2806  		done
  2.2807  		if [ -n "$MISSING" ]; then
  2.2808  			newline
  2.2809 -			gettext "Link all missing dependencies" && confirm
  2.2810 +			_n 'Link all missing dependencies'; confirm
  2.2811  			answer=$?
  2.2812  			newline
  2.2813  			if [ $answer = 0 ]; then
  2.2814 @@ -3166,8 +3409,8 @@
  2.2815  				done
  2.2816  			else
  2.2817  				newline
  2.2818 -				eval_gettext "Leaving dependencies unresolved for: \$PACKAGE"; echo
  2.2819 -				gettext "The package is installed but probably will not work."; echo
  2.2820 +				_ 'Leaving dependencies unresolved for: $PACKAGE'
  2.2821 +				_ 'The package is installed but probably will not work.'
  2.2822  				newline
  2.2823  			fi
  2.2824  		fi
  2.2825 @@ -3187,6 +3430,8 @@
  2.2826  		if grep -q ^post_install $INSTALLED/$PACKAGE/receipt; then
  2.2827  			post_install
  2.2828  		fi ;;
  2.2829 +
  2.2830 +
  2.2831  	usage|*)
  2.2832  		# Print a short help or give usage for an unknown or empty command.
  2.2833  		usage ;;