document files

Mats Nygren nygren at sics.se
Wed Sep 6 19:09:36 UTC 2000


Ian Piumarta <Ian.Piumarta at inria.fr> wrote:
>               #!/usr/local/bin/squeak --
>               Transcript cr; show: 'Hello, world'.
> 
>        and then made executable with
> 
>               chmod +x hello.sq
> 
>        and then invoked by running the script file directly:
> 
>               SQUEAK_IMAGE="foo.image"
>               export SQUEAK_IMAGE
>               ./hello.sq

Why do you prefer the above to:

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

which collects all info in one place?

> > And I'll also appreciate if you spell out the details of how to make an
> > image with the #! in the beginning, is there a handy way to get it into
> > the image from inside Squeak?
> 
> This isn't as straightforward as it sounds, since there are (or at
> least there were) two kinds of images floating around: those that have
> a 512-byte remnant (left over from their days as HFS files) before the
> real data, and those that potentially don't.  If you've got an image
> that doesn't then I don't recommend trying to add an interpreter line
> to the front of it.
> 
> You could pretty easily write some Squeak to find out if the header is
> there or not by looking in the image loading code (which skips over
> the header, if it finds one).
> 
> For images that have the header, it's pretty easy to add the
> interpreter line in Squeak.  After saving the image: open it as an old
> binary file, dump
> 
> 	#!<full-path-to-vm> <any-`-<option>'s-you-like> <Character cr> "lf>"
> 
> in the beginning, then close it.  You can get at <full-path-to-vm>
> through one of the system attributes.[1]

I was thinking about introducing a new primitive (setHeader: getHeader)
to inform the VM about a 512-byte-maximum header for the image. So
one can collect it all into one place, using images as exacutables. If that
string is non-nil non-'' then make the header at the next save. How
about that?

One might also consider always having the 512 bytes. I have yet
to see an imagesize below 1M, making it below 0.5 promille wasted space when
unused.

Thanks for the patch and the "FM". I have missed this functionality for
some time. Some polishing, the OSProcess, regular expressions and (for
me) a whole new way of dealing with Unix.

/Mats





More information about the Squeak-dev mailing list