[PHP-DEV] patch for ext/session

2002-06-26 Thread Jani Taskinen


The attached patch fixes the problems when
you build session extension as shared and MM.

(--enable-session=shared --with-mm)

Also adds a list of registered save handlers
to the phpinfo() output.

Please test/review. It works fine here,
as shared and as static. Now the mm module is treated
like the other external handlers..

--Jani


? .libs
Index: config.m4
===
RCS file: /repository/php4/ext/session/config.m4,v
retrieving revision 1.18
diff -u -r1.18 config.m4
--- config.m4   4 May 2002 16:48:48 -   1.18
+++ config.m4   26 Jun 2002 17:39:59 -
 -8,6 +8,15 
 PHP_ARG_ENABLE(session, whether to enable PHP sessions,
 [  --disable-session   Disable session support], yes)
 
+if test $PHP_SESSION != no; then
+  AC_CHECK_FUNCS(pread pwrite)
+  PHP_MISSING_PWRITE_DECL
+  PHP_MISSING_PREAD_DECL
+  PHP_NEW_EXTENSION(session, session.c mod_files.c mod_mm.c mod_user.c, $ext_shared)
+  PHP_SUBST(SESSION_SHARED_LIBADD)
+  AC_DEFINE(HAVE_PHP_SESSION,1,[ ])
+fi
+
 if test $PHP_MM != no; then
   for i in /usr/local /usr $PHP_MM; do
 if test -f $i/include/mm.h; then
 -22,14 +31,4 
   PHP_ADD_LIBRARY_WITH_PATH(mm, $MM_DIR/lib, SESSION_SHARED_LIBADD)
   PHP_ADD_INCLUDE($MM_DIR/include)
   AC_DEFINE(HAVE_LIBMM, 1, [Whether you have libmm])
-  PHP_MODULE_PTR(phpext_ps_mm_ptr)
-fi
-
-if test $PHP_SESSION != no; then
-  AC_CHECK_FUNCS(pread pwrite)
-  PHP_MISSING_PWRITE_DECL
-  PHP_MISSING_PREAD_DECL
-  PHP_NEW_EXTENSION(session, session.c mod_files.c mod_mm.c mod_user.c, $ext_shared)
-  PHP_SUBST(SESSION_SHARED_LIBADD)
-  AC_DEFINE(HAVE_PHP_SESSION,1,[ ])
 fi
Index: mod_mm.c
===
RCS file: /repository/php4/ext/session/mod_mm.c,v
retrieving revision 1.38
diff -u -r1.38 mod_mm.c
--- mod_mm.c6 Mar 2002 12:25:01 -   1.38
+++ mod_mm.c26 Jun 2002 17:40:00 -
 -423,17 +423,6 
return SUCCESS;
 }
 
