Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'winsup/cygwin/string.h')
-rw-r--r--winsup/cygwin/string.h44
1 files changed, 44 insertions, 0 deletions
diff --git a/winsup/cygwin/string.h b/winsup/cygwin/string.h
new file mode 100644
index 000000000..20bf6fdba
--- /dev/null
+++ b/winsup/cygwin/string.h
@@ -0,0 +1,44 @@
+/* string.h: Extra string defs
+
+ Copyright 2001 Red Hat, Inc.
+
+This file is part of Cygwin.
+
+This software is a copyrighted work licensed under the terms of the
+Cygwin license. Please consult the file "CYGWIN_LICENSE" for
+details. */
+
+#ifndef _CYGWIN_STRING_H
+#define _CYGWIN_STRING_H
+
+#include_next <string.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#undef strchr
+#define strchr cygwin_strchr
+extern inline __stdcall char *
+strchr (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\
+ xorl %1,%1\n\
+ 2: movl %1,%0\n\
+ ":"=a" (__res), "=r" (s)
+ :"0" (c), "1" (s));
+ return res;
+}
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* _CYGWIN_STRING_H */