--- upload.module	2005-09-29 19:33:19.000000000 +0200
+++ upload.module.new	2005-10-06 13:39:58.000000000 +0200
@@ -219,6 +219,8 @@ function upload_nodeapi(&$node, $op, $ar
           $file->list = 1;
           $file = file_save_upload($file);
           $node->files[$key] = $file;
+          $node->list[$key] = 1;
+          $node->description[$key] = $file->filename;
         }
       }
       break;
@@ -242,8 +244,8 @@ function upload_nodeapi(&$node, $op, $ar
         $previews = array();
 
         // Build list of attached files
-        foreach ($node->files as $file) {
-          if ($file->list) {
+        foreach ($node->files as $key => $file) {
+          if ($file->list && (!$node->remove || !$node->remove[$key])) {
             $rows[] = array(
               '<a href="'. check_url(($file->fid ? file_create_url($file->filepath) : url(file_create_filename($file->filename, file_create_path())))) .'">'. check_plain($file->description ? $file->description : $file->filename) .'</a>',
               format_size($file->filesize)
@@ -365,8 +367,8 @@ function upload_save($node) {
     }
   }
   if ($node->old_vid) {
-    foreach ((array)$node->remove as $key => $remove) {
-      if (!$remove) {
+    foreach ((array)$node->files as $key => $file) {
+      if (!$file->source && !$node->remove[$key]) {
         $file = db_fetch_object(db_query('SELECT * FROM {files} WHERE vid = %d AND fid = %d', $node->old_vid, $key));
         db_query("INSERT INTO {files} (fid, nid, vid, filename, filepath, filemime, filesize, list, description) VALUES (%d, %d, %d, '%s', '%s', '%s', %d, %d, '%s')",
                  $key, $node->nid, $node->vid, $file->filename, $file->filepath, $file->filemime, $file->filesize, $file->list, $file->description);
@@ -401,9 +403,9 @@ function _upload_form($node) {
   if (is_array($node->files)) {
     foreach ($node->files as $key => $file) {
       $rows[] = array(
-        form_checkbox('', "remove][$key", 1, $file->remove),
-        form_checkbox('', "list][$key", 1, $file->list),
-        form_textfield('', "description][$key", $file->description ? $file->description : $file->filename, 60, 256) ."<br /><small>". file_create_url(($file->fid ? $file->filepath : file_create_filename($file->filename, file_create_path()))) ."</small>",
+        form_checkbox('', "remove][$key", 1, $node->remove ? $node->remove[$key] : $file->remove),
+        form_checkbox('', "list][$key", 1, $node->list ? $node->list[$key] :  $file->list),
+        form_textfield('', "description][$key", $node->description ? $node->description[$key] : ($file->description ? $file->description : $file->filename), 60, 256) ."<br /><small>". file_create_url(($file->fid ? $file->filepath : file_create_filename($file->filename, file_create_path()))) ."</small>",
         format_size($file->filesize)
       );
     }
