]> arthur.barton.de Git - netatalk.git/blobdiff - include/atalk/unicode.h
backport CJK encoding from HEAD
[netatalk.git] / include / atalk / unicode.h
index 90ec8822e04dd17b668382f4592566360e769b33..e927b5eec24b2f55ef1373d8a6bfa164f9d58a7d 100644 (file)
@@ -3,6 +3,9 @@
 #define _ATALK_UNICODE_H 1
 
 #include <sys/cdefs.h>
+#include <netatalk/endian.h>
+#include <errno.h>
+#include <sys/param.h>
 
 #define ucs2_t u_int16_t
 
@@ -43,7 +46,7 @@ typedef struct {
 #define IGNORE_CHAR    '_'
 
 /* conversion flags */
-#define CONV_IGNORE            (1<<0) /* ignore EILSEQ, replace with IGNORE_CHAR */
+#define CONV_IGNORE            (1<<0) /* return the first convertable characters. */
 #define CONV_ESCAPEHEX         (1<<1) /* escape unconvertable chars with :[UCS2HEX] */
 #define CONV_ESCAPEDOTS                (1<<2) /* escape leading dots with :2600 */
 #define CONV_UNESCAPEHEX       (1<<3) 
@@ -51,6 +54,8 @@ typedef struct {
 #define CONV_TOLOWER           (1<<5) /* convert to lowercase */
 #define CONV_PRECOMPOSE                (1<<6) /* precompose */
 #define CONV_DECOMPOSE         (1<<7) /* precompose */
+#define CONV_FORCE             (1<<8) /* force convertion */
+#define CONV__EILSEQ           (1<<9) /* ignore EILSEQ, replace with IGNORE_CHAR (try USC2) */
 
 /* conversion return flags */
 #define CONV_REQMANGLE (1<<14) /* mangling of returned name is required */
@@ -74,6 +79,7 @@ struct charset_functions {
         size_t (*push)(void *, char **inbuf, size_t *inbytesleft,
                                    char **outbuf, size_t *outbytesleft);
        u_int32_t flags;
+        const char *iname;
         struct charset_functions *prev, *next;
 };
 
@@ -81,7 +87,8 @@ struct charset_functions {
 extern atalk_iconv_t   atalk_iconv_open __P((const char *, const char *));
 extern size_t          atalk_iconv __P((atalk_iconv_t, const char **, size_t *, char **, size_t *));
 extern int             atalk_iconv_close __P((atalk_iconv_t));
-extern struct charset_functions *find_charset_functions(const char *name);
+extern struct charset_functions *find_charset_functions __P((const char *));
+extern int             atalk_register_charset __P((struct charset_functions *));
 
 /* from util_unistr.c */
 extern ucs2_t  toupper_w  __P((ucs2_t));
@@ -123,6 +130,7 @@ extern size_t       charset_to_ucs2_allocate __P((charset_t, ucs2_t **dest, const cha
 extern size_t  charset_to_utf8_allocate __P((charset_t, char **dest, const char *src));
 extern size_t  ucs2_to_charset_allocate __P((charset_t, char **dest, const ucs2_t *src));
 extern size_t  utf8_to_charset_allocate __P((charset_t, char **dest, const char *src));
+extern size_t  ucs2_to_charset __P((charset_t, const ucs2_t *src, char *dest, size_t));
 
 extern size_t  convert_charset __P((charset_t, charset_t, charset_t, char *, size_t, char *, size_t, u_int16_t *));