phanto Sat Nov 30 22:37:50 2002 EDT
Added files:
/php4/sapi/milter getopt.c
Modified files:
/php4/sapi/milter config.m4 Makefile.frag php_milter.c TODO
Log:
it finally compiles now
tests will follow tomorrow
Index: php4/sapi/milter/config.m4
diff -u php4/sapi/milter/config.m4:1.1 php4/sapi/milter/config.m4:1.2
--- php4/sapi/milter/config.m4:1.1 Sat Nov 30 19:21:10 2002
+++ php4/sapi/milter/config.m4 Sat Nov 30 22:37:49 2002
@@ -1,39 +1,32 @@
dnl
-dnl $Id: config.m4,v 1.1 2002/12/01 00:21:10 phanto Exp $
+dnl $Id: config.m4,v 1.2 2002/12/01 03:37:49 phanto Exp $
dnl
-AC_MSG_CHECKING(for milter support)
+AC_MSG_CHECKING(for Milter support)
AC_ARG_WITH(milter,
-[ --with-milter=DIR Build PHP as a Milter for use with Sendmail.],[
- PHP_MILTER=$withval
-],[
- PHP_MILTER=no
-])
-AC_MSG_RESULT($PHP_MILTER)
-
-if test "$PHP_MILTER" != "no"; then
- PHP_ADD_MAKEFILE_FRAGMENT($abs_srcdir/sapi/milter/Makefile.frag)
- PHP_BUILD_THREAD_SAFE
+[ --with-milter=DIR Build PHP as Milter application],[
+ if test "$withval" = "yes"; then
+ MILTERPATH=/usr
+ else
+ MILTERPATH=$withval
+ fi
+
SAPI_MILTER_PATH=sapi/milter/php-milter
PHP_SUBST(SAPI_MILTER_PATH)
-
- PHP_SELECT_SAPI(php-milter, program, php_milter.c,,'$(SAPI_MILTER_PATH)')
+ PHP_BUILD_THREAD_SAFE
+ PHP_ADD_MAKEFILE_FRAGMENT($abs_srcdir/sapi/milter/Makefile.frag)
- case $host_alias in
- *darwin*)
- BUILD_MILTER="\$(CC) \$(CFLAGS_CLEAN) \$(EXTRA_CFLAGS) \$(EXTRA_LDFLAGS)
\$(LDFLAGS) \$(NATIVE_RPATHS) \$(PHP_GLOBAL_OBJS:.lo=.o) \$(PHP_MILTER_OBJS:.lo=.o)
\$(PHP_FRAMEWORKS) \$(EXTRA_LIBS) \$(ZEND_EXTRA_LIBS) -o \$(SAPI_MILTER_PATH)"
- ;;
- *)
- BUILD_MILTER="\$(LIBTOOL) --mode=link \$(CC) -export-dynamic \$(CFLAGS_CLEAN)
\$(EXTRA_CFLAGS) \$(EXTRA_LDFLAGS) \$(LDFLAGS) \$(PHP_RPATHS) \$(PHP_GLOBAL_OBJS)
\$(PHP_MILTER_OBJS) \$(EXTRA_LIBS) \$(ZEND_EXTRA_LIBS) -o \$(SAPI_MILTER_PATH)"
- ;;
- esac
- INSTALL_MILTER="\$(INSTALL) -m 0755 \$(SAPI_MILTER_PATH)
\$(INSTALL_ROOT)\$(bindir)/php-milter"
- PHP_SUBST(BUILD_MILTER)
- PHP_SUBST(INSTALL_MILTER)
-else
- PHP_DISABLE_MILTER
-fi
+ PHP_SELECT_SAPI(milter, program, php_milter.c getopt.c,,'$(SAPI_MILTER_PATH)')
+ PHP_ADD_LIBRARY_WITH_PATH(milter, "$MILTERPATH/lib",)
+
+ BUILD_MILTER="\$(LIBTOOL) --mode=link \$(CC) -export-dynamic \$(CFLAGS_CLEAN)
+\$(EXTRA_CFLAGS) \$(EXTRA_LDFLAGS) \$(LDFLAGS) \$(PHP_RPATHS) \$(PHP_GLOBAL_OBJS)
+\$(PHP_SAPI_OBJS) \$(EXTRA_LIBS) \$(ZEND_EXTRA_LIBS) -o \$(SAPI_MILTER_PATH)"
-dnl ## Local Variables:
-dnl ## tab-width: 4
-dnl ## End:
+ INSTALL_IT="\$(INSTALL) -m 0755 \$(SAPI_MILTER_PATH) \$(bindir)/php-milter"
+ RESULT=yes
+ PHP_SUBST(BUILD_MILTER)
+ PHP_SUBST(FASTCGI_LIBADD)
+ PHP_SUBST(EXT_PROGRAM_LDADD)
+],[
+ RESULT=no
+])
+AC_MSG_RESULT($RES
\ No newline at end of file
Index: php4/sapi/milter/Makefile.frag
diff -u php4/sapi/milter/Makefile.frag:1.1 php4/sapi/milter/Makefile.frag:1.2
--- php4/sapi/milter/Makefile.frag:1.1 Sat Nov 30 19:21:10 2002
+++ php4/sapi/milter/Makefile.frag Sat Nov 30 22:37:49 2002
@@ -1,7 +1,2 @@
-$(SAPI_MILTER_PATH): $(PHP_GLOBAL_OBJS) $(PHP_MILTER_OBJS)
+$(SAPI_MILTER_PATH): $(PHP_GLOBAL_OBJS) $(PHP_SAPI_OBJS)
$(BUILD_MILTER)
-
-install-milter: $(SAPI_MILTER_PATH)
- @echo "Installing PHP Milter binary: $(INSTALL_ROOT)$(bindir)/"
- @$(INSTALL_CLI)
-
Index: php4/sapi/milter/php_milter.c
diff -u php4/sapi/milter/php_milter.c:1.3 php4/sapi/milter/php_milter.c:1.4
--- php4/sapi/milter/php_milter.c:1.3 Sat Nov 30 21:45:30 2002
+++ php4/sapi/milter/php_milter.c Sat Nov 30 22:37:49 2002
@@ -109,8 +109,8 @@
php_execute_script(&file_handle TSRMLS_CC);
/* call userland */
- ZVAL_INIT(function_name);
- ZVAL_INIT(param[0]);
+ INIT_PZVAL(function_name);
+ INIT_PZVAL(param[0]);
ZVAL_STRING(function_name, "milter_connect", 1);
ZVAL_STRING(param[0], hostname, 1);
@@ -118,7 +118,7 @@
call_user_function(CG(function_table), NULL, function_name, retval, 1, param
TSRMLS_CC);
if (Z_TYPE_P(retval) == IS_LONG) {
- return Z_LONG_P(retval);
+ return Z_LVAL_P(retval);
} else {
return SMFIS_CONTINUE;
}
@@ -134,8 +134,8 @@
MG(ctx) = ctx;
/* call userland */
- ZVAL_INIT(function_name);
- ZVAL_INIT(param[0]);
+ INIT_PZVAL(function_name);
+ INIT_PZVAL(param[0]);
ZVAL_STRING(function_name, "milter_helo", 1);
ZVAL_STRING(param[0], helohost, 1);
@@ -143,7 +143,7 @@
call_user_function(CG(function_table), NULL, function_name, retval, 1, param
TSRMLS_CC);
if (Z_TYPE_P(retval) == IS_LONG) {
- return Z_LONG_P(retval);
+ return Z_LVAL_P(retval);
} else {
return SMFIS_CONTINUE;
}
@@ -159,8 +159,8 @@
MG(ctx) = ctx;
/* call userland */
- ZVAL_INIT(function_name);
- ZVAL_INIT(param[0]);
+ INIT_PZVAL(function_name);
+ INIT_PZVAL(param[0]);
ZVAL_STRING(function_name, "milter_envelope_from", 1);
array_init(param[0]);
@@ -173,7 +173,7 @@
call_user_function(CG(function_table), NULL, function_name, retval, 1, param
TSRMLS_CC);
if (Z_TYPE_P(retval) == IS_LONG) {
- return Z_LONG_P(retval);
+ return Z_LVAL_P(retval);
} else {
return SMFIS_CONTINUE;
}
@@ -189,8 +189,8 @@
MG(ctx) = ctx;
/* call userland */
- ZVAL_INIT(function_name);
- ZVAL_INIT(param[0]);
+ INIT_PZVAL(function_name);
+ INIT_PZVAL(param[0]);
ZVAL_STRING(function_name, "milter_envelope_recipient", 1);
array_init(param[0]);
@@ -203,7 +203,7 @@
call_user_function(CG(function_table), NULL, function_name, retval, 1, param
TSRMLS_CC);
if (Z_TYPE_P(retval) == IS_LONG) {
- return Z_LONG_P(retval);
+ return Z_LVAL_P(retval);
} else {
return SMFIS_CONTINUE;
}
@@ -219,9 +219,9 @@
MG(ctx) = ctx;
/* call userland */
- ZVAL_INIT(function_name);
- ZVAL_INIT(param[0]);
- ZVAL_INIT(param[1]);
+ INIT_PZVAL(function_name);
+ INIT_PZVAL(param[0]);
+ INIT_PZVAL(param[1]);
ZVAL_STRING(function_name, "milter_header", 1);
ZVAL_STRING(param[0], headerf, 1);
@@ -230,7 +230,7 @@
call_user_function(CG(function_table), NULL, function_name, retval, 2, param
TSRMLS_CC);
if (Z_TYPE_P(retval) == IS_LONG) {
- return Z_LONG_P(retval);
+ return Z_LVAL_P(retval);
} else {
return SMFIS_CONTINUE;
}
@@ -246,12 +246,12 @@
MG(ctx) = ctx;
/* call userland */
- ZVAL_INIT(function_name);
+ INIT_PZVAL(function_name);
ZVAL_STRING(function_name, "milter_eoh", 1);
call_user_function(CG(function_table), NULL, function_name, retval, 0, NULL
TSRMLS_CC);
if (Z_TYPE_P(retval) == IS_LONG) {
- return Z_LONG_P(retval);
+ return Z_LVAL_P(retval);
} else {
return SMFIS_CONTINUE;
}
@@ -267,8 +267,8 @@
MG(ctx) = ctx;
/* call userland */
- ZVAL_INIT(function_name);
- ZVAL_INIT(param[0]);
+ INIT_PZVAL(function_name);
+ INIT_PZVAL(param[0]);
ZVAL_STRING(function_name, "milter_body", 1);
ZVAL_STRINGL(param[0], bodyp, len, 1);
@@ -276,7 +276,7 @@
call_user_function(CG(function_table), NULL, function_name, retval, 1, param
TSRMLS_CC);
if (Z_TYPE_P(retval) == IS_LONG) {
- return Z_LONG_P(retval);
+ return Z_LVAL_P(retval);
} else {
return SMFIS_CONTINUE;
}
@@ -292,12 +292,12 @@
MG(ctx) = ctx;
/* call userland */
- ZVAL_INIT(function_name);
+ INIT_PZVAL(function_name);
ZVAL_STRING(function_name, "milter_eom", 1);
call_user_function(CG(function_table), NULL, function_name, retval, 0, NULL
TSRMLS_CC);
if (Z_TYPE_P(retval) == IS_LONG) {
- return Z_LONG_P(retval);
+ return Z_LVAL_P(retval);
} else {
return SMFIS_CONTINUE;
}
@@ -313,12 +313,12 @@
MG(ctx) = ctx;
/* call userland */
- ZVAL_INIT(function_name);
+ INIT_PZVAL(function_name);
ZVAL_STRING(function_name, "milter_abort", 1);
call_user_function(CG(function_table), NULL, function_name, retval, 0, NULL
TSRMLS_CC);
if (Z_TYPE_P(retval) == IS_LONG) {
- return Z_LONG_P(retval);
+ return Z_LVAL_P(retval);
} else {
return SMFIS_CONTINUE;
}
@@ -335,12 +335,12 @@
MG(ctx) = ctx;
/* call userland */
- ZVAL_INIT(function_name);
+ INIT_PZVAL(function_name);
ZVAL_STRING(function_name, "milter_close", 1);
call_user_function(CG(function_table), NULL, function_name, retval, 0, NULL
TSRMLS_CC);
if (Z_TYPE_P(retval) == IS_LONG) {
- ret = Z_LONG_P(retval);
+ ret = Z_LVAL_P(retval);
}
php_request_shutdown((void *) 0);
@@ -627,7 +627,7 @@
" -e Generate extended information for
debugger/profiler\n"
" -f <file> Parse <file>.\n"
" -h This help\n"
- " -p path to create socket\n"
+ " -p <socket> path to create socket\n"
" -v Version number\n"
" -V <n> set debug level to n (1 or 2).\n"
" -z <file> Load Zend extension <file>.\n"
@@ -671,8 +671,7 @@
char *param_error=NULL;
/* end of temporary locals */
- TSRMLS_FETCH();
-
+ void ***tsrm_ls;
#ifdef HAVE_SIGNAL_H
#if defined(SIGPIPE) && defined(SIG_IGN)
@@ -704,6 +703,8 @@
milter_sapi_module.executable_location = argv[0];
+ tsrm_ls = ts_resource(0);
+
sapi_module.startup(&milter_sapi_module);
zend_first_try {
@@ -774,7 +775,7 @@
break;
case 'p': /* socket */
- sock = strdup(optarg);
+ sock = strdup(ap_php_optarg);
break;
case 'v': /* show php version & quit */
@@ -794,7 +795,7 @@
break;
case 'V': /* verbose */
- flag_debug = atoi(optarg);
+ flag_debug = atoi(ap_php_optarg);
break;
case 'z': /* load extension file */
@@ -886,7 +887,6 @@
fprintf(stderr, "smfi_register failed\n");
// exit_status = EX_UNAVAILABLE;
} else {
- debug(1, "smfi_register succeeded");
exit_status = smfi_main();
}
Index: php4/sapi/milter/TODO
diff -u php4/sapi/milter/TODO:1.1 php4/sapi/milter/TODO:1.2
--- php4/sapi/milter/TODO:1.1 Sat Nov 30 20:36:26 2002
+++ php4/sapi/milter/TODO Sat Nov 30 22:37:49 2002
@@ -1,5 +1,7 @@
add ini setting for smfi_settimeout()
set xxfi_flags via ini, SMFIF_CHGBODY can have a significant performance impact if set
+parse the file only once instead of per request
+search for libmilter
stdout to syslog
testing
documentation
Index: php4/sapi/milter/getopt.c
+++ php4/sapi/milter/getopt.c
/* Borrowed from Apache NT Port */
#include <stdio.h>
#include <string.h>
#include <assert.h>
#include <stdlib.h>
#include "php_getopt.h"
#define OPTERRCOLON (1)
#define OPTERRNF (2)
#define OPTERRARG (3)
char *ap_php_optarg;
int ap_php_optind = 1;
static int ap_php_opterr = 1;
static int
ap_php_optiserr(int argc, char * const *argv, int oint, const char *optstr,
int optchr, int err)
{
if (ap_php_opterr)
{
fprintf(stderr, "Error in argument %d, char %d: ", oint, optchr+1);
switch(err)
{
case OPTERRCOLON:
fprintf(stderr, ": in flags\n");
break;
case OPTERRNF:
fprintf(stderr, "option not found %c\n", argv[oint][optchr]);
break;
case OPTERRARG:
fprintf(stderr, "no argument for option %c\n", argv[oint][optchr]);
break;
default:
fprintf(stderr, "unknown\n");
break;
}
}
return('?');
}
int ap_php_getopt(int argc, char* const *argv, const char *optstr)
{
static int optchr = 0;
static int dash = 0; /* have already seen the - */
char *cp;
if (ap_php_optind >= argc)
return(EOF);
if (!dash && (argv[ap_php_optind][0] != '-'))
return(EOF);
if (!dash && (argv[ap_php_optind][0] == '-') && !argv[ap_php_optind][1])
{
/*
* use to specify stdin. Need to let pgm process this and
* the following args
*/
return(EOF);
}
if ((argv[ap_php_optind][0] == '-') && (argv[ap_php_optind][1] == '-'))
{
/* -- indicates end of args */
ap_php_optind++;
return(EOF);
}
if (!dash)
{
assert((argv[ap_php_optind][0] == '-') && argv[ap_php_optind][1]);
dash = 1;
optchr = 1;
}
/* Check if the guy tries to do a -: kind of flag */
assert(dash);
if (argv[ap_php_optind][optchr] == ':')
{
dash = 0;
ap_php_optind++;
return(ap_php_optiserr(argc, argv, ap_php_optind-1, optstr, optchr,
OPTERRCOLON));
}
if (!(cp = strchr(optstr, argv[ap_php_optind][optchr])))
{
int errind = ap_php_optind;
int errchr = optchr;
if (!argv[ap_php_optind][optchr+1])
{
dash = 0;
ap_php_optind++;
}
else
optchr++;
return(ap_php_optiserr(argc, argv, errind, optstr, errchr, OPTERRNF));
}
if (cp[1] == ':')
{
/* Check for cases where the value of the argument
is in the form -<arg> <val> or in the form -<arg><val> */
dash = 0;
if(!argv[ap_php_optind][2]) {
ap_php_optind++;
if (ap_php_optind == argc)
return(ap_php_optiserr(argc, argv, ap_php_optind-1, optstr, optchr,
OPTERRARG));
ap_php_optarg = argv[ap_php_optind++];
}
else
{
ap_php_optarg = &argv[ap_php_optind][2];
ap_php_optind++;
}
return(*cp);
}
else
{
if (!argv[ap_php_optind][optchr+1])
{
dash = 0;
ap_php_optind++;
}
else
optchr++;
return(*cp);
}
assert(0);
return(0); /* never reached */
}
#ifdef TESTGETOPT
int
main (int argc, char **argv)
{
int c;
extern char *ap_php_optarg;
extern int ap_php_optind;
int aflg = 0;
int bflg = 0;
int errflg = 0;
char *ofile = NULL;
while ((c = ap_php_getopt(argc, argv, "abo:")) != EOF)
switch (c) {
case 'a':
if (bflg)
errflg++;
else
aflg++;
break;
case 'b':
if (aflg)
errflg++;
else
bflg++;
break;
case 'o':
ofile = ap_php_optarg;
(void)printf("ofile = %s\n", ofile);
break;
case '?':
errflg++;
}
if (errflg) {
(void)fprintf(stderr,
"usage: cmd [-a|-b] [-o <filename>] files...\n");
exit (2);
}
for ( ; ap_php_optind < argc; ap_php_optind++)
(void)printf("%s\n", argv[ap_php_optind]);
return 0;
}
#endif /* TESTGETOPT */
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php