diff options
| author | Norris, Lee <k9119911@gmail.com> | 2010-09-16 14:06:26 +0800 |
|---|---|---|
| committer | Norris, Lee <k9119911@gmail.com> | 2010-09-17 09:09:34 +0800 |
| commit | 60cc993e5afb3327482b172cc7e54c469b231741 (patch) | |
| tree | 09ab9dd1a440cb606818021adcb0d7e26742cad1 /vm/Init.c | |
| parent | aa63a6a69f83345e05123fca69210d1b9d948a72 (diff) | |
| download | android_dalvik-60cc993e5afb3327482b172cc7e54c469b231741.tar.gz android_dalvik-60cc993e5afb3327482b172cc7e54c469b231741.tar.bz2 android_dalvik-60cc993e5afb3327482b172cc7e54c469b231741.zip | |
Support -Xbootclasspath/a and /p for dvmProcessOptions in dalvik/vm/Init.c
Change-Id: I5549031ae6d6414797a22421e6bf62d1be08ac9a
Diffstat (limited to 'vm/Init.c')
| -rw-r--r-- | vm/Init.c | 38 |
1 files changed, 33 insertions, 5 deletions
@@ -725,11 +725,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 */ |
