From: Keith Packard Date: Thu, 13 Sep 2012 06:56:18 +0000 (-0700) Subject: altosui: Exit with an error status when file processing fails X-Git-Tag: 1.1~1^2 X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=commitdiff_plain;h=9728b20a4ad9576ac1022dc9a5771f5a3eb92b3d;hp=0564f9b13d4e3050b0a45fc1c4f710ab2b1f9d81 altosui: Exit with an error status when file processing fails If the user provides any files on the command line, and if processing them fails in some way, exit immediately with an error indication. Signed-off-by: Keith Packard --- diff --git a/altosui/AltosUI.java b/altosui/AltosUI.java index 9977e82b..c1a66b83 100644 --- a/altosui/AltosUI.java +++ b/altosui/AltosUI.java @@ -399,39 +399,43 @@ public class AltosUI extends AltosFrame { static final int process_replay = 4; static final int process_summary = 5; - static void process_csv(String input) { + static boolean process_csv(String input) { AltosRecordIterable iterable = open_logfile(input); if (iterable == null) - return; + return false; String output = Altos.replace_extension(input,".csv"); System.out.printf("Processing \"%s\" to \"%s\"\n", input, output); if (input.equals(output)) { System.out.printf("Not processing '%s'\n", input); + return false; } else { AltosWriter writer = open_csv(output); if (writer == null) - return; + return false; writer.write(iterable); writer.close(); } + return true; } - static void process_kml(String input) { + static boolean process_kml(String input) { AltosRecordIterable iterable = open_logfile(input); if (iterable == null) - return; + return false; String output = Altos.replace_extension(input,".kml"); System.out.printf("Processing \"%s\" to \"%s\"\n", input, output); if (input.equals(output)) { System.out.printf("Not processing '%s'\n", input); + return false; } else { AltosWriter writer = open_kml(output); if (writer == null) - return; + return false; writer.write(iterable); writer.close(); + return true; } } @@ -464,25 +468,32 @@ public class AltosUI extends AltosFrame { return new AltosReplayReader(recs.iterator(), new File(filename)); } - static void process_replay(String filename) { + static boolean process_replay(String filename) { AltosReplayReader reader = replay_file(filename); + if (reader == null) + return false; AltosFlightUI flight_ui = new AltosFlightUI(new AltosVoice(), reader); flight_ui.set_exit_on_close(); + return true; } - static void process_graph(String filename) { + static boolean process_graph(String filename) { AltosRecordIterable recs = record_iterable_file(filename); if (recs == null) - return; + return false; try { new AltosGraphUI(recs, filename); + return true; } catch (InterruptedException ie) { } catch (IOException ie) { } + return false; } - static void process_summary(String filename) { + static boolean process_summary(String filename) { AltosRecordIterable iterable = record_iterable_file(filename); + if (iterable == null) + return false; try { AltosFlightStats stats = new AltosFlightStats(iterable); if (stats.serial > 0) @@ -517,9 +528,11 @@ public class AltosUI extends AltosFrame { System.out.printf("Flight time: %6.0f s\n", stats.state_end[Altos.ao_flight_main] - stats.state_start[Altos.ao_flight_boost]); + return true; } catch (InterruptedException ie) { } catch (IOException ie) { } + return false; } public static void help(int code) { @@ -534,6 +547,7 @@ public class AltosUI extends AltosFrame { } public static void main(final String[] args) { + int errors = 0; load_library(null); try { UIManager.setLookAndFeel(AltosUIPreferences.look_and_feel()); @@ -577,23 +591,30 @@ public class AltosUI extends AltosFrame { switch (process) { case process_none: case process_graph: - process_graph(args[i]); + if (!process_graph(args[i])) + ++errors; break; case process_replay: - process_replay(args[i]); + if (!process_replay(args[i])) + ++errors; break; case process_kml: - process_kml(args[i]); + if (!process_kml(args[i])) + ++errors; break; case process_csv: - process_csv(args[i]); + if (!process_csv(args[i])) + ++errors; break; case process_summary: - process_summary(args[i]); + if (!process_summary(args[i])) + ++errors; break; } } } } + if (errors != 0) + System.exit(errors); } }