php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Return to Bug #64586
Patch fam-userdata.patch revision 2013-04-09 22:42 UTC by mi+php at aldan dot algebra dot com

Patch fam-userdata.patch for PECL Bug #64586

Patch version 2013-04-09 22:42 UTC

Return to Bug #64586 | Download this patch
Patch Revisions:

Developer: mi+php@aldan.algebra.com

--- fam.c	2013-04-04 21:21:38.000000000 -0400
+++ fam.c	2013-04-09 16:35:32.000000000 -0400
@@ -193,9 +193,10 @@
 	int argc = ZEND_NUM_ARGS();
 	int dirname_len;
-	zval *id;
+	zval *id, *userdata = NULL;
 	FAMRequest *fr;
 	FAMConnection *fc;
 	
-	if (zend_parse_parameters(argc TSRMLS_CC, "rs", &id, &dirname, &dirname_len) == FAILURE) 
+	if (zend_parse_parameters(argc TSRMLS_CC, "rs|z/", &id, &dirname,
+	    &dirname_len, &userdata) == FAILURE)
 		return;
 
@@ -205,8 +206,10 @@
 	fr = emalloc(sizeof *fr);
 
-	if (FAMMonitorDirectory(fc, dirname, fr, NULL) < 0) {
+	if (FAMMonitorDirectory(fc, dirname, fr, userdata) < 0) {
 		efree(fr);
 		RETURN_FALSE;
 	}
+	if (userdata)
+		Z_ADDREF_P(userdata);
 
 	ZEND_REGISTER_RESOURCE(return_value, fr, le_fam_r);
@@ -221,9 +224,10 @@
 	int argc = ZEND_NUM_ARGS();
 	int filename_len;
-	zval *id;
+	zval *id, *userdata = NULL;
 	FAMRequest *fr;
 	FAMConnection *fc;
 
-	if (zend_parse_parameters(argc TSRMLS_CC, "rs", &id, &filename, &filename_len) == FAILURE) 
+	if (zend_parse_parameters(argc TSRMLS_CC, "rs|z/", &id, &filename,
+	    &filename_len, &userdata) == FAILURE)
 		return;
 	
@@ -233,8 +237,10 @@
 	fr = emalloc(sizeof *fr);
 
-	if (FAMMonitorFile(fc, filename, fr, NULL) < 0) {
+	if (FAMMonitorFile(fc, filename, fr, userdata) < 0) {
 		efree(fr);
 		RETURN_FALSE;
 	}
+	if (userdata)
+		Z_ADDREF_P(userdata);
 
 	ZEND_REGISTER_RESOURCE(return_value, fr, le_fam_r);
@@ -251,10 +257,11 @@
 	int dirname_len;
 	int mask_len;
-	zval *id;
+	zval *id, *userdata = NULL;
 	long depth;
 	FAMRequest *fr;
 	FAMConnection *fc;
 
-	if (zend_parse_parameters(argc TSRMLS_CC, "rsls", &id, &dirname, &dirname_len, &depth, &mask, &mask_len) == FAILURE) 
+	if (zend_parse_parameters(argc TSRMLS_CC, "rsls|z/", &id, &dirname,
+	    &dirname_len, &depth, &mask, &mask_len, &userdata) == FAILURE)
 		return;
 	
@@ -264,8 +271,10 @@
 	fr = emalloc(sizeof *fr);
 
-	if (FAMMonitorCollection(fc, dirname, fr, NULL, depth, mask) < 0) {
+	if (FAMMonitorCollection(fc, dirname, fr, userdata, depth, mask) < 0) {
 		efree(fr);
 		RETURN_FALSE;
 	}
+	if (userdata)
+		Z_ADDREF_P(userdata);
 
 	ZEND_REGISTER_RESOURCE(return_value, fr, le_fam_r);
@@ -394,4 +403,8 @@
 	add_assoc_string(return_value, "filename", fe.filename, 1);
 	add_assoc_long(return_value, "code", fe.code);
+	if (fe.userdata) {
+		add_assoc_zval(return_value, "userdata", fe.userdata);
+		Z_ADDREF_P(fe.userdata);
+	}
 }
 /* }}} */
@@ -454,4 +454,8 @@
 	add_assoc_string(return_value, "filename", fe.filename, 1);
 	add_assoc_long(return_value, "code", fe.code);
+	if (fe.userdata) {
+		add_assoc_zval(return_value, "userdata", fe.userdata);
+		Z_ADDREF_P(fe.userdata);
+	}
 }
 /* }}} */
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Fri Apr 19 06:01:29 2024 UTC