summaryrefslogtreecommitdiff
path: root/source3/include
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2000-10-03 02:12:14 +0000
committerJeremy Allison <jra@samba.org>2000-10-03 02:12:14 +0000
commit3ad2ee22bb4ecee24d069bb7efadff18c25044d1 (patch)
tree833839953637fd990b712717df13efffa5b6ae10 /source3/include
parent2679fa315da579fbdc7dd35d3ee1cb364b85a1d9 (diff)
downloadsamba-3ad2ee22bb4ecee24d069bb7efadff18c25044d1.tar.gz
samba-3ad2ee22bb4ecee24d069bb7efadff18c25044d1.tar.bz2
samba-3ad2ee22bb4ecee24d069bb7efadff18c25044d1.zip
utf-8 and EUC3 patch from Hiroshi Miura Samba User Group Japan staff.
mkdir high bits patch from Robert Dahlem" <Robert.Dahlem@gmx.net>. jeremy. (This used to be commit b40191d27180ab1e59935086073c4d312552f717)
Diffstat (limited to 'source3/include')
-rw-r--r--source3/include/kanji.h570
-rw-r--r--source3/include/proto.h3
-rw-r--r--source3/include/vfs.h6
3 files changed, 576 insertions, 3 deletions
diff --git a/source3/include/kanji.h b/source3/include/kanji.h
index 1dd8f108c6..f5e198c2ee 100644
--- a/source3/include/kanji.h
+++ b/source3/include/kanji.h
@@ -30,7 +30,7 @@
/* FOR SHIFT JIS CODE */
#define is_shift_jis(c) \
((0x81 <= ((unsigned char) (c)) && ((unsigned char) (c)) <= 0x9f) \
- || (0xe0 <= ((unsigned char) (c)) && ((unsigned char) (c)) <= 0xef))
+ || (0xe0 <= ((unsigned char) (c)) && ((unsigned char) (c)) <= 0xfc))
#define is_shift_jis2(c) \
(0x40 <= ((unsigned char) (c)) && ((unsigned char) (c)) <= 0xfc \
&& ((unsigned char) (c)) != 0x7f)
@@ -52,12 +52,33 @@
(is_sj_upper2 (c) ? ((int) ((unsigned char) (c) - 0x60 + 0x81)) : \
((int) (unsigned char) (c)))
+#define is_sj_ru_upper2(c) \
+ ((0x40 <= (unsigned char) (c)) && ((unsigned char) (c) <= 0x60))
+#define is_sj_ru_lower2(c) \
+ (((0x70 <= (unsigned char) (c)) && ((unsigned char) (c) <= 0x7e)) || \
+ ((0x80 <= (unsigned char) (c)) && ((unsigned char) (c) <= 0x91)))
+#define sjis_russian 0x84
+#define is_sj_russian(c) (sjis_russian == (unsigned char) (c))
+#define is_sj_ru_upper(c1, c2) (is_sj_russian (c1) && is_sj_ru_upper2 (c2))
+#define is_sj_ru_lower(c1, c2) (is_sj_russian (c1) && is_sj_ru_lower2 (c2))
+#define sj_ru_toupper2(c) \
+ (is_sj_ru_lower2 (c) ? ((int) ((unsigned char) (c) + \
+ (((unsigned char)(c) >= 0x4f) ? (0x70 - 0x40) : (0x80 - 0x4f)))) : \
+ ((int) (unsigned char) (c)))
+#define sj_ru_tolower2(c) \
+ (is_sj_ru_upper2 (c) ? ((int) ((unsigned char) (c) - \
+ (((unsigned char)(c) >= 0x80) ? (0x70 - 0x40) : (0x80 - 0x4f)))) : \
+ ((int) (unsigned char) (c)))
+
#ifdef _KANJI_C_
/* FOR EUC CODE */
#define euc_kana (0x8e)
#define is_euc_kana(c) (((unsigned char) (c)) == euc_kana)
#define is_euc(c) (0xa0 < ((unsigned char) (c)) && ((unsigned char) (c)) < 0xff)
+#define euc_sup (0x8f)
+#define is_euc_sup(c) (((unsigned char ) (c)) == euc_sup)
+
/* FOR JIS CODE */
/* default jis third shift code, use for output */
#ifndef JIS_KSO
@@ -167,5 +188,552 @@ extern int (*_skip_multibyte_char)(char c);
#define HEX_CODE (5)
#define CAP_CODE (6)
#define DOSV_CODE SJIS_CODE
+#define EUC3_CODE (7)
+#define UTF8_CODE (8)
+
+#ifdef _KANJI_C_
+
+/* For conversion */
+
+#define EXTSJISC(c) (0xf0 <= ((unsigned char)(c)) \
+ && ((unsigned char)(c) <= 0xfc))
+#define GETAHI (0x81)
+#define GETALO (0xac)
+
+typedef struct _sjis_regur_t {
+ int start;
+ int end;
+ int rstart;
+} sjis_regur_t;
+
+/* When Converting to EUC and JIS, there is no room for
+ * these SJIS codes whose hi byte is larger than 0xf0.
+ *
+ * So we must drop or convert it to harmless code.
+ * This is not standard way, so it is ad hoc but practical.
+ * It is also thought of backward and future compatibility.
+ *
+ * Miura.
+ */
+
+static sjis_regur_t sjisconv[] = {
+{0xfa40, 0xfa49, 0xeeef},
+{0xfa4a, 0xfa53, 0x8754},
+{0xfa54, 0xfa54, 0x81ca},
+{0xfa55, 0xfa57, 0xeefa},
+{0xfa58, 0xfa58, 0x878a},
+{0xfa59, 0xfa59, 0x8782},
+{0xfa5a, 0xfa5a, 0x8784},
+{0xfa5b, 0xfa5b, 0x81e6},
+{0xfa5c, 0xfa7e, 0xed40},
+{0xfa80, 0xfa9b, 0xed63},
+{0xfa9c, 0xfafc, 0xed80},
+{0xfb40, 0xfb5b, 0xede1},
+{0xfb5c, 0xfb7e, 0xee40},
+{0xfb80, 0xfb9b, 0xee63},
+{0xfb9c, 0xfbfc, 0xee80},
+{0xfc40, 0xfc4b, 0xeee1}
+};
+#define SJISCONVTBLSIZ (sizeof(sjisconv) / sizeof(sjis_regur_t))
+
+static sjis_regur_t sjisrev[] = {
+{0x81ca, 0x81ca, 0xfa54},
+{0x81e6, 0x81e6, 0xfa5b},
+{0x8754, 0x875d, 0xfa4a},
+{0x8782, 0x8782, 0xfa59},
+{0x8784, 0x8784, 0xfa5a},
+{0x878a, 0x878a, 0xfa58},
+{0xed40, 0xed62, 0xfa5c},
+{0xed63, 0xed7e, 0xfa80},
+{0xed80, 0xede0, 0xfa9c},
+{0xede1, 0xedfc, 0xfb40},
+{0xee40, 0xee62, 0xfb5c},
+{0xee63, 0xee7e, 0xfb80},
+{0xee80, 0xeee0, 0xfb9c},
+{0xeee1, 0xeeec, 0xfc40},
+{0xeeef, 0xeef8, 0xfa40},
+{0xeefa, 0xeefc, 0xfa55}
+};
+#define SJISREVTBLSIZ (sizeof(sjisrev) / sizeof(sjis_regur_t))
+/* EUC3BYTE DEFINITIONS */
+
+typedef struct _sjis_euc_map_t {
+ int sjis;
+ int euc;
+} sjis_euc_map_t;
+
+static sjis_euc_map_t euc3conv2[] = {
+{0x8754 , 0xf3fd},
+{0x8755 , 0xf3fe},
+{0x8756 , 0xf4a1},
+{0x8757 , 0xf4a2},
+{0x8758 , 0xf4a3},
+{0x8759 , 0xf4a4},
+{0x875a , 0xf4a5},
+{0x875b , 0xf4a6},
+{0x875c , 0xf4a7},
+{0x875d , 0xf4a8},
+{0x8782 , 0xf4ac},
+{0x8784 , 0xf4ad},
+{0x878a , 0xf4ab}
+};
+#define EUC3CONV2TBLSIZ (sizeof(euc3conv2) / sizeof(sjis_euc_map_t))
+
+
+/* IBM Kanji to EUC 3byte */
+static int euc3conv[] = {
+/* 0xfa40 */
+0xf3f3, 0xf3f4, 0xf3f5, 0xf3f6, 0xf3f7, 0xf3f8, 0xf3f9, 0xf3fa, 0xf3fb, 0xf3fc, 0xf3fd, 0xf3fe, 0xf4a1, 0xf4a2, 0xf4a3, 0xf4a4,
+/* 0xfa50 */
+0xf4a5, 0xf4a6, 0xf4a7, 0xf4a8, 0, 0xa2c3, 0xf4a9, 0xf4aa, 0xf4ab, 0xf4ac, 0xf4ad, 0, 0xd4e3, 0xdcdf, 0xe4e9, 0xe3f8,
+/* 0xfa60 */
+0xd9a1, 0xb1bb, 0xf4ae, 0xc2ad, 0xc3fc, 0xe4d0, 0xc2bf, 0xbcf4, 0xb0a9, 0xb0c8, 0xf4af, 0xb0d2, 0xb0d4, 0xb0e3, 0xb0ee, 0xb1a7,
+/* 0xfa70 */
+0xb1a3, 0xb1ac, 0xb1a9, 0xb1be, 0xb1df, 0xb1d8, 0xb1c8, 0xb1d7, 0xb1e3, 0xb1f4, 0xb1e1, 0xb2a3, 0xf4b0, 0xb2bb, 0xb2e6,
+/* 0xfa80 */
+0xb2ed, 0xb2f5, 0xb2fc, 0xf4b1, 0xb3b5, 0xb3d8, 0xb3db, 0xb3e5, 0xb3ee, 0xb3fb, 0xf4b2, 0xf4b3, 0xb4c0, 0xb4c7, 0xb4d0, 0xb4de,
+/* 0xfa90 */
+0xf4b4, 0xb5aa, 0xf4b5, 0xb5af, 0xb5c4, 0xb5e8, 0xf4b6, 0xb7c2, 0xb7e4, 0xb7e8, 0xb7e7, 0xf4b7, 0xf4b8, 0xf4b9, 0xb8ce, 0xb8e1,
+/* 0xfaa0 */
+0xb8f5, 0xb8f7, 0xb8f8, 0xb8fc, 0xb9af, 0xb9b7, 0xbabe, 0xbadb, 0xcdaa, 0xbae1, 0xf4ba, 0xbaeb, 0xbbb3, 0xbbb8, 0xf4bb, 0xbbca,
+/* 0xfab0 */
+0xf4bc, 0xf4bd, 0xbbd0, 0xbbde, 0xbbf4, 0xbbf5, 0xbbf9, 0xbce4, 0xbced, 0xbcfe, 0xf4be, 0xbdc2, 0xbde7, 0xf4bf, 0xbdf0, 0xbeb0,
+/* 0xfac0 */
+0xbeac, 0xf4c0, 0xbeb3, 0xbebd, 0xbecd, 0xbec9, 0xbee4, 0xbfa8, 0xbfc9, 0xc0c4, 0xc0e4, 0xc0f4, 0xc1a6, 0xf4c1, 0xc1f5, 0xc1fc,
+/* 0xfad0 */
+0xf4c2, 0xc1f8, 0xc2ab, 0xc2a1, 0xc2a5, 0xf4c3, 0xc2b8, 0xc2ba, 0xf4c4, 0xc2c4, 0xc2d2, 0xc2d7, 0xc2db, 0xc2de, 0xc2ed, 0xc2f0,
+/* 0xfae0 */
+0xf4c5, 0xc3a1, 0xc3b5, 0xc3c9, 0xc3b9, 0xf4c6, 0xc3d8, 0xc3fe, 0xf4c7, 0xc4cc, 0xf4c8, 0xc4d9, 0xc4ea, 0xc4fd, 0xf4c9, 0xc5a7,
+/* 0xfaf0 */
+ 0xc5b5, 0xc5b6, 0xf4ca, 0xc5d5, 0xc6b8, 0xc6d7, 0xc6e0, 0xc6ea, 0xc6e3, 0xc7a1, 0xc7ab, 0xc7c7, 0xc7c3,
+/* 0xfb40 */
+ 0xc7cb, 0xc7cf, 0xc7d9, 0xf4cb, 0xf4cc, 0xc7e6, 0xc7ee, 0xc7fc, 0xc7eb, 0xc7f0, 0xc8b1, 0xc8e5, 0xc8f8, 0xc9a6, 0xc9ab, 0xc9ad,
+/* 0xfb50 */
+ 0xf4cd, 0xc9ca, 0xc9d3, 0xc9e9, 0xc9e3, 0xc9fc, 0xc9f4, 0xc9f5, 0xf4ce, 0xcab3, 0xcabd, 0xcaef, 0xcaf1, 0xcbae, 0xf4cf, 0xcbca,
+/* 0xfb60 */
+ 0xcbe6, 0xcbea, 0xcbf0, 0xcbf4, 0xcbee, 0xcca5, 0xcbf9, 0xccab, 0xccae, 0xccad, 0xccb2, 0xccc2, 0xccd0, 0xccd9, 0xf4d0, 0xcdbb,
+/* 0xfb70 */
+0xf4d1, 0xcebb, 0xf4d2, 0xceba, 0xcec3, 0xf4d3, 0xcef2, 0xb3dd, 0xcfd5, 0xcfe2, 0xcfe9, 0xcfed, 0xf4d4, 0xf4d5, 0xf4d6,
+/* 0xfb80 */
+ 0xf4d7, 0xd0e5, 0xf4d8, 0xd0e9, 0xd1e8, 0xf4d9, 0xf4da, 0xd1ec, 0xd2bb, 0xf4db, 0xd3e1, 0xd3e8, 0xd4a7, 0xf4dc, 0xf4dd, 0xd4d4,
+/* 0xfb90 */
+ 0xd4f2, 0xd5ae, 0xf4de, 0xd7de, 0xf4df, 0xd8a2, 0xd8b7, 0xd8c1, 0xd8d1, 0xd8f4, 0xd9c6, 0xd9c8, 0xd9d1, 0xf4e0, 0xf4e1, 0xf4e2,
+/* 0xfba0 */
+ 0xf4e3, 0xf4e4, 0xdcd3, 0xddc8, 0xddd4, 0xddea, 0xddfa, 0xdea4, 0xdeb0, 0xf4e5, 0xdeb5, 0xdecb, 0xf4e6, 0xdfb9, 0xf4e7, 0xdfc3,
+/* 0xfbb0 */
+ 0xf4e8, 0xf4e9, 0xe0d9, 0xf4ea, 0xf4eb, 0xe1e2, 0xf4ec, 0xf4ed, 0xf4ee, 0xe2c7, 0xe3a8, 0xe3a6, 0xe3a9, 0xe3af, 0xe3b0, 0xe3aa,
+/* 0xfbc0 */
+ 0xe3ab, 0xe3bc, 0xe3c1, 0xe3bf, 0xe3d5, 0xe3d8, 0xe3d6, 0xe3df, 0xe3e3, 0xe3e1, 0xe3d4, 0xe3e9, 0xe4a6, 0xe3f1, 0xe3f2, 0xe4cb,
+/* 0xfbd0 */
+ 0xe4c1, 0xe4c3, 0xe4be, 0xf4ef, 0xe4c0, 0xe4c7, 0xe4bf, 0xe4e0, 0xe4de, 0xe4d1, 0xf4f0, 0xe4dc, 0xe4d2, 0xe4db, 0xe4d4, 0xe4fa,
+/* 0xfbe0 */
+ 0xe4ef, 0xe5b3, 0xe5bf, 0xe5c9, 0xe5d0, 0xe5e2, 0xe5ea, 0xe5eb, 0xf4f1, 0xf4f2, 0xf4f3, 0xe6e8, 0xe6ef, 0xe7ac, 0xf4f4, 0xe7ae,
+/* 0xfbf0 */
+ 0xf4f5, 0xe7b1, 0xf4f6, 0xe7b2, 0xe8b1, 0xe8b6, 0xf4f7, 0xf4f8, 0xe8dd, 0xf4f9, 0xf4fa, 0xe9d1, 0xf4fb,
+/* 0xfc40 */
+ 0xe9ed, 0xeacd, 0xf4fc, 0xeadb, 0xeae6, 0xeaea, 0xeba5, 0xebfb, 0xebfa, 0xf4fd, 0xecd6, 0xf4fe
+};
+
+#define EUC3CONVTBLSIZ (sizeof(euc3conv) / sizeof(int))
+
+/* EUC3byte to SJIS Code */
+
+typedef struct _sjis_euc_revmap_t {
+ int euc;
+ int sjis;
+} sjis_euc_revmap_t;
+
+static sjis_euc_revmap_t euc3rev[] = {
+{0xa2c3, 0xfa55},
+{0xb0a9, 0xfa68},
+{0xb0c8, 0xfa69},
+{0xb0d2, 0xfa6b},
+{0xb0d4, 0xfa6c},
+{0xb0e3, 0xfa6d},
+{0xb0ee, 0xfa6e},
+{0xb1a3, 0xfa70},
+{0xb1a7, 0xfa6f},
+{0xb1a9, 0xfa72},
+{0xb1ac, 0xfa71},
+{0xb1bb, 0xfa61},
+{0xb1be, 0xfa73},
+{0xb1c8, 0xfa76},
+{0xb1d7, 0xfa77},
+{0xb1d8, 0xfa75},
+{0xb1df, 0xfa74},
+{0xb1e1, 0xfa7a},
+{0xb1e3, 0xfa78},
+{0xb1f4, 0xfa79},
+{0xb2a3, 0xfa7b},
+{0xb2bb, 0xfa7d},
+{0xb2e6, 0xfa7e},
+{0xb2ed, 0xfa80},
+{0xb2f5, 0xfa81},
+{0xb2fc, 0xfa82},
+{0xb3b5, 0xfa84},
+{0xb3d8, 0xfa85},
+{0xb3db, 0xfa86},
+{0xb3dd, 0xfb77},
+{0xb3e5, 0xfa87},
+{0xb3ee, 0xfa88},
+{0xb3fb, 0xfa89},
+{0xb4c0, 0xfa8c},
+{0xb4c7, 0xfa8d},
+{0xb4d0, 0xfa8e},
+{0xb4de, 0xfa8f},
+{0xb5aa, 0xfa91},
+{0xb5af, 0xfa93},
+{0xb5c4, 0xfa94},
+{0xb5e8, 0xfa95},
+{0xb7c2, 0xfa97},
+{0xb7e4, 0xfa98},
+{0xb7e7, 0xfa9a},
+{0xb7e8, 0xfa99},
+{0xb8ce, 0xfa9e},
+{0xb8e1, 0xfa9f},
+{0xb8f5, 0xfaa0},
+{0xb8f7, 0xfaa1},
+{0xb8f8, 0xfaa2},
+{0xb8fc, 0xfaa3},
+{0xb9af, 0xfaa4},
+{0xb9b7, 0xfaa5},
+{0xbabe, 0xfaa6},
+{0xbadb, 0xfaa7},
+{0xbae1, 0xfaa9},
+{0xbaeb, 0xfaab},
+{0xbbb3, 0xfaac},
+{0xbbb8, 0xfaad},
+{0xbbca, 0xfaaf},
+{0xbbd0, 0xfab2},
+{0xbbde, 0xfab3},
+{0xbbf4, 0xfab4},
+{0xbbf5, 0xfab5},
+{0xbbf9, 0xfab6},
+{0xbce4, 0xfab7},
+{0xbced, 0xfab8},
+{0xbcf4, 0xfa67},
+{0xbcfe, 0xfab9},
+{0xbdc2, 0xfabb},
+{0xbde7, 0xfabc},
+{0xbdf0, 0xfabe},
+{0xbeac, 0xfac0},
+{0xbeb0, 0xfabf},
+{0xbeb3, 0xfac2},
+{0xbebd, 0xfac3},
+{0xbec9, 0xfac5},
+{0xbecd, 0xfac4},
+{0xbee4, 0xfac6},
+{0xbfa8, 0xfac7},
+{0xbfc9, 0xfac8},
+{0xc0c4, 0xfac9},
+{0xc0e4, 0xfaca},
+{0xc0f4, 0xfacb},
+{0xc1a6, 0xfacc},
+{0xc1f5, 0xface},
+{0xc1f8, 0xfad1},
+{0xc1fc, 0xfacf},
+{0xc2a1, 0xfad3},
+{0xc2a5, 0xfad4},
+{0xc2ab, 0xfad2},
+{0xc2ad, 0xfa63},
+{0xc2b8, 0xfad6},
+{0xc2ba, 0xfad7},
+{0xc2bf, 0xfa66},
+{0xc2c4, 0xfad9},
+{0xc2d2, 0xfada},
+{0xc2d7, 0xfadb},
+{0xc2db, 0xfadc},
+{0xc2de, 0xfadd},
+{0xc2ed, 0xfade},
+{0xc2f0, 0xfadf},
+{0xc3a1, 0xfae1},
+{0xc3b5, 0xfae2},
+{0xc3b9, 0xfae4},
+{0xc3c9, 0xfae3},
+{0xc3d8, 0xfae6},
+{0xc3fc, 0xfa64},
+{0xc3fe, 0xfae7},
+{0xc4cc, 0xfae9},
+{0xc4d9, 0xfaeb},
+{0xc4ea, 0xfaec},
+{0xc4fd, 0xfaed},
+{0xc5a7, 0xfaef},
+{0xc5b5, 0xfaf0},
+{0xc5b6, 0xfaf1},
+{0xc5d5, 0xfaf3},
+{0xc6b8, 0xfaf4},
+{0xc6d7, 0xfaf5},
+{0xc6e0, 0xfaf6},
+{0xc6e3, 0xfaf8},
+{0xc6ea, 0xfaf7},
+{0xc7a1, 0xfaf9},
+{0xc7ab, 0xfafa},
+{0xc7c3, 0xfafc},
+{0xc7c7, 0xfafb},
+{0xc7cb, 0xfb40},
+{0xc7cf, 0xfb41},
+{0xc7d9, 0xfb42},
+{0xc7e6, 0xfb45},
+{0xc7eb, 0xfb48},
+{0xc7ee, 0xfb46},
+{0xc7f0, 0xfb49},
+{0xc7fc, 0xfb47},
+{0xc8b1, 0xfb4a},
+{0xc8e5, 0xfb4b},
+{0xc8f8, 0xfb4c},
+{0xc9a6, 0xfb4d},
+{0xc9ab, 0xfb4e},
+{0xc9ad, 0xfb4f},
+{0xc9ca, 0xfb51},
+{0xc9d3, 0xfb52},
+{0xc9e3, 0xfb54},
+{0xc9e9, 0xfb53},
+{0xc9f4, 0xfb56},
+{0xc9f5, 0xfb57},
+{0xc9fc, 0xfb55},
+{0xcab3, 0xfb59},
+{0xcabd, 0xfb5a},
+{0xcaef, 0xfb5b},
+{0xcaf1, 0xfb5c},
+{0xcbae, 0xfb5d},
+{0xcbca, 0xfb5f},
+{0xcbe6, 0xfb60},
+{0xcbea, 0xfb61},
+{0xcbee, 0xfb64},
+{0xcbf0, 0xfb62},
+{0xcbf4, 0xfb63},
+{0xcbf9, 0xfb66},
+{0xcca5, 0xfb65},
+{0xccab, 0xfb67},
+{0xccad, 0xfb69},
+{0xccae, 0xfb68},
+{0xccb2, 0xfb6a},
+{0xccc2, 0xfb6b},
+{0xccd0, 0xfb6c},
+{0xccd9, 0xfb6d},
+{0xcdaa, 0xfaa8},
+{0xcdbb, 0xfb6f},
+{0xceba, 0xfb73},
+{0xcebb, 0xfb71},
+{0xcec3, 0xfb74},
+{0xcef2, 0xfb76},
+{0xcfd5, 0xfb78},
+{0xcfe2, 0xfb79},
+{0xcfe9, 0xfb7a},
+{0xcfed, 0xfb7b},
+{0xd0e5, 0xfb81},
+{0xd0e9, 0xfb83},
+{0xd1e8, 0xfb84},
+{0xd1ec, 0xfb87},
+{0xd2bb, 0xfb88},
+{0xd3e1, 0xfb8a},
+{0xd3e8, 0xfb8b},
+{0xd4a7, 0xfb8c},
+{0xd4d4, 0xfb8f},
+{0xd4e3, 0xfa5c},
+{0xd4f2, 0xfb90},
+{0xd5ae, 0xfb91},
+{0xd7de, 0xfb93},
+{0xd8a2, 0xfb95},
+{0xd8b7, 0xfb96},
+{0xd8c1, 0xfb97},
+{0xd8d1, 0xfb98},
+{0xd8f4, 0xfb99},
+{0xd9a1, 0xfa60},
+{0xd9c6, 0xfb9a},
+{0xd9c8, 0xfb9b},
+{0xd9d1, 0xfb9c},
+{0xdcd3, 0xfba2},
+{0xdcdf, 0xfa5d},
+{0xddc8, 0xfba3},
+{0xddd4, 0xfba4},
+{0xddea, 0xfba5},
+{0xddfa, 0xfba6},
+{0xdea4, 0xfba7},
+{0xdeb0, 0xfba8},
+{0xdeb5, 0xfbaa},
+{0xdecb, 0xfbab},
+{0xdfb9, 0xfbad},
+{0xdfc3, 0xfbaf},
+{0xe0d9, 0xfbb2},
+{0xe1e2, 0xfbb5},
+{0xe2c7, 0xfbb9},
+{0xe3a6, 0xfbbb},
+{0xe3a8, 0xfbba},
+{0xe3a9, 0xfbbc},
+{0xe3aa, 0xfbbf},
+{0xe3ab, 0xfbc0},
+{0xe3af, 0xfbbd},
+{0xe3b0, 0xfbbe},
+{0xe3bc, 0xfbc1},
+{0xe3bf, 0xfbc3},
+{0xe3c1, 0xfbc2},
+{0xe3d4, 0xfbca},
+{0xe3d5, 0xfbc4},
+{0xe3d6, 0xfbc6},
+{0xe3d8, 0xfbc5},
+{0xe3df, 0xfbc7},
+{0xe3e1, 0xfbc9},
+{0xe3e3, 0xfbc8},
+{0xe3e9, 0xfbcb},
+{0xe3f1, 0xfbcd},
+{0xe3f2, 0xfbce},
+{0xe3f8, 0xfa5f},
+{0xe4a6, 0xfbcc},
+{0xe4be, 0xfbd2},
+{0xe4bf, 0xfbd6},
+{0xe4c0, 0xfbd4},
+{0xe4c1, 0xfbd0},
+{0xe4c3, 0xfbd1},
+{0xe4c7, 0xfbd5},
+{0xe4cb, 0xfbcf},
+{0xe4d0, 0xfa65},
+{0xe4d1, 0xfbd9},
+{0xe4d2, 0xfbdc},
+{0xe4d4, 0xfbde},
+{0xe4db, 0xfbdd},
+{0xe4dc, 0xfbdb},
+{0xe4de, 0xfbd8},
+{0xe4e0, 0xfbd7},
+{0xe4e9, 0xfa5e},
+{0xe4ef, 0xfbe0},
+{0xe4fa, 0xfbdf},
+{0xe5b3, 0xfbe1},
+{0xe5bf, 0xfbe2},
+{0xe5c9, 0xfbe3},
+{0xe5d0, 0xfbe4},
+{0xe5e2, 0xfbe5},
+{0xe5ea, 0xfbe6},
+{0xe5eb, 0xfbe7},
+{0xe6e8, 0xfbeb},
+{0xe6ef, 0xfbec},
+{0xe7ac, 0xfbed},
+{0xe7ae, 0xfbef},
+{0xe7b1, 0xfbf1},
+{0xe7b2, 0xfbf3},
+{0xe8b1, 0xfbf4},
+{0xe8b6, 0xfbf5},
+{0xe8dd, 0xfbf8},
+{0xe9d1, 0xfbfb},
+{0xe9ed, 0xfc40},
+{0xeacd, 0xfc41},
+{0xeadb, 0xfc43},
+{0xeae6, 0xfc44},
+{0xeaea, 0xfc45},
+{0xeba5, 0xfc46},
+{0xebfa, 0xfc48},
+{0xebfb, 0xfc47},
+{0xecd6, 0xfc4a},
+{0xf3f3, 0xfa40},
+{0xf3f4, 0xfa41},
+{0xf3f5, 0xfa42},
+{0xf3f6, 0xfa43},
+{0xf3f7, 0xfa44},
+{0xf3f8, 0xfa45},
+{0xf3f9, 0xfa46},
+{0xf3fa, 0xfa47},
+{0xf3fb, 0xfa48},
+{0xf3fc, 0xfa49},
+{0xf3fd, 0xfa4a},
+{0xf3fe, 0xfa4b},
+{0xf4a1, 0xfa4c},
+{0xf4a2, 0xfa4d},
+{0xf4a3, 0xfa4e},
+{0xf4a4, 0xfa4f},
+{0xf4a5, 0xfa50},
+{0xf4a6, 0xfa51},
+{0xf4a7, 0xfa52},
+{0xf4a8, 0xfa53},
+{0xf4a9, 0xfa56},
+{0xf4aa, 0xfa57},
+{0xf4ab, 0xfa58},
+{0xf4ac, 0xfa59},
+{0xf4ad, 0xfa5a},
+{0xf4ae, 0xfa62},
+{0xf4af, 0xfa6a},
+{0xf4b0, 0xfa7c},
+{0xf4b1, 0xfa83},
+{0xf4b2, 0xfa8a},
+{0xf4b3, 0xfa8b},
+{0xf4b4, 0xfa90},
+{0xf4b5, 0xfa92},
+{0xf4b6, 0xfa96},
+{0xf4b7, 0xfa9b},
+{0xf4b8, 0xfa9c},
+{0xf4b9, 0xfa9d},
+{0xf4ba, 0xfaaa},
+{0xf4bb, 0xfaae},
+{0xf4bc, 0xfab0},
+{0xf4bd, 0xfab1},
+{0xf4be, 0xfaba},
+{0xf4bf, 0xfabd},
+{0xf4c0, 0xfac1},
+{0xf4c1, 0xfacd},
+{0xf4c2, 0xfad0},
+{0xf4c3, 0xfad5},
+{0xf4c4, 0xfad8},
+{0xf4c5, 0xfae0},
+{0xf4c6, 0xfae5},
+{0xf4c7, 0xfae8},
+{0xf4c8, 0xfaea},
+{0xf4c9, 0xfaee},
+{0xf4ca, 0xfaf2},
+{0xf4cb, 0xfb43},
+{0xf4cc, 0xfb44},
+{0xf4cd, 0xfb50},
+{0xf4ce, 0xfb58},
+{0xf4cf, 0xfb5e},
+{0xf4d0, 0xfb6e},
+{0xf4d1, 0xfb70},
+{0xf4d2, 0xfb72},
+{0xf4d3, 0xfb75},
+{0xf4d4, 0xfb7c},
+{0xf4d5, 0xfb7d},
+{0xf4d6, 0xfb7e},
+{0xf4d7, 0xfb80},
+{0xf4d8, 0xfb82},
+{0xf4d9, 0xfb85},
+{0xf4da, 0xfb86},
+{0xf4db, 0xfb89},
+{0xf4dc, 0xfb8d},
+{0xf4dd, 0xfb8e},
+{0xf4de, 0xfb92},
+{0xf4df, 0xfb94},
+{0xf4e0, 0xfb9d},
+{0xf4e1, 0xfb9e},
+{0xf4e2, 0xfb9f},
+{0xf4e3, 0xfba0},
+{0xf4e4, 0xfba1},
+{0xf4e5, 0xfba9},
+{0xf4e6, 0xfbac},
+{0xf4e7, 0xfbae},
+{0xf4e8, 0xfbb0},
+{0xf4e9, 0xfbb1},
+{0xf4ea, 0xfbb3},
+{0xf4eb, 0xfbb4},
+{0xf4ec, 0xfbb6},
+{0xf4ed, 0xfbb7},
+{0xf4ee, 0xfbb8},
+{0xf4ef, 0xfbd3},
+{0xf4f0, 0xfbda},
+{0xf4f1, 0xfbe8},
+{0xf4f2, 0xfbe9},
+{0xf4f3, 0xfbea},
+{0xf4f4, 0xfbee},
+{0xf4f5, 0xfbf0},
+{0xf4f6, 0xfbf2},
+{0xf4f7, 0xfbf6},
+{0xf4f8, 0xfbf7},
+{0xf4f9, 0xfbf9},
+{0xf4fa, 0xfbfa},
+{0xf4fb, 0xfbfc},
+{0xf4fc, 0xfc42},
+{0xf4fd, 0xfc49},
+{0xf4fe, 0xfc4b},
+};
+
+#define EUC3REVTBLSIZ (sizeof(euc3rev) / sizeof(sjis_euc_revmap_t))
+
+#endif /* _KANJI_C_ */
#endif /* _KANJI_H_ */
diff --git a/source3/include/proto.h b/source3/include/proto.h
index f06a0a790f..1a54aae928 100644
--- a/source3/include/proto.h
+++ b/source3/include/proto.h
@@ -616,6 +616,8 @@ void all_string_sub_w(smb_ucs2_t *s,const smb_ucs2_t *pattern,const smb_ucs2_t *
void split_at_last_component_w(smb_ucs2_t *path, smb_ucs2_t *front, smb_ucs2_t sep, smb_ucs2_t *back);
smb_ucs2_t *octal_string_w(int i);
smb_ucs2_t *string_truncate_w(smb_ucs2_t *s, size_t length);
+smb_ucs2_t doscp2ucs2(int w);
+int ucs2doscp(smb_ucs2_t w);
/*The following definitions come from lib/wins_srv.c */
@@ -3868,6 +3870,7 @@ int vfs_init_default(connection_struct *conn);
BOOL vfs_init_custom(connection_struct *conn);
int vfs_stat(connection_struct *conn, char *fname, SMB_STRUCT_STAT *st);
BOOL vfs_directory_exist(connection_struct *conn, char *dname, SMB_STRUCT_STAT *st);
+int vfs_mkdir(connection_struct *conn, char *fname, mode_t mode);
int vfs_unlink(connection_struct *conn, char *fname);
int vfs_chmod(connection_struct *conn, char *fname,mode_t mode);
int vfs_chown(connection_struct *conn, char *fname, uid_t uid, gid_t gid);
diff --git a/source3/include/vfs.h b/source3/include/vfs.h
index e657354d94..840377627b 100644
--- a/source3/include/vfs.h
+++ b/source3/include/vfs.h
@@ -191,8 +191,10 @@ struct vfs_ops {
int (*ftruncate)(int fd, SMB_OFF_T offset);
BOOL (*lock)(int fd, int op, SMB_OFF_T offset, SMB_OFF_T count, int type);
#if 0
- size_t (*get_nt_acl)(files_struct *fsp, SEC_DESC **ppdesc);
- BOOL (*set_nt_acl)(files_struct *fsp, uint32 security_info_sent, SEC_DESC *psd);
+ size_t (*fget_nt_acl)(int fd, SEC_DESC **ppdesc);
+ size_t (*get_nt_acl)(char *name, SEC_DESC **ppdesc);
+ BOOL (*fset_nt_acl)(int fd, uint32 security_info_sent, SEC_DESC *psd);
+ BOOL (*set_nt_acl)(char *name, uint32 security_info_sent, SEC_DESC *psd);
#endif
};