]> granicus.if.org Git - php/commitdiff
remove redundant check for file existence, add another unlink edgecase test
authorGreg Beaver <cellog@php.net>
Mon, 14 Apr 2008 18:03:57 +0000 (18:03 +0000)
committerGreg Beaver <cellog@php.net>
Mon, 14 Apr 2008 18:03:57 +0000 (18:03 +0000)
ext/phar/stream.c
ext/phar/tests/fopen_edgecases.phpt

index 08da8911e4eb5f349e7249217df58c5d8f14f51a..50a7968ebaa224e20bc9dd0545e8a9328b5e4360 100644 (file)
@@ -701,8 +701,10 @@ static int phar_wrapper_unlink(php_stream_wrapper *wrapper, char *url, int optio
        if (FAILURE == phar_get_entry_data(&idata, resource->host, strlen(resource->host), internal_file, strlen(internal_file), "r", 0, &error TSRMLS_CC)) {
                /* constraints of fp refcount were not met */
                if (error) {
-                       php_stream_wrapper_log_error(wrapper, options TSRMLS_CC, error);
+                       php_stream_wrapper_log_error(wrapper, options TSRMLS_CC, "unlink of \"%s\" failed: %s", url, error);
                        efree(error);
+               } else {
+                       php_stream_wrapper_log_error(wrapper, options TSRMLS_CC, "unlink of \"%s\" failed, file does not exist", url);
                }
                efree(internal_file);
                php_url_free(resource);
@@ -711,12 +713,6 @@ static int phar_wrapper_unlink(php_stream_wrapper *wrapper, char *url, int optio
        if (error) {
                efree(error);
        }
-       if (!idata) {
-               php_stream_wrapper_log_error(wrapper, options TSRMLS_CC, "phar error: \"%s\" is not a file in phar \"%s\", cannot unlink", internal_file, resource->host);
-               efree(internal_file);
-               php_url_free(resource);
-               return 0;
-       }
        if (idata->internal_file->fp_refcount > 1) {
                /* more than just our fp resource is open for this file */ 
                php_stream_wrapper_log_error(wrapper, options TSRMLS_CC, "phar error: \"%s\" in phar \"%s\", has open file pointers, cannot unlink", internal_file, resource->host);
index a868b71059a24b28d2bad7f412078984f902bf27..7117e79b4ee19515526b59de0e8528d553bef056 100644 (file)
@@ -53,6 +53,7 @@ unlink($pname2 . '/hi');
 unlink('phar://');
 unlink('phar://foo.phar');
 unlink('phar://test.phar/' . basename(__FILE__));
+unlink($pname . '/oops');
 ?>
 
 ===DONE===
@@ -101,4 +102,6 @@ Warning: unlink(): phar error: unlink failed in %sfopen_edgecases.php on line %d
 
 Warning: unlink(): phar error: "phar://test.phar/fopen_edgecases.php" cannot be unlinked, phar is extracted in plain map in %sfopen_edgecases.php on line %d
 
+Warning: unlink(): unlink of "phar://%sfopen_edgecases.phar.php/oops" failed, file does not exist in %sfopen_edgecases.php on line %d
+
 ===DONE===
\ No newline at end of file