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);
+ }
}
/* }}} */
|