From owner-svn-src-all@FreeBSD.ORG Thu Oct 21 17:20:38 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 054BA106566C; Thu, 21 Oct 2010 17:20:38 +0000 (UTC) (envelope-from imp@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id DFBC38FC1E; Thu, 21 Oct 2010 17:20:37 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o9LHKb8J097654; Thu, 21 Oct 2010 17:20:37 GMT (envelope-from imp@svn.freebsd.org) Received: (from imp@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o9LHKbdg097652; Thu, 21 Oct 2010 17:20:37 GMT (envelope-from imp@svn.freebsd.org) Message-Id: <201010211720.o9LHKbdg097652@svn.freebsd.org> From: Warner Losh Date: Thu, 21 Oct 2010 17:20:37 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r214139 - head/usr.sbin/pc-sysinstall/backend X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 21 Oct 2010 17:20:38 -0000 Author: imp Date: Thu Oct 21 17:20:37 2010 New Revision: 214139 URL: http://svn.freebsd.org/changeset/base/214139 Log: This is an updated patch to the last patch to do this which fixes a local variable issue. This patch decompresses compressed images to the stdout when writing to a device to avoid running out of space issues. Submitted by: John Hixson Pr: 151049 Modified: head/usr.sbin/pc-sysinstall/backend/functions.sh Modified: head/usr.sbin/pc-sysinstall/backend/functions.sh ============================================================================== --- head/usr.sbin/pc-sysinstall/backend/functions.sh Thu Oct 21 17:14:44 2010 (r214138) +++ head/usr.sbin/pc-sysinstall/backend/functions.sh Thu Oct 21 17:20:37 2010 (r214139) @@ -325,64 +325,8 @@ get_compression_type() export VAL } -decompress_file() -{ - local FILE - local COMPRESSION - - FILE="$1" - COMPRESSION="$2" - - if [ -n "${COMPRESSION}" ] - then - case "${COMPRESSION}" in - lzw) - rc_halt "uncompress ${FILE}" - VAL="${FILE%.Z}" - ;; - - lzo) - rc_halt "lzop -d ${FILE}" - VAL="${FILE%.lzo}" - ;; - - lzma) - rc_halt "lzma -d ${FILE}" - VAL="${FILE%.lzma}" - ;; - - gzip) - rc_halt "gunzip ${FILE}" - VAL="${FILE%.gz}" - ;; - - bzip2) - rc_halt "bunzip2 ${FILE}" - VAL="${FILE%.bz2}" - ;; - - xz) - rc_halt "xz -d ${FILE}" - VAL="${FILE%.xz}" - ;; - - zip) - rc_halt "unzip ${FILE}" - VAL="${FILE%.zip}" - ;; - - *) - exit_err "ERROR: ${COMPRESSION} compression is not supported" - ;; - esac - fi - - export VAL -} - write_image() { - local IMAGE_FILE local DEVICE_FILE IMAGE_FILE="$1" @@ -418,11 +362,51 @@ write_image() get_compression_type "${IMAGE_FILE}" COMPRESSION="${VAL}" - decompress_file "${IMAGE_FILE}" "${COMPRESSION}" - IMAGE_FILE="${VAL}" - fi + case "${COMPRESSION}" in + lzw) + rc_halt "uncompress ${IMAGE_FILE} -c | dd of=${DEVICE_FILE} bs=128k" + IMAGE_FILE="${IMAGE_FILE%.Z}" + ;; + + lzo) + rc_halt "lzop -d $IMAGE_{FILE} -c | dd of=${DEVICE_FILE} bs=128k" + IMAGE_FILE="${IMAGE_FILE%.lzo}" + ;; + + lzma) + rc_halt "lzma -d ${IMAGE_FILE} -c | dd of=${DEVICE_FILE} bs=128k" + IMAGE_FILE="${IMAGE_FILE%.lzma}" + ;; + + gzip) + rc_halt "gunzip ${IMAGE_FILE} -c | dd of=${DEVICE_FILE} bs=128k" + IMAGE_FILE="${IMAGE_FILE%.gz}" + ;; - rc_halt "dd if=${IMAGE_FILE} of=${DEVICE_FILE} bs=128k" + bzip2) + rc_halt "bunzip2 ${IMAGE_FILE} -c | dd of=${DEVICE_FILE} bs=128k" + IMAGE_FILE="${IMAGE_FILE%.bz2}" + ;; + + xz) + rc_halt "xz -d ${IMAGE_FILE} -c | dd of=${DEVICE_FILE} bs=128k" + IMAGE_FILE="${IMAGE_FILE%.xz}" + ;; + + zip) + rc_halt "unzip ${IMAGE_FILE} -c | dd of=${DEVICE_FILE} bs=128k" + IMAGE_FILE="${IMAGE_FILE%.zip}" + ;; + + *) + exit_err "ERROR: ${COMPRESSION} compression is not supported" + ;; + esac + + else + rc_halt "dd if=${IMAGE_FILE} of=${DEVICE_FILE} bs=128k" + + fi }; install_fresh()