Opened 16 years ago

Closed 15 years ago

Last modified 15 years ago

#68 closed defect (fixed)

sequence 0xA9 0x20 characters in file's/folder's names on samba's shares

Reported by: digi Owned by: Silvan Scherrer
Priority: critical Milestone: Samba Server for eCS (OS/2) 1.1.0
Component: Samba Server Version: 3.0.31
Keywords: Cc:

Description

Users can't open/create files and folders with sequence of two symbols 0xE9 0x20 in names. Also, not impossible to create folders/files with names "*е" (е = 0xE5)

(codes of characters in windows-1251 charset)

for ex.: N:\my-samba-share>ver > "123й 567.txt"

will create file with name "123" - ?!

N:\my-samba-share>ver > "123й567.txt"

will create file with name "123й567.txt" - Ok

Attachments (4)

smb-log_level10.zip (41.1 KB) - added by digi 15 years ago.
samba's log: writing files named "1-123й 456" and "2-123е" from windows client
test-files.zip (342 bytes) - added by digi 15 years ago.
archived files with "problemed" names
smb-log2_level10.zip (38.7 KB) - added by digi 15 years ago.
smb-log3_level10_smbd-ticket68_winclient.zip (44.1 KB) - added by digi 15 years ago.

Download all attachments as: .zip

Change History (13)

comment:1 Changed 15 years ago by Silvan Scherrer

Milestone: Samba Server for eCS (OS/2) 1.1Samba Server for eCS (OS/2) 1.0.2

Changed 15 years ago by digi

Attachment: smb-log_level10.zip added

samba's log: writing files named "1-123й 456" and "2-123е" from windows client

Changed 15 years ago by digi

Attachment: test-files.zip added

archived files with "problemed" names

comment:2 Changed 15 years ago by Paul Smedley

digi - please recreate the logs with debug level 10 and http://smedley.info/smbd-ticket68.zip this has some additional debug information to try and work out where the problem stems from.

Changed 15 years ago by digi

Attachment: smb-log2_level10.zip added

comment:3 Changed 15 years ago by Paul Smedley

http://smedley.info/smbd.zip is updated again to try and confirm where the problem comes from

comment:4 Changed 15 years ago by digi

Samba's & libc logs with build from last smbd.zip archive: ftp://digi.os2.snc.ru/in/smb-log4_level10-libc_log.zip

comment:5 Changed 15 years ago by Herwig Bauernfeind

Version: 3.0.31

comment:6 Changed 15 years ago by Herwig Bauernfeind

[14:26] <HerwigB> Which base OS is your Samba running on (which language flavor?) and which codepages is it configured for?
[14:27] <Digi_> samba-server on ecs 1.2.5, ecs 2.0rc6, codepage - 866
[14:27] <HerwigB> secondary codepage?
[14:28] <Digi_> CODEPAGE=866,850

comment:7 Changed 15 years ago by Silvan Scherrer

Owner: changed from Paul Smedley to Silvan Scherrer

this is probably fixed. testing still goes on

comment:8 Changed 15 years ago by Herwig Bauernfeind

Resolution: fixed
Status: newclosed

Fix for 3.0 http://svn.netlabs.org/samba/changeset/337
Fix for 3.3 http://svn.netlabs.org/samba/changeset/339
Fix for 3.2 http://svn.netlabs.org/samba/changeset/341

Note: Samba should be set to either use IBM-850 or UTF-8 as unix and display charset manually, even if the system is running on a different codepage. Codepage IBM-437 is still defective.

Also see http://svn.netlabs.org/samba/changeset/307
and http://svn.netlabs.org/samba/changeset/308
which are problematic in this respect on the server but absolutely necessary for the client.

comment:9 Changed 15 years ago by Herwig Bauernfeind

The following script tests whether codepage translation works on a given share (copy it it on to the share and run it from there):

/* Character translation test */

'@del TEST_*_*'
chunks = 128 /* a single char if chunks = 128 */

success = 0
mismatch= 0
writeerr= 0

verbose = 0

do bl = 0 to chunks-1
    call charout, '.'
    bs = 128/chunks
    if bs <> 1 then filename = "TEST_"||bl||"_"
    do I = 128+bs*bl to 128+bs*(bl+1)-1
        if bs = 1 then filename = "TEST_"||I||"_"
        filename = filename||d2c(I)
    end
    if Verbose then call charout , filename' '
    wok = lineout(filename, 'TESTFILE')
    cok = stream(filename,'c','close')
    
    if wok = 0 then do /* successfully written */    
        if Verbose then say ''
        ok = SysFileTree(left(filename,lastpos("_",filename))||"*", file., "FO")
        if Verbose then call charout , filespec("N",file.1)
        if filespec("N",file.1) = filename then do
            if Verbose then say " No error!"
            success = success + 1
            ok = SysFileDelete(file.1)
        end
        else do
            if \Verbose then call charout , filename' '
            say " Char mismatch!"
            mismatch = mismatch + 1
        end
    end
    else do 
        if \Verbose then call charout , filename' '
        say 'Write failure, "'wok'"'
        writeerr = writeerr + 1
    end
end

say 'Successful chars  'success
say 'Mismatched chars  'mismatch
say 'Unwriteable chars 'writeerr

Note: See TracTickets for help on using tickets.