1970 } else {
1971 NULL_CHECK(initHelp = (*env)->GetStaticMethodID(env, cls,
1972 "initHelpMessage", "(Ljava/lang/String;)V"));
1973
1974 NULL_CHECK(vmSelect = (*env)->GetStaticMethodID(env, cls, "appendVmSelectMessage",
1975 "(Ljava/lang/String;Ljava/lang/String;)V"));
1976
1977 NULL_CHECK(vmSynonym = (*env)->GetStaticMethodID(env, cls,
1978 "appendVmSynonymMessage",
1979 "(Ljava/lang/String;Ljava/lang/String;)V"));
1980
1981 NULL_CHECK(printHelp = (*env)->GetStaticMethodID(env, cls,
1982 "printHelpMessage", "(Z)V"));
1983
1984 NULL_CHECK(jprogname = (*env)->NewStringUTF(env, _program_name));
1985
1986 /* Initialize the usage message with the usual preamble */
1987 (*env)->CallStaticVoidMethod(env, cls, initHelp, jprogname);
1988 CHECK_EXCEPTION_RETURN();
1989
1990
1991 /* Assemble the other variant part of the usage */
1992 for (i=1; i<knownVMsCount; i++) {
1993 if (knownVMs[i].flag == VM_KNOWN) {
1994 NULL_CHECK(vm1 = (*env)->NewStringUTF(env, knownVMs[i].name));
1995 NULL_CHECK(vm2 = (*env)->NewStringUTF(env, knownVMs[i].name+1));
1996 (*env)->CallStaticVoidMethod(env, cls, vmSelect, vm1, vm2);
1997 CHECK_EXCEPTION_RETURN();
1998 }
1999 }
2000 for (i=1; i<knownVMsCount; i++) {
2001 if (knownVMs[i].flag == VM_ALIASED_TO) {
2002 NULL_CHECK(vm1 = (*env)->NewStringUTF(env, knownVMs[i].name));
2003 NULL_CHECK(vm2 = (*env)->NewStringUTF(env, knownVMs[i].alias+1));
2004 (*env)->CallStaticVoidMethod(env, cls, vmSynonym, vm1, vm2);
2005 CHECK_EXCEPTION_RETURN();
2006 }
2007 }
2008
2009 /* Complete the usage message and print to stderr*/
2010 (*env)->CallStaticVoidMethod(env, cls, printHelp, printTo);
2011 }
2012 return;
2013 }
2014
2015 /*
2016 * Read the jvm.cfg file and fill the knownJVMs[] array.
2017 *
2180 newMax = (knownVMsLimit == 0 ? INIT_MAX_KNOWN_VMS : (2 * knownVMsLimit));
2181 if (newMax <= minimum) {
2182 newMax = minimum;
2183 }
2184 newKnownVMs = (struct vmdesc*) JLI_MemAlloc(newMax * sizeof(struct vmdesc));
2185 if (knownVMs != NULL) {
2186 memcpy(newKnownVMs, knownVMs, knownVMsLimit * sizeof(struct vmdesc));
2187 }
2188 JLI_MemFree(knownVMs);
2189 knownVMs = newKnownVMs;
2190 knownVMsLimit = newMax;
2191 }
2192
2193
2194 /* Returns index of VM or -1 if not found */
2195 static int
2196 KnownVMIndex(const char* name)
2197 {
2198 int i;
2199 if (JLI_StrCCmp(name, "-J") == 0) name += 2;
2200 for (i = 0; i < knownVMsCount; i++) {
2201 if (!JLI_StrCmp(name, knownVMs[i].name)) {
2202 return i;
2203 }
2204 }
2205 return -1;
2206 }
2207
2208 static void
2209 FreeKnownVMs()
2210 {
2211 int i;
2212 for (i = 0; i < knownVMsCount; i++) {
2213 JLI_MemFree(knownVMs[i].name);
2214 knownVMs[i].name = NULL;
2215 }
2216 JLI_MemFree(knownVMs);
2217 }
2218
2219 /*
|
1970 } else {
1971 NULL_CHECK(initHelp = (*env)->GetStaticMethodID(env, cls,
1972 "initHelpMessage", "(Ljava/lang/String;)V"));
1973
1974 NULL_CHECK(vmSelect = (*env)->GetStaticMethodID(env, cls, "appendVmSelectMessage",
1975 "(Ljava/lang/String;Ljava/lang/String;)V"));
1976
1977 NULL_CHECK(vmSynonym = (*env)->GetStaticMethodID(env, cls,
1978 "appendVmSynonymMessage",
1979 "(Ljava/lang/String;Ljava/lang/String;)V"));
1980
1981 NULL_CHECK(printHelp = (*env)->GetStaticMethodID(env, cls,
1982 "printHelpMessage", "(Z)V"));
1983
1984 NULL_CHECK(jprogname = (*env)->NewStringUTF(env, _program_name));
1985
1986 /* Initialize the usage message with the usual preamble */
1987 (*env)->CallStaticVoidMethod(env, cls, initHelp, jprogname);
1988 CHECK_EXCEPTION_RETURN();
1989
1990 /* Assemble the other variant part of the usage */
1991 for (i=1; i<knownVMsCount; i++) {
1992 if (knownVMs[i].flag == VM_KNOWN) {
1993 char *longOpt = (char *)JLI_MemAlloc(JLI_StrLen(knownVMs[i].name) + 2);
1994 *longOpt = '\0';
1995 JLI_StrCat(longOpt, "-");
1996 JLI_StrCat(longOpt, knownVMs[i].name);
1997 NULL_CHECK(vm1 = (*env)->NewStringUTF(env, longOpt));
1998 NULL_CHECK(vm2 = (*env)->NewStringUTF(env, knownVMs[i].name+1));
1999 (*env)->CallStaticVoidMethod(env, cls, vmSelect, vm1, vm2);
2000 CHECK_EXCEPTION_RETURN();
2001 JLI_MemFree(longOpt);
2002 /* Mention the short option as a synonym */
2003 NULL_CHECK(vm1 = (*env)->NewStringUTF(env, knownVMs[i].name));
2004 NULL_CHECK(vm2 = (*env)->NewStringUTF(env, knownVMs[i].name+1));
2005 (*env)->CallStaticVoidMethod(env, cls, vmSynonym, vm1, vm2);
2006 CHECK_EXCEPTION_RETURN();
2007 }
2008 }
2009 for (i=1; i<knownVMsCount; i++) {
2010 if (knownVMs[i].flag == VM_ALIASED_TO) {
2011 NULL_CHECK(vm1 = (*env)->NewStringUTF(env, knownVMs[i].name));
2012 NULL_CHECK(vm2 = (*env)->NewStringUTF(env, knownVMs[i].alias+1));
2013 (*env)->CallStaticVoidMethod(env, cls, vmSynonym, vm1, vm2);
2014 CHECK_EXCEPTION_RETURN();
2015 }
2016 }
2017
2018 /* Complete the usage message and print to stderr*/
2019 (*env)->CallStaticVoidMethod(env, cls, printHelp, printTo);
2020 }
2021 return;
2022 }
2023
2024 /*
2025 * Read the jvm.cfg file and fill the knownJVMs[] array.
2026 *
2189 newMax = (knownVMsLimit == 0 ? INIT_MAX_KNOWN_VMS : (2 * knownVMsLimit));
2190 if (newMax <= minimum) {
2191 newMax = minimum;
2192 }
2193 newKnownVMs = (struct vmdesc*) JLI_MemAlloc(newMax * sizeof(struct vmdesc));
2194 if (knownVMs != NULL) {
2195 memcpy(newKnownVMs, knownVMs, knownVMsLimit * sizeof(struct vmdesc));
2196 }
2197 JLI_MemFree(knownVMs);
2198 knownVMs = newKnownVMs;
2199 knownVMsLimit = newMax;
2200 }
2201
2202
2203 /* Returns index of VM or -1 if not found */
2204 static int
2205 KnownVMIndex(const char* name)
2206 {
2207 int i;
2208 if (JLI_StrCCmp(name, "-J") == 0) name += 2;
2209 if (JLI_StrCCmp(name, "--") == 0) name += 1;
2210 for (i = 0; i < knownVMsCount; i++) {
2211 if (!JLI_StrCmp(name, knownVMs[i].name)) {
2212 return i;
2213 }
2214 }
2215 return -1;
2216 }
2217
2218 static void
2219 FreeKnownVMs()
2220 {
2221 int i;
2222 for (i = 0; i < knownVMsCount; i++) {
2223 JLI_MemFree(knownVMs[i].name);
2224 knownVMs[i].name = NULL;
2225 }
2226 JLI_MemFree(knownVMs);
2227 }
2228
2229 /*
|