diff options
| author | Norris, Lee <k9119911@gmail.com> | 2010-09-26 09:09:47 -0700 |
|---|---|---|
| committer | Android Git Automerger <android-git-automerger@android.com> | 2010-09-26 09:09:47 -0700 |
| commit | 506725152f92738218823ed52e437458a043c7cb (patch) | |
| tree | 080fb2f5f66e6fd15ff3e328ded0b03953bbab51 /vm/Init.c | |
| parent | 4f85bfcebb2617b8776a07ed0c030aba40d2314a (diff) | |
| parent | 60cc993e5afb3327482b172cc7e54c469b231741 (diff) | |
| download | android_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.c | 38 |
1 files changed, 33 insertions, 5 deletions
@@ -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 */ |
