Req #26936 [Com]: Add an option to compile imap with imap-uw c-client linkage
| From: | jdolecek at NetBSD dot org | Date: | Sat, 25 Nov 2017 20:08:04 +0000 |
| Subject: | Req #26936 [Com]: Add an option to compile imap with imap-uw c-client linkage | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-212719@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=26936&edit=1
ID: 26936
Comment by: jdolecek at NetBSD dot org
Reported by: jdolecek at NetBSD dot org
Summary: Add an option to compile imap with imap-uw c-client
linkage
Status: Open
Type: Feature/Change Request
Package: IMAP related
Operating System: NetBSD 1.6 ZG
PHP Version: 4.3.4
Block user comment: N
Private report: N
New Comment:
I've uploaded up-to-date patch (as of 7.1, applies also for 7.2). It would be really nice to
have this option, would reduce amount of patches we keep for NetBSD pkgsrc package system.
Previous Comments:
------------------------------------------------------------------------
[2004-01-16 10:16:43] jdolecek at NetBSD dot org
Description:
------------
It would be nice if it would be possible to compile imap module directly with imap-uw linkage file,
so that all supported authentication modules and protocols would be available. Actually, patches
implementing this are in NetBSD pkgsrc system for some time, and I hope such option would be useful
for other systems too. Having this option integrated in main PHP tree would ease our package
maintenance, too :)
Note there is similar (now closed) PR #4136 with same
issue. The bug DB entry claims it was fixed in CVS,
I don't know why it was backed off.
Anyway, following patch adds configure option --with-imap-linkage.
This option makes php_imap.c #include directly c-client
linkage.c, instead of using list of hardcoded stuff.
Default is same as now, i.e. to NOT use linkage.c.
The --with-imap-linkage also disables the --with-kerberos check, since that is not needed in this
case.
Patch #1
-- cut here --
--- config.m4.orig 2003-10-03 07:25:35.000000000 +0200
+++ config.m4
@@ -54,6 +54,14 @@ AC_DEFUN(PHP_IMAP_TEST_BUILD, [
])
])
+dsl Must be before --with-kerberos, affects the check
+PHP_ARG_WITH(imap-linkage,use IMAP c-client linkage,
+[ --with-imap-linkage Use IMAP c-client linkage to determine supported ite
ms.])
+
+if test "$PHP_IMAP_LINKAGE" != "no"; then
+ AC_DEFINE(HAVE_IMAP_LINKAGE, 1, [ ])
+fi
+
AC_DEFUN(PHP_IMAP_KRB_CHK, [
AC_ARG_WITH(kerberos,
[ --with-kerberos[=DIR] IMAP: Include Kerberos support. DIR is the Kerbe
ros install dir.],[
@@ -90,7 +98,7 @@ AC_DEFUN(PHP_IMAP_KRB_CHK, [
PHP_ADD_LIBRARY(k5crypto, 1, IMAP_SHARED_LIBADD)
PHP_ADD_LIBRARY(com_err, 1, IMAP_SHARED_LIBADD)
PHP_ADD_INCLUDE($PHP_KERBEROS_DIR/include)
- else
+ elif test "$PHP_IMAP_LINKAGE" != "yes"; then
AC_EGREP_HEADER(auth_gss, $IMAP_INC_DIR/linkage.h, [
AC_MSG_ERROR([This c-client library is built with Kerberos support.
-- cut here --
Patch #2
-- cut here --
--- php_imap.c.orig 2003-09-04 09:48:30.000000000 +0200
+++ php_imap.c
@@ -408,6 +408,11 @@ PHP_MINIT_FUNCTION(imap)
ZEND_INIT_MODULE_GLOBALS(imap, php_imap_init_globals, NULL)
+/*
+ * Optionally use the installed c-client linkage.c to determine which drivers
+ * are authenticators are linked in. Otherwise use this fixed list.
+ */
+#ifndef HAVE_IMAP_LINKAGE
#ifndef PHP_WIN32
mail_link(&unixdriver); /* link in the unix driver */
mail_link(&mhdriver); /* link in the mh driver */
@@ -423,6 +428,10 @@ PHP_MINIT_FUNCTION(imap)
mail_link(&tenexdriver); /* link in the tenex driver */
mail_link(&mtxdriver); /* link in the mtx driver */
mail_link(&dummydriver); /* link in the dummy driver */
+#else /* HAVE_IMAP_LINKAGE */
+ /* link in the c-client mail and auth drivers */
+#include "linkage.c"
+#endif /* HAVE_IMAP_LINKAGE */
#ifndef PHP_WIN32
auth_link(&auth_log); /* link in the log authenticator */
-- cut here --
Reproduce code:
---------------
Code inspection - php_imap.c uses fixed list
instead of using imap-uw supplied linkage.c.
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=26936&edit=1