phanto          Sat Nov 30 20:17:42 2002 EDT

  Modified files:              
    /php4/sapi/milter   php_milter.c 
  Log:
  added remaining functions, still untested, still having problems with config.m4
  
  
Index: php4/sapi/milter/php_milter.c
diff -u php4/sapi/milter/php_milter.c:1.1 php4/sapi/milter/php_milter.c:1.2
--- php4/sapi/milter/php_milter.c:1.1   Sat Nov 30 19:21:10 2002
+++ php4/sapi/milter/php_milter.c       Sat Nov 30 20:17:42 2002
@@ -139,7 +139,7 @@
 
        params[0] = &host;
        
-       call_user_function(CG(function_table), NULL, function_name, retval, 1, param 
TSRMLS_CC);
+       call_user_function(CG(function_table), NULL, function_name, retval, 1, params 
+TSRMLS_CC);
 
        if (Z_TYPE_P(retval) == IS_LONG) {
                return Z_LONG_P(retval);
@@ -151,7 +151,7 @@
 /* envelope sender filter */
 static sfsistat mlfi_envfrom(SMFICTX *ctx, char **argv)
 {
-       zval *function_name, *retval;
+       zval *function_name, *retval, *v, **params[1];
        TSRMLS_FETCH();
 
        /* set the milter context for possible use in API functions */
@@ -159,8 +159,19 @@
        
        /* call userland */
        ZVAL_INIT(function_name);
+       ZVAL_INIT(v);
+
        ZVAL_STRING(function_name, "milter_envelope_from", 1);
-       call_user_function(CG(function_table), NULL, function_name, retval, 0, NULL 
TSRMLS_CC);
+       array_init(v);
+
+       while (*argv) {
+               add_next_index_string(v, *argv, 1);
+               argv++;
+       }
+
+       params[0] = v;
+
+       call_user_function(CG(function_table), NULL, function_name, retval, 1, params 
+TSRMLS_CC);
 
        if (Z_TYPE_P(retval) == IS_LONG) {
                return Z_LONG_P(retval);
@@ -172,7 +183,7 @@
 /* envelope recipient filter */
 static sfsistat mlfi_envrcpt(SMFICTX *ctx, char **argv)
 {
-       zval *function_name, *retval;
+       zval *function_name, *retval, *v, **params[1];
        TSRMLS_FETCH();
 
        /* set the milter context for possible use in API functions */
@@ -180,8 +191,19 @@
        
        /* call userland */
        ZVAL_INIT(function_name);
+       ZVAL_INIT(v);
+
        ZVAL_STRING(function_name, "milter_envelope_recipient", 1);
-       call_user_function(CG(function_table), NULL, function_name, retval, 0, NULL 
TSRMLS_CC);
+       array_init(v);
+
+       while (*argv) {
+               add_next_index_string(v, *argv, 1);
+               argv++;
+       }
+
+       params[0] = v;
+       
+       call_user_function(CG(function_table), NULL, function_name, retval, 1, params 
+TSRMLS_CC);
 
        if (Z_TYPE_P(retval) == IS_LONG) {
                return Z_LONG_P(retval);
@@ -193,7 +215,7 @@
 /* header filter */
 static sfsistat mlfi_header(SMFICTX *ctx, char *headerf, char *headerv)
 {
-       zval *function_name, *retval;
+       zval *function_name, *retval, *f, *v, **params[2];
        TSRMLS_FETCH();
 
        /* set the milter context for possible use in API functions */
@@ -201,8 +223,17 @@
        
        /* call userland */
        ZVAL_INIT(function_name);
+       ZVAL_INIT(f);
+       ZVAL_INIT(v);
+       
        ZVAL_STRING(function_name, "milter_header", 1);
-       call_user_function(CG(function_table), NULL, function_name, retval, 0, NULL 
TSRMLS_CC);
+       ZVAL_STRING(f, headerf, 1);
+       ZVAL_STRING(v, headerv, 1);
+
+       params[0] = f;
+       params[1] = v;
+       
+       call_user_function(CG(function_table), NULL, function_name, retval, 2, params 
+TSRMLS_CC);
 
        if (Z_TYPE_P(retval) == IS_LONG) {
                return Z_LONG_P(retval);
@@ -235,7 +266,7 @@
 /* body block */
 static sfsistat mlfi_body(SMFICTX *ctx, u_char *bodyp, size_t len)
 {
-       zval *function_name, *retval;
+       zval *function_name, *retval, *p, **params[1];;
        TSRMLS_FETCH();
 
        /* set the milter context for possible use in API functions */
@@ -243,7 +274,13 @@
        
        /* call userland */
        ZVAL_INIT(function_name);
+       ZVAL_INIT(p);
+
        ZVAL_STRING(function_name, "milter_body", 1);
+       ZVAL_STRINGL(p, bodyp, len, 1);
+       
+       params[0] = p;
+       
        call_user_function(CG(function_table), NULL, function_name, retval, 0, NULL 
TSRMLS_CC);
 
        if (Z_TYPE_P(retval) == IS_LONG) {
@@ -342,37 +379,101 @@
  */
 PHP_FUNCTION(smfi_getsymval)
 {
-       // smfi_getsymval();
+       char *symname, *ret;
+       int len;
+
+    if (zend_parse_parameters(1 TSRMLS_CC, "s", &symname, &len) == SUCCESS) {
+               if ((ret = smfi_getsymval(MG(ctx), symname)) != NULL) {
+                       RETVAL_STRING(ret);
+               }
+       }
+
+       RETVAL_NULL();
 }
 
 PHP_FUNCTION(smfi_setreply)
 {
-       // smfi_setreply();
+       char *rcode, *xcode, *message;
+       int len;
+       
+       if (zend_parse_parameters(3 TSRMLS_CC, "sss", &rcode, &len, &xcode, &len, 
+&message, &len) == SUCCESS) {
+               if (smfi_setreply(MG(ctx), rcode, xcode, message) == MI_SUCCESS) {
+                       RETVAL_TRUE();
+               }
+       }
+       
+       RETVAL_FALSE();
 }
 
 PHP_FUNCTION(smfi_addheader)
 {
-       // smfi_addheader();
+       char *f, *v;
+       int len;
+       
+       if (zend_parse_parameters(2 TSRMLS_CC, "ss", &f, &len, &v, &len) == SUCCESS) {
+               if (smfi_addheader(MG(ctx), f, v) == MI_SUCCESS) {
+                       RETVAL_TRUE();
+               }
+       }
+       
+       RETVAL_FALSE();
 }
 
 PHP_FUNCTION(smfi_chgheader)
 {
-       // smfi_chgheader();
+       char *f, *v;
+       long idx;
+       int len;
+       
+       if (zend_parse_parameters(3 TSRMLS_CC, "sls", &f, &len, &idx, &v, &len) == 
+SUCCESS) {
+               if (smfi_chgheader(MG(ctx), f, idx, v) == MI_SUCCESS) {
+                       RETVAL_TRUE();
+               }
+       }
+       
+       RETVAL_FALSE();
 }
 
 PHP_FUNCTION(smfi_addrcpt)
 {
-       // smfi_addrcpt();
+       char *rcpt;
+       int len;
+       
+       if (zend_parse_parameters(1 TSRMLS_CC, "s", &rcpt, &len) == SUCCESS) {
+               if (smfi_addrcpt(MG(ctx), rcpt) == MI_SUCCESS) {
+                       RETVAL_TRUE();
+               }
+       }
+       
+       RETVAL_FALSE();
 }
 
 PHP_FUNCTION(smfi_delrcpt)
 {
-       // smfi_delrcpt();
+       char *rcpt;
+       int len;
+       
+       if (zend_parse_parameters(1 TSRMLS_CC, "s", &rcpt, &len) == SUCCESS) {
+               if (smfi_delrcpt(MG(ctx), rcpt) == MI_SUCCESS) {
+                       RETVAL_TRUE();
+               }
+       }
+       
+       RETVAL_FALSE();
 }
 
 PHP_FUNCTION(smfi_replacebody)
 {
-       // smfi_replacebody();
+       char *body;
+       int len;
+       
+       if (zend_parse_parameters(1 TSRMLS_CC, "s", &rcpt, &len) == SUCCESS) {
+               if (smfi_replacebody(MG(ctx), body, len) == MI_SUCCESS) {
+                       RETVAL_TRUE();
+               }
+       }
+       
+       RETVAL_FALSE();
 }
 
 PHP_MINIT_FUNCTION(milter)



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

Reply via email to