diff options
Diffstat (limited to 'project')
| -rw-r--r-- | project/dclib/dclib-basics.c | 14 | ||||
| -rw-r--r-- | project/dclib/dclib-basics.h | 8 | ||||
| -rw-r--r-- | project/revision.sh | 2 | ||||
| -rw-r--r-- | project/src/wtest.c | 12 |
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; |
