main-common.h: Add reassign_string().

Simple patch to introduce a convenience function that can
reassign heap-allocated string pointers in place.

Change-Id: If810fe10d4149749202d73f3cf2c9cfef0298754
diff --git a/android/main-common.c b/android/main-common.c
index 990c44b..a030cb6 100644
--- a/android/main-common.c
+++ b/android/main-common.c
@@ -54,6 +54,11 @@
 
 #define  D(...)  do {  if (VERBOSE_CHECK(init)) dprint(__VA_ARGS__); } while (0)
 
+void reassign_string(char** string, const char* new_value) {
+    free(*string);
+    *string = ASTRDUP(new_value);
+}
+
 /***  CONFIGURATION
  ***/
 
diff --git a/android/main-common.h b/android/main-common.h
index 38efbd5..53c9029 100644
--- a/android/main-common.h
+++ b/android/main-common.h
@@ -23,6 +23,10 @@
 
 /* Common routines used by both android/main.c and android/main-ui.c */
 
+// Reset the value of |*string| to a copy of |new_value|. This
+// will free() the previous value of |*string| first.
+void reassign_string(char** string, const char* new_value);
+
 /** Emulator user configuration (e.g. last window position)
  **/
 
diff --git a/android/main.c b/android/main.c
index 4f48291..b1a3053 100644
--- a/android/main.c
+++ b/android/main.c
@@ -405,14 +405,11 @@
     /* Update CPU architecture for HW configs created from build dir. */
     if (inAndroidBuild) {
 #if defined(TARGET_ARM)
-        free(android_hw->hw_cpu_arch);
-        android_hw->hw_cpu_arch = ASTRDUP("arm");
+        reassign_string(&android_hw->hw_cpu_arch, "arm");
 #elif defined(TARGET_I386)
-        free(android_hw->hw_cpu_arch);
-        android_hw->hw_cpu_arch = ASTRDUP("x86");
+        reassign_string(&android_hw->hw_cpu_arch, "x86");
 #elif defined(TARGET_MIPS)
-        free(android_hw->hw_cpu_arch);
-        android_hw->hw_cpu_arch = ASTRDUP("mips");
+        reassign_string(&android_hw->hw_cpu_arch, "mips");
 #endif
     }
 
@@ -472,8 +469,7 @@
         } else {
             D("Auto-detect: Kernel image requires legacy device naming scheme.");
         }
-        AFREE(hw->kernel_newDeviceNaming);
-        hw->kernel_newDeviceNaming = ASTRDUP(newDeviceNaming);
+        reassign_string(&hw->kernel_newDeviceNaming, newDeviceNaming);
     }
 
     // Auto-detect YAFFS2 partition support if needed.
@@ -486,8 +482,7 @@
         } else {
             D("Auto-detect: Kernel does not support YAFFS2 partitions.");
         }
-        AFREE(hw->kernel_supportsYaffs2);
-        hw->kernel_supportsYaffs2 = ASTRDUP(newYaffs2Support);
+        reassign_string(&hw->kernel_supportsYaffs2, newYaffs2Support);
     }
 
     if (boot_prop_ip[0]) {
@@ -541,8 +536,7 @@
 
     /* opts->ramdisk is never NULL (see createAVD) here */
     if (opts->ramdisk) {
-        AFREE(hw->disk_ramdisk_path);
-        hw->disk_ramdisk_path = ASTRDUP(opts->ramdisk);
+        reassign_string(&hw->disk_ramdisk_path, opts->ramdisk);
     }
     else if (!hw->disk_ramdisk_path[0]) {
         hw->disk_ramdisk_path = avdInfo_getRamdiskPath(avd);
@@ -1157,8 +1151,7 @@
          */
         kcm_extract_charmap_name(opts->charmap, charmap_name,
                                  sizeof(charmap_name));
-        AFREE(hw->hw_keyboard_charmap);
-        hw->hw_keyboard_charmap = ASTRDUP(charmap_name);
+        reassign_string(&hw->hw_keyboard_charmap, charmap_name);
     }
 
     if (opts->gpu) {
@@ -1247,8 +1240,7 @@
                 exit(1);
             }
         } else {
-            AFREE(opts->accel);
-            opts->accel = ASTRDUP("off");
+            reassign_string(&opts->accel, "off");
         }
     }
 
@@ -1382,8 +1374,7 @@
     }
 
     if (forceArmv7 != 0) {
-        AFREE(hw->hw_cpu_model);
-        hw->hw_cpu_model = ASTRDUP("cortex-a8");
+        reassign_string(&hw->hw_cpu_model, "cortex-a8");
         D("Auto-config: -qemu -cpu %s", hw->hw_cpu_model);
     }
 
@@ -1396,8 +1387,7 @@
         char* arch = avdInfo_getTargetCpuArch(avd);
         D("Target arch = '%s'", arch ? arch : "NULL");
         if (arch != NULL && !strcmp(arch, "x86")) {
-            AFREE(hw->hw_cpu_model);
-            hw->hw_cpu_model = ASTRDUP("qemu32");
+            reassign_string(&hw->hw_cpu_model, "qemu32");
             D("Auto-config: -qemu -cpu %s", hw->hw_cpu_model);
         }
         AFREE(arch);