better DCC interface
authoradam <adam@megacz.com>
Sun, 22 Jul 2007 02:27:44 +0000 (02:27 +0000)
committeradam <adam@megacz.com>
Sun, 22 Jul 2007 02:27:44 +0000 (02:27 +0000)
darcs-hash:20070722022744-5007d-b74723c8d4d1eea62500a846c7c8b0fdf6bec182.gz

src/org/ibex/mail/Script.java

index 875b178..f7b259d 100644 (file)
@@ -243,7 +243,37 @@ public class Script extends JS.Obj implements Target {
                    StringBuffer ret = new StringBuffer();
                    new Stream(p.getInputStream()).transcribe(ret);
                    p.waitFor();
-                   return JSU.S(ret.toString());
+                    String result = ret.toString();
+                    Log.warn("dcc", ((Message)args[0]).summary() + ":\n  " + result);
+                    int body = 0;
+                    int fuz1 = 0;
+                    int fuz2 = 0;
+                    int i_body = result.indexOf("Body=");
+                    int i_fuz1 = result.indexOf("Fuz1=");
+                    int i_fuz2 = result.indexOf("Fuz2=");
+                    if (i_body != -1) try {
+                        String s = result.substring(i_body+5);
+                        if (s.indexOf(' ') != -1) s = s.substring(0, s.indexOf(' '));
+                        if (s.indexOf('\n') != -1) s = s.substring(0, s.indexOf('\n'));
+                        body = s.equals("many") ? 999 : Integer.parseInt(s.trim());
+                    } catch (Exception e) { Log.error("", e); }
+                    if (i_fuz1 != -1) try {
+                        String s = result.substring(i_fuz1+5);
+                        if (s.indexOf(' ') != -1) s = s.substring(0, s.indexOf(' '));
+                        if (s.indexOf('\n') != -1) s = s.substring(0, s.indexOf('\n'));
+                        fuz1 = s.equals("many") ? 999 : Integer.parseInt(s.trim());
+                    } catch (Exception e) { Log.error("", e); }
+                    if (i_fuz2 != -1) try {
+                        String s = result.substring(i_fuz2+5);
+                        if (s.indexOf(' ') != -1) s = s.substring(0, s.indexOf(' '));
+                        if (s.indexOf('\n') != -1) s = s.substring(0, s.indexOf('\n'));
+                        fuz2 = s.equals("many") ? 999 : Integer.parseInt(s.trim());
+                    } catch (Exception e) { Log.error("", e); }
+                    JSArray jsa = new JSArray();
+                    jsa.put(JSU.N(0), JSU.N(body));
+                    jsa.put(JSU.N(1), JSU.N(fuz1));
+                    jsa.put(JSU.N(2), JSU.N(fuz2));
+                   return jsa;
                }
                 if (name.equals("mail.drop")) {
                     return args.length==0 ? new Drop() : new Drop(JSU.toString(args[0]));