[Newbies] Display artifacts in comments/desc.

Bert Freudenberg bert at freudenbergs.de
Mon May 7 19:11:46 UTC 2007


On May 7, 2007, at 14:47 , subbukk wrote:

> On Monday 07 May 2007 10:53 pm, Bert Freudenberg wrote:
>>> Squeak3.9 handling of CRLF sequences in sources file is defective.
>>
>> I do not think it is.
> SqueakV39.sources contains the following sequence as seen in a  
> hexeditor for
> DateAndTime commentStamp:
> I have zero duration\r\n\r\n\r\n
> When I browse this class and inspect the Text object in the  
> annotation pane,
> the same sequence shows up in its string variable. Since  
> annotations are read
> in as line-oriented text from files

They are not. The sources and changes file is *not* a text file even  
though it might look like one to the uninitiated. It's a database of  
data chunks and the image actually stores byte offsets into this  
file. When you move the file to a different platform you *must not*  
change the line ending convention.

> , the CRLFs should have been replaced with
> CRs. Of course, we could take a stance that the sources files is  
> corrupt
> since it uses mixed line endings, but then what about text read in  
> from a
> changes file or from a filein that came thru email?

We might be more tolerant when filing in, this is true. But this  
should be an explicit action because there actually are file-ins that  
contain binary data which we do *no* want to mess with.

>>> Squeak3.8
>>> image correctly strips of LF in CRLF while reading in text from
>>> SqueakV3.sources file. For instance, editStartPage method in
>>> Scamper uses
>>> CRLF in SqueakV3.sources file but its Text in codepane strips out  
>>> LF.
>>
>> I do not think this is the case.
> SqueakV3.sources contains the sequence:
> editStartPage\r\n\t
> But the Text object in the codepane shows the sequence:
> editStartPage\r\t

Let's see.

	(Scamper>>#editStartPage) fileIndex "2"

which means it is in the changes file, not the sources file.

	(Scamper>>#editStartPage) filePosition "10310306"

which tells you the file offset

	(Scamper>>#editStartPage) getSourceFromFile asString asByteArray
		"a ByteArray(101 100 105 116 83 116 97 114 116 80 97 103 101 13  
9 ...)"

which is the source code as retrieved by the browser, note there only  
is a 13 (CR) no LF (10).

	| f | [(f := FileStream readOnlyFileNamed: Smalltalk changesName)  
binary;
		position: 10310306; next: 40] ensure: [f close]

	"a ByteArray(101 100 105 116 83 116 97 114 116 80 97 103 101 13 9 ...)

which confirms that this is actually in the file.

- Bert -





More information about the Squeak-dev mailing list