#!/bin/sh _root="$(dirname "${0}")"; . "${_root}/lib/env.sh" want root log err "Don't use me yet!" pebkac() { echo "Insert help here" } while getopts "d:o:h" opt do case "${opt}" in d) dev="${OPTARG}" ;; o) conf="${OPTARG}" ;; h) pebkac ;; [?]) pebkac "Unrecognized option ${opt}" ;; esac done shift $(( $OPTIND - 1 )) _dev="${dev}" tgt="${tgt:-${_root}/../src/conf}" [ -b "${dev}" -o -c "${dev}" ] || dev="/dev/${dev}" [ -b "${dev}" -o -c "${dev}" ] || err "${_dev}: no such file or directory" [ -d "${tgt}" ] || err "${tgt}: not a directory" tmpdir="$(mktemp -d "$(dirname "${tgt}").XXXXXXXX")" tmpmnt="$(mktemp -d "/tmp/conf.XXXXXXXX")" trap "umount -f '${tmpmnt}'; rm -Rf '${tmpdir}' '${tmpmnt}'" exit hup int term kill chk cd "${tmpdir}" chk mount "${dev}" "${tmpmnt}" ( zcat "${tmpmnt}/default/etc.cpio.gz" | cpio -id ) || chk ( zcat "${tmpmnt}/default/var.cpio.gz" | cpio -id ) || chk chk umount "${tmpmnt}" chk rm -Rf "${tmpmnt}" rm -Rf "${tgt}.old" chk mv "${tgt}" "${tgt}.old" chk mv "${tmpdir}" "${tgt}" trap "" exit hup int term kill