Commit 20e3f942 by H.J. Lu Committed by H.J. Lu

Replace strtok with strtoken

	PR bootstrap/61914
	* gengtype.c (strtoken): New function.
	(create_user_defined_type): Replace strtok with strtoken.

From-SVN: r213213
parent b8e6830b
2014-07-29 H.J. Lu <hongjiu.lu@intel.com>
PR bootstrap/61914
* gengtype.c (strtoken): New function.
(create_user_defined_type): Replace strtok with strtoken.
2014-07-29 Nathan Sidwell <nathan@acm.org> 2014-07-29 Nathan Sidwell <nathan@acm.org>
* gcov-io.c (gcov_var): Make hidden. * gcov-io.c (gcov_var): Make hidden.
......
...@@ -569,6 +569,40 @@ do_scalar_typedef (const char *s, struct fileloc *pos) ...@@ -569,6 +569,40 @@ do_scalar_typedef (const char *s, struct fileloc *pos)
do_typedef (s, &scalar_nonchar, pos); do_typedef (s, &scalar_nonchar, pos);
} }
/* Similar to strtok_r. */
static char *
strtoken (char *str, const char *delim, char **next)
{
char *p;
if (str == NULL)
str = *next;
/* Skip the leading delimiters. */
str += strspn (str, delim);
if (*str == '\0')
/* This is an empty token. */
return NULL;
/* The current token. */
p = str;
/* Find the next delimiter. */
str += strcspn (str, delim);
if (*str == '\0')
/* This is the last token. */
*next = str;
else
{
/* Terminate the current token. */
*str = '\0';
/* Advance to the next token. */
*next = str + 1;
}
return p;
}
/* Define TYPE_NAME to be a user defined type at location POS. */ /* Define TYPE_NAME to be a user defined type at location POS. */
...@@ -599,7 +633,8 @@ create_user_defined_type (const char *type_name, struct fileloc *pos) ...@@ -599,7 +633,8 @@ create_user_defined_type (const char *type_name, struct fileloc *pos)
comma-separated list of strings, implicitly assumed to comma-separated list of strings, implicitly assumed to
be type names, potentially with "*" characters. */ be type names, potentially with "*" characters. */
char *arg = open_bracket + 1; char *arg = open_bracket + 1;
char *type_id = strtok (arg, ",>"); char *next;
char *type_id = strtoken (arg, ",>", &next);
pair_p fields = 0; pair_p fields = 0;
while (type_id) while (type_id)
{ {
...@@ -628,7 +663,7 @@ create_user_defined_type (const char *type_name, struct fileloc *pos) ...@@ -628,7 +663,7 @@ create_user_defined_type (const char *type_name, struct fileloc *pos)
arg_type = resolve_typedef (field_name, pos); arg_type = resolve_typedef (field_name, pos);
fields = create_field_at (fields, arg_type, field_name, 0, pos); fields = create_field_at (fields, arg_type, field_name, 0, pos);
type_id = strtok (0, ",>"); type_id = strtoken (0, ",>", &next);
} }
/* Associate the field list to TY. */ /* Associate the field list to TY. */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment