Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/netsmb pull iconv.h from FreeBSD, update the stub iconv ...



details:   https://anonhg.NetBSD.org/src/rev/e4ba68965e74
branches:  trunk
changeset: 543094:e4ba68965e74
user:      jdolecek <jdolecek%NetBSD.org@localhost>
date:      Sun Feb 16 19:50:48 2003 +0000

description:
pull iconv.h from FreeBSD, update the stub iconv routines to match
this is to provide some stuff used by mount_smbfs / libsmb

diffstat:

 sys/netsmb/iconv.c |    6 +-
 sys/netsmb/iconv.h |  155 ++++++++++++++++++++++++++++++++++++++++++++++++++--
 2 files changed, 151 insertions(+), 10 deletions(-)

diffs (197 lines):

diff -r 04fc7b7330a1 -r e4ba68965e74 sys/netsmb/iconv.c
--- a/sys/netsmb/iconv.c        Sun Feb 16 19:48:10 2003 +0000
+++ b/sys/netsmb/iconv.c        Sun Feb 16 19:50:48 2003 +0000
@@ -1,9 +1,9 @@
-/*     $NetBSD: iconv.c,v 1.4 2002/01/05 20:29:38 deberg Exp $ */
+/*     $NetBSD: iconv.c,v 1.5 2003/02/16 19:50:49 jdolecek Exp $       */
 
 /* Public domain */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: iconv.c,v 1.4 2002/01/05 20:29:38 deberg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: iconv.c,v 1.5 2003/02/16 19:50:49 jdolecek Exp $");
 
 #include <sys/param.h>
 #include <sys/kernel.h>
@@ -14,7 +14,7 @@
 #include <netsmb/iconv.h>
 
 int
-iconv_open(const char *to, const char *from, void *handle)
+iconv_open(const char *to, const char *from, void **handle)
 {
        return 0;
 }
diff -r 04fc7b7330a1 -r e4ba68965e74 sys/netsmb/iconv.h
--- a/sys/netsmb/iconv.h        Sun Feb 16 19:48:10 2003 +0000
+++ b/sys/netsmb/iconv.h        Sun Feb 16 19:50:48 2003 +0000
@@ -1,21 +1,162 @@
-/*     $NetBSD: iconv.h,v 1.3 2002/01/05 20:29:38 deberg Exp $ */
+/*     $NetBSD: iconv.h,v 1.4 2003/02/16 19:50:48 jdolecek Exp $       */
 
-/* Public domain */
-
+/*
+ * Copyright (c) 2000-2001, Boris Popov
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *    This product includes software developed by Boris Popov.
+ * 4. Neither the name of the author nor the names of any co-contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD: src/sys/sys/iconv.h,v 1.5 2002/07/15 13:34:50 markm Exp $
+ */
 #ifndef _SYS_ICONV_H_
 #define _SYS_ICONV_H_
 
-#ifdef _KERNEL
+#define        ICONV_CSNMAXLEN         31      /* maximum length of charset name */
+#define        ICONV_CNVNMAXLEN        31      /* maximum length of converter name */
+#define        ICONV_CSMAXDATALEN      1024    /* maximum size of data associated with cs pair */
+
+/*
+ * Entry for cslist sysctl
+ */
+#define        ICONV_CSPAIR_INFO_VER   1
+
+struct iconv_cspair_info {
+       int     cs_version;
+       int     cs_id;
+       int     cs_base;
+       int     cs_refcount;
+       char    cs_to[ICONV_CSNMAXLEN];
+       char    cs_from[ICONV_CSNMAXLEN];
+};
+
+/*
+ * Paramters for 'add' sysctl
+ */
+#define        ICONV_ADD_VER   1
+
+struct iconv_add_in {
+       int     ia_version;
+       char    ia_converter[ICONV_CNVNMAXLEN];
+       char    ia_to[ICONV_CSNMAXLEN];
+       char    ia_from[ICONV_CSNMAXLEN];
+       int     ia_datalen;
+       const void *ia_data;
+};
+
+struct iconv_add_out {
+       int     ia_csid;
+};
+
+#ifndef _KERNEL
+
+__BEGIN_DECLS
+
+int   kiconv_add_xlat_table(const char *, const char *, const u_char *);
+
+__END_DECLS
+
+#else /* !_KERNEL */
 
