summaryrefslogtreecommitdiffstats
path: root/vm/Init.c
diff options
context:
space:
mode:
authorNorris, Lee <k9119911@gmail.com>2010-09-26 09:09:47 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2010-09-26 09:09:47 -0700
commit506725152f92738218823ed52e437458a043c7cb (patch)
tree080fb2f5f66e6fd15ff3e328ded0b03953bbab51 /vm/Init.c
parent4f85bfcebb2617b8776a07ed0c030aba40d2314a (diff)
parent60cc993e5afb3327482b172cc7e54c469b231741 (diff)
downloadandroid_dalvik-506725152f92738218823ed52e437458a043c7cb.tar.gz
android_dalvik-506725152f92738218823ed52e437458a043c7cb.tar.bz2
android_dalvik-506725152f92738218823ed52e437458a043c7cb.zip
am 60cc993e: Support -Xbootclasspath/a and /p for dvmProcessOptions in dalvik/vm/Init.c
Merge commit '60cc993e5afb3327482b172cc7e54c469b231741' into gingerbread-plus-aosp * commit '60cc993e5afb3327482b172cc7e54c469b231741': Support -Xbootclasspath/a and /p for dvmProcessOptions in dalvik/vm/Init.c
Diffstat (limited to 'vm/Init.c')
-rw-r--r--vm/Init.c38
1 files changed, 33 insertions, 5 deletions
diff --git a/vm/Init.c b/vm/Init.c
index 24513f3fa..a92ec265d 100644
--- a/vm/Init.c
+++ b/vm/Init.c
@@ -723,11 +723,39 @@ static int dvmProcessOptions(int argc, const char* const argv[],
free(gDvm.bootClassPathStr);
gDvm.bootClassPathStr = strdup(path);
- /*
- * TODO: support -Xbootclasspath/a and /p, which append or
- * prepend to the default bootclasspath. We set the default
- * path earlier.
- */
+ } else if (strncmp(argv[i], "-Xbootclasspath/a:",
+ sizeof("-Xbootclasspath/a:")-1) == 0) {
+ const char* appPath = argv[i] + sizeof("-Xbootclasspath/a:")-1;
+
+ if (*(appPath) == '\0') {
+ dvmFprintf(stderr, "Missing appending bootclasspath path list\n");
+ return -1;
+ }
+ char* allPath;
+
+ if (asprintf(&allPath, "%s:%s", gDvm.bootClassPathStr, appPath) < 0) {
+ dvmFprintf(stderr, "Can't append to bootclasspath path list\n");
+ return -1;
+ }
+ free(gDvm.bootClassPathStr);
+ gDvm.bootClassPathStr = allPath;
+
+ } else if (strncmp(argv[i], "-Xbootclasspath/p:",
+ sizeof("-Xbootclasspath/p:")-1) == 0) {
+ const char* prePath = argv[i] + sizeof("-Xbootclasspath/p:")-1;
+
+ if (*(prePath) == '\0') {
+ dvmFprintf(stderr, "Missing prepending bootclasspath path list\n");
+ return -1;
+ }
+ char* allPath;
+
+ if (asprintf(&allPath, "%s:%s", prePath, gDvm.bootClassPathStr) < 0) {
+ dvmFprintf(stderr, "Can't prepend to bootclasspath path list\n");
+ return -1;
+ }
+ free(gDvm.bootClassPathStr);
+ gDvm.bootClassPathStr = allPath;
} else if (strncmp(argv[i], "-D", 2) == 0) {
/* set property */