[1/2] LCD density backup

Change-Id: I2b8c7aa2419b689d5bb98a02e3c68dd2e5e0d527
diff --git a/config/common.mk b/config/common.mk
index 54eb7b0..9613d6c 100644
--- a/config/common.mk
+++ b/config/common.mk
@@ -14,7 +14,9 @@
 PRODUCT_COPY_FILES += \
     vendor/slim/prebuilt/common/bin/backuptool.sh:system/bin/backuptool.sh \
     vendor/slim/prebuilt/common/bin/backuptool.functions:system/bin/backuptool.functions \
-    vendor/slim/prebuilt/common/bin/50-slim.sh:system/addon.d/50-slim.sh
+    vendor/slim/prebuilt/common/bin/50-slim.sh:system/addon.d/50-slim.sh \
+    vendor/slim/prebuilt/common/bin/99-backup.sh:system/addon.d/99-backup.sh \
+    vendor/slim/prebuilt/common/etc/backup.conf:system/etc/backup.conf
 
 # SLIM-specific init file
 PRODUCT_COPY_FILES += \
diff --git a/prebuilt/common/bin/99-backup.sh b/prebuilt/common/bin/99-backup.sh
new file mode 100755
index 0000000..50ad9e3
--- /dev/null
+++ b/prebuilt/common/bin/99-backup.sh
@@ -0,0 +1,63 @@
+#!/sbin/sh
+
+propfile="/system/etc/backup.conf"
+backupfile="/tmp/backup/backup.conf"
+backuppath="/tmp/backup"
+mkdir -p $backuppath
+propbackuppath="$backuppath/prop"
+mkdir -p $propbackuppath
+
+persist_lcd_density=1
+
+load_prop() {
+    if [ -f "$1" ]; then
+        source "$1"
+    fi
+}
+
+backup_prop() {
+    cp "/system/build.prop" "$propbackuppath/build.prop"
+}
+
+restore_prop() {
+    if [ "$persist_lcd_density" = "1" ]; then
+            if [ -f "$propbackuppath/build.prop" ]; then
+                local USERLCD=`sed -n -e'/ro\.sf\.lcd_density/s/^.*=//p' $propbackuppath/build.prop`
+                busybox sed -i "s|ro.sf.lcd_density=.*|ro.sf.lcd_density=$USERLCD|" /system/build.prop
+            fi
+    fi
+}
+
+backup_file() {
+    if [ -f "$propfile" ]; then
+        cp "$propfile" "$backupfile"
+    fi
+}
+
+restore_file() {
+    if [ -f "$backupfile" ]; then
+        cp "$backupfile" "$propfile"
+    fi
+}
+
+case "$1" in
+    backup)
+        backup_file
+        load_prop "$backupfile"
+        backup_prop
+        ;;
+    restore)
+        restore_file
+        load_prop "$backupfile"
+        restore_prop
+        ;;
+    pre-backup)
+        ;;
+    post-backup)
+        ;;
+    pre-restore)
+        ;;
+    post-restore)
+        ;;
+esac
+exit 0
diff --git a/prebuilt/common/etc/backup.conf b/prebuilt/common/etc/backup.conf
new file mode 100755
index 0000000..3cb7190
--- /dev/null
+++ b/prebuilt/common/etc/backup.conf
@@ -0,0 +1 @@
+persist_lcd_density=1