diff options
Diffstat (limited to 'winsup/cygwin/string.h')
-rw-r--r-- | winsup/cygwin/string.h | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/winsup/cygwin/string.h b/winsup/cygwin/string.h index 6e41024..0ac9745 100644 --- a/winsup/cygwin/string.h +++ b/winsup/cygwin/string.h @@ -38,6 +38,27 @@ strchr (const char *s, int c) return res; } +#undef strechr +#define strechr cygwin_strechr +static inline __stdcall char * +strechr (const char *s, int c) +{ + register char * res; + __asm__ __volatile__ ("\ + movb %%al,%%ah\n\ +1: movb (%1),%%al\n\ + cmpb %%ah,%%al\n\ + je 2f\n\ + incl %1\n\ + testb %%al,%%al\n\ + jne 1b\n\ + decl %1\n\ +2: movl %1,%0\n\ + ":"=a" (res), "=r" (s) + :"0" (c), "1" (s)); + return res; +} + extern const char isalpha_array[]; #undef strcasematch |