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

commits at source.squeak.org commits at source.squeak.org
Fri Nov 25 19:00:30 UTC 2022


David T. Lewis uploaded a new version of System to project The Trunk:
http://source.squeak.org/trunk/System-dtl.1374.mcz

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

Name: System-dtl.1374
Author: dtl
Time: 25 November 2022, 2:00:24.392665 pm
UUID: f4b3b5ed-db5c-445a-be6b-3f29ea6552e3
Ancestors: System-dtl.1373

Support use of ChangeLogStream for changes log maintained within the image.

=============== Diff against System-dtl.1373 ===============

Item was changed:
  ----- Method: SmalltalkImage>>openSourcesAndChanges:forImage: (in category 'image, changes names') -----
  openSourcesAndChanges: changesName forImage: imageName 
  	"Open the changes and sources files and install them in SourceFiles. Inform the user of problems regarding write permissions or CR/CRLF mixups."
  	"Note: SourcesName and imageName are full paths; changesName is a  
  	local name."
  	| sources changes msg wmsg |
  	msg := 'Squeak cannot locate {1}.
  
  Please check that the file is named properly and is in the same directory as this image.'.
  	wmsg := 'Squeak cannot write to {1}.
  
  Please check that you have write permission for this file.
  
  You won''t be able to save this image correctly until you fix this.'.
  
  	sources := Smalltalk openSources.
  	sources ifNotNil: [sources setConverterForCode].
+ 	changes := SourceFileArray cachedChanges
+ 		ifNil: [Smalltalk openChanges: changesName forImage: imageName].
- 	changes := Smalltalk openChanges: changesName forImage: imageName.
  	changes ifNotNil: [changes setConverterForCode].
- 
  	((sources == nil or: [sources atEnd])
  			and: [Preferences valueOfFlag: #warnIfNoSourcesFile])
  		ifTrue: [Smalltalk platformName = 'Mac OS'
  				ifTrue: [msg := msg , '
  Make sure the sources file is not an Alias.'].
  self inform: (msg format: { 'the sources file named ' , self sourcesName })].
  
  	(changes == nil
  			and: [Preferences valueOfFlag: #warnIfNoChangesFile])
  		ifTrue: [self inform: (msg format: { 'the changes file named ' , changesName })].
  
  	((Preferences valueOfFlag: #warnIfNoChangesFile) and: [changes notNil])
  		ifTrue: [changes isReadOnly
  				ifTrue: [self inform: (wmsg format: { 'the changes file named ' , changesName })].
  
  			((changes next: 200)
  					includesSubstring: String crlf)
  				ifTrue: [self inform: ('The changes file named <b>{1}</b> has been injured by an unpacking utility. Line endings were changed from Cr to CrLf.<br><br>Please set the preferences in your decompressing program to 
  <b>do not convert text files</b> and unpack the system again.' translated format: { changesName }) asTextFromHtml]].
  
  	SourceFiles := Array with: sources with: changes!

Item was changed:
  ----- Method: SmalltalkImage>>saveAs: (in category 'sources, changes log') -----
  saveAs: newName
  	"Save the image  under that new name."
  	newName ifNil:[^ self].
+ 
+ 	(SourceFileArray internalizeChanges or: (SourceFiles at: 2) isNil) ifFalse:
- 	(SourceFiles at: 2) ifNotNil:
  		[self closeSourceFiles; "so copying the changes file will always work"
  			 saveChangesInFileNamed: (self fullNameForChangesNamed: newName)].
  	self saveImageInFileNamed: (self fullNameForImageNamed: newName)!

Item was changed:
  ----- Method: SmalltalkImage>>saveAsNewVersion (in category 'sources, changes log') -----
  saveAsNewVersion
  	"Save the image/changes using the next available version number."
  	"Smalltalk saveAsNewVersion"
  	
  	| newName changesName aName anIndex |
  	aName := FileDirectory baseNameFor: (FileDirectory default localNameFor: self imageName).
  	anIndex := aName lastIndexOf: FileDirectory dot asCharacter ifAbsent: [nil].
  	(anIndex notNil and: [(aName copyFrom: anIndex + 1 to: aName size) isAllDigits])
  		ifTrue:
  			[aName := aName copyFrom: 1 to: anIndex - 1].
  
  	newName := FileDirectory default nextNameFor: aName extension: FileDirectory imageSuffix.
  	changesName := self fullNameForChangesNamed: newName.
  
+ 	(SourceFileArray internalizeChanges or: (SourceFiles at: 2) isNil) ifFalse: [
+ 		"Check to see if there is a .changes file that would cause a problem if we saved a new .image file with the new version number"
+ 		(FileDirectory default fileOrDirectoryExists: changesName)
+ 			ifTrue:
+ 				[^ self inform:
- 	"Check to see if there is a .changes file that would cause a problem if we saved a new .image file with the new version number"
- 	(FileDirectory default fileOrDirectoryExists: changesName)
- 		ifTrue:
- 			[^ self inform:
  'There is already .changes file of the desired name,
  ', newName, '
  curiously already present, even though there is
  no corresponding .image file.   Please remedy
  manually and then repeat your request.'].
  
+ 		self closeSourceFiles; "so copying the changes file will always work"
+ 			saveChangesInFileNamed: (self fullNameForChangesNamed: newName)
+ 	].
- 	(SourceFiles at: 2) ifNotNil:
- 		[self closeSourceFiles; "so copying the changes file will always work"
- 			saveChangesInFileNamed: (self fullNameForChangesNamed: newName)].
  	self saveImageInFileNamed: (self fullNameForImageNamed: newName)
  
  
  !



More information about the Squeak-dev mailing list