771 if (args == NULL || count == 0) { 772 return NULL; 773 } 774 size_t length = strlen(args[0]) + 1; // add 1 for the null terminator 775 for (int i = 1; i < count; i++) { 776 length += strlen(args[i]) + 1; // add 1 for a space 777 } 778 char* s = NEW_RESOURCE_ARRAY(char, length); 779 strcpy(s, args[0]); 780 for (int j = 1; j < count; j++) { 781 strcat(s, " "); 782 strcat(s, args[j]); 783 } 784 return (const char*) s; 785 } 786 787 void Arguments::print_on(outputStream* st) { 788 st->print_cr("VM Arguments:"); 789 if (num_jvm_flags() > 0) { 790 st->print("jvm_flags: "); print_jvm_flags_on(st); 791 } 792 if (num_jvm_args() > 0) { 793 st->print("jvm_args: "); print_jvm_args_on(st); 794 } 795 st->print_cr("java_command: %s", java_command() ? java_command() : "<unknown>"); 796 if (_java_class_path != NULL) { 797 char* path = _java_class_path->value(); 798 st->print_cr("java_class_path (initial): %s", strlen(path) == 0 ? "<not set>" : path ); 799 } 800 st->print_cr("Launcher Type: %s", _sun_java_launcher); 801 } 802 803 void Arguments::print_jvm_flags_on(outputStream* st) { 804 if (_num_jvm_flags > 0) { 805 for (int i=0; i < _num_jvm_flags; i++) { 806 st->print("%s ", _jvm_flags_array[i]); 807 } 808 st->cr(); 809 } 810 } 811 812 void Arguments::print_jvm_args_on(outputStream* st) { 813 if (_num_jvm_args > 0) { 814 for (int i=0; i < _num_jvm_args; i++) { 815 st->print("%s ", _jvm_args_array[i]); 816 } 817 st->cr(); 818 } 819 } 820 821 bool Arguments::process_argument(const char* arg, 822 jboolean ignore_unrecognized, Flag::Flags origin) { 823 824 JDK_Version since = JDK_Version(); 825 826 if (parse_argument(arg, origin) || ignore_unrecognized) { 827 return true; 828 } 829 830 // Determine if the flag has '+', '-', or '=' characters. 831 bool has_plus_minus = (*arg == '+' || *arg == '-'); 832 const char* const argname = has_plus_minus ? arg + 1 : arg; 833 834 size_t arg_len; 835 const char* equal_sign = strchr(argname, '='); 836 if (equal_sign == NULL) { 837 arg_len = strlen(argname); | 771 if (args == NULL || count == 0) { 772 return NULL; 773 } 774 size_t length = strlen(args[0]) + 1; // add 1 for the null terminator 775 for (int i = 1; i < count; i++) { 776 length += strlen(args[i]) + 1; // add 1 for a space 777 } 778 char* s = NEW_RESOURCE_ARRAY(char, length); 779 strcpy(s, args[0]); 780 for (int j = 1; j < count; j++) { 781 strcat(s, " "); 782 strcat(s, args[j]); 783 } 784 return (const char*) s; 785 } 786 787 void Arguments::print_on(outputStream* st) { 788 st->print_cr("VM Arguments:"); 789 if (num_jvm_flags() > 0) { 790 st->print("jvm_flags: "); print_jvm_flags_on(st); 791 st->cr(); 792 } 793 if (num_jvm_args() > 0) { 794 st->print("jvm_args: "); print_jvm_args_on(st); 795 st->cr(); 796 } 797 st->print_cr("java_command: %s", java_command() ? java_command() : "<unknown>"); 798 if (_java_class_path != NULL) { 799 char* path = _java_class_path->value(); 800 st->print_cr("java_class_path (initial): %s", strlen(path) == 0 ? "<not set>" : path ); 801 } 802 st->print_cr("Launcher Type: %s", _sun_java_launcher); 803 } 804 805 void Arguments::print_summary_on(outputStream* st) { 806 // Print the command line. Environment variables that are helpful for 807 // reproducing the problem are written later in the hs_err file. 808 st->print_raw("Command Line: "); 809 if (num_jvm_flags() > 0) { 810 print_jvm_flags_on(st); 811 } 812 if (num_jvm_args() > 0) { 813 print_jvm_args_on(st); 814 } 815 if (java_command() != NULL) { 816 st->print("%s", java_command()); 817 } 818 st->cr(); 819 } 820 821 void Arguments::print_jvm_flags_on(outputStream* st) { 822 if (_num_jvm_flags > 0) { 823 for (int i=0; i < _num_jvm_flags; i++) { 824 st->print("%s ", _jvm_flags_array[i]); 825 } 826 } 827 } 828 829 void Arguments::print_jvm_args_on(outputStream* st) { 830 if (_num_jvm_args > 0) { 831 for (int i=0; i < _num_jvm_args; i++) { 832 st->print("%s ", _jvm_args_array[i]); 833 } 834 } 835 } 836 837 bool Arguments::process_argument(const char* arg, 838 jboolean ignore_unrecognized, Flag::Flags origin) { 839 840 JDK_Version since = JDK_Version(); 841 842 if (parse_argument(arg, origin) || ignore_unrecognized) { 843 return true; 844 } 845 846 // Determine if the flag has '+', '-', or '=' characters. 847 bool has_plus_minus = (*arg == '+' || *arg == '-'); 848 const char* const argname = has_plus_minus ? arg + 1 : arg; 849 850 size_t arg_len; 851 const char* equal_sign = strchr(argname, '='); 852 if (equal_sign == NULL) { 853 arg_len = strlen(argname); |