[prev in list] [next in list] [prev in thread] [next in thread] 

List:       squeak-dev
Subject:    [squeak-dev] Re: The Trunk: System-cmm.1447.mcz
From:       Eliot Miranda <eliot.miranda () gmail ! com>
Date:       2024-02-26 15:49:49
Message-ID: 80E42452-49A3-4F64-980C-01B1A4E7790E () gmail ! com
[Download RAW message or body]

[Attachment #2 (multipart/alternative)]

[Attachment #4 (text/html)]

<html><head><meta http-equiv="content-type" content="text/html; \
charset=utf-8"></head><body dir="auto"><div dir="ltr"><br></div><div \
dir="ltr"><br><blockquote type="cite">On Feb 24, 2024, at 1:28 PM, Chris Muller \
&lt;asqueaker@gmail.com&gt; wrote:<br><br></blockquote></div><blockquote \
type="cite"><div dir="ltr"><div dir="ltr"><div dir="ltr">Hi \
Levente,<div><br></div></div><div class="gmail_quote"><blockquote class="gmail_quote" \
style="margin:0px 0px 0px 0.8ex;border-left:1px solid \
rgb(204,204,204);padding-left:1ex">My understanding is that all platforms support \
these streams, not just <br> \
Linux.<br></blockquote><div><br></div><div>Agreed.</div><div>&nbsp;</div><blockquote \
class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid \
rgb(204,204,204);padding-left:1ex"> FileStream's #stdout and #stderr are special \
streams (see #newForStdio) <br> whose lineEndConvention is set according to the \
platform's default, <br> which means that #cr sent to these streams produces the \
platform's new <br> line character on the stream[1].<br>
So, changing #cr to #lf in those methods does nothing but breaks line <br>
endings on non-unix platforms (Windows and older \
Macs).<br></blockquote><div><br></div><div>My understanding is that, regardless \
whether you write #lf, #cr, or #crlf, if MultiByteFileStream's \
#wantsLineEndConversion is true, it will write out whatever the correct line-ending \
for the running platform.&nbsp; I only changed the&nbsp;code for "semantics" when \
reading the code based on the historical origin of \
"stdout".</div><div>&nbsp;<br></div><blockquote class="gmail_quote" style="margin:0px \
0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">[1] \
#newForStdio forces #lf even if the platform's line-end convention <br> is #cr. That \
should probably be changed as <br> #guessDefaultLineEndConvention does a good job \
determining the correct <br> value.<br></blockquote><div><br></div><div>I'm not sure \
about that.&nbsp; I think #wantsLineEndConversion: true is all that's \
needed.</div><div><br></div><div>I don't have any Windows machines handy.&nbsp; If \
I'm wrong, I will certainly&nbsp;undo \
this.</div></div></div></div></blockquote><div><br></div>Please do! The stdio \
facility is intended for all platforms.<div><br><blockquote type="cite"><div \
dir="ltr"><div dir="ltr"><div \
class="gmail_quote"><div><br></div><div>Best,</div><div>&nbsp; \
Chris</div><div><br></div><div>&nbsp;</div><blockquote class="gmail_quote" \
style="margin:0px 0px 0px 0.8ex;border-left:1px solid \
rgb(204,204,204);padding-left:1ex"> <br>
On 2024. 02. 19. 0:05, <a href="mailto:commits@source.squeak.org" \
target="_blank">commits@source.squeak.org</a> wrote:<br> &gt; Chris Muller uploaded a \
new version of System to project The Trunk:<br> &gt; <a \
href="http://source.squeak.org/trunk/System-cmm.1447.mcz" rel="noreferrer" \
target="_blank">http://source.squeak.org/trunk/System-cmm.1447.mcz</a><br> &gt; <br>
&gt; ==================== Summary ====================<br>
&gt; <br>
&gt; Name: System-cmm.1447<br>
&gt; Author: cmm<br>
&gt; Time: 12 February 2024, 3:06:16.671515 pm<br>
&gt; UUID: 03b7d234-da01-4b78-94c0-f78c01d4afe0<br>
&gt; Ancestors: System-codefrau.1446<br>
&gt; <br>
&gt; FileStream's stdout and stderr are for Linux, so use Linux line-endings when \
writing to them.<br> &gt; <br>
&gt; =============== Diff against System-codefrau.1446 ===============<br>
&gt; <br>
&gt; Item was changed:<br>
&gt;&nbsp; &nbsp; ----- Method: CodeLoader&gt;&gt;installSourceFile: (in category \
'installing') -----<br> &gt;&nbsp; &nbsp; installSourceFile: aStream<br>
&gt;&nbsp; &nbsp; &nbsp; &nbsp;"Install the previously loaded source file"<br>
&gt;&nbsp; &nbsp; &nbsp; &nbsp;| contents trusted |<br>
&gt;&nbsp; &nbsp; &nbsp; &nbsp;aStream ifNil:[^self error:'No content to \
install'].<br> &gt;&nbsp; &nbsp; &nbsp; &nbsp;trusted := SecurityManager default \
positionToSecureContentsOf: aStream.<br> &gt;&nbsp; &nbsp; &nbsp; &nbsp;trusted \
ifFalse:[(SecurityManager default enterRestrictedMode)<br> &gt;&nbsp; &nbsp; &nbsp; \
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ifFalse:[ aStream close.<br> &gt;&nbsp; &nbsp; \
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp; &nbsp;^ self error:'Insecure content encountered']].<br> &gt;&nbsp; &nbsp; \
&nbsp; &nbsp;contents := self allButShebangLine: aStream upToEnd unzipped \
asString.<br> &gt;&nbsp; &nbsp; &nbsp; &nbsp;(aStream respondsTo: #close) \
ifTrue:[aStream close].<br> &gt;&nbsp; &nbsp; &nbsp; &nbsp;^[contents readStream \
fileIn]<br> &gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;on: \
SyntaxErrorNotification<br> &gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp;do: [ : err | Smalltalk isHeadless<br> &gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ifTrue:<br> &gt; +&nbsp; &nbsp; \
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp;[FileStream stdout nextPutAll: err errorCode; lf; flush.<br> &gt; -&nbsp; \
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp; &nbsp;[FileStream stdout nextPutAll: err errorCode; cr; flush.<br> &gt;&nbsp; \
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp; &nbsp; &nbsp;Smalltalk snapshot: false andQuit: true ]<br> &gt;&nbsp; &nbsp; \
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ifFalse: [err \
pass] ]!<br> &gt; <br>
&gt; Item was changed:<br>
&gt;&nbsp; &nbsp; ----- Method: Exception&gt;&gt;printVerboseOn: (in category \
'*system') -----<br> &gt;&nbsp; &nbsp; printVerboseOn: aStream<br>
&gt;&nbsp; &nbsp; &nbsp; &nbsp;aStream<br>
&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nextPutAll: \
'vvvvvvvvvvvvvvvvvv ' , self description , ' vvvvvvvvvvvvvvvvvv' ;<br> &gt; +&nbsp; \
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;lf ;<br> &gt; -&nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp; &nbsp; &nbsp;cr ;<br> &gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp;nextPutAll: 'The time is ', DateAndTime now asString ;<br> &gt; +&nbsp; &nbsp; \
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;lf.<br> &gt; -&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp; &nbsp;cr.<br> &gt;&nbsp; &nbsp; &nbsp; &nbsp;"Allow applications to optionally \
print extra details without overriding a base package."<br> &gt;&nbsp; &nbsp; &nbsp; \
&nbsp;self printDetailsOn: aStream.<br> &gt;&nbsp; &nbsp; &nbsp; &nbsp;aStream<br>
&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nextPutAll: self \
signalerContext longStack ;<br> &gt; +&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp;lf ;<br> &gt; -&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;cr ;<br>
&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nextPutAll: \
'^^^^^^^^^^^^^^^^^^ ' , self description , ' ^^^^^^^^^^^^^^^^^^' ;<br> &gt; +&nbsp; \
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;lf ;<br> &gt; -&nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp; &nbsp; &nbsp;cr ;<br> &gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp;flush!<br> &gt; <br>
&gt; Item was changed:<br>
&gt;&nbsp; &nbsp; ----- Method: SmalltalkImage&gt;&gt;run: (in category 'command \
line') -----<br> &gt;&nbsp; &nbsp; run: aBlock<br>
&gt;&nbsp; &nbsp; &nbsp; &nbsp;[ [ self patchSystem.<br>
&gt;&nbsp; &nbsp; &nbsp; &nbsp;(aBlock numArgs = 1 and: [ self arguments size &gt; 1 \
])<br> &gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ifTrue: [ "Allow a \
large, variable number of arguments to be passed as an Array to aBlock."<br> \
&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp;aBlock value: self arguments ]<br> &gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp; &nbsp; &nbsp;ifFalse: [ aBlock valueWithEnoughArguments: self arguments ] \
]<br> &gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;on: \
SyntaxErrorNotification<br> &gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp;do:<br> &gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp; &nbsp; &nbsp;[ : err | FileStream stdout<br> &gt;&nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
nextPutAll: err errorCode ;<br> &gt; +&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lf; flush.<br> &gt; \
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp; &nbsp; &nbsp; cr; flush.<br> &gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;self isHeadless<br> &gt;&nbsp; &nbsp; &nbsp; \
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp;ifTrue: [ self snapshot: false andQuit: true ]<br> &gt;&nbsp; &nbsp; &nbsp; \
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp;ifFalse: [ err pass ] ]<br> &gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp; &nbsp;on: Error , ProvideAnswerNotification<br> &gt;&nbsp; &nbsp; &nbsp; \
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;do:<br> &gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[ : err | err printVerboseOn: \
FileStream stderr.<br> &gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp; &nbsp; &nbsp; &nbsp;FileStream stderr flush.<br> &gt;&nbsp; &nbsp; &nbsp; \
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;self isHeadless<br> \
&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ifTrue: [ self snapshot: false andQuit: true ]<br> \
&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ifFalse: [ err pass ] ]<br> &gt;&nbsp; &nbsp; \
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;on: ProgressInitiationException<br> \
&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;do:<br> &gt;&nbsp; &nbsp; \
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[ : pie | "Don't \
want to log this Notification."<br> &gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;pie defaultAction ] ]<br> &gt;&nbsp; &nbsp; \
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;on: Notification , Warning<br> &gt;&nbsp; \
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;do:<br> &gt;&nbsp; &nbsp; &nbsp; \
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[ : noti | FileStream \
stdout<br> &gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; nextPutAll: DateAndTime now asString ;<br> \
&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; space ;<br> &gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
nextPutAll: noti description ;<br> &gt; +&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lf.<br> &gt; -&nbsp; \
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp; &nbsp; cr.<br> &gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp; &nbsp; &nbsp; &nbsp;noti resume ]<br> &gt;&nbsp; &nbsp; !<br>
&gt; <br>
&gt; <br>
<br>
</blockquote></div></div>
<span></span><br></div></blockquote></div></body></html>





[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic