src/strip.vala
[app.mailtrimmer] / src / strip.vala
index 459a450..23d4174 100644 (file)
@@ -102,6 +102,7 @@ public class StripApplication : GLib.Application {
        public static bool      opt_scan_mailfort  = false;     
        public static bool              opt_dump = false;       
        public static bool              opt_debug = false; 
+       public static bool              opt_stamp = false; 
        
        public static bool opt_debug_sql = false;       
        public static string? opt_replace_link = null;
@@ -133,7 +134,7 @@ public class StripApplication : GLib.Application {
                { "oldest", 0, 0, OptionArg.INT, ref opt_age_oldest, "do not replace messages older than X (default is 6 months)", null },
 
                { "scan-maildir", 0, 0, OptionArg.NONE, ref opt_scan_maildir, "scan an maildir tree", null },
-               { "stamp", 0, 0, OptionArg.NONE, ref opt_stamp, "create and honour directory stamps", null },
+               { "stamp", 0, 0, OptionArg.NONE, ref opt_stamp, "create and honour directory stamps - flag that a folder has been scanned already", null },
                { "scan-mailfort", 0, 0, OptionArg.NONE, ref opt_scan_mailfort, "scan a mailfort tree", null }, 
                { "scan-mailfort-only", 0, 0, OptionArg.STRING, ref opt_scan_mailfort_only, "scan a mailfort Year/month eg. /2010/08", null }, 
                { null }       
@@ -555,6 +556,9 @@ public class Strip : GLib.Object {
                        "/"+ this.active_name + "."+   GLib.Uri.escape_string(filename,"", false);
 
            var outfile = new GMime.StreamFile.for_path(fn, "w");
+           if (outfile == null) {
+               return; // something has gone wrong??
+       }
            outfile.set_owner(true);
            var file_size = (int) c.write_to_stream(outfile);
            var chksum = this.md5_file(fn);
@@ -1067,6 +1071,10 @@ public class Strip : GLib.Object {
                
         }
         
+       if (StripApplication.opt_stamp && GLib.FileUtils.test( basepath + subpath + "/.strip-done-stamp", GLib.FileTest.EXISTS )) {
+               return;
+               }
+        
         
         var f = File.new_for_path(basepath + subpath);
                FileEnumerator file_enum;
@@ -1148,6 +1156,13 @@ public class Strip : GLib.Object {
             this.scan_dir(basepath,sp);
             
         }
+        
+        // completed this folder
+        
+        if (StripApplication.opt_stamp) {
+               GLib.FileUtils.set_contents (basepath + subpath + "/.strip-done-stamp", "Stripper done");
+        }
+        
     
     
     }