| author | wenzelm | 
| Sun, 28 Jul 2019 14:37:32 +0200 | |
| changeset 70431 | dbb32c2d5c2c | 
| parent 62923 | 3a122e1e352a | 
| child 71631 | 3f02bc5a5a03 | 
| permissions | -rw-r--r-- | 
| 48681 
181b91e1d1c1
prefer general Command_Line.tool wrapper (cf. Scala version);
 wenzelm parents: diff
changeset | 1 | (* Title: Pure/System/command_line.ML | 
| 
181b91e1d1c1
prefer general Command_Line.tool wrapper (cf. Scala version);
 wenzelm parents: diff
changeset | 2 | Author: Makarius | 
| 
181b91e1d1c1
prefer general Command_Line.tool wrapper (cf. Scala version);
 wenzelm parents: diff
changeset | 3 | |
| 
181b91e1d1c1
prefer general Command_Line.tool wrapper (cf. Scala version);
 wenzelm parents: diff
changeset | 4 | Support for Isabelle/ML command line tools. | 
| 
181b91e1d1c1
prefer general Command_Line.tool wrapper (cf. Scala version);
 wenzelm parents: diff
changeset | 5 | *) | 
| 
181b91e1d1c1
prefer general Command_Line.tool wrapper (cf. Scala version);
 wenzelm parents: diff
changeset | 6 | |
| 
181b91e1d1c1
prefer general Command_Line.tool wrapper (cf. Scala version);
 wenzelm parents: diff
changeset | 7 | signature COMMAND_LINE = | 
| 
181b91e1d1c1
prefer general Command_Line.tool wrapper (cf. Scala version);
 wenzelm parents: diff
changeset | 8 | sig | 
| 48731 
a45ba78abcc1
more casual exit back to ML toplevel, to accomodate commit in SML/NJ which continues at the saved point;
 wenzelm parents: 
48681diff
changeset | 9 | val tool: (unit -> int) -> unit | 
| 51312 
0ce544fbb509
more robust build error handling, e.g. missing outer syntax commands;
 wenzelm parents: 
48731diff
changeset | 10 | val tool0: (unit -> unit) -> unit | 
| 48681 
181b91e1d1c1
prefer general Command_Line.tool wrapper (cf. Scala version);
 wenzelm parents: diff
changeset | 11 | end; | 
| 
181b91e1d1c1
prefer general Command_Line.tool wrapper (cf. Scala version);
 wenzelm parents: diff
changeset | 12 | |
| 
181b91e1d1c1
prefer general Command_Line.tool wrapper (cf. Scala version);
 wenzelm parents: diff
changeset | 13 | structure Command_Line: COMMAND_LINE = | 
| 
181b91e1d1c1
prefer general Command_Line.tool wrapper (cf. Scala version);
 wenzelm parents: diff
changeset | 14 | struct | 
| 
181b91e1d1c1
prefer general Command_Line.tool wrapper (cf. Scala version);
 wenzelm parents: diff
changeset | 15 | |
| 
181b91e1d1c1
prefer general Command_Line.tool wrapper (cf. Scala version);
 wenzelm parents: diff
changeset | 16 | fun tool body = | 
| 62923 | 17 | Thread_Attributes.uninterruptible (fn restore_attributes => fn () => | 
| 56628 | 18 | let | 
| 19 | val rc = | |
| 20 | restore_attributes body () handle exn => | |
| 56630 
d06c44532706
clarified exit code for the rare situation where Runtime.exn_error_message might fail;
 wenzelm parents: 
56628diff
changeset | 21 | Exn.capture_exit 2 (fn () => (Runtime.exn_error_message exn; raise exn)) (); | 
| 62470 
9037ed690e19
proper exit as in Scala version (in contrast to a45ba78abcc1);
 wenzelm parents: 
56630diff
changeset | 22 | in exit rc end) (); | 
| 48681 
181b91e1d1c1
prefer general Command_Line.tool wrapper (cf. Scala version);
 wenzelm parents: diff
changeset | 23 | |
| 51312 
0ce544fbb509
more robust build error handling, e.g. missing outer syntax commands;
 wenzelm parents: 
48731diff
changeset | 24 | fun tool0 body = tool (fn () => (body (); 0)); | 
| 
0ce544fbb509
more robust build error handling, e.g. missing outer syntax commands;
 wenzelm parents: 
48731diff
changeset | 25 | |
| 48681 
181b91e1d1c1
prefer general Command_Line.tool wrapper (cf. Scala version);
 wenzelm parents: diff
changeset | 26 | end; | 
| 
181b91e1d1c1
prefer general Command_Line.tool wrapper (cf. Scala version);
 wenzelm parents: diff
changeset | 27 |