summaryrefslogtreecommitdiffstats
path: root/source3
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2001-09-30 13:30:52 +0000
committerAndrew Tridgell <tridge@samba.org>2001-09-30 13:30:52 +0000
commitb7ca6ec034c8b707e462e4a4457a65ce9bea0f79 (patch)
treedb1912872e08fc3feaeaa4ee37147599495c5e8f /source3
parent9a22ac94a4d1be0377562644e3704a2134b9d645 (diff)
make strupper() and strlower() not modify the string if it doesn't
need modifying that makes constant strings OK (This used to be commit 57196635d9b7edfcbfe1708dd22308ab30c02240)
Diffstat (limited to 'source3')
-rw-r--r--source3/lib/charcnv.c4
-rw-r--r--source3/lib/util_unistr.c18
2 files changed, 16 insertions, 6 deletions
diff --git a/source3/lib/charcnv.c b/source3/lib/charcnv.c
index adcd8b2aa9..55d56acf59 100644
--- a/source3/lib/charcnv.c
+++ b/source3/lib/charcnv.c
@@ -140,7 +140,7 @@ int unix_strupper(const char *src, size_t srclen, char *dest, size_t destlen)
smb_ucs2_t *buffer=(smb_ucs2_t*)cvtbuf;
size=convert_string(CH_UNIX, CH_UCS2, src, srclen, buffer, sizeof(cvtbuf));
len=size/2;
- strupper_w(buffer);
+ if (!strupper_w(buffer) && (dest == src)) return srclen;
return convert_string(CH_UCS2, CH_UNIX, buffer, size, dest, destlen);
}
@@ -150,7 +150,7 @@ int unix_strlower(const char *src, size_t srclen, char *dest, size_t destlen)
smb_ucs2_t *buffer=(smb_ucs2_t*)cvtbuf;
size=convert_string(CH_UNIX, CH_UCS2, src, srclen, buffer, sizeof(cvtbuf));
len=size/2;
- strlower_w(buffer);
+ if (!strlower_w(buffer) && (dest == src)) return srclen;
return convert_string(CH_UCS2, CH_UNIX, buffer, size, dest, destlen);
}
diff --git a/source3/lib/util_unistr.c b/source3/lib/util_unistr.c
index 8248ac073c..887c15f0d9 100644
--- a/source3/lib/util_unistr.c
+++ b/source3/lib/util_unistr.c
@@ -248,26 +248,36 @@ smb_ucs2_t *strchr_w(const smb_ucs2_t *s, smb_ucs2_t c)
/*******************************************************************
Convert a string to lower case.
+ return True if any char is converted
********************************************************************/
-void strlower_w(smb_ucs2_t *s)
+BOOL strlower_w(smb_ucs2_t *s)
{
+ BOOL ret = False;
while (*s) {
- if (isupper_w(*s))
+ if (isupper_w(*s)) {
*s = tolower_w(*s);
+ ret = True;
+ }
s++;
}
+ return ret;
}
/*******************************************************************
Convert a string to upper case.
+ return True if any char is converted
********************************************************************/
-void strupper_w(smb_ucs2_t *s)
+BOOL strupper_w(smb_ucs2_t *s)
{
+ BOOL ret = False;
while (*s) {
- if (islower_w(*s))
+ if (islower_w(*s)) {
*s = toupper_w(*s);
+ ret = True;
+ }
s++;
}
+ return ret;
}
/*******************************************************************