-zend_module_entry php_session_mm_module = {
-   STANDARD_MODULE_HEADER,
-   session mm,
-   NULL,
-   PHP_MINIT(ps_mm), PHP_MSHUTDOWN(ps_mm),
-   NULL, NULL,
-   NULL,
-NO_VERSION_YET,
-   STANDARD_MODULE_PROPERTIES
-};
-
 #endif
 
 /*
Index: mod_mm.h
===
RCS file: /repository/php4/ext/session/mod_mm.h,v
retrieving revision 1.6
diff -u -r1.6 mod_mm.h
--- mod_mm.h28 Feb 2002 08:26:40 -  1.6
+++ mod_mm.h26 Jun 2002 17:40:00 -
 -23,19 +23,13 
 
 #include php_session.h
 
+PHP_MINIT_FUNCTION(ps_mm);
+PHP_MSHUTDOWN_FUNCTION(ps_mm);
+
 extern ps_module ps_mod_mm;
 #define ps_mm_ptr ps_mod_mm
 
-extern zend_module_entry php_session_mm_module;
-#define phpext_ps_mm_ptr php_session_mm_module
-
 PS_FUNCS(mm);
 
-#else
-
-#define ps_mm_ptr NULL
-#define phpext_ps_mm_ptr NULL
-
 #endif
-
 #endif
Index: session.c
===
RCS file: /repository/php4/ext/session/session.c,v
retrieving revision 1.309
diff -u -r1.309 session.c
--- session.c   12 Jun 2002 08:18:36 -  1.309
+++ session.c   26 Jun 2002 17:40:01 -
 -50,6 +50,10 
 #include mod_files.h
 #include mod_user.h
 
+#ifdef HAVE_LIBMM
+#include mod_mm.h
+#endif
+
 /* {{{ session_functions[]
  */
 function_entry session_functions[] = {
 -1459,21 +1463,50 
zend_register_auto_global(_SESSION, sizeof(_SESSION)-1 TSRMLS_CC);
 
PS(module_number) = module_number; /* if we really need this var we need to 
init it in zts mode as well! */
+
REGISTER_INI_ENTRIES();
+
+#ifdef HAVE_LIBMM
+   PHP_MINIT(ps_mm) (INIT_FUNC_ARGS_PASSTHRU);
+#endif
return SUCCESS;
 }
 
 PHP_MSHUTDOWN_FUNCTION(session)
 {
UNREGISTER_INI_ENTRIES();
+
+#ifdef HAVE_LIBMM
+   PHP_MSHUTDOWN(ps_mm) (SHUTDOWN_FUNC_ARGS_PASSTHRU);
+#endif
+
return SUCCESS;
 }
 
 
 PHP_MINFO_FUNCTION(session)
 {
+   ps_module **mod;
+   smart_str handlers = {0};
+   int i;
+   
+   for (i = 0, mod = ps_modules; i  MAX_MODULES; i++, mod++) {
+   if (*mod  (*mod)-name) {
+   smart_str_appends(handlers, (*mod)-name);
+   smart_str_appendc(handlers, ' ');
+   }
+   }
+   
php_info_print_table_start();
php_info_print_table_row(2, Session Support, enabled );
+
+   if (handlers.c) {
+   smart_str_0(handlers);
+   php_info_print_table_row(2, Registered save handlers, handlers.c);
+   smart_str_free(handlers);
+   } else {
+   php_info_print_table_row(2, Registered save handlers, none);
+   }
php_info_print_table_end();
 
DISPLAY_INI_ENTRIES();


-- 
PHP Development 

Re: [PHP-DEV] patch for ext/session

2002-06-26 Thread Jani Taskinen

On Wed, 26 Jun 2002, Brian France wrote:

Does this fix the problem with configure?

http://bugs.php.net/bug.php?id=17977

yes..

I take it if session is shared then mm is shared as well, right?

It makes the mm module not to be an extension of itself..
which it really isn't, as it's only a module for session.

Short answer: Yes. --with-mm=shared is same as --with-mm

Also will this --enable-session=shared --without-mm still allow 
session to be shared?

Oh..didn't test that one, but yes, it should still allow
it to be shared. (actually..I think that was fixed by Sascha
a while ago in CVS)

--Jani


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




Re: [PHP-DEV] patch for ext/session

2002-06-26 Thread Brian France

Great!

Once the patch is checked in feel free to close the bug report or let 
me know and I will close it.

Thanks!

Brian

At 9:59 PM +0300 6/26/02, Jani Taskinen wrote:
On Wed, 26 Jun 2002, Brian France wrote:

Does this fix the problem with configure?

http://bugs.php.net/bug.php?id=17977

 yes..

I take it if session is shared then mm is shared as well, right?

 It makes the mm module not to be an extension of itself..
 which it really isn't, as it's only a module for session.

 Short answer: Yes. --with-mm=shared is same as --with-mm

Also will this --enable-session=shared --without-mm still allow
session to be shared?

 Oh..didn't test that one, but yes, it should still allow
 it to be shared. (actually..I think that was fixed by Sascha
 a while ago in CVS)

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