johannes                Tue Nov 20 22:16:20 2007 UTC

  Added files:                 
    /php-src/ext/standard/tests/file    stream_supports_lock.phpt 

  Modified files:              
    /php-src/ext/standard       streamsfuncs.c streamsfuncs.h 
                                basic_functions.c 
  Log:
  Add stream_supports_lock() function (Benjamin Schulz)
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/streamsfuncs.c?r1=1.109&r2=1.110&diff_format=u
Index: php-src/ext/standard/streamsfuncs.c
diff -u php-src/ext/standard/streamsfuncs.c:1.109 
php-src/ext/standard/streamsfuncs.c:1.110
--- php-src/ext/standard/streamsfuncs.c:1.109   Thu Nov  8 13:29:38 2007
+++ php-src/ext/standard/streamsfuncs.c Tue Nov 20 22:16:19 2007
@@ -17,7 +17,7 @@
   +----------------------------------------------------------------------+
 */
 
-/* $Id: streamsfuncs.c,v 1.109 2007/11/08 13:29:38 dmitry Exp $ */
+/* $Id: streamsfuncs.c,v 1.110 2007/11/20 22:16:19 johannes Exp $ */
 
 #include "php.h"
 #include "php_globals.h"
@@ -1677,6 +1677,26 @@
 }
 /* }}} */
 
+/* {{{ proto bool stream_supports_lock(resource stream)
+   Tells wether the stream supports locking through flock(). */
+PHP_FUNCTION(stream_supports_lock)
+{
+       php_stream *stream;
+       zval *zsrc;
+
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zsrc) == 
FAILURE) {
+               RETURN_FALSE;
+       }
+
+       php_stream_from_zval(stream, &zsrc);
+
+       if (!php_stream_supports_lock(stream)) {
+               RETURN_FALSE;
+       }
+
+       RETURN_TRUE;
+}
+
 #ifdef HAVE_SHUTDOWN
 /* {{{ proto int stream_socket_shutdown(resource stream, int how) U
        causes all or part of a full-duplex connection on the socket associated
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/streamsfuncs.h?r1=1.20&r2=1.21&diff_format=u
Index: php-src/ext/standard/streamsfuncs.h
diff -u php-src/ext/standard/streamsfuncs.h:1.20 
php-src/ext/standard/streamsfuncs.h:1.21
--- php-src/ext/standard/streamsfuncs.h:1.20    Tue Jul  3 10:22:55 2007
+++ php-src/ext/standard/streamsfuncs.h Tue Nov 20 22:16:20 2007
@@ -16,7 +16,7 @@
   +----------------------------------------------------------------------+
 */
 
-/* $Id: streamsfuncs.h,v 1.20 2007/07/03 10:22:55 dmitry Exp $ */
+/* $Id: streamsfuncs.h,v 1.21 2007/11/20 22:16:20 johannes Exp $ */
 
 /* Flags for stream_socket_client */
 #define PHP_STREAM_CLIENT_PERSISTENT   1
@@ -58,6 +58,7 @@
 PHP_FUNCTION(stream_socket_pair);
 PHP_FUNCTION(stream_resolve_include_path);
 PHP_FUNCTION(stream_is_local);
+PHP_FUNCTION(stream_supports_lock);
 
 /*
  * Local variables:
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/basic_functions.c?r1=1.883&r2=1.884&diff_format=u
Index: php-src/ext/standard/basic_functions.c
diff -u php-src/ext/standard/basic_functions.c:1.883 
php-src/ext/standard/basic_functions.c:1.884
--- php-src/ext/standard/basic_functions.c:1.883        Thu Nov 15 13:11:48 2007
+++ php-src/ext/standard/basic_functions.c      Tue Nov 20 22:16:20 2007
@@ -17,7 +17,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: basic_functions.c,v 1.883 2007/11/15 13:11:48 bjori Exp $ */
+/* $Id: basic_functions.c,v 1.884 2007/11/20 22:16:20 johannes Exp $ */
 
 #include "php.h"
 #include "php_streams.h"
@@ -2310,6 +2310,11 @@
 ZEND_END_ARG_INFO()
 
 static
+ZEND_BEGIN_ARG_INFO_EX(arginfo_stream_supports_lock, 0, 0, 1)
+    ZEND_ARG_INFO(0, stream)
+ZEND_END_ARG_INFO()
+
+static
 ZEND_BEGIN_ARG_INFO_EX(arginfo_stream_select, 0, 0, 4)
        ZEND_ARG_INFO(1, read_streams) /* ARRAY_INFO(1, read_streams, 1) */
        ZEND_ARG_INFO(1, write_streams) /* ARRAY_INFO(1, write_streams, 1) */
@@ -3532,6 +3537,7 @@
 #endif
        PHP_FE(stream_copy_to_stream,                                           
                                        arginfo_stream_copy_to_stream)
        PHP_FE(stream_get_contents,                                             
                                                arginfo_stream_get_contents)
+       PHP_FE(stream_supports_lock,                                            
                                        arginfo_stream_supports_lock)
        PHP_FE(stream_resolve_include_path,                                     
                                        arginfo_stream_resolve_include_path)
        PHP_FE(fgetcsv,                                                         
                                                        arginfo_fgetcsv)
        PHP_FE(fputcsv,                                                         
                                                        arginfo_fputcsv)

http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/file/stream_supports_lock.phpt?view=markup&rev=1.1
Index: php-src/ext/standard/tests/file/stream_supports_lock.phpt
+++ php-src/ext/standard/tests/file/stream_supports_lock.phpt
--TEST--
stream_supports_lock
--FILE--
<?php
$fp = fopen(__FILE__, "r");
var_dump($fp);
var_dump(stream_supports_lock($fp));
fclose($fp);

$fp = fopen("file://" . __FILE__, "r");
var_dump($fp);
var_dump(stream_supports_lock($fp));
fclose($fp);

$fp = fopen("php://memory", "r");
var_dump($fp);
var_dump(stream_supports_lock($fp));
fclose($fp);

$fp = fopen('data://text/plain,foobar', 'r');
var_dump($fp);
var_dump(stream_supports_lock($fp));
fclose($fp);

$sock = stream_context_create();
var_dump($sock);
var_dump(stream_supports_lock($sock));

echo "Done\n";
?>
--EXPECTF--     
resource(%d) of type (stream)
bool(true)
resource(%d) of type (stream)
bool(true)
resource(%d) of type (stream)
bool(false)
resource(%d) of type (stream)
bool(false)
resource(%d) of type (stream-context)

Warning: stream_supports_lock(): supplied resource is not a valid stream 
resource in %s on line %d
bool(false)
Done

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

Reply via email to