A new version of Rio-Grande was added to project Rio: http://www.squeaksource.com/Rio/Rio-Grande-kph.43.mcz
==================== Summary ====================
Name: Rio-Grande-kph.43 Author: kph Time: 7 November 2008, 3:14:14 pm UUID: 4dac9678-1075-430a-b647-9171b54d2f10 Ancestors: Rio-Grande-kph.42
fixed filenames with spaces
=============== Diff against Rio-Grande-kph.42 ===============
Item was changed: ----- Method: RioFtpFileSystem>>ftpParseEntry: (in category 'as yet unclassified') ----- ftpParseEntry: ftpEntry + | permissions rs dateInSeconds thisYear thisMonth unkown user group size month day time filename | - | tokens longy dateInSeconds thisYear thisMonth | thisYear := Date today year. thisMonth := Date today monthIndex. + + rs := ftpEntry readStream. + + permissions := rs upToSeparator. + + permissions size < 10 ifTrue: [ ^ nil ]. + + rs skipSeparators. + + unkown := rs upToSeparator. + + rs skipSeparators. + + user := rs upToSeparator. + + rs skipSeparators. + + group := rs upToSeparator. - tokens := ftpEntry findTokens: ' '.
+ rs skipSeparators. - tokens size = 8 ifTrue: - [((tokens at: 6) size ~= 3 and: [(tokens at: 5) size = 3]) ifTrue: - ["Fix for case that group is blank (relies on month being 3 chars)" - tokens _ tokens copyReplaceFrom: 4 to: 3 with: {'blank'}]]. - tokens size >= 9 ifFalse:[^nil]. - - ((tokens at: 6) size ~= 3 and: [(tokens at: 5) size = 3]) ifTrue: - ["Fix for case that group is blank (relies on month being 3 chars)" - tokens := tokens copyReplaceFrom: 4 to: 3 with: {'blank'}].
+ size := rs upToSeparator. + + rs skipSeparators. + + month := rs upToSeparator. + + rs skipSeparators. + + "Fix for case that group is blank (relies on month being 3 chars)" + (size size = 3 and: [ size asNumber = 0 ]) ifTrue: [ + + month := size. + size := group. + group := 'blank'. + + ]. + + day := rs upToSeparator. + + rs skipSeparators. + + time := rs upToSeparator. + + rs skipSeparators. + + filename := rs upToEnd. + - tokens size > 9 ifTrue: - [longy := tokens at: 9. - 10 to: tokens size do: [:i | longy := longy , ' ' , (tokens at: i)]. - tokens at: 9 put: longy]. dateInSeconds := self + secondsForDay: day + month: month + yearOrTime: time - secondsForDay: (tokens at: 7) - month: (tokens at: 6) - yearOrTime: (tokens at: 8) thisMonth: thisMonth thisYear: thisYear.
+ ^Array with: filename "file name" - ^Array with: (tokens last) "file name" with: dateInSeconds "creation date" with: dateInSeconds "modification time" + with: ( (permissions first) = $d or: [permissions first =$l]) "is-a-directory flag" + with: size asNumber "file size" - with: ( (tokens first first) = $d or: [tokens first first =$l]) "is-a-directory flag" - with: tokens fifth asNumber "file size" !
Item was added: + ----- Method: PositionableStream>>upToSeparator (in category '*rio-grande') ----- + upToSeparator + "Answer a subcollection from the current access position to the + occurrence (if any, but not inclusive) of anObject in the receiver. If + anObject is not in the collection, answer the entire rest of the receiver." + | newStream element | + newStream := WriteStream on: (collection species new: 100). + [self atEnd or: [(element := self next) isSeparator]] + whileFalse: [newStream nextPut: element]. + ^newStream contents!
Item was added: + ----- Method: RioFtpFileSystem>>ftpParseEntryOld: (in category 'as yet unclassified') ----- + ftpParseEntryOld: ftpEntry + | tokens longy dateInSeconds thisYear thisMonth | + thisYear := Date today year. + thisMonth := Date today monthIndex. + tokens := ftpEntry findTokens: ' '. + + tokens size = 8 ifTrue: + [((tokens at: 6) size ~= 3 and: [(tokens at: 5) size = 3]) ifTrue: + ["Fix for case that group is blank (relies on month being 3 chars)" + tokens _ tokens copyReplaceFrom: 4 to: 3 with: {'blank'}]]. + tokens size >= 9 ifFalse:[^nil]. + + ((tokens at: 6) size ~= 3 and: [(tokens at: 5) size = 3]) ifTrue: + ["Fix for case that group is blank (relies on month being 3 chars)" + tokens := tokens copyReplaceFrom: 4 to: 3 with: {'blank'}]. + + tokens size > 9 ifTrue: + [longy := tokens at: 9. + 10 to: tokens size do: [:i | longy := longy , ' ' , (tokens at: i)]. + tokens at: 9 put: longy]. + dateInSeconds := self + secondsForDay: (tokens at: 7) + month: (tokens at: 6) + yearOrTime: (tokens at: 8) + thisMonth: thisMonth + thisYear: thisYear. + + ^Array with: (tokens last) "file name" + with: dateInSeconds "creation date" + with: dateInSeconds "modification time" + with: ( (tokens first first) = $d or: [tokens first first =$l]) "is-a-directory flag" + with: tokens fifth asNumber "file size" + !
packages@lists.squeakfoundation.org