Character-set conversion routines built on our iconv. More...
#include <arpa/inet.h>
#include <ctype.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/param.h>
#include <sys/stat.h>
#include <unistd.h>
#include <atalk/logger.h>
#include <atalk/unicode.h>
#include <atalk/util.h>
#include <atalk/compat.h>
#include <atalk/byteorder.h>
Macros | |
#define | MAX_CHARSETS 20 |
#define | CHECK_FLAGS(a, b) |
#define | hextoint(c) |
Functions | |
static const char * | charset_name (charset_t ch) |
int | set_charset_name (charset_t ch, const char *name) |
void | free_charset_names (void) |
static struct charset_functions * | get_charset_functions (charset_t ch) |
static void | lazy_initialize_conv (void) |
charset_t | add_charset (const char *name) |
void | init_iconv (void) |
static size_t | add_null (charset_t to, char *buf, size_t bytesleft, size_t len) |
static size_t | convert_string_internal (charset_t from, charset_t to, void const *src, size_t srclen, void *dest, size_t destlen) |
size_t | convert_string (charset_t from, charset_t to, void const *src, size_t srclen, void *dest, size_t destlen) |
static size_t | convert_string_allocate_internal (charset_t from, charset_t to, void const *src, size_t srclen, char **dest) |
size_t | convert_string_allocate (charset_t from, charset_t to, void const *src, size_t srclen, char **dest) |
size_t | charset_strupper (charset_t ch, const char *src, size_t srclen, char *dest, size_t destlen) |
size_t | charset_strlower (charset_t ch, const char *src, size_t srclen, char *dest, size_t destlen) |
size_t | ucs2_to_charset (charset_t ch, const ucs2_t *src, char *dest, size_t destlen) |
size_t | ucs2_to_charset_allocate (charset_t ch, char **dest, const ucs2_t *src) |
size_t | charset_precompose (charset_t ch, char *src, size_t inlen, char *dst, size_t outlen) |
size_t | charset_decompose (charset_t ch, char *src, size_t inlen, char *dst, size_t outlen) |
static size_t | pull_charset_flags (charset_t from_set, charset_t to_set, charset_t cap_set, const char *src, size_t srclen, char *dest, size_t destlen, uint16_t *flags) |
static size_t | push_charset_flags (charset_t to_set, charset_t cap_set, char *src, size_t srclen, char *dest, size_t destlen, uint16_t *flags) |
size_t | convert_charset (charset_t from_set, charset_t to_set, charset_t cap_charset, const char *src, size_t src_len, char *dest, size_t dest_len, uint16_t *flags) |
Variables | |
static atalk_iconv_t | conv_handles [MAX_CHARSETS][MAX_CHARSETS] |
static char * | charset_names [MAX_CHARSETS] |
static struct charset_functions * | charsets [MAX_CHARSETS] |
static char | hexdig [] = "0123456789abcdef" |
Character-set conversion routines built on our iconv.
#define CHECK_FLAGS | ( | a, | |
b ) |
#define hextoint | ( | c | ) |
#define MAX_CHARSETS 20 |
charset_t add_charset | ( | const char * | name | ) |
|
static |
size_t charset_decompose | ( | charset_t | ch, |
char * | src, | ||
size_t | inlen, | ||
char * | dst, | ||
size_t | outlen ) |
|
static |
Return the name of a charset to give to iconv().
size_t charset_precompose | ( | charset_t | ch, |
char * | src, | ||
size_t | inlen, | ||
char * | dst, | ||
size_t | outlen ) |
size_t charset_strlower | ( | charset_t | ch, |
const char * | src, | ||
size_t | srclen, | ||
char * | dest, | ||
size_t | destlen ) |
size_t charset_strupper | ( | charset_t | ch, |
const char * | src, | ||
size_t | srclen, | ||
char * | dest, | ||
size_t | destlen ) |
size_t convert_charset | ( | charset_t | from_set, |
charset_t | to_set, | ||
charset_t | cap_charset, | ||
const char * | src, | ||
size_t | src_len, | ||
char * | dest, | ||
size_t | dest_len, | ||
uint16_t * | flags ) |
size_t convert_string | ( | charset_t | from, |
charset_t | to, | ||
void const * | src, | ||
size_t | srclen, | ||
void * | dest, | ||
size_t | destlen ) |
size_t convert_string_allocate | ( | charset_t | from, |
charset_t | to, | ||
void const * | src, | ||
size_t | srclen, | ||
char ** | dest ) |
|
static |
Convert between character sets, allocating a new buffer for the result.
from | source character set |
to | destination character set |
src | pointer to source string (multibyte or singlebyte) |
srclen | length of source buffer. |
dest | always set at least to NULL |
|
static |
Convert string from one encoding to another, making error checking etc
from | source character set |
to | destination character set |
src | pointer to source string (multibyte or singlebyte) |
srclen | length of the source string in bytes |
dest | pointer to destination string (multibyte or singlebyte) |
destlen | maximal length allowed for string |
void free_charset_names | ( | void | ) |
|
static |
void init_iconv | ( | void | ) |
Initialize iconv conversion descriptors.
This is called the first time it is needed, and also called again every time the configuration is reloaded, because the charset or codepage might have changed.
|
static |
|
static |
inbuf
|
static |
int set_charset_name | ( | charset_t | ch, |
const char * | name ) |
Copy a string from a UCS2 src to a unix char * destination, allocating a buffer
dest | always set at least to NULL |
|
static |
|
static |
|
static |
|
static |