1
0
mirror of git://git.gnupg.org/gnupg.git synced 2024-12-22 10:19:57 +01:00

Move strsep() and ascii_isspace() to libcompat.

This commit is contained in:
David Shaw 2006-09-28 19:53:17 +00:00
parent b17fcc5d51
commit 6f32b4e4d1
9 changed files with 69 additions and 60 deletions

View File

@ -1,3 +1,8 @@
2006-09-28 David Shaw <dshaw@jabberwocky.com>
* configure.ac: Move strsep to AC_REPLACE_FUNCS so it will end up
in libcompat.
2006-08-01 Werner Koch <wk@g10code.com>
Released 1.4.5.

View File

@ -891,13 +891,13 @@ AC_CHECK_DECLS(getpagesize)
AC_FUNC_FSEEKO
AC_FUNC_VPRINTF
AC_FUNC_FORK
AC_CHECK_FUNCS(strerror stpcpy strsep strlwr tcgetattr strtoul mmap)
AC_CHECK_FUNCS(strerror stpcpy strlwr tcgetattr strtoul mmap)
AC_CHECK_FUNCS(strcasecmp strncasecmp ctermid times unsetenv getpwnam getpwuid)
AC_CHECK_FUNCS(memmove gettimeofday getrusage setrlimit clock_gettime)
AC_CHECK_FUNCS(atexit raise getpagesize strftime nl_langinfo setlocale)
AC_CHECK_FUNCS(waitpid wait4 sigaction sigprocmask rand pipe stat getaddrinfo)
AC_CHECK_FUNCS(fcntl ftruncate)
AC_REPLACE_FUNCS(mkdtemp timegm isascii memrchr)
AC_REPLACE_FUNCS(mkdtemp timegm isascii memrchr strsep)
AC_CHECK_TYPES([struct sigaction, sigset_t],,,[#include <signal.h>])

View File

@ -1,5 +1,8 @@
2006-09-28 David Shaw <dshaw@jabberwocky.com>
* compat.h: Move strsep prototype and ascii_isspace macro to from
util.h.
* compat.h: New, used for libcompat.a functions.
* util.h: Includes compat.h.

View File

@ -1,6 +1,14 @@
#ifndef _COMPAT_H_
#define _COMPAT_H_
/* Note this isn't identical to a C locale isspace() without \f and
\v, but works for the purposes used here. */
#define ascii_isspace(a) ((a)==' ' || (a)=='\n' || (a)=='\r' || (a)=='\t')
int hextobyte( const char *s );
#ifndef HAVE_STRSEP
char *strsep (char **stringp, const char *delim);
#endif
#endif /* !_COMPAT_H_ */

View File

@ -206,9 +206,6 @@ char *stpcpy(char *a,const char *b);
#ifndef HAVE_STRLWR
char *strlwr(char *a);
#endif
#ifndef HAVE_STRSEP
char *strsep (char **stringp, const char *delim);
#endif
#ifndef HAVE_STRCASECMP
int strcasecmp( const char *, const char *b);
#endif
@ -297,10 +294,6 @@ int get_cert(const char *name,size_t max_size,IOBUF *iobuf,
*(p) <= 'F'? (*(p)-'A'+10):(*(p)-'a'+10))
#define xtoi_2(p) ((xtoi_1(p) * 16) + xtoi_1((p)+1))
/* Note this isn't identical to a C locale isspace() without \f and
\v, but works for the purposes used here. */
#define ascii_isspace(a) ((a)==' ' || (a)=='\n' || (a)=='\r' || (a)=='\t')
/******* RISC OS stuff ***********/
#ifdef __riscos__
int riscos_load_module(const char *name, const char * const path[], int fatal);

View File

@ -54,7 +54,7 @@
#include <ldap.h>
#endif
#include "util.h"
#include "compat.h"
#include "keyserver.h"
#include "ksutil.h"

View File

@ -1,5 +1,7 @@
2006-09-28 David Shaw <dshaw@jabberwocky.com>
* strgutil.c (strsep): Move to strsep.c for AC_REPLACE_FUNCS.
* Makefile.am: Build libcompat.a for keyserver helpers. libutil.a
always contains everything in libcompat.a, so we only need to link
to one or the other.

View File

@ -1158,56 +1158,6 @@ stpcpy(char *a,const char *b)
}
#endif
#ifndef HAVE_STRSEP
/* code taken from glibc-2.2.1/sysdeps/generic/strsep.c */
char *
strsep (char **stringp, const char *delim)
{
char *begin, *end;
begin = *stringp;
if (begin == NULL)
return NULL;
/* A frequent case is when the delimiter string contains only one
character. Here we don't need to call the expensive `strpbrk'
function and instead work using `strchr'. */
if (delim[0] == '\0' || delim[1] == '\0')
{
char ch = delim[0];
if (ch == '\0')
end = NULL;
else
{
if (*begin == ch)
end = begin;
else if (*begin == '\0')
end = NULL;
else
end = strchr (begin + 1, ch);
}
}
else
/* Find the end of the token. */
end = strpbrk (begin, delim);
if (end)
{
/* Terminate the token and set *STRINGP past NUL character. */
*end++ = '\0';
*stringp = end;
}
else
/* No more delimiters; this is the last token. */
*stringp = NULL;
return begin;
}
#endif /*HAVE_STRSEP*/
#ifndef HAVE_STRLWR
char *
strlwr(char *s)

48
util/strsep.c Normal file
View File

@ -0,0 +1,48 @@
#include <config.h>
#include <string.h>
/* code taken from glibc-2.2.1/sysdeps/generic/strsep.c */
char *
strsep2 (char **stringp, const char *delim)
{
char *begin, *end;
begin = *stringp;
if (begin == NULL)
return NULL;
/* A frequent case is when the delimiter string contains only one
character. Here we don't need to call the expensive `strpbrk'
function and instead work using `strchr'. */
if (delim[0] == '\0' || delim[1] == '\0')
{
char ch = delim[0];
if (ch == '\0')
end = NULL;
else
{
if (*begin == ch)
end = begin;
else if (*begin == '\0')
end = NULL;
else
end = strchr (begin + 1, ch);
}
}
else
/* Find the end of the token. */
end = strpbrk (begin, delim);
if (end)
{
/* Terminate the token and set *STRINGP past NUL character. */
*end++ = '\0';
*stringp = end;
}
else
/* No more delimiters; this is the last token. */
*stringp = NULL;
return begin;
}