summaryrefslogtreecommitdiff
path: root/ruby_1_8_5/wince/string_wce.c
diff options
context:
space:
mode:
authorshyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-08-15 23:23:39 +0000
committershyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-08-15 23:23:39 +0000
commit6175ca03be6d0d51359f9017123708987d0f5eb7 (patch)
treeecfcf6e79a21b1d25c3f6f42dd68ea0a14add89c /ruby_1_8_5/wince/string_wce.c
parent80a56b248b2e9cfc95622aed98750df05a19f667 (diff)
add tag v1_8_5_91v1_8_5_91
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/tags/v1_8_5_91@13046 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ruby_1_8_5/wince/string_wce.c')
-rw-r--r--ruby_1_8_5/wince/string_wce.c89
1 files changed, 89 insertions, 0 deletions
diff --git a/ruby_1_8_5/wince/string_wce.c b/ruby_1_8_5/wince/string_wce.c
new file mode 100644
index 0000000000..257eee101d
--- /dev/null
+++ b/ruby_1_8_5/wince/string_wce.c
@@ -0,0 +1,89 @@
+/***************************************************************
+ string.c
+***************************************************************/
+
+#include <windows.h>
+#include "wince.h" /* for wce_mbtowc */
+
+/* _strdup already exists in stdlib.h? */
+char *strdup(const char * str)
+{
+ char *p;
+
+ p = malloc( strlen(str)+1 );
+ strcpy( p, str );
+ return p;
+}
+
+char* strerror(int errno)
+{
+ static char buf[32]="wince::strerror called.";
+ return buf;
+}
+
+/* strnicmp already exists in stdlib.h? */
+int strnicmp( const char *s1, const char *s2, size_t count )
+{
+ wchar_t *w1, *w2;
+ int n;
+
+ w1 = wce_mbtowc(s1);
+ w2 = wce_mbtowc(s2);
+
+ n = wcsnicmp(w1, w2, count);
+
+ free(w1);
+ free(w2);
+
+ return n;
+}
+
+#if _WIN32_WCE < 300
+#include "..\missing\strtoul.c"
+
+char *strrchr( const char *p, int c )
+{
+ char *pp;
+ for( pp=(char*)p+strlen(p); pp!=p; pp-- )
+ {
+ if( *pp==c ) break;
+ }
+ return pp==p ? NULL : pp;
+}
+
+int stricmp( const char *s1, const char *s2 )
+{
+ wchar_t *w1, *w2;
+ int n;
+
+ w1 = wce_mbtowc(s1);
+ w2 = wce_mbtowc(s2);
+
+ n = wcsicmp(w1, w2);
+
+ free(w1);
+ free(w2);
+
+ return n;
+}
+
+char *strpbrk(const char *str, const char *cs)
+{
+ wchar_t *wstr, *wcs, *w;
+ char *s = NULL;
+
+ wstr = wce_mbtowc(str);
+ wcs = wce_mbtowc(cs);
+
+ w = wcspbrk(wstr, wcs);
+
+ if( w!=NULL )
+ s = str + (wcs-wstr)/sizeof(wchar_t);
+
+ free(wstr);
+ free(wcs);
+
+ return s;
+}
+
+#endif