rw-update-macro: improve restore_backup_file helper 59/164459/2
authorSunmin Lee <sunm.lee@samsung.com>
Mon, 18 Dec 2017 05:22:07 +0000 (14:22 +0900)
committerKwon <k_c.kwon@samsung.com>
Wed, 20 Dec 2017 08:43:58 +0000 (08:43 +0000)
This patch make rw-update-macro to consider the case of no smack
rule, and handle the file path properly.
In addition, the content of model-config was changed. This patch
also covers it.

Change-Id: Ief8d0e900fbcbb96df7ef1623f7b01b1a95b6098
Signed-off-by: Sunmin Lee <sunm.lee@samsung.com>
upgrade/rw-update-macro.inc

index 3c670abf2fb4c6435c6e3e18b85d695a944bad27..7615e3962fa29791c0e5b371873d05b8a84caa0f 100755 (executable)
@@ -6,28 +6,29 @@ OLD_REL=
 NEW_REL=
 OLD_VER_INFO="/opt/etc/version"
 
-write_version_info() {
-       OLD_VER=$(cat /etc/config/model-config.xml | grep platform.version \
-                       | sed -e 's/.*>\(.*\)<.*/\1/')
-       OLD_REL=$(cat /etc/info.ini | grep Date | sed -e 's/Date=//' -e 's/\_.*//')
-       echo "OLD_VER=$OLD_VER" > $OLD_VER_INFO
-       echo "OLD_REL=$OLD_REL" >> $OLD_VER_INFO
-}
-
 get_version_info() {
        if [ -f $OLD_VER_INFO ]; then
                source $OLD_VER_INFO
        fi
-       NEW_VER=$(cat /etc/config/model-config.xml | grep platform.version \
-                       | sed -e 's/.*>\(.*\)<.*/\1/')
+       NEW_VER=$(cat /etc/config/model-config.xml | grep platform.version\" \
+                       | sed -e 's/.*>\(.*\)<.*/\1/' | head -1)
        NEW_REL=$(cat /etc/info.ini | grep Date | sed -e 's/Date=//' -e 's/\_.*//')
 }
 
+write_version_info() {
+       get_version_info
+       echo "OLD_VER=$NEW_VER" > $OLD_VER_INFO
+       echo "OLD_REL=$NEW_REL" >> $OLD_VER_INFO
+
+       NEW_VER=
+       NEW_REL=
+}
+
 restore_backup_file() {
 
        BACKUP_ZIP="/usr/system/RestoreDir/opt.zip"
        REC=0
-       DEST="/"
+       DEST=
 
        while [ "$1" != "" ]; do
                case $1 in
@@ -50,22 +51,27 @@ restore_backup_file() {
        if [ "$REC" = "1" ]; then
                REC_FILES=$(unzip -l $BACKUP_ZIP | grep $MOD_PATH | awk '{print $4}')
                for REC_FILE in $REC_FILES; do
-                       restore_backup_file $REC_FILE -d $DEST
+                       if [ "z$DEST" = "z" ]; then
+                               restore_backup_file $REC_FILE
+                       else
+                               restore_backup_file $REC_FILE -d $DEST
+                       fi
                done
                return
        fi
 
-       unzip -nX $BACKUP_ZIP $MOD_PATH -d $DEST
+       unzip -nX $BACKUP_ZIP $MOD_PATH -d $DEST/
        TMP=$(mktemp /tmp/smackinfo.XXXXXX)
        PATH_FOR_SMACK=$(echo $MOD_PATH | sed -e "s/\/$//")
-       if [ "z$DEST" = "z" ]; then
-               grep $PATH_FOR_SMACK'\ ' /usr/system/RestoreDir/smack_label.txt > $TMP
+
+       FILE_PATH="$DEST/$PATH_FOR_SMACK"
+       SMACK_VAL=$(grep $PATH_FOR_SMACK'\ ' /usr/system/RestoreDir/smack_label.txt | \
+                       { read FILE SMACK; echo $SMACK; })
+       if [ "z$SMACK_VAL" = "z" ]; then
+               echo "No smack label for $PATH_FOR_SMACK"
        else
-               FILE_PATH="$DEST/$PATH_FOR_SMACK"
-               SMACK_VAL=$(grep $PATH_FOR_SMACK'\ ' /usr/system/RestoreDir/smack_label.txt | \
-                               awk '{print $2 $3}')
                echo "$FILE_PATH $SMACK_VAL" > $TMP
+               rstsmack $TMP
        fi
-       rstsmack $TMP
        rm $TMP
 }