[squeak-dev] The Trunk: System-dtl.1062.mcz

commits at source.squeak.org commits at source.squeak.org
Mon May 6 02:55:00 UTC 2019

David T. Lewis uploaded a new version of System to project The Trunk:

==================== Summary ====================

Name: System-dtl.1062
Author: dtl
Time: 5 May 2019, 10:54:56.642077 pm
UUID: c527ef41-51fb-4e49-b00a-90a9a09a935d
Ancestors: System-cmm.1061

If CodeLoader is loading a script that begins with a Unix shebang line, then skip over line one of the script. This accomodates the case of an executable Unix shell script that starts a Squeak image, then feeds itself to Squeak as a start script. For example, an executable script file might contain this:

#!/usr/local/bin/squeak --
Transcript show: 'Hello, world'; cr.

=============== Diff against System-cmm.1061 ===============

Item was added:
+ ----- Method: CodeLoader>>allButShebangLine: (in category 'private') -----
+ allButShebangLine: contentsString
+ 	"If tontentsString begins with '#!!' then assume that it contains a Unix
+ 	shebang line should be skipped prior to evaluating the contents."
+ 	(contentsString beginsWith: '#!!')
+ 		ifTrue: [contentsString lineIndicesDo: [:line :end :endOfLine |
+ 			^ contentsString allButFirst: endOfLine ]]
+ 		ifFalse: [^ contentsString]
+ 	" CodeLoader new allButShebangLine:
+ '#!!/usr/llocal/bin/squeak --
+ Transcript cr; show: ''Hello world!!''
+ ' "!

Item was changed:
  ----- Method: CodeLoader>>installSourceFile: (in category 'installing') -----
  installSourceFile: aStream
  	"Install the previously loaded source file"
  	| contents trusted |
  	aStream ifNil:[^self error:'No content to install'].
  	trusted := SecurityManager default positionToSecureContentsOf: aStream.
  	trusted ifFalse:[(SecurityManager default enterRestrictedMode) 
  					ifFalse:[ aStream close.
  							^ self error:'Insecure content encountered']].
+ 	contents := self allButShebangLine: aStream upToEnd unzipped asString.
- 	contents := aStream upToEnd unzipped asString.
  	(aStream respondsTo: #close) ifTrue:[aStream close].
  	^contents readStream fileIn!

More information about the Squeak-dev mailing list