#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
#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)
#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 */
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;
};
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));
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 *));