summaryrefslogtreecommitdiff
path: root/source3/smbd/mangle.c
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>1996-08-13 08:57:55 +0000
committerAndrew Tridgell <tridge@samba.org>1996-08-13 08:57:55 +0000
commit396311075cc808278e6dd8469e3ac7eb7e7498c7 (patch)
tree565884c6c1e72474545c23dc4b6265cb34481b62 /source3/smbd/mangle.c
parent571fe7fbefe4cd62ddb88a4e7bfd69199dcb89e0 (diff)
downloadsamba-396311075cc808278e6dd8469e3ac7eb7e7498c7.tar.gz
samba-396311075cc808278e6dd8469e3ac7eb7e7498c7.tar.bz2
samba-396311075cc808278e6dd8469e3ac7eb7e7498c7.zip
- sequent-ptx support from bressler@iftccu.ca.boeing.com (Rick
Bressler) - machten support from Trevor Strohman (trev@figment.tenon.com) - added qinfo command to client as part of drag-and-drop printer support for win95 from David Chappell <chappell@mouse.cc.trincoll.edu> He also added the "printer driver" option - use sigblock() on more systems and use sigsetmask(0) instead of sigunblock() as its more portable. This beats a problem with zombies on heavilily loaded systems. - added internals.doc written by David Chappell into the source tree - get rid of PRINT_COMMAND options from local.h as they are no longer relevent - new kanji code from Fujita - don't set the recursion_available flag on queries in nmbd - fix a potential bug with pointer subtraction in printing.c - got rid of error_count code as the real fix (the EOF problem) is now in (This used to be commit aa6f8b04d125b5bc00f267abf72b800228aabf7d)
Diffstat (limited to 'source3/smbd/mangle.c')
-rw-r--r--source3/smbd/mangle.c54
1 files changed, 54 insertions, 0 deletions
diff --git a/source3/smbd/mangle.c b/source3/smbd/mangle.c
index cf1ece558c..177a34c975 100644
--- a/source3/smbd/mangle.c
+++ b/source3/smbd/mangle.c
@@ -509,9 +509,36 @@ void mangle_name_83(char *s)
*p++ = 0;
while (*p && extlen < 3)
{
+#ifdef KANJI
+ if (is_shift_jis (*p))
+ {
+ if (extlen < 2)
+ {
+ extension[extlen++] = p[0];
+ extension[extlen++] = p[1];
+ }
+ else
+ {
+ extension[extlen++] = base36 (((unsigned char) *p) % 36);
+ }
+ p += 2;
+ }
+ else if (is_kana (*p))
+ {
+ extension[extlen++] = p[0];
+ p++;
+ }
+ else
+ {
+ if (isdoschar (*p) && *p != '.')
+ extension[extlen++] = p[0];
+ p++;
+ }
+#else
if (isdoschar(*p) && *p != '.')
extension[extlen++] = *p;
p++;
+#endif /* KANJI */
}
extension[extlen] = 0;
}
@@ -521,9 +548,36 @@ void mangle_name_83(char *s)
while (*p && baselen < 5)
{
+#ifdef KANJI
+ if (is_shift_jis (*p))
+ {
+ if (baselen < 4)
+ {
+ base[baselen++] = p[0];
+ base[baselen++] = p[1];
+ }
+ else
+ {
+ base[baselen++] = base36 (((unsigned char) *p) % 36);
+ }
+ p += 2;
+ }
+ else if (is_kana (*p))
+ {
+ base[baselen++] = p[0];
+ p++;
+ }
+ else
+ {
+ if (isdoschar (*p) && *p != '.')
+ base[baselen++] = p[0];
+ p++;
+ }
+#else
if (isdoschar(*p) && *p != '.')
base[baselen++] = *p;
p++;
+#endif /* KANJI */
}
base[baselen] = 0;