tazpkg diff tazpkg @ rev 702

Implement %s in translations (unfinished); "tazpkg search-file": speed up (~5 times) and colored output.
author Aleksej Bobylev <al.bobylev@gmail.com>
date Fri Dec 05 03:09:58 2014 +0200 (2014-12-05)
parents 56a4afc8d5fa
children 1645f795bf68
line diff
     1.1 --- a/tazpkg	Thu Dec 04 13:57:43 2014 +0200
     1.2 +++ b/tazpkg	Fri Dec 05 03:09:58 2014 +0200
     1.3 @@ -88,7 +88,7 @@
     1.4  
     1.5  # Print localized title
     1.6  
     1.7 -title() { newline; boldify "$(eval_gettext "$1")"; separator; }
     1.8 +title() { newline; boldify "$(_ "$@")"; separator; }
     1.9  
    1.10  
    1.11  # Print footer
    1.12 @@ -100,8 +100,8 @@
    1.13  
    1.14  action() {
    1.15  	case $output in
    1.16 -		raw|gtk|html) eval_gettext "$@" ;;
    1.17 -		*) echo -ne "\033[0;33m"$(eval_gettext "$@")"\033[0m" ;;
    1.18 +		raw|gtk|html) _ "$@" ;;
    1.19 +		*) echo -ne "\033[0;33m"$(_ "$@")"\033[0m" ;;
    1.20  	esac
    1.21  }
    1.22  
    1.23 @@ -144,7 +144,7 @@
    1.24  usage () {
    1.25  	cat << EOT
    1.26  
    1.27 -$(_ 'SliTaz package manager - Version:') $(colorize 34 $VERSION)
    1.28 +$(_ 'SliTaz package manager - Version: %s' $(colorize 34 $VERSION))
    1.29  
    1.30  $(boldify "$(_ 'Usage:')")
    1.31    $(_ 'tazpkg [command] [package|dir|pattern|list|cat|--opt] [dir|--opt]')
    1.32 @@ -170,7 +170,7 @@
    1.33    extract|-e       $(_ 'Extract a (*.tazpkg) package into a directory')
    1.34    pack             $(_ 'Pack an unpacked or prepared package tree')
    1.35    recharge         $(_ 'Recharge your packages.list from the mirror')
    1.36 -  up|help-up       $(_ 'Check packages $CHECKSUM to list and install latest upgrades')
    1.37 +  up|help-up       $(_ 'Check packages %s to list and install latest upgrades' $CHECKSUM)
    1.38    repack           $(_ 'Create a package archive from an installed package')
    1.39    repack-config    $(_ 'Create a package archive with configuration files')
    1.40    recompress       $(_ 'Rebuild a package with a better compression ratio')
    1.41 @@ -185,7 +185,7 @@
    1.42    clean-cache|-cc  $(_ 'Clean all packages downloaded in cache directory')
    1.43    depends          $(_ 'Display dependencies tree')
    1.44    rdepends         $(_ 'Display reverse dependencies tree')
    1.45 -  convert          $(_ 'Convert deb/rpm/tgz/pet/sfs/sb/arch/ipk package to tazpkg)')
    1.46 +  convert          $(_ 'Convert alien package to tazpkg')
    1.47    link             $(_ 'Link a package from another slitaz installation')
    1.48    setup-mirror|-sm $(_ 'Change the mirror url configuration')
    1.49    list-undigest    $(_ 'List undigest mirrors')
    1.50 @@ -222,7 +222,7 @@
    1.51  {
    1.52  	if ! [ -d "$1" ]; then
    1.53  		FOLDER=$1
    1.54 -		action 'Creating $FOLDER...'
    1.55 +		action 'Creating folder "%s"...' $FOLDER
    1.56  		mkdir -p "$FOLDER"
    1.57  		status
    1.58  		return 1
    1.59 @@ -267,7 +267,7 @@
    1.60  {
    1.61  	if [ ! -f "$PACKAGE_FILE" ]; then
    1.62  		newline
    1.63 -		_ 'Unable to find: $PACKAGE_FILE'
    1.64 +		_ 'Unable to find file "%s"' $PACKAGE_FILE
    1.65  		newline
    1.66  		exit 0
    1.67  	fi
    1.68 @@ -281,7 +281,7 @@
    1.69  	receipt_path="$1$INSTALLED/$PACKAGE/receipt"
    1.70  	if [ ! -f $receipt_path ]; then
    1.71  		newline
    1.72 -		_ 'Unable to find the receipt: $receipt_path'
    1.73 +		_ 'Unable to find the receipt "%s"' $receipt_path
    1.74  		newline
    1.75  		exit 0
    1.76  	fi
    1.77 @@ -343,11 +343,8 @@
    1.78  {
    1.79  	if [ -n "$(get_installed_package_pathname $PACKAGE $1)" ]; then
    1.80  		newline
    1.81 -		# FIXME
    1.82 -		cat << EOT
    1.83 -$(colorize 34 $PACKAGE) $(_ "package is already installed.
    1.84 -You can use the --forced option to force installation.")
    1.85 -EOT
    1.86 +		_ '"%s" package is already installed.' $(colorize 34 $PACKAGE)
    1.87 +		_ 'You can use the --forced option to force installation.'
    1.88  		newline
    1.89  		exit 0
    1.90  	fi
    1.91 @@ -364,7 +361,7 @@
    1.92  			tazpkg recharge
    1.93  		else
    1.94  			newline
    1.95 -			_ 'Unable to find the list: $list_path'
    1.96 +			_ 'Unable to find the list "%s"' $list_path
    1.97  			_ \
    1.98  "You must probably run 'tazpkg recharge' as root to get the latest list of
    1.99  packages available on the mirror."
   1.100 @@ -383,7 +380,7 @@
   1.101  	info_path="$PKGS_DB/installed.info"
   1.102  	if [ ! -f "$info_path" ]; then
   1.103  		if [ "$(id -u)" == "0" ]; then
   1.104 -			_ 'File installed.info generated. Please wait...'
   1.105 +			_ 'File "%s" generated. Please wait...' installed.info
   1.106  			for pkg in $PKGS_DB/installed/*/receipt; do
   1.107  				unset_receipt
   1.108  				. $pkg
   1.109 @@ -394,7 +391,7 @@
   1.110  EOT
   1.111  			done
   1.112  		else
   1.113 -			_ 'Unable to find: installed.info'
   1.114 +			_ 'Unable to find file "%s"' installed.info
   1.115  			_ 'Please run tazpkg as root.'
   1.116  			exit 1
   1.117  		fi
   1.118 @@ -516,7 +513,7 @@
   1.119  		rm -f $tmp/rep $tmp/cachedir
   1.120  	else
   1.121  		newline
   1.122 -		_ 'Unable to find: $PACKAGE in the mirrored packages list.'
   1.123 +		_ 'Unable to find package "%s" in the mirrored packages list.' $PACKAGE
   1.124  		newline
   1.125  		[ -n "$check_only" ] && return 1
   1.126  		exit 0
   1.127 @@ -603,7 +600,7 @@
   1.128  
   1.129  extract_package()
   1.130  {
   1.131 -	action 'Extracting $PACKAGE...'
   1.132 +	action 'Extracting package...'
   1.133  	cpio -idm --quiet < ${PACKAGE_FILE##*/} && rm -f ${PACKAGE_FILE##*/}
   1.134  	status
   1.135  	if [ -f fs.cpio.lzma ]; then
   1.136 @@ -679,9 +676,9 @@
   1.137  	mkdir -p $TMP_DIR
   1.138  	[ -n "$INSTALL_LIST" ] && echo "$PACKAGE_FILE" >> $ROOT$PKGS_DB/$INSTALL_LIST-processed
   1.139  
   1.140 -	title 'Installation of: $PACKAGE'
   1.141 -
   1.142 -	action 'Copying $PACKAGE...'
   1.143 +	title 'Installation of package "%s"' $PACKAGE
   1.144 +
   1.145 +	action 'Copying package...'
   1.146  	cp $PACKAGE_FILE $TMP_DIR
   1.147  	status
   1.148  
   1.149 @@ -700,8 +697,7 @@
   1.150  		action "Checking post install dependencies..."
   1.151  		[ -f $INSTALLED/$PACKAGE/receipt ]
   1.152  		if ! status; then
   1.153 -			command="tazpkg install $PACKAGE_FILE"
   1.154 -			_ "Please run '\$command' in / and retry."
   1.155 +			_ 'Please run "%s" in / and retry.' "tazpkg install $PACKAGE_FILE"
   1.156  			rm -rf $TMP_DIR
   1.157  			exit 1
   1.158  		fi
   1.159 @@ -783,7 +779,7 @@
   1.160  	fi
   1.161  	if [ -n "$CONFIG_FILES" ]; then
   1.162  		# save 'official' configuration files
   1.163 -		action 'Saving configuration files for $PACKAGE...'
   1.164 +		action 'Saving configuration files...'
   1.165  		for i in $CONFIG_FILES; do
   1.166  			{ cd fs ; find ${i#/} -type f 2> /dev/null; cd ..; }
   1.167  		done | { cd fs ; cpio -o -H newc --quiet | gzip -9; cd ..; } > \
   1.168 @@ -799,12 +795,12 @@
   1.169  		status
   1.170  	fi
   1.171  
   1.172 -	action 'Installing $PACKAGE...'
   1.173 +	action 'Installing package...'
   1.174  	[ "$(busybox ls fs/* 2> /dev/null)" ] && cp -a fs/* $ROOT/
   1.175  	status
   1.176  
   1.177  	if [ -s files2remove.list ]; then
   1.178 -		action 'Removing old $PACKAGE...'
   1.179 +		action 'Removing old package...'
   1.180  		while read file; do
   1.181  			remove_with_path $ROOT$file
   1.182  		done < files2remove.list
   1.183 @@ -855,8 +851,7 @@
   1.184  EOT
   1.185  
   1.186  	cd $TOP_DIR
   1.187 -	pkg_name="$PACKAGE ($VERSION$EXTRAVERSION)"
   1.188 -	footer "$(_ '$pkg_name is installed.')"
   1.189 +	footer "$(_ 'Package "%s" (%s) is installed.' $PACKAGE $VERSION$EXTRAVERSION)"
   1.190  
   1.191  	# Log this activity
   1.192  	[ -n "$ROOT" ] || log_pkg Installed
   1.193 @@ -895,8 +890,8 @@
   1.194  	set +e
   1.195  	cd $TMP_DIR
   1.196  	[ -d $PACKAGE-$VERSION ] || abort_package \
   1.197 -	  "Could not download ${TARBALL:-$PACKAGE} from ${WGET_URL:-$WEB_SITE}. Exiting."
   1.198 -	
   1.199 +		"$(_ 'Could not download "%s" from "%s". Exiting.' ${TARBALL:-$PACKAGE} ${WGET_URL:-$WEB_SITE})"
   1.200 +
   1.201  	if [ ! -s $PACKAGE-$VERSION/receipt ]; then
   1.202  		cat > $PACKAGE-$VERSION/receipt <<EOT
   1.203  # SliTaz package receipt.
   1.204 @@ -954,8 +949,8 @@
   1.205  	# Filter out already processed deps
   1.206  	for i in $@; do
   1.207  		case " $ALL_DEPS" in
   1.208 -		*\ $i\ *);;
   1.209 -		*) list="$list $i";;
   1.210 +			*\ $i\ *) ;;
   1.211 +			*) list="$list $i";;
   1.212  		esac
   1.213  	done
   1.214  	ALL_DEPS="$ALL_DEPS$list "
   1.215 @@ -963,8 +958,8 @@
   1.216  		[ -f $i/receipt ] || continue
   1.217  		deps="$(DEPENDS=""; . $i/receipt; echo $DEPENDS)"
   1.218  		case " $deps " in
   1.219 -		*\ $pkg\ *) echo -e "$MSG  $i"; MSG="";;
   1.220 -		*) check_for_deps_loop $pkg $deps;;
   1.221 +			*\ $pkg\ *) echo -e "$MSG  $i"; MSG="";;
   1.222 +			*) check_for_deps_loop $pkg $deps;;
   1.223  		esac
   1.224  	done
   1.225  }
   1.226 @@ -989,23 +984,22 @@
   1.227  			MISSING_PACKAGE=$i
   1.228  			num=$(($num+1))
   1.229  		elif [ ! -f "$1$INSTALLED/$i/receipt" ]; then
   1.230 -			_ 'WARNING Dependency loop between $PACKAGE and $i.'
   1.231 +			_ 'WARNING! Dependency loop between "%s" and "%s".' $PACKAGE $i
   1.232  		fi
   1.233  	done
   1.234  
   1.235  	if [ ! "$MISSING_PACKAGE" = "" ]; then
   1.236 -		title "$(_ 'Tracking dependencies for: $PACKAGE')"
   1.237 +		title "$(_ 'Tracking dependencies for package "%s"' $PACKAGE)"
   1.238  		for pkgorg in $DEPENDS; do
   1.239  			i=$(equivalent_pkg $pkgorg $1)
   1.240  			if [ ! -d "$1$INSTALLED/$i" ]; then
   1.241  				MISSING_PACKAGE=$i
   1.242 -				_ 'Missing: $MISSING_PACKAGE'
   1.243 +				_ 'Missing package "%s"' $MISSING_PACKAGE
   1.244  			fi
   1.245  		done
   1.246 -		separator
   1.247 -		eval_ngettext \
   1.248 +		footer "$(eval_ngettext \
   1.249  			'$num missing package to install.' \
   1.250 -			'$num missing packages to install.' $num; echo
   1.251 +			'$num missing packages to install.' $num)"
   1.252  	fi
   1.253  }
   1.254  
   1.255 @@ -1038,7 +1032,7 @@
   1.256  				# the TAZPKG_BASENAME in the local packages.list.
   1.257  				found=0
   1.258  				if [ -f "$list" ]; then
   1.259 -					_ 'Checking if $pkg exists in local list...'
   1.260 +					_ 'Checking if package "%s" exists in local list...' $pkg
   1.261  					mkdir $TMP_DIR
   1.262  					for i in $pkg-*.tazpkg; do
   1.263  						[ -f $i ] || continue
   1.264 @@ -1064,9 +1058,8 @@
   1.265  		done
   1.266  	else
   1.267  		newline
   1.268 -		_ \
   1.269 -"Leaving dependencies for \$PACKAGE unresolved.
   1.270 -The package is installed but will probably not work."
   1.271 +		_ 'Leaving dependencies for package "%s" unresolved.' $PACKAGE
   1.272 +		_ 'The package is installed but will probably not work.'
   1.273  		newline
   1.274  	fi
   1.275  }
   1.276 @@ -1078,9 +1071,8 @@
   1.277  {
   1.278  	_ 'Installed packages'
   1.279  	separator
   1.280 -	list=`ls -1 $INSTALLED | grep -i "$PATTERN"`
   1.281  	num=0
   1.282 -	for pkg in $list; do
   1.283 +	for pkg in $(ls -1 $INSTALLED | grep -i "$PATTERN"); do
   1.284  		EXTRAVERSION=""
   1.285  		[ -f $INSTALLED/$pkg/receipt ] || continue
   1.286  		. $INSTALLED/$pkg/receipt
   1.287 @@ -1088,15 +1080,9 @@
   1.288  		num=$(($num+1))
   1.289  	done
   1.290  
   1.291 -	# Set correct ending messages.
   1.292 -	if [ x$num == x ]; then
   1.293 -		_ 'No installed packages found for: $PATTERN'
   1.294 -		newline
   1.295 -	else
   1.296 -		footer "$(eval_ngettext \
   1.297 -			'$num installed package found for: $PATTERN' \
   1.298 -			'$num installed packages found for: $PATTERN' $num)"
   1.299 -	fi
   1.300 +	footer "$(eval_ngettext \
   1.301 +		'$num installed package found for: $PATTERN' \
   1.302 +		'$num installed packages found for: $PATTERN' $num)"
   1.303  }
   1.304  
   1.305  
   1.306 @@ -1119,14 +1105,9 @@
   1.307  please run 'tazpkg recharge' once as root before searching."
   1.308  		newline
   1.309  	fi
   1.310 -	if [ "$num" = "0" ]; then
   1.311 -		_ 'No available packages found for: $PATTERN'
   1.312 -		newline
   1.313 -	else
   1.314 -		footer "$(eval_ngettext \
   1.315 -			'$num available package found for: $PATTERN' \
   1.316 -			'$num available packages found for: $PATTERN' $packages)"
   1.317 -	fi
   1.318 +	footer "$(eval_ngettext \
   1.319 +		'$num available package found for: $PATTERN' \
   1.320 +		'$num available packages found for: $PATTERN' $packages)"
   1.321  }
   1.322  
   1.323  
   1.324 @@ -1149,14 +1130,9 @@
   1.325  please run 'tazpkg recharge' once as root before searching."
   1.326  		newline
   1.327  	fi
   1.328 -	if [ "$num" = "0" ]; then
   1.329 -		_ 'No available packages found for: $PATTERN'
   1.330 -		newline
   1.331 -	else
   1.332 -		footer "$(eval_ngettext \
   1.333 -			'$num available package found for: $PATTERN' \
   1.334 -			'$num available packages found for: $PATTERN' $packages)"
   1.335 -	fi
   1.336 +	footer "$(eval_ngettext \
   1.337 +		'$num available package found for: $PATTERN' \
   1.338 +		'$num available packages found for: $PATTERN' $packages)"
   1.339  }
   1.340  
   1.341  
   1.342 @@ -1206,7 +1182,7 @@
   1.343  			tazpkg remove $PACKAGE
   1.344  		done
   1.345  	else
   1.346 -		_ "Can't find flavor \$FLAVOR. Abort."
   1.347 +		_ "Can't find flavor \"%s\". Abort." $FLAVOR
   1.348  	fi
   1.349  	cd $TOP_DIR
   1.350  	rm -rf $TMP_DIR
   1.351 @@ -1237,7 +1213,7 @@
   1.352  	if [ "$NEW_MIRROR_URL" = "" ]; then
   1.353  		_ 'Nothing has been changed.'
   1.354  	else
   1.355 -		_ 'Setting mirror(s) to: $NEW_MIRROR_URL'
   1.356 +		_ 'Setting mirror(s) to: "%s"' $NEW_MIRROR_URL
   1.357  		rm -f $1/mirror
   1.358  		for i in $NEW_MIRROR_URL; do
   1.359  			echo "${i%/}/" >> $1/mirror
   1.360 @@ -1396,7 +1372,7 @@
   1.361  				# Check for an asked category.
   1.362  				ASKED_CATEGORY_I18N="$@"
   1.363  				ASKED_CATEGORY=$(reverse_translate_category "$ASKED_CATEGORY_I18N")
   1.364 -				title 'Installed packages of category: $ASKED_CATEGORY_I18N'
   1.365 +				title 'Installed packages of category "%s"' $ASKED_CATEGORY_I18N
   1.366  				TMPLIST=$(mktemp)
   1.367  				awk -F$'\t' '
   1.368  				{
   1.369 @@ -1450,7 +1426,7 @@
   1.370  		# List files installed with the package.
   1.371  		check_for_package_on_cmdline
   1.372  		check_for_receipt
   1.373 -		title 'Installed files by: $PACKAGE'
   1.374 +		title 'Installed files by "%s"' $PACKAGE
   1.375  		sort < $INSTALLED/$PACKAGE/files.list
   1.376  		files=$(wc -l < $INSTALLED/$PACKAGE/files.list)
   1.377  		num=$(emsg "<c 32>$files</c>")
   1.378 @@ -1468,29 +1444,34 @@
   1.379  		. $INSTALLED/$PACKAGE/receipt
   1.380  		title 'TazPKG information'
   1.381  		# Display localized short description
   1.382 -		if [ -e "$PKGS_DB/packages-desc.$LANG" ]; then
   1.383 -			LOCDESC=$(grep -e "^$PACKAGE	" $PKGS_DB/packages-desc.$LANG | cut -d'	' -f2)
   1.384 -			[ "x$LOCDESC" != "x" ] && SHORT_DESC="$LOCDESC"
   1.385 -		fi
   1.386 -		emsg "\
   1.387 -<b>$(_ 'Package    :')</b> $PACKAGE
   1.388 -<b>$(_ 'Version    :')</b> $VERSION$EXTRAVERSION
   1.389 -<b>$(_ 'Category   :')</b> $(_ $CATEGORY)
   1.390 -<b>$(_ 'Short desc :')</b> $SHORT_DESC
   1.391 -<b>$(_ 'Maintainer :')</b> $MAINTAINER"
   1.392 -		[ -n "$LICENSE" ]       && emsg "<b>$(_ 'License    :')</b> $LICENSE"
   1.393 -		[ -n "$DEPENDS" ]       && emsg "<b>$(_ 'Depends    :')</b> $DEPENDS"
   1.394 -		[ -n "$SUGGESTED" ]     && emsg "<b>$(_ 'Suggested  :')</b> $SUGGESTED"
   1.395 -		[ -n "$BUILD_DEPENDS" ] && emsg "<b>$(_ 'Build deps :')</b> $BUILD_DEPENDS"
   1.396 -		[ -n "$WANTED" ]        && emsg "<b>$(_ 'Wanted src :')</b> $WANTED"
   1.397 -		[ -n "$WEB_SITE" ]      && emsg "<b>$(_ 'Web site   :')</b> $WEB_SITE"
   1.398 +		for LC in $LANG ${LANG%_*}; do
   1.399 +			if [ -e "$PKGS_DB/packages-desc.$LC" ]; then
   1.400 +				LOCDESC=$(grep -e "^$PACKAGE	" $PKGS_DB/packages-desc.$LC | cut -d'	' -f2)
   1.401 +				[ -n "$LOCDESC" ] && SHORT_DESC="$LOCDESC"
   1.402 +			fi
   1.403 +		done
   1.404 +		emsg "$(
   1.405 +		{
   1.406 +			_ 'Package    : %s' "$PACKAGE"
   1.407 +			_ 'Version    : %s' "$VERSION$EXTRAVERSION"
   1.408 +			_ 'Category   : %s' "$(_ $CATEGORY)"
   1.409 +			_ 'Short desc : %s' "$SHORT_DESC"
   1.410 +			_ 'Maintainer : %s' "$MAINTAINER"
   1.411 +			_ 'License    : %s' "$LICENSE"
   1.412 +			_ 'Depends    : %s' "$DEPENDS"
   1.413 +			_ 'Suggested  : %s' "$SUGGESTED"
   1.414 +			_ 'Build deps : %s' "$BUILD_DEPENDS"
   1.415 +			_ 'Wanted src : %s' "$WANTED"
   1.416 +			_ 'Web site   : %s' "$WEB_SITE"
   1.417 +			_ 'Tags       : %s' "$TAGS"
   1.418 +		} | sed '/: $/d; s|^\([^:]*\):|<b>\1:</b>|')"
   1.419  		footer ;;
   1.420  
   1.421  
   1.422  	desc)
   1.423  		# Display package description.txt if available.
   1.424  		if [ -f "$INSTALLED/$PACKAGE/description.txt" ]; then
   1.425 -			title 'Description of: $PACKAGE'
   1.426 +			title 'Description of package "%s"' $PACKAGE
   1.427  			cat $INSTALLED/$PACKAGE/description.txt
   1.428  			footer
   1.429  		else
   1.430 @@ -1531,7 +1512,7 @@
   1.431  			newline
   1.432  			exit 0
   1.433  		fi
   1.434 -		title 'Search result for: $PATTERN'
   1.435 +		title 'Search result for "%s"' $PATTERN
   1.436  		# Default is to search in installed pkgs and the raw list.
   1.437  		case "$3" in
   1.438  			-i|--installed)
   1.439 @@ -1555,27 +1536,25 @@
   1.440  			newline
   1.441  			exit 0
   1.442  		fi
   1.443 -		s_file="$2"
   1.444 -		title 'Search result for file $s_file'
   1.445 -
   1.446 +		title 'Search result for file "%s"' $2
   1.447 +
   1.448 +		TMPLIST=$(mktemp)
   1.449  		if [ "$3" == "--mirror" ]; then
   1.450  
   1.451 -			match=0
   1.452 -			for i in $PKGS_DB/files.list.lzma \
   1.453 -				$PKGS_DB/undigest/*/files.list.lzma; do
   1.454 +			for i in $PKGS_DB/files.list.lzma $PKGS_DB/undigest/*/files.list.lzma; do
   1.455  				[ -f $i ] || continue
   1.456 -				unlzma -c $i | grep -- ".*:.*$2" | awk '
   1.457 +				lzcat $i | awk -F: -vP="$(gettext 'Package %s:')" '
   1.458  					BEGIN { last="" }
   1.459 -					{
   1.460 -						pkg=substr($0,0,index($0,":")-1);
   1.461 -						file=substr($0,index($0,":")+2);
   1.462 -						if (last != pkg) {
   1.463 -							last = pkg;
   1.464 -							printf("\n%c[1mPackage %s:%c[0m\n",27,pkg,27);
   1.465 +					$2 ~ /'$2'/ {
   1.466 +						if (last != $1) {
   1.467 +							last = $1;
   1.468 +							PP = P;
   1.469 +							sub(/%s/, $1, PP);
   1.470 +							printf("\n\e[1;33m%s\e[0;39m\n", PP);
   1.471  						}
   1.472 -						printf("%s\n",file);
   1.473 -					}'
   1.474 -				match=$(($match + `unlzma -c $i | grep -- ".*:.*$2" | wc -l`))
   1.475 +						gsub(/'$2'/, "\e[0;32m'$2'\e[0;39m", $2);
   1.476 +						print $2
   1.477 +					}' | tee -a $TMPLIST
   1.478  			done
   1.479  
   1.480  		else
   1.481 @@ -1586,24 +1565,26 @@
   1.482  				if grep -qs "$2" $pkg/files.list; then
   1.483  					. $pkg/receipt
   1.484  					newline
   1.485 -					boldify "$(_ 'Package $PACKAGE:')"
   1.486 -					grep "$2" $pkg/files.list
   1.487 -					files=`grep $2 $pkg/files.list | wc -l`
   1.488 -					match=$(($match+$files))
   1.489 +					emsg "<c 33>$(_ 'Package %s:' $PACKAGE)</c>"
   1.490 +					awk '
   1.491 +						/'$2'/ {
   1.492 +							gsub(/'$2'/, "\e[0;32m'$2'\e[0;39m", $0);
   1.493 +							print " "$0
   1.494 +						}
   1.495 +					' $pkg/files.list | tee -a $TMPLIST
   1.496  				fi
   1.497  			done
   1.498  
   1.499  		fi
   1.500 +
   1.501 +		match=$(sed '/^ /!d' $TMPLIST | wc -l)
   1.502 +		rm $TMPLIST
   1.503 +
   1.504  		pkg=$2
   1.505 -		if [ "$match" = "" ]; then
   1.506 -			# FIXME
   1.507 -			_ '0 files found for: $pkg'
   1.508 -		else
   1.509 -			num=$(emsg "<c 32>$files</c>")
   1.510 -			footer "$(eval_ngettext \
   1.511 -				'$num file found for: $pkg' \
   1.512 -				'$num files found for: $pkg' $match)"
   1.513 -		fi
   1.514 +		num=$(emsg "<c 32>$match</c>")
   1.515 +		footer "$(eval_ngettext \
   1.516 +			'$num file found for: $pkg' \
   1.517 +			'$num files found for: $pkg' $match)"
   1.518  		;;
   1.519  
   1.520  
   1.521 @@ -1616,8 +1597,7 @@
   1.522  			newline
   1.523  			exit 0
   1.524  		fi
   1.525 -		s_pkg="$2"
   1.526 -		title 'Search result for package $s_pkg'
   1.527 +		title 'Search result for package "%s"' $2
   1.528  
   1.529  		# Search for a file on mirror and output only the package name
   1.530  		match=0