X-Git-Url: https://git.rohieb.name/openwrt.git/blobdiff_plain/d5dc9a90873047ab07107833a950320ae3b2b41f..78945f2f83d9f1d068e68f06cd5c53d28bf2f5c1:/scripts/ipkg

diff --git a/scripts/ipkg b/scripts/ipkg
index 9143c984e..da6447c97 100755
--- a/scripts/ipkg
+++ b/scripts/ipkg
@@ -146,7 +146,7 @@ Valid destinations are directories or one of the dest names from $IPKG_CONF:" >&
 		export no_proxy="$IPKG_NO_PROXY"
 	fi
 
-	IPKG_STATUS_FIELDS='\(Package\|Status\|Essential\|Version\|Conffiles\|Root\)'
+	IPKG_STATUS_FIELDS='\(Package\|Status\|Essential\|Version\|Conffiles\|Root\|Architecture\)'
 }
 
 ipkg_usage() {
@@ -595,8 +595,8 @@ ipkg_depends() {
 		all_deps="$all_deps $new_pkgs"
 		local new_deps=
 		for pkg in $new_pkgs; do
-			if echo $pkg | grep -q '[^a-z0-9.+-]'; then
-				echo "ipkg_depends: ERROR: Package name $pkg contains illegal characters (should be [a-z0-9.+-])" >&2
+			if echo $pkg | grep -q '[^A-Za-z0-9.+-]'; then
+				echo "ipkg_depends: ERROR: Package name $pkg contains illegal characters (should be [A-Za-z0-9.+-])" >&2
 				return 1
 			fi
 			# TODO: Fix this. For now I am ignoring versions and alternations in dependencies.
@@ -773,7 +773,7 @@ ipkg_install_file_dest() {
 	mkdir -p $IPKG_TMP/$pkg/data
 	mkdir -p $info_dir
 
-	if ! $pkg_extract_stdout $filename ./control.tar.gz | (cd $IPKG_TMP/$pkg/control; tar -xzf - ) ; then
+	if ! $pkg_extract_stdout $filename ./control.tar.gz | (cd $IPKG_TMP/$pkg/control; zcat | tar -xf - ) ; then
 		echo "ipkg_install_file: ERROR unpacking control.tar.gz from $filename"
 		return 1
 	fi
@@ -794,7 +794,7 @@ Status: install ok pending" | ipkg_status_update_sd $sd $pkg
 	fi
 
 
-	echo -n "Unpacking $pkg..."
+	printf "Unpacking $pkg..."
 	set +o noglob
 	for file in $IPKG_TMP/$pkg/control/*; do
 		local base_file="`ipkg_file_part $file`"
@@ -803,13 +803,13 @@ Status: install ok pending" | ipkg_status_update_sd $sd $pkg
 	set -o noglob
 	rm -r $IPKG_TMP/$pkg/control
 
-	if ! $pkg_extract_stdout $filename ./data.tar.gz | (cd $IPKG_TMP/$pkg/data; tar -xzf - ) ; then
+	if ! $pkg_extract_stdout $filename ./data.tar.gz | (cd $IPKG_TMP/$pkg/data; zcat | tar -xf - ) ; then
 		echo "ipkg_install_file: ERROR unpacking data.tar.gz from $filename"
 		return 1
 	fi
 	echo "Done."
 
-	echo -n "Configuring $pkg..."
+	printf "Configuring $pkg..."
 	export PKG_ROOT=$dest
 	if [ -x "$info_dir/$pkg.preinst" ]; then
 		if ! $info_dir/$pkg.preinst install; then
@@ -828,7 +828,7 @@ Status: install ok pending" | ipkg_status_update_sd $sd $pkg
 				local use_maintainers_conffile=
 				if [ -z "$FORCE_DEFAULTS" ]; then
 					while true; do
-						echo -n "Configuration file \`$conffile'
+						printf "Configuration file \`$conffile'
  ==> File on system created by you or by a script.
  ==> File also in package provided by package maintainer.
    What would you like to do about it ?  Your options are:
@@ -875,7 +875,7 @@ diff -u $dest/$conffile $IPKG_TMP/$pkg/data/$conffile"
 	rm -rf $IPKG_TMP/$pkg/data
 	rmdir $IPKG_TMP/$pkg
 	rm -f $info_dir/$pkg.list
-	$pkg_extract_stdout $filename ./data.tar.gz | tar tzf - | sed -e 's/^\.//' > $info_dir/$pkg.list
+	$pkg_extract_stdout $filename ./data.tar.gz | zcat | tar tf - | sed -e '/\/$/d; s/^\.//' > $info_dir/$pkg.list
 
 	if [ -x "$info_dir/$pkg.postinst" ]; then
 		$info_dir/$pkg.postinst configure
@@ -960,7 +960,7 @@ ipkg_install_wanted() {
 		if [ -n "$FORCE_DEFAULTS" ]; then
 			echo "Installing them now."
 		else
-			echo -n "Install them now [Y/n] ? "
+			printf "Install them now [Y/n] ? "
 			read response
 			case "$response" in
 			[Nn] | [Nn][Oo])