svn commit: samba r14612 - in branches/SAMBA_4_0/source/lib/util: .
tridge at samba.org
tridge at samba.org
Tue Mar 21 11:37:11 GMT 2006
Author: tridge
Date: 2006-03-21 11:37:11 +0000 (Tue, 21 Mar 2006)
New Revision: 14612
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=14612
Log:
added strncasecmp_m() and fixed strcasecmp_m() for invalid codepoints
Modified:
branches/SAMBA_4_0/source/lib/util/util_str.c
Changeset:
Modified: branches/SAMBA_4_0/source/lib/util/util_str.c
===================================================================
--- branches/SAMBA_4_0/source/lib/util/util_str.c 2006-03-21 11:14:29 UTC (rev 14611)
+++ branches/SAMBA_4_0/source/lib/util/util_str.c 2006-03-21 11:37:11 UTC (rev 14612)
@@ -101,14 +101,53 @@
if (c1 == INVALID_CODEPOINT ||
c2 == INVALID_CODEPOINT) {
/* what else can we do?? */
+ return strcasecmp(s1, s2);
+ }
+
+ if (toupper_w(c1) != toupper_w(c2)) {
return c1 - c2;
}
+ }
+ return *s1 - *s2;
+}
+
+/**
+ Case insensitive string compararison, length limited
+**/
+_PUBLIC_ int strncasecmp_m(const char *s1, const char *s2, size_t n)
+{
+ codepoint_t c1=0, c2=0;
+ size_t size1, size2;
+
+ while (*s1 && *s2 && n) {
+ n--;
+
+ c1 = next_codepoint(s1, &size1);
+ c2 = next_codepoint(s2, &size2);
+
+ s1 += size1;
+ s2 += size2;
+
+ if (c1 == c2) {
+ continue;
+ }
+
+ if (c1 == INVALID_CODEPOINT ||
+ c2 == INVALID_CODEPOINT) {
+ /* what else can we do?? */
+ return strcasecmp(s1, s2);
+ }
+
if (toupper_w(c1) != toupper_w(c2)) {
return c1 - c2;
}
}
+ if (n == 0) {
+ return 0;
+ }
+
return *s1 - *s2;
}
More information about the samba-cvs
mailing list