diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2000-06-14 05:30:29 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2000-06-14 05:30:29 +0000 |
commit | fb8018fbdd3a503c3b0ba3a6af628c3b9807b179 (patch) | |
tree | db7b8cc8d3495baf10d4e3d9c3f899233231d629 /re.c | |
parent | 60e720d43710e2d4b9b0655e3a148d81b7a45a84 (diff) | |
download | ruby-fb8018fbdd3a503c3b0ba3a6af628c3b9807b179.tar.gz ruby-fb8018fbdd3a503c3b0ba3a6af628c3b9807b179.tar.xz ruby-fb8018fbdd3a503c3b0ba3a6af628c3b9807b179.zip |
2000-06-14
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@757 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 're.c')
-rw-r--r-- | re.c | 27 |
1 files changed, 17 insertions, 10 deletions
@@ -71,20 +71,27 @@ static const char casetable[] = { #define MIN(a,b) (((a)>(b))?(b):(a)) int -rb_str_cicmp(str1, str2) - VALUE str1, str2; -{ - int len, i; +rb_memcmp(p1, p2, len) char *p1, *p2; + size_t len; +{ + int tmp; - len = MIN(RSTRING(str1)->len, RSTRING(str2)->len); - p1 = RSTRING(str1)->ptr; p2 = RSTRING(str2)->ptr; + if (!ruby_ignorecase) { + return memcmp(p1, p2, len); + } - for (i = 0; i < len; i++, p1++, p2++) { - if (casetable[(unsigned)*p1] != casetable[(unsigned)*p2]) - return casetable[(unsigned)*p1] - casetable[(unsigned)*p2]; + while (len--) { + if (tmp = casetable[(unsigned)*p1++] - casetable[(unsigned)*p2++]) + return tmp; } - return RSTRING(str1)->len - RSTRING(str2)->len; + return 0; +} + +int +rb_str_cicmp(str1, str2) + VALUE str1, str2; +{ } #define REG_CASESTATE FL_USER0 |