teaching smbmount japanese?

David Wuertele dave-gnus at bfnet.com
Fri Sep 17 21:53:42 GMT 2004


I have to mount some shares that are exported from Japanese Windows
2000 hosts on my linux-2.4.18 system using smbfs.  The sharenames
themselves are in Japanese.

I have written a program to do the share discovery using the
NetrShareEnum RPC.  This works great, and gets all the correct
Japanese share names.  But when I try to run smbmount on that
sharename, smbmount complains.

For example, here's a little program that works:

  int main () {  execl ("/bin/smbmount", 
                        "/bin/smbmount", "//server/english", "/mnt/english",
                        "-o", "iocharset=utf8,codepage=cp932", 0x0);
  }

And here's a little program (saved as a UTF-8 encoded file) that
breaks:

  int main () {  execl ("/bin/smbmount", 
                        "/bin/smbmount", "//server/ÆüËܸì", "/mnt/ÆüËܸì",
                        "-o", "iocharset=utf8,codepage=cp932", 0x0);
  }

When I strace this program, I get this:

  execve("/bin/smbmount", ["/bin/smbmount", "//server/\346\227\245\346\234\254\350\252\236", "/mnt/\346\227\245\346\234\254\350\252\236", "-o", "iocharset=utf8,codepage=cp932"], [/* 9 vars */]) = 0

The escaped-octal character string in the argument is a perfectly
accurate representation of the UTF-8 string "ÆüËܸì" used in the
program.  So I know that the smbmount program is getting the correct
arguments.

But when smbmount tries to send the SMB command to the server, it
sends this:

  send(4, "\0\0\0D\377SMBu\0\0\0\0\10\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\334\1\0\10\3\0\4\377\0\0\0\0\0\1\0\31\0\0\\\\HDMA-SERVER\\e,\36\0?????\0", 72, 0) = 72

This is a total mangling of the Japanese sharename.  What gives?

Dave



More information about the samba-technical mailing list