-int iconv_open(const char *to, const char *from, void *);
-int iconv_close(void *);
+#ifndef __NetBSD__
+#include <sys/kobj.h>
+#include <sys/queue.h>                 /* can't avoid that */
+#include <sys/sysctl.h>                        /* can't avoid that */
+
+struct iconv_cspair;
+struct iconv_cspairdata;
+
+/*
+ * iconv converter class definition
+ */
+struct iconv_converter_class {
+       KOBJ_CLASS_FIELDS;
+       TAILQ_ENTRY(iconv_converter_class)      cc_link;
+};
+
+struct iconv_cspair {
+       int             cp_id;          /* unique id of charset pair */
+       int             cp_refcount;    /* number of references from other pairs */
+       const char *    cp_from;
+       const char *    cp_to;
+       void *          cp_data;
+       struct iconv_converter_class * cp_dcp;
+       struct iconv_cspair *cp_base;
+       TAILQ_ENTRY(iconv_cspair)       cp_link;
+};
+
+#define        KICONV_CONVERTER(name,size)                             \
+    static DEFINE_CLASS(iconv_ ## name, iconv_ ## name ## _methods, (size)); \
+    static moduledata_t iconv_ ## name ## _mod = {     \
+       "iconv_"#name, iconv_converter_handler,         \
+       (void*)&iconv_ ## name ## _class                \
+    };                                                 \
+    DECLARE_MODULE(iconv_ ## name, iconv_ ## name ## _mod, SI_SUB_DRIVERS, SI_ORDER_ANY);
+
+#define        KICONV_CES(name,size)                           \
+    static DEFINE_CLASS(iconv_ces_ ## name, iconv_ces_ ## name ## _methods, (size)); \
+    static moduledata_t iconv_ces_ ## name ## _mod = { \
+       "iconv_ces_"#name, iconv_cesmod_handler,        \
+       (void*)&iconv_ces_ ## name ## _class            \
+    };                                                 \
+    DECLARE_MODULE(iconv_ces_ ## name, iconv_ces_ ## name ## _mod, SI_SUB_DRIVERS, SI_ORDER_ANY);
+#endif /* !NetBSD */
+
+#ifdef MALLOC_DECLARE
+MALLOC_DECLARE(M_ICONV);
+#endif
+
+/*
+ * Basic conversion functions
+ */
+int iconv_open(const char *to, const char *from, void **handle);
+int iconv_close(void *handle);
 int iconv_conv(void *handle, const char **inbuf,
        size_t *inbytesleft, char **outbuf, size_t *outbytesleft);
 char* iconv_convstr(void *handle, char *dst, const char *src);
 void* iconv_convmem(void *handle, void *dst, const void *src, int size);
 
+/*
+ * Internal functions
+ */
 int iconv_lookupcp(const char **cpp, const char *s);
 
+#ifndef __NetBSD__
+int iconv_converter_initstub(struct iconv_converter_class *dp);
+int iconv_converter_donestub(struct iconv_converter_class *dp);
+int iconv_converter_handler(module_t mod, int type, void *data);
+#endif /* !NetBSD */
+
+#ifdef ICONV_DEBUG
+#define ICDEBUG(format, ...) printf("%s: "format, __func__ , __VA_ARGS__)
+#else
+#define ICDEBUG(format, ...)
+#endif
+
 #endif /* !_KERNEL */
 
-#endif /* _SYS_ICONV_H_ */
+#endif /* !_SYS_ICONV_H_ */



Home | Main Index | Thread Index | Old Index