987 JLI_FreeManifest();
988 JLI_MemFree(new_argv);
989 return;
990 }
991
992 /*
993 * Parses command line arguments. Returns JNI_FALSE if launcher
994 * should exit without starting vm, returns JNI_TRUE if vm needs
995 * to be started to process given options. *pret (the launcher
996 * process return value) is set to 0 for a normal exit.
997 */
998 static jboolean
999 ParseArguments(int *pargc, char ***pargv,
1000 int *pmode, char **pwhat,
1001 int *pret, const char *jrepath)
1002 {
1003 int argc = *pargc;
1004 char **argv = *pargv;
1005 int mode = LM_UNKNOWN;
1006 char *arg;
1007
1008 *pret = 0;
1009
1010 while ((arg = *argv) != 0 && *arg == '-') {
1011 argv++; --argc;
1012 if (JLI_StrCmp(arg, "-classpath") == 0 || JLI_StrCmp(arg, "-cp") == 0) {
1013 ARG_CHECK (argc, ARG_ERROR1, arg);
1014 SetClassPath(*argv);
1015 mode = LM_CLASS;
1016 argv++; --argc;
1017 } else if (JLI_StrCmp(arg, "-jar") == 0) {
1018 ARG_CHECK (argc, ARG_ERROR2, arg);
1019 mode = LM_JAR;
1020 } else if (JLI_StrCmp(arg, "-help") == 0 ||
1021 JLI_StrCmp(arg, "-h") == 0 ||
1022 JLI_StrCmp(arg, "-?") == 0) {
1023 printUsage = JNI_TRUE;
1024 return JNI_TRUE;
1025 } else if (JLI_StrCmp(arg, "-version") == 0) {
1026 printVersion = JNI_TRUE;
1027 return JNI_TRUE;
1028 } else if (JLI_StrCmp(arg, "-showversion") == 0) {
1029 showVersion = JNI_TRUE;
1030 } else if (JLI_StrCmp(arg, "-X") == 0) {
1031 printXUsage = JNI_TRUE;
1032 return JNI_TRUE;
1033 /*
1034 * The following case checks for -XshowSettings OR -XshowSetting:SUBOPT.
1035 * In the latter case, any SUBOPT value not recognized will default to "all"
1036 */
1037 } else if (JLI_StrCmp(arg, "-XshowSettings") == 0 ||
1038 JLI_StrCCmp(arg, "-XshowSettings:") == 0) {
1039 showSettings = arg;
1040 } else if (JLI_StrCmp(arg, "-Xdiag") == 0) {
1041 AddOption("-Dsun.java.launcher.diag=true", NULL);
1042 /*
1043 * The following case provide backward compatibility with old-style
1044 * command line options.
1045 */
1046 } else if (JLI_StrCmp(arg, "-fullversion") == 0) {
1047 JLI_ReportMessage("%s full version \"%s\"", _launcher_name, GetFullVersion());
1048 return JNI_FALSE;
1049 } else if (JLI_StrCmp(arg, "-verbosegc") == 0) {
1050 AddOption("-verbose:gc", NULL);
1051 } else if (JLI_StrCmp(arg, "-t") == 0) {
1052 AddOption("-Xt", NULL);
|
987 JLI_FreeManifest();
988 JLI_MemFree(new_argv);
989 return;
990 }
991
992 /*
993 * Parses command line arguments. Returns JNI_FALSE if launcher
994 * should exit without starting vm, returns JNI_TRUE if vm needs
995 * to be started to process given options. *pret (the launcher
996 * process return value) is set to 0 for a normal exit.
997 */
998 static jboolean
999 ParseArguments(int *pargc, char ***pargv,
1000 int *pmode, char **pwhat,
1001 int *pret, const char *jrepath)
1002 {
1003 int argc = *pargc;
1004 char **argv = *pargv;
1005 int mode = LM_UNKNOWN;
1006 char *arg;
1007 static const char* NMT_Env_Name = "NMT_LEVEL_";
1008
1009 *pret = 0;
1010
1011 while ((arg = *argv) != 0 && *arg == '-') {
1012 argv++; --argc;
1013 if (JLI_StrCmp(arg, "-classpath") == 0 || JLI_StrCmp(arg, "-cp") == 0) {
1014 ARG_CHECK (argc, ARG_ERROR1, arg);
1015 SetClassPath(*argv);
1016 mode = LM_CLASS;
1017 argv++; --argc;
1018 } else if (JLI_StrCmp(arg, "-jar") == 0) {
1019 ARG_CHECK (argc, ARG_ERROR2, arg);
1020 mode = LM_JAR;
1021 } else if (JLI_StrCmp(arg, "-help") == 0 ||
1022 JLI_StrCmp(arg, "-h") == 0 ||
1023 JLI_StrCmp(arg, "-?") == 0) {
1024 printUsage = JNI_TRUE;
1025 return JNI_TRUE;
1026 } else if (JLI_StrCmp(arg, "-version") == 0) {
1027 printVersion = JNI_TRUE;
1028 return JNI_TRUE;
1029 } else if (JLI_StrCmp(arg, "-showversion") == 0) {
1030 showVersion = JNI_TRUE;
1031 } else if (JLI_StrCmp(arg, "-X") == 0) {
1032 printXUsage = JNI_TRUE;
1033 return JNI_TRUE;
1034 /*
1035 * The following case checks for "-XX:NativeMemoryTracking=value".
1036 * If value is non null, an environmental variable set to this value
1037 * will be created to be used by the JVM.
1038 * The argument is passed to the JVM, which will check validity.
1039 */
1040 } else if (JLI_StrCCmp(arg, "-XX:NativeMemoryTracking=") == 0) {
1041 int retval;
1042 // get what follows this parameter, include "="
1043 size_t pnlen = JLI_StrLen("-XX:NativeMemoryTracking=");
1044 if (JLI_StrLen(arg) > pnlen) {
1045 char* value = arg + pnlen;
1046 size_t pbuflen = pnlen + JLI_StrLen(value) + 10; // 10 max pid#
1047 char * pbuf = malloc(pbuflen);
1048 JLI_Snprintf(pbuf, pbuflen, "%s%d=%s", NMT_Env_Name, JLI_GetPid(), value);
1049 retval = JLI_PutEnv(pbuf);
1050 if (JLI_IsTraceLauncher()) {
1051 char* envName;
1052 char* envBuf;
1053
1054 envName = malloc(pbuflen);
1055 JLI_Snprintf(envName, pbuflen, "%s%d", NMT_Env_Name, JLI_GetPid());
1056
1057 printf("TRACER_MARKER: NativeMemoryTracking: env var is %s\n",envName);
1058 printf("TRACER_MARKER: NativeMemoryTracking: putenv arg %s\n",pbuf);
1059 envBuf = getenv(envName);
1060 printf("TRACER_MARKER: NativeMemoryTracking: got value %s\n",envBuf);
1061 }
1062
1063 free(pbuf);
1064 }
1065
1066 // The argument is passed to JVM for comment.
1067 AddOption(arg, NULL);
1068 /*
1069 * The following case checks for -XshowSettings OR -XshowSetting:SUBOPT.
1070 * In the latter case, any SUBOPT value not recognized will default to "all"
1071 */
1072 } else if (JLI_StrCmp(arg, "-XshowSettings") == 0 ||
1073 JLI_StrCCmp(arg, "-XshowSettings:") == 0) {
1074 showSettings = arg;
1075 } else if (JLI_StrCmp(arg, "-Xdiag") == 0) {
1076 AddOption("-Dsun.java.launcher.diag=true", NULL);
1077 /*
1078 * The following case provide backward compatibility with old-style
1079 * command line options.
1080 */
1081 } else if (JLI_StrCmp(arg, "-fullversion") == 0) {
1082 JLI_ReportMessage("%s full version \"%s\"", _launcher_name, GetFullVersion());
1083 return JNI_FALSE;
1084 } else if (JLI_StrCmp(arg, "-verbosegc") == 0) {
1085 AddOption("-verbose:gc", NULL);
1086 } else if (JLI_StrCmp(arg, "-t") == 0) {
1087 AddOption("-Xt", NULL);
|