I didn't quite understand what you did here. Can you please explain? Is it absolutely necessary to add this hack just for curl?

Andi

At 04:58 PM 4/2/2003 +0000, Sterling Hughes wrote:
sterling Wed Apr 2 11:58:52 2003 EDT

  Modified files:
    /ZendEngine2        zend_list.c zend_list.h
    /php4/ext/curl      multi.c
  Log:
  add the ability for curl_multi_info to introspect the handles.

  # Zend commit doesn't break anything, so I'm committing it.  If anyone
  # has problems, just speak up. :)


Index: ZendEngine2/zend_list.c diff -u ZendEngine2/zend_list.c:1.57 ZendEngine2/zend_list.c:1.58 --- ZendEngine2/zend_list.c:1.57 Fri Jan 31 20:49:14 2003 +++ ZendEngine2/zend_list.c Wed Apr 2 11:58:52 2003 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */

-/* $Id: zend_list.c,v 1.57 2003/02/01 01:49:14 sniper Exp $ */
+/* $Id: zend_list.c,v 1.58 2003/04/02 16:58:52 sterling Exp $ */

/* resource lists */

@@ -43,6 +43,8 @@
        le.refcount=1;

index = zend_hash_next_free_element(&EG(regular_list));
+ le.id = index;
+
zend_hash_index_update(&EG(regular_list), index, (void *) &le, sizeof(zend_rsrc_list_entry), NULL);
return index;
}
@@ -77,7 +79,22 @@
}
}


+ZEND_API int zend_list_id_by_pointer(void *p, int type TSRMLS_DC)
+{
+ zend_rsrc_list_entry *le;
+ HashPosition pos;
+
+ for (zend_hash_internal_pointer_reset_ex(&EG(regular_list), &pos);
+ zend_hash_get_current_data_ex(&EG(regular_list), (void *) &le, &pos) == SUCCESS;
+ zend_hash_move_forward_ex(&EG(regular_list), &pos)) {
+ if (le->type == type && le->ptr == p) {
+ return le->id;
+ }
+ }


+       return -1;
+}
+
 ZEND_API int _zend_list_addref(int id TSRMLS_DC)
 {
        zend_rsrc_list_entry *le;
Index: ZendEngine2/zend_list.h
diff -u ZendEngine2/zend_list.h:1.42 ZendEngine2/zend_list.h:1.43
--- ZendEngine2/zend_list.h:1.42        Fri Jan 31 20:49:14 2003
+++ ZendEngine2/zend_list.h     Wed Apr  2 11:58:52 2003
@@ -17,7 +17,7 @@
    +----------------------------------------------------------------------+
 */

-/* $Id: zend_list.h,v 1.42 2003/02/01 01:49:14 sniper Exp $ */
+/* $Id: zend_list.h,v 1.43 2003/04/02 16:58:52 sterling Exp $ */

 #ifndef ZEND_LIST_H
 #define ZEND_LIST_H
@@ -34,6 +34,7 @@
        void *ptr;
        int type;
        int refcount;
+       int id;
 } zend_rsrc_list_entry;

 typedef void (*rsrc_dtor_func_t)(zend_rsrc_list_entry *rsrc TSRMLS_DC);
@@ -74,6 +75,7 @@
 ZEND_API int _zend_list_addref(int id TSRMLS_DC);
 ZEND_API int _zend_list_delete(int id TSRMLS_DC);
 ZEND_API void *_zend_list_find(int id, int *type TSRMLS_DC);
+ZEND_API int zend_list_id_by_pointer(void *p, int type TSRMLS_DC);

 #define zend_list_addref(id)           _zend_list_addref(id TSRMLS_CC)
 #define zend_list_delete(id)           _zend_list_delete(id TSRMLS_CC)
Index: php4/ext/curl/multi.c
diff -u php4/ext/curl/multi.c:1.7 php4/ext/curl/multi.c:1.8
--- php4/ext/curl/multi.c:1.7   Mon Mar 17 10:06:11 2003
+++ php4/ext/curl/multi.c       Wed Apr  2 11:58:52 2003
@@ -16,7 +16,7 @@
    +----------------------------------------------------------------------+
 */

-/* $Id: multi.c,v 1.7 2003/03/17 15:06:11 sniper Exp $ */
+/* $Id: multi.c,v 1.8 2003/04/02 16:58:52 sterling Exp $ */

#define ZEND_INCLUDE_FULL_WINDOWS_HEADERS

@@ -221,7 +221,7 @@
array_init(return_value);
add_assoc_long(return_value, "msg", tmp_msg->msg);
add_assoc_long(return_value, "result", tmp_msg->data.result);
-/* add_assoc_resource(return_value, "handle", _find_handle(tmp_msg->easy_handle)); */
+ add_assoc_resource(return_value, "handle", zend_list_id_by_pointer(tmp_msg->easy_handle, le_curl TSRMLS_CC));
add_assoc_string(return_value, "whatever", (char *) tmp_msg->data.whatever, 1);
}
/* }}} */




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


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



Reply via email to