]> granicus.if.org Git - php/commitdiff
- fix parameter order and return value check in windows (Venkat Raman Don, Pierre...
authorPierre Joye <pajoye@php.net>
Wed, 3 Jun 2009 07:56:53 +0000 (07:56 +0000)
committerPierre Joye <pajoye@php.net>
Wed, 3 Jun 2009 07:56:53 +0000 (07:56 +0000)
ext/standard/link_win32.c
ext/standard/tests/file/link_win32.phpt [new file with mode: 0644]

index 841da3ef38455403b00c57305ed7f840de10530f..b5caba36a34e50eb9e8dbb240aa429287cf1a02f 100644 (file)
@@ -231,7 +231,9 @@ PHP_FUNCTION(link)
        char source_p[MAXPATHLEN];
        char dest_p[MAXPATHLEN];
 
-       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", &topath, &topath_len, &frompath, &frompath_len) == FAILURE) {
+       /*First argument to link function is the target and hence should go to frompath
+         Second argument to link function is the link itself and hence should go to topath */
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", &frompath, &frompath_len, &topath, &topath_len) == FAILURE) {
                return;
        }
 
@@ -260,7 +262,8 @@ PHP_FUNCTION(link)
 #else 
        ret = CreateHardLinkA(dest_p, source_p, NULL);  
 #endif 
-       if (ret == -1) {
+
+       if (ret == 0) {
                php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", strerror(errno));
                RETURN_FALSE;
        }
diff --git a/ext/standard/tests/file/link_win32.phpt b/ext/standard/tests/file/link_win32.phpt
new file mode 100644 (file)
index 0000000..f2f9324
--- /dev/null
@@ -0,0 +1,26 @@
+--TEST--
+bug #<bugid> (link not working properly on Windows)
+--CREDITS--
+Venkat Raman Don
+--SKIPIF--
+<?php
+if(substr(PHP_OS, 0, 3) != 'WIN' ) {
+               die('skip windows only test');
+}
+?>
+--FILE--
+<?php
+$filename = __DIR__ . '\\a.php';
+$content = '<?php echo "Dummy Content.\n" ?>';
+file_put_contents($filename, $content);
+$linkname = __DIR__ . '\\a_link.php';
+link("$filename", "$linkname");
+var_dump(file_exists("$linkname"));
+$linkcontent = file_get_contents($linkname);
+var_dump($content == $linkcontent);
+unlink($filename);
+unlink($linkname);
+?>
+--EXPECT--
+bool(true)
+bool(true)