60 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/sh
 | 
						|
#
 | 
						|
# This should work with the GNU version of tar and gzip!
 | 
						|
# This should work with the bash or ash shell!
 | 
						|
# Requires the programs (ar, tar, gzip, and the pager more or less).
 | 
						|
#
 | 
						|
usage() {
 | 
						|
	cat <<EOF
 | 
						|
Usage: undeb -c package.deb            <Print control file info>
 | 
						|
       undeb -l package.deb            <List contents of deb package>
 | 
						|
       undeb -x package.deb /foo/boo   <Extract deb package to this directory,
 | 
						|
                                        put . for current directory>
 | 
						|
EOF
 | 
						|
	exit
 | 
						|
}
 | 
						|
 | 
						|
deb=$2
 | 
						|
 | 
						|
exist() {
 | 
						|
	if [ -z "${deb}" ]; then
 | 
						|
		usage
 | 
						|
	elif [ ! -s "${deb}" ]; then
 | 
						|
		echo "Can't find ${deb}!"
 | 
						|
		exit 1
 | 
						|
	fi
 | 
						|
}
 | 
						|
 | 
						|
if [ -z "$1" ]; then
 | 
						|
	usage
 | 
						|
elif [ "$1" = "-l" ]; then
 | 
						|
	exist
 | 
						|
	type more >/dev/null 2>&1 && pager=more
 | 
						|
	type less >/dev/null 2>&1 && pager=less
 | 
						|
	[ -z "${pager}" ] && echo "No pager found!" && exit 1
 | 
						|
	(
 | 
						|
		ar -p "${deb}" control.tar.gz | tar -xzO *control
 | 
						|
		printf "\nPress enter to scroll, q to Quit!\n\n"
 | 
						|
		ar -p "${deb}" data.tar.gz | tar -tzv
 | 
						|
	) | ${pager}
 | 
						|
	exit
 | 
						|
elif [ "$1" = "-c" ]; then
 | 
						|
	exist
 | 
						|
	ar -p "${deb}" control.tar.gz | tar -xzO *control
 | 
						|
	exit
 | 
						|
elif [ "$1" = "-x" ]; then
 | 
						|
	exist
 | 
						|
	if [ -z "$3" ]; then
 | 
						|
		usage
 | 
						|
	elif [ ! -d "$3" ]; then
 | 
						|
		echo "No such directory $3!"
 | 
						|
		exit 1
 | 
						|
	fi
 | 
						|
	ar -p "${deb}" data.tar.gz | tar -xzvpf - -C "$3" || exit
 | 
						|
	echo
 | 
						|
	echo "Extracted ${deb} to $3!"
 | 
						|
	exit
 | 
						|
else
 | 
						|
	usage
 | 
						|
fi
 |