]> granicus.if.org Git - php/commitdiff
Expose stream_filters_hash so that it can be searched by stream_get_filters()
authorSara Golemon <pollita@php.net>
Mon, 6 Jan 2003 04:06:40 +0000 (04:06 +0000)
committerSara Golemon <pollita@php.net>
Mon, 6 Jan 2003 04:06:40 +0000 (04:06 +0000)
ext/standard/user_filters.c
main/php_streams.h
main/streams.c

index 8302527c45c77ec359b8deed64fe1d6996e8fc02..af035bddab38f85463e47af15f0c77777f5c1f5e 100644 (file)
@@ -417,6 +417,7 @@ PHP_FUNCTION(stream_get_filters)
 {
        char *filter_name;
        int key_flags, filter_name_len = 0;
+       HashTable *filters_hash;
 
        if (ZEND_NUM_ARGS() != 0) {
                WRONG_PARAM_COUNT;
@@ -424,10 +425,12 @@ PHP_FUNCTION(stream_get_filters)
 
        array_init(return_value);
 
-       if (BG(user_filter_map)) {
-               for(zend_hash_internal_pointer_reset(BG(user_filter_map));
-                       (key_flags = zend_hash_get_current_key_ex(BG(user_filter_map), &filter_name, &filter_name_len, NULL, 0, NULL)) != HASH_KEY_NON_EXISTANT;
-                       zend_hash_move_forward(BG(user_filter_map)))
+       filters_hash = php_get_stream_filters_hash();
+
+       if (filters_hash) {
+               for(zend_hash_internal_pointer_reset(filters_hash);
+                       (key_flags = zend_hash_get_current_key_ex(filters_hash, &filter_name, &filter_name_len, NULL, 0, NULL)) != HASH_KEY_NON_EXISTANT;
+                       zend_hash_move_forward(filters_hash))
                                if (key_flags == HASH_KEY_IS_STRING)
                                        add_next_index_stringl(return_value, filter_name, filter_name_len, 1);
        }
index c506b060f2ccae6c5edde85786b511b1088af503..783d84462d9563a129c3b70d1b26d33fb3e617bd 100755 (executable)
@@ -603,9 +603,9 @@ PHPAPI php_stream_context *php_stream_context_set(php_stream *stream, php_stream
                        (xmsg), (xcode), 0, 0, NULL TSRMLS_CC); } } while(0)
        
 
-/* Give other modules access to the url_stream_wrappers_hash */
+/* Give other modules access to the url_stream_wrappers_hash and stream_filters_hash */
 PHPAPI HashTable *php_stream_get_url_stream_wrappers_hash();
-
+PHPAPI HashTable *php_get_stream_filters_hash();
 #endif
 
 /*
index 74b95bf94bd2cfd7ceac3012a5be2cb8ad7ac9a9..7c8903c2b918af07aefd361df80889b7a5d8e8f4 100755 (executable)
@@ -387,6 +387,11 @@ fprintf(stderr, "stream_free: %s:%p[%s] preserve_handle=%d release_cast=%d remov
 /* {{{ filter API */
 static HashTable stream_filters_hash;
 
+PHPAPI HashTable *php_get_stream_filters_hash()
+{
+       return &stream_filters_hash;
+}
+
 PHPAPI int php_stream_filter_register_factory(const char *filterpattern, php_stream_filter_factory *factory TSRMLS_DC)
 {
        return zend_hash_add(&stream_filters_hash, (char*)filterpattern, strlen(filterpattern), factory, sizeof(*factory), NULL);