[Vm-dev] VM Maker: ImageFormat-kks.34.mcz

commits at source.squeak.org commits at source.squeak.org
Wed Apr 10 21:15:55 UTC 2019


David T. Lewis uploaded a new version of ImageFormat to project VM Maker:
http://source.squeak.org/VMMaker/ImageFormat-kks.34.mcz

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

Name: ImageFormat-kks.34
Author: kks
Time: 10 April 2019, 10:43:56.983339 pm
UUID: b6d8d060-b305-437e-93b7-68e5427a76e0
Ancestors: ImageFormat-dtl.33

Added support for images whose header begins 512 bytes into the file. Expanded comments to explain magic file use.

=============== Diff against ImageFormat-dtl.33 ===============

Item was changed:
  ----- Method: ImageFormat class>>unixMagicFileEntries (in category 'unix magic file entries') -----
  unixMagicFileEntries
+ 	"Answer a string that can be appended to /etc/magic on a Unix system to support the file(1) utility.
+ 	For example, the file magic produced by
+ 	(FileStream newFileNamed: 'magic') in: [:fs |
+ 		 [fs nextPutAll: ImageFormat unixMagicFileEntries ]	ensure: [ fs close ]]
+ 	can be appended to $HOME/.magic and then
+ 	   $ file squeak.image pharo.image  ...
+ 	will describe the given image files precisely"
- 	"Answer a string that can be appended to /etc/magic on a Unix system to support the file(1) utility"
  
- 	"ImageFormat unixMagicFileEntries"
- 
- 	" | fs |
- 	fs := FileStream newFileNamed: 'magic'.
- 	[ fs nextPutAll: ImageFormat unixMagicFileEntries ]
- 		ensure: [ fs close ] "
- 
  	^String streamContents: [:s |
  		s nextPutAll: '# Smalltalk image file formats'; lf.
  		KnownVersionNumbers do: [ :num | | fmt |
  			#( 'le' 'be' ) do: [ :endian |
+ 				#(0 512) do: [ :offset |
+ 					fmt := self fromInteger: num.
+ 					(fmt is64Bit and: [ endian = 'be' ])
+ 						ifTrue: [ s nextPutAll:  (offset+4) asString ]
+ 						ifFalse: [ s nextPutAll: offset asString ].
+ 					s tab;
+ 					nextPutAll: endian;
+ 					nextPutAll: 'long';
+ 					tab;
+ 					nextPutAll: num asString;
+ 					tab;
+ 					nextPutAll: 'Smalltalk '.
+ 					fmt printTerseDescriptionOn: s.
+ 					s lf.
+ 					s nextPutAll: '!!:mime application/';
+ 						nextPutAll: fmt simpleName;
+ 						nextPutAll: '-image';
+ 						lf
+ 				]
- 				fmt := self fromInteger: num.
- 				(fmt is64Bit and: [ endian = 'be' ])
- 					ifTrue: [ s nextPut: $4 ]
- 					ifFalse: [ s nextPut: $0 ].
- 				s tab;
- 				nextPutAll: endian;
- 				nextPutAll: 'long';
- 				tab;
- 				nextPutAll: num asString;
- 				tab;
- 				nextPutAll: 'Smalltalk '.
- 				fmt printTerseDescriptionOn: s.
- 				s lf.
- 				s nextPutAll: '!!:mime application/';
- 					nextPutAll: fmt simpleName;
- 					nextPutAll: '-image';
- 					lf
  			]
  		].
  		s lf.
  	]!



More information about the Vm-dev mailing list