Don't use locale dependent isspace()
Fixes an issue on Solaris Reported-by: Dagobert Michelsen <dam@opencsw.org>
This commit is contained in:
parent
896f7f6ae4
commit
067f6aee9c
|
@ -14,6 +14,9 @@ LT_INIT
|
|||
AC_CONFIG_MACRO_DIR([m4])
|
||||
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
|
||||
|
||||
dnl Check that compiler understands inline
|
||||
AC_C_INLINE
|
||||
|
||||
#
|
||||
# Gettext
|
||||
#
|
||||
|
|
|
@ -497,6 +497,11 @@ const char *psl_registrable_domain(const psl_ctx_t *psl, const char *domain)
|
|||
return regdom;
|
||||
}
|
||||
|
||||
static inline int _isspace_ascii(const char c)
|
||||
{
|
||||
return c == ' ' || c == '\t' || c == '\r' || c == '\n';
|
||||
}
|
||||
|
||||
static int _str_is_ascii(const char *s)
|
||||
{
|
||||
while (*s && *((unsigned char *)s) < 128) s++;
|
||||
|
@ -680,14 +685,14 @@ psl_ctx_t *psl_load_fp(FILE *fp)
|
|||
psl->suffix_exceptions = _vector_alloc(64, _suffix_compare_array);
|
||||
|
||||
while ((linep = fgets(buf, sizeof(buf), fp))) {
|
||||
while (isspace(*linep)) linep++; /* ignore leading whitespace */
|
||||
while (_isspace_ascii(*linep)) linep++; /* ignore leading whitespace */
|
||||
if (!*linep) continue; /* skip empty lines */
|
||||
|
||||
if (*linep == '/' && linep[1] == '/')
|
||||
continue; /* skip comments */
|
||||
|
||||
/* parse suffix rule */
|
||||
for (p = linep; *linep && !isspace(*linep);) linep++;
|
||||
for (p = linep; *linep && !_isspace_ascii(*linep);) linep++;
|
||||
*linep = 0;
|
||||
|
||||
if (*p == '!') {
|
||||
|
|
|
@ -46,6 +46,11 @@ static int
|
|||
ok,
|
||||
failed;
|
||||
|
||||
static inline int _isspace_ascii(const char c)
|
||||
{
|
||||
return c == ' ' || c == '\t' || c == '\r' || c == '\n';
|
||||
}
|
||||
|
||||
static void test_psl(void)
|
||||
{
|
||||
FILE *fp;
|
||||
|
@ -59,14 +64,14 @@ static void test_psl(void)
|
|||
|
||||
if ((fp = fopen(PSL_FILE, "r"))) {
|
||||
while ((linep = fgets(buf, sizeof(buf), fp))) {
|
||||
while (isspace(*linep)) linep++; /* ignore leading whitespace */
|
||||
while (_isspace_ascii(*linep)) linep++; /* ignore leading whitespace */
|
||||
if (!*linep) continue; /* skip empty lines */
|
||||
|
||||
if (*linep == '/' && linep[1] == '/')
|
||||
continue; /* skip comments */
|
||||
|
||||
/* parse suffix rule */
|
||||
for (p = linep; *linep && !isspace(*linep);) linep++;
|
||||
for (p = linep; *linep && !_isspace_ascii(*linep);) linep++;
|
||||
*linep = 0;
|
||||
|
||||
if (*p == '!') { /* an exception to a wildcard, e.g. !www.ck (wildcard is *.ck) */
|
||||
|
|
|
@ -35,7 +35,6 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
#ifdef HAVE_ALLOCA_H
|
||||
# include <alloca.h>
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue