1 /* string.h: Extra string defs
3 Copyright 2001, 2007, 2008 Red Hat, Inc.
5 This file is part of Cygwin.
7 This software is a copyrighted work licensed under the terms of the
8 Cygwin license. Please consult the file "CYGWIN_LICENSE" for
11 #ifndef _CYGWIN_STRING_H
12 #define _CYGWIN_STRING_H
14 #include_next <string.h>
21 #define strchr cygwin_strchr
22 static inline __stdcall char *
23 strchr (const char *s, int c)
26 __asm__ __volatile__ ("\
36 ":"=a" (res), "=r" (s)
42 #define strechr cygwin_strechr
43 static inline __stdcall char *
44 strechr (const char *s, int c)
47 __asm__ __volatile__ ("\
57 ":"=a" (res), "=r" (s)
62 #ifdef __INSIDE_CYGWIN__
64 extern const char isalpha_array[];
67 ascii_strcasematch (const char *cs, const char *ct)
72 .global _isalpha_array \n\
78 xorb _isalpha_array(%%eax),%%al \n\
79 cmpb -1(%%edi),%%al \n\
81 2: testb %%al,%%al \n\
87 :"=a" (__res), "=&S" (d0), "=&D" (d1)
88 : "1" (cs), "2" (ct));
94 ascii_strncasematch (const char *cs, const char *ct, size_t n)
99 .global _isalpha_array; \n\
107 xorb _isalpha_array(%%eax),%%al \n\
108 cmpb -1(%%edi),%%al \n\
110 2: testb %%al,%%al \n\
116 :"=a" (__res), "=&S" (d0), "=&D" (d1), "=&c" (d2)
117 :"1" (cs), "2" (ct), "3" (n));
123 #define strcasecmp cygwin_strcasecmp
124 int __stdcall cygwin_strcasecmp (const char *, const char *);
127 #define strncasecmp cygwin_strncasecmp
128 int __stdcall cygwin_strncasecmp (const char *, const char *, size_t);
130 #define strcasematch(s1,s2) (!cygwin_strcasecmp ((s1),(s2)))
131 #define strncasematch(s1,s2,n) (!cygwin_strncasecmp ((s1),(s2),(n)))
134 #define strlwr cygwin_strlwr
135 char * __stdcall cygwin_strlwr (char *);
138 #define strupr cygwin_strupr
139 char * __stdcall cygwin_strupr (char *);
141 #endif /* __INSIDE_CYGWIN__ */
147 #endif /* _CYGWIN_STRING_H */