? Drupal-save-import-upload.diff
Index: includes/file.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/file.inc,v
retrieving revision 1.25.2.6
diff -u -u -r1.25.2.6 file.inc
--- includes/file.inc	8 Nov 2004 22:31:54 -0000	1.25.2.6
+++ includes/file.inc	27 Nov 2004 13:46:25 -0000
@@ -139,6 +139,7 @@
     $file->error = $_FILES["edit"]["error"][$source];
     $file->filesize = $_FILES["edit"]["size"][$source];
     $file->source = $source;
+    $file->isuploaded = TRUE;
     return $file;
   }
   else {
@@ -188,10 +189,12 @@
  *   - FILE_EXISTS_REPLACE - Replace the existing file
  *   - FILE_EXISTS_RENAME - Append _{incrementing number} until the filename is unique
  *   - FILE_EXISTS_ERROR - Do nothing and return false.
+ * @param $move A boolean value to signify a move. Use file_move() instead.
  * @return True for success, false for failure.
  */
-function file_copy(&$source, $dest = 0, $replace = FILE_EXISTS_RENAME) {
+function file_copy(&$source, $dest = 0, $replace = FILE_EXISTS_RENAME, $move = FALSE) {
   $dest = file_create_path($dest);
+  $path_original = is_object($source) ? $source->filepath : $source;
 
   $directory = $dest;
   $basename = file_check_path($directory);
@@ -203,12 +206,14 @@
   }
 
   // Process a file upload object.
+  $isuploaded = FALSE;
   if (is_object($source)) {
     $file = $source;
     $source = $file->filepath;
     if (!$basename) {
       $basename = $file->filename;
     }
+    $isuploaded = isset($file->isuploaded) && $file->isuploaded;
   }
 
   $source = realpath($source);
@@ -253,7 +258,13 @@
       }
     }
 
-    if (!@copy($source, $dest)) {
+    if ($isuploaded && $move) {
+      if (!@move_uploaded_file($source, $dest)) {
+        drupal_set_message(t('Uploaded file move failed.'), 'error');
+        return 0;
+      }
+    }
+    elseif (!@copy($source, $dest)) {
       drupal_set_message(t('File copy failed.'), 'error');
       return 0;
     }
@@ -267,6 +278,15 @@
   else {
     $source = $dest;
   }
+  
+  if (!$isuploaded && $move) {
+    $path_current = is_object($source) ? $source->filepath : $source;
+    if ($path_original == $path_current || file_delete($path_original)) {
+      return 1;
+    }
+    drupal_set_message(t('Removing original file failed.'), 'error');
+    return 0;
+  }
 
   return 1; // Everything went ok.
 }
@@ -289,18 +309,7 @@
  * @return True for success, false for failure.
  */
 function file_move(&$source, $dest = 0, $replace = FILE_EXISTS_RENAME) {
-
-  $path_original = is_object($source) ? $source->filepath : $source;
-
-  if (file_copy($source, $dest, $replace)) {
-    $path_current = is_object($source) ? $source->filepath : $source;
-
-    if ($path_original == $path_current || file_delete($path_original)) {
-      return 1;
-    }
-    drupal_set_message(t('Removing original file failed.'), 'error');
-  }
-  return 0;
+  return file_copy($source, $dest, $replace, TRUE);
 }
 
 function file_create_filename($basename, $directory) {
Index: modules/locale.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/locale.module,v
retrieving revision 1.113.2.3
diff -u -u -r1.113.2.3 locale.module
--- modules/locale.module	27 Nov 2004 09:53:43 -0000	1.113.2.3
+++ modules/locale.module	27 Nov 2004 13:46:27 -0000
@@ -377,10 +377,11 @@
       }
 
       // Now import strings into the language
-      $file = file_check_upload('file');
+      $file = file_save_upload('file');
       if ($ret = _locale_import_po($file, $edit['langcode'], $edit['mode']) == FALSE) {
         watchdog('error', t('Translation import of %filename failed.', array('%filename' => "<em>$file->filename</em>")));
       }
+      file_delete($file->filepath);
 
       drupal_goto('admin/locale');
       break;
