summaryrefslogtreecommitdiffstats
path: root/source/lib/charcnv.c
diff options
context:
space:
mode:
authorGerald Carter <jerry@samba.org>2004-12-23 18:45:36 +0000
committerGerald Carter <jerry@samba.org>2004-12-23 18:45:36 +0000
commitb262548fec09659f46839dcf4c079176775f0871 (patch)
tree2f44f7f1cdce6d71d868626caea49fdfb82e1249 /source/lib/charcnv.c
parent8d91e07ef22ad3ed484b04bc4968380a24940696 (diff)
downloadsamba-b262548fec09659f46839dcf4c079176775f0871.tar.gz
samba-b262548fec09659f46839dcf4c079176775f0871.tar.xz
samba-b262548fec09659f46839dcf4c079176775f0871.zip
r4348: syncing up for 3.0.11pre1
Diffstat (limited to 'source/lib/charcnv.c')
-rw-r--r--source/lib/charcnv.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/source/lib/charcnv.c b/source/lib/charcnv.c
index dc00ca4cf4b..b9b9d90db67 100644
--- a/source/lib/charcnv.c
+++ b/source/lib/charcnv.c
@@ -84,6 +84,15 @@ static const char *charset_name(charset_t ch)
}
ret = ln;
}
+#ifdef HAVE_SETLOCALE
+ /* We set back the locale to C to get ASCII-compatible toupper/lower functions.
+ For now we do not need any other POSIX localisations anyway. When we should
+ really need localized string functions one day we need to write our own
+ ascii_tolower etc.
+ */
+ setlocale(LC_ALL, "C");
+ #endif
+
#endif
if (!ret || !*ret) ret = "ASCII";
@@ -372,7 +381,7 @@ size_t convert_string(charset_t from, charset_t to,
unsigned char *q = (unsigned char *)dest;
size_t slen = srclen;
size_t dlen = destlen;
- unsigned char lastp;
+ unsigned char lastp = '\0';
size_t retval = 0;
/* If all characters are ascii, fast path here. */
@@ -408,7 +417,7 @@ size_t convert_string(charset_t from, charset_t to,
size_t retval = 0;
size_t slen = srclen;
size_t dlen = destlen;
- unsigned char lastp;
+ unsigned char lastp = '\0';
/* If all characters are ascii, fast path here. */
while (((slen == (size_t)-1) || (slen >= 2)) && dlen) {
@@ -444,7 +453,7 @@ size_t convert_string(charset_t from, charset_t to,
size_t retval = 0;
size_t slen = srclen;
size_t dlen = destlen;
- unsigned char lastp;
+ unsigned char lastp = '\0';
/* If all characters are ascii, fast path here. */
while (slen && (dlen >= 2)) {