live-snapshot: honour "-o|--output FILE".
[live-boot-grml.git] / bin / live-snapshot
index 199718f..03245ea 100755 (executable)
@@ -6,7 +6,7 @@
 #   and saves the /live/cow (or a different dir) filesystem in it for reuse
 #   in another live-initramfs session. Look at manpage for more info.
 #
-# Copyright (C) 2006 Marco Amadori <marco.amadori@gmail.com>
+# Copyright (C) 2006-2008 Marco Amadori <marco.amadori@gmail.com>
 # Copyright (C) 2008 Chris Lamb <chris@chris-lamb.co.uk>
 #
 # This program is free software; you can redistribute it and/or modify
@@ -42,6 +42,7 @@ SAFE_TMPDIR="/live"
 MOUNTP="$(mktemp -d -p ${SAFE_TMPDIR} live-snapshot-mnt.XXXXXX)"
 SNAP_COW="/live/cow"
 SNAP_DEV=""
+SNAP_OUTPUT=""
 DEST="${MOUNTP}/live-sn.cpio.gz"
 SNAP_TYPE="cpio"
 DESKTOP_LINK="/home/${USERNAME}/Desktop/live-snapshot"
@@ -101,6 +102,7 @@ Version ()
        echo "${PROGRAM}"
        echo
        echo "Copyright (C) 2006 Marco Amadori <marco.amadori@gmail.com>"
+       echo "Copyright (C) 2008 Chris Lamb <chris@chris-lamb.co.uk>"
        echo
        echo "This program is free software; you can redistribute it and/or modify"
        echo "it under the terms of the GNU General Public License as published by"
@@ -124,19 +126,6 @@ Version ()
        exit 0
 }
 
-Is_same_mount ()
-{
-       dir1="$(Base_path ${1})"
-       dir2="$(Base_path ${2})"
-
-       if [ "${dir1}" = "${dir2}" ]
-       then
-               return 0
-       else
-               return 1
-       fi
-}
-
 Parse_args ()
 {
        # Parse command line
@@ -205,7 +194,7 @@ Defaults ()
        then
                SNAP_COW=$(echo "${SNAP_RESYNC_STRING}" | cut -f1 -d ':')
                SNAP_DEV=$(echo "${SNAP_RESYNC_STRING}" | cut -f2 -d ':')
-               DEST=$(echo "${SNAP_RESYNC_STRING}" | cut -f3 -d ':')
+               DEST="${MOUNTP}/$(echo ${SNAP_RESYNC_STRING} | cut -f3 -d ':')"
 
                case "${DEST}" in
                        *.cpio.gz)
@@ -227,7 +216,8 @@ Defaults ()
                                Error "unrecognized resync string"
                                ;;
                esac
-       else
+       elif [ -z "${SNAP_OUTPUT}" ]
+       then
                # Set target file based on image
                case "${SNAP_TYPE}" in
                        cpio)
@@ -242,6 +232,8 @@ Defaults ()
                                DEST="${MOUNTP}/live-sn.ext2"
                                ;;
                esac
+       else
+               DEST="${SNAP_OUTPUT}"
        fi
 }
 
@@ -269,8 +261,6 @@ Validate_input ()
 
 Mount_device ()
 {
-       mkdir -p "${MOUNTP}"
-
        case "${SNAP_DEV}" in
                "")
                        # create a temp