aboutsummaryrefslogtreecommitdiff
path: root/dlib/dlib.h
diff options
context:
space:
mode:
authorcorvid <corvid@lavabit.com>2011-11-11 04:26:41 +0000
committercorvid <corvid@lavabit.com>2011-11-11 04:26:41 +0000
commit980fe05f47b9d6dd8626b5ea021e2c16807ff5ca (patch)
tree2e5670d74d8fcfb8e7f6b84ffaf5f77b74855746 /dlib/dlib.h
parent119aa95ed6bc612dd4ef7a3121d9bf220148aaa4 (diff)
locale-independent ASCII character case handling
Basically, I and i are different letters in Turkic languages, and this causes problems for str(n)casecmp and toupper/tolower in these locales when dillo is dealing with ASCII.
Diffstat (limited to 'dlib/dlib.h')
-rw-r--r--dlib/dlib.h10
1 files changed, 5 insertions, 5 deletions
diff --git a/dlib/dlib.h b/dlib/dlib.h
index cd612d28..8dc324a7 100644
--- a/dlib/dlib.h
+++ b/dlib/dlib.h
@@ -5,7 +5,6 @@
#include <stddef.h> /* for size_t */
#include <stdarg.h> /* for va_list */
#include <string.h> /* for strerror */
-#include <strings.h> /* for strcasecmp, strncasecmp (POSIX 2001) */
#include "d_size.h"
@@ -34,6 +33,8 @@ extern "C" {
#define dIsspace(c) isspace((uchar_t)(c))
#define dIsalnum(c) isalnum((uchar_t)(c))
+#define D_ASCII_TOUPPER(c) (((c) >= 'a' && (c) <= 'z') ? (c) - 0x20 : (c))
+#define D_ASCII_TOLOWER(c) (((c) >= 'A' && (c) <= 'Z') ? (c) + 0x20 : (c))
/*
*-- Casts -------------------------------------------------------------------
*/
@@ -86,12 +87,11 @@ char *dStrconcat(const char *s1, ...);
char *dStrstrip(char *s);
char *dStrnfill(size_t len, char c);
char *dStrsep(char **orig, const char *delim);
-char *dStristr(const char *haystack, const char *needle);
void dStrshred(char *s);
+char *dStriAsciiStr(const char *haystack, const char *needle);
+int dStrAsciiCasecmp(const char *s1, const char *s2);
+int dStrnAsciiCasecmp(const char *s1, const char *s2, size_t n);
-/* these are in POSIX 2001. Could be implemented if a port requires it */
-#define dStrcasecmp strcasecmp
-#define dStrncasecmp strncasecmp
#define dStrerror strerror
/*