[Seaside] File Directory error (Pharo 1.2.1)
dtrussardi at tiscali.it
dtrussardi at tiscali.it
Wed Dec 14 17:07:26 UTC 2011
Hi,
some time ago i found a problem when upload one WAFileLibrarySubclass with the command:
WAFileLibrarySubclass addAllFilesIn: '/Dati-IST/ISTWork/ImmaginiBase'
>
>> ---------------------------------------------------------------------------------------------------------------------------------------------------
>>
>> File Library notes
>>
>> A) when i do the WAFileLibrarySubclass addAllFilesIn: '/Dati-IST/ISTWork/ImmaginiBase'
>>
>> the method do loop on files in the path .
>>
>> addAllFilesIn: aPathString
>> "adds all files in the directory specified by aPathString to the current file library"
>>
I confirm this point.
>> **** THIS LOOP WORK FINE. The files exist. ****
>> (GRPlatform current filesIn: aPathString) do: [ :each | self addFileAt: each ]
>>
>> B) The error is in the action do on the specific interaction:
>>
>> addFileAt: aPath
>> "adds the file specified by aFilename to the current file library"
>> self
>> addFileAt: aPath
>> contents: (GRPlatform current
>> contentsOfFile: aPath
>> binary: (self isBinaryAt: aPath))
The error is erase into contentsOfFile: aString binary: aBoolean method
by : (FileDirectory default oldFileNamed: aString) answer nil
because it open the file in Read-Wriite mode but the file don't have write authorization.
>
contentsOfFile: aString binary: aBoolean
| stream |
stream := aBoolean
ifTrue: [ (FileDirectory default oldFileNamed: aString)
** at this point binary is sent to nil and error is erase ***
binary;
yourself ]
ifFalse: [ (MultiByteFileStream oldFileNamed: aString)
** at this point binary is sent to nil and error is erase ***
ascii;
wantsLineEndConversion: true;
yourself ].
^ [ stream contents ] ensure: [ stream close ]
I think it's a valid solution change
the: oldFileNamed: aString)
into: readOnlyFileNamed: aString)
for open the file only in read modality.
Because:
point one : the A) interaction found the files in any case
point two : the files can have only read authorization.
point three : the contentsOfFile: aString binary: aBoolean is call only by in this step
Any other considerations ?
Dario
More information about the seaside
mailing list