From 71b1c2cbf3edd91a8f1048bb8572237cff3b3d52 Mon Sep 17 00:00:00 2001
From: nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Date: Sun, 28 Sep 2008 19:45:59 +0000
Subject: add option in sysupgrade to restore config from file or URL (patch
 from #4043)

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@12772 3c298f89-4303-0410-b956-a3cf2f4a3e73
---
 package/base-files/files/sbin/sysupgrade | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

(limited to 'package/base-files')

diff --git a/package/base-files/files/sbin/sysupgrade b/package/base-files/files/sbin/sysupgrade
index 2230e5b0c..1825cec58 100755
--- a/package/base-files/files/sbin/sysupgrade
+++ b/package/base-files/files/sbin/sysupgrade
@@ -8,6 +8,7 @@ export INTERACTIVE=0
 export VERBOSE=1
 export SAVE_CONFIG=1
 export DELAY=
+export CONF_IMAGE=
 
 # parse options
 while [ -n "$1" ]; do 
@@ -17,6 +18,7 @@ while [ -n "$1" ]; do
 		-v) export VERBOSE="$(($VERBOSE + 1))";;
 		-q) export VERBOSE="$(($VERBOSE - 1))";;
 		-n) export SAVE_CONFIG=0;;
+		-f) export CONF_IMAGE="$2"; shift;;
 		-*)
 			echo "Invalid option: $1"
 			exit 1
@@ -38,6 +40,7 @@ Usage: $0 [options] <image file or URL>
 
 Options:
 	-d <delay>   add a delay before rebooting
+	-f <config>  restore configuration from .tar.gz (file or url)
 	-i           interactive mode
 	-n	     do not save configuration over reflash
 	-q           less verbose
@@ -85,7 +88,18 @@ for check in $sysupgrade_image_check; do
 	}
 done
 
-if ask_bool $SAVE_CONFIG "Keep config files over reflash"; then
+if [ -n "$CONF_IMAGE" ]; then
+	case "$(get_magic_word "$CONF_IMAGE")" in
+		# .gz files
+		1f8b) ;;
+		*)
+			echo "Invalid config file. Please use only .tar.gz files"
+			exit 1
+		;;
+	esac
+	get_image "$CONF_IMAGE" > "$CONF_TAR"
+	export SAVE_CONFIG=1
+elif ask_bool $SAVE_CONFIG "Keep config files over reflash"; then
 	do_save_conffiles
 	export SAVE_CONFIG=1
 else
-- 
cgit v1.2.3