diff options
author | Jelmer Vernooij <jelmer@samba.org> | 2010-06-25 21:51:23 +0200 |
---|---|---|
committer | Jelmer Vernooij <jelmer@samba.org> | 2010-06-25 22:48:59 +0200 |
commit | e40afe975accd8199ffe54ea9f3c4dedd02edb02 (patch) | |
tree | 3a6b82867c30203b215471707e036403baf0b1d7 /lib | |
parent | afc6d2f46d6aed07f828ef2f0aa6b62250468132 (diff) | |
download | samba-e40afe975accd8199ffe54ea9f3c4dedd02edb02.tar.gz samba-e40afe975accd8199ffe54ea9f3c4dedd02edb02.tar.bz2 samba-e40afe975accd8199ffe54ea9f3c4dedd02edb02.zip |
Move UCS2 macros to common code
Diffstat (limited to 'lib')
-rw-r--r-- | lib/util/charset/charset.h | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/lib/util/charset/charset.h b/lib/util/charset/charset.h index cc57b3eb54..68907aa593 100644 --- a/lib/util/charset/charset.h +++ b/lib/util/charset/charset.h @@ -40,6 +40,29 @@ typedef enum {CH_UTF16LE=0, CH_UTF16=0, CH_UNIX, CH_DISPLAY, CH_DOS, CH_UTF8, CH typedef uint16_t smb_ucs2_t; /* + * SMB UCS2 (16-bit unicode) internal type. + * smb_ucs2_t is *always* in little endian format. + */ + +#ifdef WORDS_BIGENDIAN +#define UCS2_SHIFT 8 +#else +#define UCS2_SHIFT 0 +#endif + +/* turn a 7 bit character into a ucs2 character */ +#define UCS2_CHAR(c) ((c) << UCS2_SHIFT) + +/* return an ascii version of a ucs2 character */ +#define UCS2_TO_CHAR(c) (((c) >> UCS2_SHIFT) & 0xff) + +/* Copy into a smb_ucs2_t from a possibly unaligned buffer. Return the copied smb_ucs2_t */ +#define COPY_UCS2_CHAR(dest,src) (((unsigned char *)(dest))[0] = ((unsigned char *)(src))[0],\ + ((unsigned char *)(dest))[1] = ((unsigned char *)(src))[1], (dest)) + + + +/* * for each charset we have a function that pulls from that charset to * a ucs2 buffer, and a function that pushes to a ucs2 buffer * */ |