| OLD | NEW |
| 1 /* CLI utilities. | 1 /* CLI utilities. |
| 2 | 2 |
| 3 Copyright (c) 2011-2012 Free Software Foundation, Inc. | 3 Copyright (C) 2011-2013 Free Software Foundation, Inc. |
| 4 | 4 |
| 5 This file is part of GDB. | 5 This file is part of GDB. |
| 6 | 6 |
| 7 This program is free software; you can redistribute it and/or modify | 7 This program is free software; you can redistribute it and/or modify |
| 8 it under the terms of the GNU General Public License as published by | 8 it under the terms of the GNU General Public License as published by |
| 9 the Free Software Foundation; either version 3 of the License, or | 9 the Free Software Foundation; either version 3 of the License, or |
| 10 (at your option) any later version. | 10 (at your option) any later version. |
| 11 | 11 |
| 12 This program is distributed in the hope that it will be useful, | 12 This program is distributed in the hope that it will be useful, |
| 13 but WITHOUT ANY WARRANTY; without even the implied warranty of | 13 but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 15 GNU General Public License for more details. | 15 GNU General Public License for more details. |
| 16 | 16 |
| 17 You should have received a copy of the GNU General Public License | 17 You should have received a copy of the GNU General Public License |
| 18 along with this program. If not, see <http://www.gnu.org/licenses/>. */ | 18 along with this program. If not, see <http://www.gnu.org/licenses/>. */ |
| 19 | 19 |
| 20 #include "defs.h" | 20 #include "defs.h" |
| 21 #include "cli/cli-utils.h" | 21 #include "cli/cli-utils.h" |
| 22 #include "gdb_string.h" | 22 #include <string.h> |
| 23 #include "value.h" | 23 #include "value.h" |
| 24 #include "gdb_assert.h" | 24 #include "gdb_assert.h" |
| 25 | 25 |
| 26 #include <ctype.h> | 26 #include <ctype.h> |
| 27 | 27 |
| 28 /* *PP is a string denoting a number. Get the number of the. Advance | 28 /* *PP is a string denoting a number. Get the number of the. Advance |
| 29 *PP after the string and any trailing whitespace. | 29 *PP after the string and any trailing whitespace. |
| 30 | 30 |
| 31 Currently the string can either be a number, or "$" followed by the | 31 Currently the string can either be a number, or "$" followed by the |
| 32 name of a convenience variable, or ("$" or "$$") followed by digits. | 32 name of a convenience variable, or ("$" or "$$") followed by digits. |
| (...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 230 { | 230 { |
| 231 if (chp == NULL) | 231 if (chp == NULL) |
| 232 return NULL; | 232 return NULL; |
| 233 while (*chp && isspace (*chp)) | 233 while (*chp && isspace (*chp)) |
| 234 chp++; | 234 chp++; |
| 235 return chp; | 235 return chp; |
| 236 } | 236 } |
| 237 | 237 |
| 238 /* See documentation in cli-utils.h. */ | 238 /* See documentation in cli-utils.h. */ |
| 239 | 239 |
| 240 char * | 240 const char * |
| 241 skip_to_space (char *chp) | 241 skip_to_space_const (const char *chp) |
| 242 { | 242 { |
| 243 if (chp == NULL) | 243 if (chp == NULL) |
| 244 return NULL; | 244 return NULL; |
| 245 while (*chp && !isspace (*chp)) | 245 while (*chp && !isspace (*chp)) |
| 246 chp++; | 246 chp++; |
| 247 return chp; | 247 return chp; |
| 248 } | 248 } |
| 249 | 249 |
| 250 /* See documentation in cli-utils.h. */ | 250 /* See documentation in cli-utils.h. */ |
| 251 | 251 |
| 252 char * | 252 char * |
| 253 remove_trailing_whitespace (const char *start, char *s) | 253 remove_trailing_whitespace (const char *start, char *s) |
| 254 { | 254 { |
| 255 while (s > start && isspace (*(s - 1))) | 255 while (s > start && isspace (*(s - 1))) |
| 256 --s; | 256 --s; |
| 257 | 257 |
| 258 return s; | 258 return s; |
| 259 } | 259 } |
| 260 | 260 |
| 261 /* See documentation in cli-utils.h. */ | 261 /* See documentation in cli-utils.h. */ |
| 262 | 262 |
| 263 char * | 263 char * |
| 264 extract_arg_const (const char **arg) |
| 265 { |
| 266 const char *result; |
| 267 |
| 268 if (!*arg) |
| 269 return NULL; |
| 270 |
| 271 /* Find the start of the argument. */ |
| 272 *arg = skip_spaces_const (*arg); |
| 273 if (!**arg) |
| 274 return NULL; |
| 275 result = *arg; |
| 276 |
| 277 /* Find the end of the argument. */ |
| 278 *arg = skip_to_space_const (*arg + 1); |
| 279 |
| 280 if (result == *arg) |
| 281 return NULL; |
| 282 |
| 283 return savestring (result, *arg - result); |
| 284 } |
| 285 |
| 286 /* See documentation in cli-utils.h. */ |
| 287 |
| 288 char * |
| 264 extract_arg (char **arg) | 289 extract_arg (char **arg) |
| 265 { | 290 { |
| 266 char *result, *copy; | 291 const char *arg_const = *arg; |
| 292 char *result; |
| 267 | 293 |
| 268 if (!*arg) | 294 result = extract_arg_const (&arg_const); |
| 269 return NULL; | 295 *arg += arg_const - *arg; |
| 270 | 296 return result; |
| 271 /* Find the start of the argument. */ | |
| 272 *arg = skip_spaces (*arg); | |
| 273 if (!**arg) | |
| 274 return NULL; | |
| 275 result = *arg; | |
| 276 | |
| 277 /* Find the end of the argument. */ | |
| 278 *arg = skip_to_space (*arg + 1); | |
| 279 | |
| 280 if (result == *arg) | |
| 281 return NULL; | |
| 282 | |
| 283 copy = xmalloc (*arg - result + 1); | |
| 284 memcpy (copy, result, *arg - result); | |
| 285 copy[*arg - result] = '\0'; | |
| 286 | |
| 287 return copy; | |
| 288 } | 297 } |
| 289 | 298 |
| 290 /* See documentation in cli-utils.h. */ | 299 /* See documentation in cli-utils.h. */ |
| 291 | 300 |
| 292 int | 301 int |
| 293 check_for_argument (char **str, char *arg, int arg_len) | 302 check_for_argument (char **str, char *arg, int arg_len) |
| 294 { | 303 { |
| 295 if (strncmp (*str, arg, arg_len) == 0 | 304 if (strncmp (*str, arg, arg_len) == 0 |
| 296 && ((*str)[arg_len] == '\0' || isspace ((*str)[arg_len]))) | 305 && ((*str)[arg_len] == '\0' || isspace ((*str)[arg_len]))) |
| 297 { | 306 { |
| 298 *str += arg_len; | 307 *str += arg_len; |
| 299 return 1; | 308 return 1; |
| 300 } | 309 } |
| 301 return 0; | 310 return 0; |
| 302 } | 311 } |
| OLD | NEW |