tony2001                Wed Oct 27 07:58:50 2004 EDT

  Modified files:              
    /php-src/main/streams       plain_wrapper.c 
  Log:
  fix bug #30388 (rename across filesystems loses ownership and permission info)
  
  
http://cvs.php.net/diff.php/php-src/main/streams/plain_wrapper.c?r1=1.40&r2=1.41&ty=u
Index: php-src/main/streams/plain_wrapper.c
diff -u php-src/main/streams/plain_wrapper.c:1.40 
php-src/main/streams/plain_wrapper.c:1.41
--- php-src/main/streams/plain_wrapper.c:1.40   Sat Jul 31 06:09:25 2004
+++ php-src/main/streams/plain_wrapper.c        Wed Oct 27 07:58:49 2004
@@ -16,7 +16,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: plain_wrapper.c,v 1.40 2004/07/31 10:09:25 wez Exp $ */
+/* $Id: plain_wrapper.c,v 1.41 2004/10/27 11:58:49 tony2001 Exp $ */
 
 #include "php.h"
 #include "php_globals.h"
@@ -1021,10 +1021,33 @@
        if (ret == -1) {
 #ifdef EXDEV
                if (errno == EXDEV) {
+                       struct stat sb;
                        if (php_copy_file(url_from, url_to TSRMLS_CC) == SUCCESS) {
-                               VCWD_UNLINK(url_from);
-                               return 1;
+                               if (VCWD_STAT(url_from, &sb) == 0) {
+                                       if (VCWD_CHMOD(url_to, sb.st_mode)) {
+                                               if (errno == EPERM) {
+                                                       php_error_docref2(NULL 
TSRMLS_CC, url_from, url_to, E_WARNING, "%s", strerror(errno));
+                                                       VCWD_UNLINK(url_from);
+                                                       return 1;
+                                               }
+                                               php_error_docref2(NULL TSRMLS_CC, 
url_from, url_to, E_WARNING, "%s", strerror(errno));
+                                               return 0;
+                                       }
+                                       if (VCWD_CHOWN(url_to, sb.st_uid, sb.st_gid)) {
+                                               if (errno == EPERM) {
+                                                       php_error_docref2(NULL 
TSRMLS_CC, url_from, url_to, E_WARNING, "%s", strerror(errno));
+                                                       VCWD_UNLINK(url_from);
+                                                       return 1;
+                                               }
+                                               php_error_docref2(NULL TSRMLS_CC, 
url_from, url_to, E_WARNING, "%s", strerror(errno));
+                                               return 0;
+                                       }
+                                       VCWD_UNLINK(url_from);
+                                       return 1;
+                               }
                        }
+                       php_error_docref2(NULL TSRMLS_CC, url_from, url_to, E_WARNING, 
"%s", strerror(errno));
+                       return 0;
                }
 #endif
                php_error_docref2(NULL TSRMLS_CC, url_from, url_to, E_WARNING, "%s", 
strerror(errno));

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to