Confirming: Yes it works with the latest Spur VM and Squeak trunk image.
From a console window, run Squeak in the foreground (no '&' at the end of the command):
$ spur64 my64BitImage
Then in the image, do e.g. "Smalltalk snapshot: false andQuitWithExitCode: 3" to quit without saving and return exit status 3.
After the image exits, test the exit status that was returned to the shell:
$ echo $? 3
Dave
On Fri, Apr 28, 2017 at 01:13:38PM -0400, Louis LaBrunda wrote:
Hi Guys,
Thanks for the reply's. I found:
snapshot: save andQuit: quit withExitCode: exitCode embedded: embeddedFlag
which looks like it will do what I want. I will give it a try and report back.
Lou
On Fri, 28 Apr 2017 18:43:59 +0200, Nicolas Cellier nicolas.cellier.aka.nice@gmail.com wrote:
2017-04-28 18:36 GMT+02:00 Nicolas Cellier < nicolas.cellier.aka.nice@gmail.com>:
2017-04-28 17:48 GMT+02:00 David T. Lewis lewis@mail.msen.com:
Hi Squeakers,
Is there a way to quit/exit Squeak with a return code that can be tested in a .so file?
I think I remember implementing this a long time ago in the Unix VM. I can't really look further right now but I'll check later and try to give a better answer.
IIRC, primitiveQuit can take an optional argument that is passed back to the shell script that in turn gives you an exit code that you can test. This probably is working right now in the interpreter VM (sorry I can't check it at the moment). I'm not sure if it's in Cog/Spur, but if not it can be easily added.
Dave
Answer is yes, if you browse the code on github, https://raw.githubusercontent.com/OpenSmalltalk/ opensmalltalk-vm/Cog/src/vm/cointerp.c then you will see this:
/* 113 */ primitiveQuit,
... snip...
/* InterpreterPrimitives>>#primitiveQuit */ static void primitiveQuit(void) { DECL_MAYBE_SQ_GLOBAL_STRUCT ioExitWithErrorCode((GIV(argumentCount) == 1 ? ((longAt(GIV(stackPointer))) >> 1) : 0)); }
So you can pass a SmallInteger to the primitive 113
Then to know what the platform will do with this error code, just query it thru github web iface:
https://github.com/OpenSmalltalk/opensmalltalk-vm/search?utf8=%E2%9C%93&... ioExitWithErrorCode&type=
Sorry, I wanted to post that all supported platforms would call
exit(errorCode), but I'm bad with web iface shortcuts...
<rant> The windows squeak spur VM/image fixture insist on having shortcuts thru ALT instead of CTRL which certainly DOES NOT HELP!!! </rant>
-- Louis LaBrunda Keystone Software Corp. SkypeMe callto://PhotonDemon