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 // ensures that malloc successful
1048 char * pbuf = (char*)JLI_MemAlloc(pbuflen);
1049 JLI_Snprintf(pbuf, pbuflen, "%s%d=%s", NMT_Env_Name, JLI_GetPid(), value);
1050 retval = JLI_PutEnv(pbuf);
1051 if (JLI_IsTraceLauncher()) {
1052 char* envName;
1053 char* envBuf;
1054
1055 // ensures that malloc successful
1056 envName = (char*)JLI_MemAlloc(pbuflen);
1057 JLI_Snprintf(envName, pbuflen, "%s%d", NMT_Env_Name, JLI_GetPid());
1058
1059 printf("TRACER_MARKER: NativeMemoryTracking: env var is %s\n",envName);
1060 printf("TRACER_MARKER: NativeMemoryTracking: putenv arg %s\n",pbuf);
1061 envBuf = getenv(envName);
1062 printf("TRACER_MARKER: NativeMemoryTracking: got value %s\n",envBuf);
1063 free(envName);
1064 }
1065
1066 free(pbuf);
1067 }
1068
1069 // The argument is passed to JVM for comment.
1070 AddOption(arg, NULL);
1071 /*
1072 * The following case checks for -XshowSettings OR -XshowSetting:SUBOPT.
1073 * In the latter case, any SUBOPT value not recognized will default to "all"
1074 */
1075 } else if (JLI_StrCmp(arg, "-XshowSettings") == 0 ||
1076 JLI_StrCCmp(arg, "-XshowSettings:") == 0) {
1077 showSettings = arg;
1078 } else if (JLI_StrCmp(arg, "-Xdiag") == 0) {
1079 AddOption("-Dsun.java.launcher.diag=true", NULL);
1080 /*
1081 * The following case provide backward compatibility with old-style
1082 * command line options.
1083 */
1084 } else if (JLI_StrCmp(arg, "-fullversion") == 0) {
1085 JLI_ReportMessage("%s full version \"%s\"", _launcher_name, GetFullVersion());
1086 return JNI_FALSE;
1087 } else if (JLI_StrCmp(arg, "-verbosegc") == 0) {
1088 AddOption("-verbose:gc", NULL);
1089 } else if (JLI_StrCmp(arg, "-t") == 0) {
1090 AddOption("-Xt", NULL);
|