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

Reply via email to