44 }
45 cmd_end = _cmd;
46
47 if (no_command_name) {
48 _cmd = NULL;
49 _cmd_len = 0;
50 } else {
51 // Look for end of the command name
52 while (cmd_end < line_end && !isspace((int) cmd_end[0])) {
53 cmd_end++;
54 }
55 _cmd_len = cmd_end - _cmd;
56 }
57 _args = cmd_end;
58 _args_len = line_end - _args;
59 }
60
61 bool DCmdArgIter::next(TRAPS) {
62 if (_len == 0) return false;
63 // skipping spaces
64 while (_cursor < _len - 1 && isspace(_buffer[_cursor])) {
65 _cursor++;
66 }
67 // handling end of command line
68 if (_cursor >= _len - 1) {
69 _cursor = _len - 1;
70 _key_addr = &_buffer[_len - 1];
71 _key_len = 0;
72 _value_addr = &_buffer[_len - 1];
73 _value_len = 0;
74 return false;
75 }
76 // extracting first item, argument or option name
77 _key_addr = &_buffer[_cursor];
78 while (_cursor <= _len - 1 && _buffer[_cursor] != '=' && _buffer[_cursor] != _delim) {
79 // argument can be surrounded by single or double quotes
80 if (_buffer[_cursor] == '\"' || _buffer[_cursor] == '\'') {
81 _key_addr++;
82 char quote = _buffer[_cursor];
83 while (_cursor < _len - 1) {
84 _cursor++;
85 if (_buffer[_cursor] == quote && _buffer[_cursor - 1] != '\\') {
86 break;
87 }
88 }
89 if (_buffer[_cursor] != quote) {
90 THROW_MSG_(vmSymbols::java_lang_IllegalArgumentException(),
91 "Format error in diagnostic command arguments", false);
92 }
93 break;
94 }
95 _cursor++;
96 }
97 _key_len = &_buffer[_cursor] - _key_addr;
|
44 }
45 cmd_end = _cmd;
46
47 if (no_command_name) {
48 _cmd = NULL;
49 _cmd_len = 0;
50 } else {
51 // Look for end of the command name
52 while (cmd_end < line_end && !isspace((int) cmd_end[0])) {
53 cmd_end++;
54 }
55 _cmd_len = cmd_end - _cmd;
56 }
57 _args = cmd_end;
58 _args_len = line_end - _args;
59 }
60
61 bool DCmdArgIter::next(TRAPS) {
62 if (_len == 0) return false;
63 // skipping spaces
64 while (_cursor < _len - 1 && _buffer[_cursor] == _delim) {
65 _cursor++;
66 }
67 // handling end of command line
68 if (_cursor >= _len - 1) {
69 _cursor = _len - 1;
70 _key_addr = &_buffer[_len - 1];
71 _key_len = 0;
72 _value_addr = &_buffer[_len - 1];
73 _value_len = 0;
74 return false;
75 }
76
77 if (_buffer[_cursor] == _delim) {
78 _cursor++;
79 }
80
81 // extracting first item, argument or option name
82 _key_addr = &_buffer[_cursor];
83
84 while (_cursor <= _len - 1 && _buffer[_cursor] != '=' && _buffer[_cursor] != _delim) {
85 // argument can be surrounded by single or double quotes
86 if (_buffer[_cursor] == '\"' || _buffer[_cursor] == '\'') {
87 _key_addr++;
88 char quote = _buffer[_cursor];
89 while (_cursor < _len - 1) {
90 _cursor++;
91 if (_buffer[_cursor] == quote && _buffer[_cursor - 1] != '\\') {
92 break;
93 }
94 }
95 if (_buffer[_cursor] != quote) {
96 THROW_MSG_(vmSymbols::java_lang_IllegalArgumentException(),
97 "Format error in diagnostic command arguments", false);
98 }
99 break;
100 }
101 _cursor++;
102 }
103 _key_len = &_buffer[_cursor] - _key_addr;
|