aboutsummaryrefslogtreecommitdiff
path: root/project
diff options
context:
space:
mode:
Diffstat (limited to 'project')
-rw-r--r--project/dclib/dclib-basics.c14
-rw-r--r--project/dclib/dclib-basics.h8
-rw-r--r--project/revision.sh2
-rw-r--r--project/src/wtest.c12
4 files changed, 35 insertions, 1 deletions
diff --git a/project/dclib/dclib-basics.c b/project/dclib/dclib-basics.c
index c46f5e2..793ddcd 100644
--- a/project/dclib/dclib-basics.c
+++ b/project/dclib/dclib-basics.c
@@ -8074,6 +8074,20 @@ ccp GetSha1Hex ( cvp bin )
return hex;
}
+///////////////////////////////////////////////////////////////////////////////
+
+void * dc_memrchr ( cvp src, int ch, size_t size )
+{
+ if ( !src || !size )
+ return 0;
+
+ ccp ptr = src + size;
+ while ( ptr > (ccp)src )
+ if ( *--ptr == ch )
+ return (void*)ptr;
+ return 0;
+}
+
//
///////////////////////////////////////////////////////////////////////////////
/////////////// END ///////////////
diff --git a/project/dclib/dclib-basics.h b/project/dclib/dclib-basics.h
index eb4c40a..498191e 100644
--- a/project/dclib/dclib-basics.h
+++ b/project/dclib/dclib-basics.h
@@ -5269,6 +5269,14 @@ static inline char * snprintfE ( char *buf, char *end, ccp format, ... )
return buf + ( res < 0 ? 0 : res < size ? res : size - 1 );
}
+///////////////////////////////////////////////////////////////////////////////
+
+void * dc_memrchr ( cvp src, int ch, size_t size );
+
+#ifdef __APPLE__
+ #define memrchr dc_memrchr
+#endif
+
//
///////////////////////////////////////////////////////////////////////////////
/////////////// E N D ///////////////
diff --git a/project/revision.sh b/project/revision.sh
index b0cd35e..2e055f0 100644
--- a/project/revision.sh
+++ b/project/revision.sh
@@ -1 +1 @@
-revision=8226
+revision=8227M
diff --git a/project/src/wtest.c b/project/src/wtest.c
index 5f146ac..38e2960 100644
--- a/project/src/wtest.c
+++ b/project/src/wtest.c
@@ -3684,6 +3684,18 @@ const gobj_cond_ref_t * FindConditionRef2 ( u16 ref_id )
static enumError develop ( int argc, char ** argv )
{
#if 1
+ static const char text[] = "abc/def/ghi\0jkl/mno/pqr";
+ uint i;
+ for ( i = 0; i < sizeof(text); i++ )
+ {
+ ccp res = memrchr(text,'/',i);
+ ccp dc = dc_memrchr(text,'/',i);
+ printf(" %3u: %3zd %3zd%s\n",
+ i, res ? res-text : -1, dc ? dc-text : -1,
+ res == dc ? "" : " DIFFER!" );
+ }
+
+ #elif 1
static const u16 tab[] = { 0x1000,0x103f, 0x1900,0x193f, 0 };
const u16 *ptr;