diff --git a/core/java/src/net/i2p/crypto/SU3File.java b/core/java/src/net/i2p/crypto/SU3File.java index dd23ad05abf9418f8888bf7711e851b61ca2e856..51a5cf961371ecf7bd832efd34cdd51ce7ef977e 100644 --- a/core/java/src/net/i2p/crypto/SU3File.java +++ b/core/java/src/net/i2p/crypto/SU3File.java @@ -26,6 +26,8 @@ import java.util.Map; import java.util.NoSuchElementException; import java.util.Properties; +import gnu.getopt.Getopt; + import net.i2p.I2PAppContext; import net.i2p.data.DataFormatException; import net.i2p.data.DataHelper; @@ -437,27 +439,37 @@ public class SU3File { */ public static void main(String[] args) { boolean ok = false; - List<String> a = new ArrayList<String>(Arrays.asList(args)); try { // defaults String stype = null; String ctype = null; - Iterator<String> iter = a.iterator(); - String cmd = iter.next(); - iter.remove(); - for ( ; iter.hasNext(); ) { - String arg = iter.next(); - if (arg.equals("-t")) { - iter.remove(); - stype = iter.next(); - iter.remove(); - } else if (arg.equals("-c")) { - iter.remove(); - ctype = iter.next(); - iter.remove(); - } + boolean error = false; + Getopt g = new Getopt("SU3File", args, "t:c:"); + int c; + while ((c = g.getopt()) != -1) { + switch (c) { + case 't': + stype = g.getOptarg(); + break; + + case 'c': + ctype = g.getOptarg(); + break; + + case '?': + case ':': + default: + error = true; + } } - if ("showversion".equals(cmd)) { + + int idx = g.getOptind(); + String cmd = args[idx]; + List<String> a = new ArrayList<String>(Arrays.asList(args).subList(idx + 1, args.length)); + + if (error) { + showUsageCLI(); + } else if ("showversion".equals(cmd)) { ok = showVersionCLI(a.get(0)); } else if ("sign".equals(cmd)) { // speed things up by specifying a small PRNG buffer size