The branch, master has been updated via 0a3ee53b50a10874b0ee0230b022b4277b5a6d96 (commit) via 2d7a3748b2063c4137ee98ceca85361651ef8ee7 (commit) via c7b9757b8ac3ac6baa478655a4d2f77dff8240a8 (commit) from 9b0df441e1bd836c433e11582650fa0171791485 (commit)
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit 0a3ee53b50a10874b0ee0230b022b4277b5a6d96 Author: Jelmer Vernooij <jel...@samba.org> Date: Mon Mar 2 05:04:07 2009 +0100 Use samba3's own iconv implementation for now, until all changes are merged. commit 2d7a3748b2063c4137ee98ceca85361651ef8ee7 Merge: c7b9757b8ac3ac6baa478655a4d2f77dff8240a8 9b0df441e1bd836c433e11582650fa0171791485 Author: Jelmer Vernooij <jel...@samba.org> Date: Mon Mar 2 04:15:11 2009 +0100 Merge branch 'master' of git://git.samba.org/samba into convenience commit c7b9757b8ac3ac6baa478655a4d2f77dff8240a8 Author: Jelmer Vernooij <jel...@samba.org> Date: Mon Mar 2 04:12:57 2009 +0100 Import ISO-8859-1, 646 from Samba 3 iconv. ----------------------------------------------------------------------- Summary of changes: lib/util/charset/iconv.c | 29 +++++++++++++++++++++++++++++ source3/Makefile.in | 2 +- source3/lib/iconv.c | 4 ++-- 3 files changed, 32 insertions(+), 3 deletions(-) Changeset truncated at 500 lines: diff --git a/lib/util/charset/iconv.c b/lib/util/charset/iconv.c index 98284ce..9825e4b 100644 --- a/lib/util/charset/iconv.c +++ b/lib/util/charset/iconv.c @@ -50,6 +50,7 @@ static size_t ascii_pull (void *,const char **, size_t *, char **, size_t *); static size_t ascii_push (void *,const char **, size_t *, char **, size_t *); +static size_t latin1_push (void *,const char **, size_t *, char **, size_t *); static size_t utf8_pull (void *,const char **, size_t *, char **, size_t *); static size_t utf8_push (void *,const char **, size_t *, char **, size_t *); static size_t utf16_munged_pull(void *,const char **, size_t *, char **, size_t *); @@ -73,6 +74,8 @@ static const struct charset_functions builtin_functions[] = { {"UTF16_MUNGED", utf16_munged_pull, iconv_copy}, {"ASCII", ascii_pull, ascii_push}, + {"646", ascii_pull, ascii_push}, + {"ISO-8859-1", ascii_pull, latin1_push}, {"UCS2-HEX", ucs2hex_pull, ucs2hex_push} }; @@ -341,6 +344,32 @@ static size_t ascii_push(void *cd, const char **inbuf, size_t *inbytesleft, return ir_count; } +static size_t latin1_push(void *cd, const char **inbuf, size_t *inbytesleft, + char **outbuf, size_t *outbytesleft) +{ + int ir_count=0; + + while (*inbytesleft >= 2 && *outbytesleft >= 1) { + (*outbuf)[0] = (*inbuf)[0]; + if ((*inbuf)[1]) ir_count++; + (*inbytesleft) -= 2; + (*outbytesleft) -= 1; + (*inbuf) += 2; + (*outbuf) += 1; + } + + if (*inbytesleft == 1) { + errno = EINVAL; + return -1; + } + + if (*inbytesleft > 1) { + errno = E2BIG; + return -1; + } + + return ir_count; +} static size_t ucs2hex_pull(void *cd, const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft) diff --git a/source3/Makefile.in b/source3/Makefile.in index 28b5437..e9f4081 100644 --- a/source3/Makefile.in +++ b/source3/Makefile.in @@ -366,7 +366,7 @@ LIB_OBJ = $(LIBSAMBAUTIL_OBJ) $(UTIL_OBJ) $(CRYPTO_OBJ) \ lib/substitute.o lib/dbwrap_util.o \ lib/ms_fnmatch.o lib/select.o lib/errmap_unix.o \ lib/tallocmsg.o lib/dmallocmsg.o libsmb/smb_signing.o \ - ../lib/util/charset/iconv.o lib/pam_errors.o intl/lang_tdb.o \ + lib/iconv.o lib/pam_errors.o intl/lang_tdb.o \ lib/conn_tdb.o lib/adt_tree.o lib/gencache.o \ lib/module.o lib/events.o @LIBTEVENT_OBJ0@ \ lib/ldap_escape.o @CHARSET_STATIC@ \ diff --git a/source3/lib/iconv.c b/source3/lib/iconv.c index fa213a3..4450054 100644 --- a/source3/lib/iconv.c +++ b/source3/lib/iconv.c @@ -207,12 +207,12 @@ smb_iconv_t smb_iconv_open(const char *tocode, const char *fromcode) from = charsets; to = charsets; - ret = SMB_MALLOC_P(smb_iconv_t); + ret = SMB_MALLOC_P(struct smb_iconv_s); if (!ret) { errno = ENOMEM; return (smb_iconv_t)-1; } - memset(ret, 0, sizeof(smb_iconv_t)); + memset(ret, 0, sizeof(struct smb_iconv_s)); ret->from_name = SMB_STRDUP(fromcode); ret->to_name = SMB_STRDUP(tocode); -- Samba Shared Repository