Modify stateful update clobber logic to write to different file.

We no longer want to use clobber-state because /usr/local and /var may have too much data to fit into /tmp.  This change has .stateful_update maintain all state rather than the factory file.

Change-Id: Ia4fad0395adc5709b84d96a1aef35b88e729fac6

BUG=chromium-os:12209
TEST=Ran in a vm w/ and w/out setting stateful_update file to clean

Review URL: http://codereview.chromium.org/6626028
diff --git a/stateful_update b/stateful_update
index 0c1bd00..ed0bce1 100755
--- a/stateful_update
+++ b/stateful_update
@@ -33,8 +33,8 @@
     BASE_UPDATE_URL=$(remove_quotes "${FLAGS_ARGV}")
   else
     if [ -f "${STATEFUL_DIR}${LSB_RELEASE}" ]; then
-      DEVSERVER_URL=$(grep CHROMEOS_DEVSERVER ${STATEFUL_DIR}${LSB_RELEASE} | \
-                    cut -f 2 -d '=')
+      DEVSERVER_URL=$(grep CHROMEOS_DEVSERVER ${STATEFUL_DIR}${LSB_RELEASE} |
+          cut -f 2 -d '=')
     fi
     if [ -z "${DEVSERVER_URL}" ]; then
       DEVSERVER_URL=$(grep CHROMEOS_DEVSERVER ${LSB_RELEASE} | cut -f 2 -d '=')
@@ -52,37 +52,39 @@
   STATEFUL_UPDATE_URL="${BASE_UPDATE_URL}/stateful.tgz"
   echo "Downloading stateful payload from ${STATEFUL_UPDATE_URL}"
   # Download and unzip directories onto the stateful partition.
-  eval "wget -qS -T 300 -O - \"${STATEFUL_UPDATE_URL}\"" | \
+  eval "wget -qS -T 300 -O - \"${STATEFUL_UPDATE_URL}\"" |
       tar --ignore-command-error --overwrite --directory=${STATEFUL_DIR} -xz
   echo >&2 "Successfully downloaded update"
 
-  if [ -d "${STATEFUL_DIR}/var_new" ] && [ -d "${STATEFUL_DIR}/dev_image_new" ]
-  then
-    echo >&2 "Notifying startup that an update is available"
-    touch "${STATEFUL_DIR}/.update_available"
-  else
-    echo >&2 "No update available"
+  if [ ! -d "${STATEFUL_DIR}/var_new" ] ||
+      [ ! -d "${STATEFUL_DIR}/dev_image_new" ]; then
+    echo >&2 "Missing var or dev_image in stateful payload."
+    return 1
   fi
 }
 
 update_old_state () {
   echo >&2 "Performing standard stateful update."
+  echo -n "" > "${STATEFUL_DIR}/.update_available"
 }
 
 update_clean_state () {
   echo >&2 "Restoring state to factory_install with dev_image."
-  echo "fast test" > "/mnt/stateful_partition/factory_install_reset"
+  echo -n "clobber" > "${STATEFUL_DIR}/.update_available"
 }
 
 main () {
-  update_dev_image
-  if [ "${FLAGS_stateful_change}" = "${OLD_STATE}" ]; then
-    update_old_state
-  elif [ "${FLAGS_stateful_change}" = "${CLEAN_STATE}" ]; then
-    update_clean_state
+  if update_dev_image; then
+    if [ "${FLAGS_stateful_change}" = "${OLD_STATE}" ]; then
+      update_old_state
+    elif [ "${FLAGS_stateful_change}" = "${CLEAN_STATE}" ]; then
+      update_clean_state
+    else
+      echo >&2 "Invalid state given to stateful update.  Aborting..."
+      return 1
+    fi
   else
-    echo >&2 "Invalid state given to stateful update.  Aborting..."
-    exit 1
+    return 1
   fi
 }