From bf5e5a5ba7408165918eb7d2398680ff245a48bb Mon Sep 17 00:00:00 2001
From: Andreas Gohr <andi@splitbrain.org>
Date: Sat, 21 Jan 2006 20:45:39 +0100
Subject: [PATCH] Windows compatible rename #683

darcs-hash:20060121194539-7ad00-c880c0980513a3ccb45253c02e1a02d4cbdd6009.gz
---
 inc/JpegMeta.php |  2 +-
 inc/io.php       | 18 ++++++++++++++++++
 2 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/inc/JpegMeta.php b/inc/JpegMeta.php
index af7d27f96..eb9ab8627 100644
--- a/inc/JpegMeta.php
+++ b/inc/JpegMeta.php
@@ -841,7 +841,7 @@ class JpegMeta
             $tmpName = tempnam(dirname($this->_fileName),'_metatemp_');
             $this->_writeJPEG($tmpName);
             if (@file_exists($tmpName)) {
-                return rename($tmpName, $this->_fileName);
+                return io_rename($tmpName, $this->_fileName);
             }
         } else {
             return $this->_writeJPEG($fileName);
diff --git a/inc/io.php b/inc/io.php
index ff318bd67..9c02e87c6 100644
--- a/inc/io.php
+++ b/inc/io.php
@@ -318,6 +318,24 @@ function io_download($url,$file,$useAttachment=false,$defaultName=''){
   return true;
 }
 
+/**
+ * Windows copatible rename
+ *
+ * rename() can not overwrite existing files on Windows
+ * this function will use copy/unlink instead
+ */
+function io_rename($from,$to){
+  if(!@rename($from,$to)){
+    if(@copy($from,$to)){
+      @unlink($from);
+      return true;
+    }
+    return false;
+  }
+  return true;
+}
+
+
 /**
  * Runs an external command and returns it's output as string
  *
-- 
GitLab