Index: /trunk/src/org/openstreetmap/josm/data/AutosaveTask.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/AutosaveTask.java	(revision 3685)
+++ /trunk/src/org/openstreetmap/josm/data/AutosaveTask.java	(revision 3686)
@@ -35,4 +35,17 @@
 /**
  * Saves data layers periodically so they can be recovered in case of a crash.
+ *
+ * There are 2 directories
+ *  - autosave dir: copies of the currently open data layers are saved here every
+ *      PROP_INTERVAL seconds. When a data layer is closed normally, the corresponding
+ *      files are removed. If this dir is non-empty on start, JOSM assumes
+ *      that it crashed last time.
+ *  - deleted layers dir: "secondary archive" - when autosaved layers are restored
+ *      they are copied to this directory. We cannot keep them in the autosave folder,
+ *      but just deleting it would be dangerous: Maybe a feature inside the file
+ *      caused JOSM to crash. If the data is valuable, the user can still try to
+ *      open with another versions of JOSM or fix the problem manually.
+ *
+ *      The deleted layers dir keeps at most PROP_DELETED_LAYERS files.
  */
 public class AutosaveTask extends TimerTask implements LayerChangeListener, Listener {
@@ -78,7 +91,6 @@
 
             for (File f: deletedLayersDir.listFiles()) {
-                deletedLayers.add(f);
-            }
-
+                deletedLayers.add(f); // FIXME: sort by mtime
+            }
 
             timer = new Timer(true);
@@ -243,16 +255,11 @@
         List<File> result = new ArrayList<File>();
         File[] files = autosaveDir.listFiles();
-        System.err.println("autosave debug (getUnsavedLayersFiles) files="+(files == null ? null : Arrays.toString(files)));
         if (files == null)
             return result;
         for (File file: files) {
-            System.err.println("autosave debug (getUnsavedLayersFiles) file="+file);
-
             if (file.isFile()) {
-                System.err.println("autosave debug (getUnsavedLayersFiles) isFile");
                 result.add(file);
             }
         }
-        System.err.println("autosave debug (getUnsavedLayersFiles) result="+result);
         return result;
     }
@@ -271,50 +278,43 @@
     }
 
+    /**
+     * Move file to the deleted layers directory.
+     * If moving does not work, it will try to delete the file directly.
+     * Afterwards, if the number of deleted layers gets larger than PROP_DELETED_LAYERS,
+     * some files in the deleted layers directory will be removed.
+     *
+     * @param f the file, usually from the autosave dir
+     */
     private void moveToDeletedLayersFolder(File f) {
-        System.err.println("autosave debug (moveToDeletedLayersFolder) f="+f);
-        System.err.println("autosave debug (moveToDeletedLayersFolder) f.getName="+f.getName());
-
         File backupFile = new File(deletedLayersDir, f.getName());
 
-        System.err.println("autosave debug (moveToDeletedLayersFolder) backupFile="+backupFile);
         if (backupFile.exists()) {
-            System.err.println("autosave debug (moveToDeletedLayersFolder) backupFile exisist");
-
-            boolean res = deletedLayers.remove(backupFile);
-
-            System.err.println("autosave debug (moveToDeletedLayersFolder) res="+res);
-
-            boolean res2 = backupFile.delete();
-
-            System.err.println("autosave debug (moveToDeletedLayersFolder) res2="+res2);
+            deletedLayers.remove(backupFile);
+            if (!backupFile.delete()) {
+                System.err.println(String.format("Warning: Could not delete old backup file %s", backupFile));
+            }
         }
         if (f.renameTo(backupFile)) {
-            System.err.println("autosave debug (moveToDeletedLayersFolder) rename ok");
-
             deletedLayers.add(backupFile);
-
-            System.err.println("autosave debug (moveToDeletedLayersFolder) deletedLayers="+deletedLayers);
         } else {
             System.err.println(String.format("Warning: Could not move autosaved file %s to %s folder", f.getName(), deletedLayersDir.getName()));
-            boolean res3 = f.delete();
-
-            System.err.println("autosave debug (moveToDeletedLayersFolder) res3="+res3);
+            // we cannot move to deleted folder, so just try to delete it directly
+            if (!f.delete()) {
+                System.err.println(String.format("Warning: Could not delete backup file %s", f));
+            }
         }
         while (deletedLayers.size() > PROP_DELETED_LAYERS.get()) {
             File next = deletedLayers.remove();
-
-            System.err.println("autosave debug (moveToDeletedLayersFolder) next="+next);
-
-            boolean res4 = next.delete();
-
-            System.err.println("autosave debug (moveToDeletedLayersFolder) res4="+res4);
+            if (next == null) {
+                break;
+            }
+            if (!next.delete()) {
+                System.err.println(String.format("Warning: Could not delete archived backup file %s", next));
+            }
         }
     }
 
     public void dicardUnsavedLayers() {
-        List<File> ulfs = getUnsavedLayersFiles();
-        System.err.println("autosave debug (dicardUnsavedLayers) ulfs="+ulfs);
-        for (File f: ulfs) {
-            System.err.println("autosave debug (dicardUnsavedLayers) f="+f);
+        for (File f: getUnsavedLayersFiles()) {
             moveToDeletedLayersFolder(f);
         }
Index: /trunk/src/org/openstreetmap/josm/gui/MainApplication.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/MainApplication.java	(revision 3685)
+++ /trunk/src/org/openstreetmap/josm/gui/MainApplication.java	(revision 3686)
@@ -254,5 +254,4 @@
                     List<File> unsavedLayerFiles = autosaveTask.getUnsavedLayersFiles();
                     if (!unsavedLayerFiles.isEmpty()) {
-                        System.err.println("autosave debug: unsavedLayerFiles="+unsavedLayerFiles);
                         ExtendedDialog dialog = new ExtendedDialog(
                                 Main.parent,
@@ -266,11 +265,8 @@
                         dialog.setButtonIcons(new String[] {"ok", "cancel", "dialogs/remove"});
                         int selection = dialog.showDialog().getValue();
-                        System.err.println("autosave debug: user selection="+selection);
                         if (selection == 1) {
                             autosaveTask.recoverUnsavedLayers();
                         } else if (selection == 3) {
-                            System.err.println("autosave debug: discard autosaved layers");
                             autosaveTask.dicardUnsavedLayers();
-                            System.err.println("autosave debug: discard autosaved layers [DONE]");
                         }
                     }
