libsmbclient MacOS X escape \r

Aleksandr Dolgarev adolgarev at mirantis.com
Tue Oct 23 16:13:03 MDT 2012


Hi,

after mounting MacOS X 10.6 share via cifs:

mount -t cifs '//AAA/BBB' -o 'username=CCC,password=DDD' mpoint

I can stat file
stat mpoint/Post-Installation/Icon^M
File: `mpoint/Post-Installation/Icon\r' Size: 0 Blocks: 424 IO Block: 16384 
regular empty file Device: 13h/19d Inode: 34 Links: 1 Access: (0755/-rwxr-xr-x) 
Uid: ( 501/ UNKNOWN) Gid: ( 20/ dialout) Access: 2010-01-06 23:05:32.000000000 
-0800 Modify: 2010-01-06 23:05:32.000000000 -0800 Change: 2010-01-06 
23:05:32.000000000 -0800

But if I use libsmbclient I cannot stat this file. The reason lies in SMB 
protocol implementation. Stat operation (or smbc_stat() in libsmbclient) 
results in QUERY_PATH_INFO command that in the case of cifs.ko has following 
file name as parameter:
/Post-Installation/Icon\r
But in case of libsmbclient backslashes are used:
\Post-Installation\Icon\r
As you can see \r is not properly escaped in second case.

The question is how to properly escape the url for smbc_stat() (urlencode 
doesn't help) or how to make libsmbclient use forward slashes instead of 
backslashes as file name separator?

(I'm using samba-3.6-stable.)

-- 
best regards,
Aleksandr


More information about the samba-technical mailing list