Fix -sysdir handling.

This is a back-port from master to tools_r13

This patch fixes the processing of the -sysdir option. Previously,
using -sysdir <path> would imply that the -system <path>/<path>/system.img
is used, which is incorrect.

Also fixes the skin search for the case where we are using the emulator
without a pre-existing AVD outside of platform builds (e.g. when running tests).

This happens with stuff like:

   emulator -sysdir /path/to/known/sdk/platforms/<name>/images

The patch ensures that the /path/to/known/sdk/platforms/<name>/skins directory
is probed (this was the behaviour of the Tools R11 emulator).

Change-Id: Ibf7ad97de8e1da375f1049600807e0b3d30bfaaa
Orig-Change-Id: I32398bec0d7a28ead234f63c847d3ec95ed14b63
Orig-Change-Id: Id77ea9bdc55bb99c1bfbd2ade291ec41f31ec65d
diff --git a/android/avd/info.c b/android/avd/info.c
index a9fc711..1ab066c 100644
--- a/android/avd/info.c
+++ b/android/avd/info.c
@@ -1117,6 +1117,17 @@
                 if (skinPath != NULL)
                     break;
             }
+
+            /* or in the parent directory of the system dir */
+            {
+                char* parentDir = path_parent(i->androidOut, 1);
+                if (parentDir != NULL) {
+                    skinPath = _checkSkinSkinsDir(parentDir, skinName);
+                    AFREE(parentDir);
+                    if (skinPath != NULL)
+                        break;
+                }
+            }
         }
 
         /* look in the search paths. For each <dir> in the list,
@@ -1137,6 +1148,7 @@
         }
 
         /* We didn't find anything ! */
+        *pSkinName = skinName;
         return;
 
     } while (0);
diff --git a/android/main-common.c b/android/main-common.c
index 05a2cb0..94accf7 100644
--- a/android/main-common.c
+++ b/android/main-common.c
@@ -850,7 +850,7 @@
 
         if (!opts->system) {
             opts->system = _getSdkSystemImage(opts->sysdir, "-image", "system.img");
-            D("autoconfig: -image %s", opts->image);
+            D("autoconfig: -system %s", opts->system);
         }
 
         if (!opts->kernel) {
diff --git a/android/main.c b/android/main.c
index 3629c83..ec7ea61 100644
--- a/android/main.c
+++ b/android/main.c
@@ -548,7 +548,7 @@
             }
 
             /* If -system <name> is used, use it to find the initial image */
-            if (opts->sysdir != NULL) {
+            if (opts->sysdir != NULL && !path_exists(opts->system)) {
                 initImage = _getFullFilePath(opts->sysdir, opts->system);
             } else {
                 initImage = ASTRDUP(opts->system);