[SCM] Samba Shared Repository - branch master updated - release-4-0-0alpha7-115-g0a3ee53

Jelmer Vernooij jelmer at samba.org
Mon Mar 2 04:05:21 GMT 2009


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 <jelmer at 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 <jelmer at 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 <jelmer at 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


More information about the samba-cvs mailing list