/* readtokens.c -- Functions for reading tokens from an input stream.
- Copyright (C) 1990-1991 Jim Meyering.
+ Copyright (C) 1990-1991, 1999, 2001, 2003 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
*/
#ifdef HAVE_CONFIG_H
-#include <config.h>
+# include <config.h>
#endif
#include <stdio.h>
#ifdef STDC_HEADERS
-#include <stdlib.h>
+# include <stdlib.h>
#endif
#if defined (STDC_HEADERS) || defined(HAVE_STRING_H)
-#include <string.h>
+# include <string.h>
/* An ANSI string.h and pre-ANSI memory.h might conflict. */
-#if !defined (STDC_HEADERS) && defined (HAVE_MEMORY_H)
-#include <memory.h>
-#endif /* not STDC_HEADERS and HAVE_MEMORY_H */
+# if !defined (STDC_HEADERS) && defined (HAVE_MEMORY_H)
+# include <memory.h>
+# endif /* not STDC_HEADERS and HAVE_MEMORY_H */
#else /* not STDC_HEADERS and not HAVE_STRING_H */
-#include <strings.h>
+# include <strings.h>
/* memory.h and strings.h conflict on some systems. */
#endif /* not STDC_HEADERS and not HAVE_STRING_H */
#include "readtokens.h"
-void *xmalloc ();
-void *xrealloc ();
+#include "unlocked-io.h"
+#include "xalloc.h"
#define STREQ(a,b) ((a) == (b) || ((a) && (b) && *(a) == *(b) \
&& strcmp(a, b) == 0))
token_buffer *tokenbuffer;
{
tokenbuffer->size = INITIAL_TOKEN_LENGTH;
- tokenbuffer->buffer = ((char *) xmalloc (INITIAL_TOKEN_LENGTH));
+ tokenbuffer->buffer = xmalloc (INITIAL_TOKEN_LENGTH);
}
/* Read a token from `stream' into `tokenbuffer'.
and on files that aren't newline-terminated. */
long
-readtoken (stream, delim, n_delim, tokenbuffer)
- FILE *stream;
- const char *delim;
- int n_delim;
- token_buffer *tokenbuffer;
+readtoken (FILE *stream,
+ const char *delim,
+ int n_delim,
+ token_buffer *tokenbuffer)
{
char *p;
int c, i, n;
if (!same_delimiters)
{
const char *t;
+ unsigned int j;
saved_delim = delim;
- for (i = 0; i < sizeof (isdelim); i++)
- isdelim[i] = 0;
+ for (j = 0; j < sizeof (isdelim); j++)
+ isdelim[j] = 0;
for (t = delim; *t; t++)
- isdelim[(unsigned int) *t] = 1;
+ isdelim[(unsigned char) *t] = 1;
}
p = tokenbuffer->buffer;
%%% realloc() of `tokens' just before returning? */
int
-readtokens (stream, projected_n_tokens, delim, n_delim,
- tokens_out, token_lengths)
- FILE *stream;
- int projected_n_tokens;
- const char *delim;
- int n_delim;
- char ***tokens_out;
- long **token_lengths;
+readtokens (FILE *stream,
+ int projected_n_tokens,
+ const char *delim,
+ int n_delim,
+ char ***tokens_out,
+ long **token_lengths)
{
token_buffer tb, *token = &tb;
int token_length;
else
projected_n_tokens = 64;
sz = projected_n_tokens;
- tokens = (char **) xmalloc (sz * sizeof (char *));
- lengths = (long *) xmalloc (sz * sizeof (long));
+ tokens = xmalloc (sz * sizeof (char *));
+ lengths = xmalloc (sz * sizeof (long));
init_tokenbuffer (token);
for (;;)
if (n_tokens >= sz)
{
sz *= 2;
- tokens = (char **) xrealloc (tokens, sz * sizeof (char *));
- lengths = (long *) xrealloc (lengths, sz * sizeof (long));
+ tokens = xrealloc (tokens, sz * sizeof (char *));
+ lengths = xrealloc (lengths, sz * sizeof (long));
}
if (token_length < 0)
lengths[n_tokens] = -1;
break;
}
- tmp = (char *) xmalloc ((token_length + 1) * sizeof (char));
+ tmp = xmalloc ((token_length + 1) * sizeof (char));
lengths[n_tokens] = token_length;
tokens[n_tokens] = strncpy (tmp, token->buffer,
(unsigned) (token_length + 1));