--- a/jdk/src/java.base/share/native/libjli/java.c Fri Jan 27 16:27:52 2017 +0000
+++ b/jdk/src/java.base/share/native/libjli/java.c Fri Jan 27 13:10:27 2017 -0800
@@ -1566,6 +1566,31 @@
return (*env)->CallStaticObjectMethod(env, cls, mid);
}
+static char* expandWildcardOnLongOpt(char* arg) {
+ char *p, *value;
+ size_t optLen, valueLen;
+ p = JLI_StrChr(arg, '=');
+
+ if (p == NULL || p[1] == '\0') {
+ JLI_ReportErrorMessage(ARG_ERROR1, arg);
+ exit(1);
+ }
+ p++;
+ value = (char *) JLI_WildcardExpandClasspath(p);
+ if (p == value) {
+ // no wildcard
+ return arg;
+ }
+
+ optLen = p - arg;
+ valueLen = JLI_StrLen(value);
+ p = JLI_MemAlloc(optLen + valueLen + 1);
+ memcpy(p, arg, optLen);
+ memcpy(p + optLen, value, valueLen);
+ p[optLen + valueLen + 1] = '\0';
+ return p;
+}
+
/*
* For tools, convert command line args thus:
* javac -cp foo:foo/"*" -J-ms32m ...
@@ -1616,14 +1641,17 @@
if (arg[0] == '-') {
if (arg[1] == 'J')
continue;
- if (IsWildCardEnabled() && arg[1] == 'c'
- && (JLI_StrCmp(arg, "-cp") == 0 ||
- JLI_StrCmp(arg, "-classpath") == 0)
- && i < argc - 1) {
- *nargv++ = arg;
- *nargv++ = (char *) JLI_WildcardExpandClasspath(argv[i+1]);
- i++;
- continue;
+ if (IsWildCardEnabled()) {
+ if (IsClassPathOption(arg) && i < argc - 1) {
+ *nargv++ = arg;
+ *nargv++ = (char *) JLI_WildcardExpandClasspath(argv[i+1]);
+ i++;
+ continue;
+ }
+ if (JLI_StrCCmp(arg, "--class-path=") == 0) {
+ *nargv++ = expandWildcardOnLongOpt(arg);
+ continue;
+ }
}
}
*nargv++ = arg;