more hacks in Headers.java...
authoradam <adam@megacz.com>
Tue, 17 Jan 2006 03:45:16 +0000 (03:45 +0000)
committeradam <adam@megacz.com>
Tue, 17 Jan 2006 03:45:16 +0000 (03:45 +0000)
darcs-hash:20060117034516-5007d-3677f5fa3b9183a6cddb677c29d7378a93f72c6f.gz

src/org/ibex/mail/Headers.java

index 3275423..caf0c11 100644 (file)
@@ -28,26 +28,26 @@ public class Headers extends JS.Immutable implements Fountain {
         if (ret==null) ret = (String)head.get(s.toLowerCase());
         return ret;
     }
+    public void remove(String k) { put(k, null); }
     public void put(String k, String v) {
         Stream stream = getStream();
         StringBuffer all = new StringBuffer();
         int lines = 0;
-        boolean good = false;
         String key = null;
         for(String s = stream.readln(); s != null && !s.equals(""); s = stream.readln()) {
-            if (Character.isSpace(s.charAt(0))) { all.append(s); all.append("\r\n"); lines++; continue; }
-            if (s.indexOf(':') == -1) throw new Malformed("Header line does not contain colon: " + s);
-            key = s.substring(0, s.indexOf(':')).toLowerCase();
-            lines++;
+            if (!Character.isSpace(s.charAt(0))) {
+                if (s.indexOf(':') == -1) throw new Malformed("Header line does not contain colon: " + s);
+                key = s.substring(0, s.indexOf(':')).toLowerCase();
+            }
             if (key.toLowerCase().equals(k.toLowerCase())) {
-                good = true;
-                all.append(k + ": " + v + "\r\n");
+                if (v != null) { all.append(k + ": " + v + "\r\n"); lines++; v = null; }
                 continue;
             }
             all.append(s);
             all.append("\r\n");
+            lines++;
         }
-        if (!good) {
+        if (v != null) {
             lines++;
             all.append(k + ": " + v + "\r\n");
         }