Hi, Attached, compatibility patch, for BSD/OS 4.x and at quick glance, also FreeBSD 4.6-RELEASE.
The reported error without patch is: /home/mdev/cvs/php4/ext/sysvmsg/sysvmsg.c: In function `zif_msg_receive': /home/mdev/cvs/php4/ext/sysvmsg/sysvmsg.c:271: sizeof applied to an incomplete type /home/mdev/cvs/php4/ext/sysvmsg/sysvmsg.c:287: dereferencing pointer to incomplete type /home/mdev/cvs/php4/ext/sysvmsg/sysvmsg.c:292: dereferencing pointer to incomplete type /home/mdev/cvs/php4/ext/sysvmsg/sysvmsg.c:304: dereferencing pointer to incomplete type /home/mdev/cvs/php4/ext/sysvmsg/sysvmsg.c: In function `zif_msg_send': /home/mdev/cvs/php4/ext/sysvmsg/sysvmsg.c:344: sizeof applied to an incomplete type /home/mdev/cvs/php4/ext/sysvmsg/sysvmsg.c:345: dereferencing pointer to incomplete type /home/mdev/cvs/php4/ext/sysvmsg/sysvmsg.c:350: sizeof applied to an incomplete type /home/mdev/cvs/php4/ext/sysvmsg/sysvmsg.c:351: dereferencing pointer to incomplete type /home/mdev/cvs/php4/ext/sysvmsg/sysvmsg.c:356: dereferencing pointer to incomplete type Further more, there is no MSG_EXCEPT, only MSG_NOERROR. Subsequently there's no kernel support, to get the first message on the queue, that has a different type than `msgtype'. I have now just ifdeffed it, but it probably should be defined and issue a warning, about this missing functionality - or ideally - the functionality should be coded in. -- Melvyn.
Index: ext/sysvmsg/config.m4 =================================================================== RCS file: /repository/php4/ext/sysvmsg/config.m4,v retrieving revision 1.1 diff -u -r1.1 config.m4 --- ext/sysvmsg/config.m4 25 Apr 2002 23:14:43 -0000 1.1 +++ ext/sysvmsg/config.m4 8 Sep 2002 01:23:27 -0000 @@ -4,6 +4,32 @@ [ --enable-sysvmsg Enable sysvmsg support]) if test "$PHP_SYSVMSG" != "no"; then + AC_MSG_CHECKING([whether sys/msg.h defines struct msgbuf or mymsg]) + AC_TRY_COMPILE( + [#include <sys/types.h> + #include <sys/ipc.h> + #include <sys/msg.h>], + [struct msgbuf *foo; + + foo = (struct msgbuf *) malloc(sizeof(struct msgbuf) +1); + return 1;], + [AC_MSG_RESULT(msgbuf)], + [AC_TRY_COMPILE( + [#include <sys/types.h> + #include <sys/ipc.h> + #include <sys/msg.h> + ], + [struct mymsg *foo; + + foo = (struct mymsg *) malloc(sizeof(struct mymsg) +1); + return 1; + ], + [AC_DEFINE(msgbuf, mymsg, [msgbuf is called mymsg]) + AC_MSG_RESULT(mymsg) + ], + [AC_MSG_ERROR([none. Cannot make sysvmsg module]) + ]) + ]) AC_DEFINE(HAVE_SYSVMSG, 1, [ ]) PHP_NEW_EXTENSION(sysvmsg, sysvmsg.c, $ext_shared) fi Index: ext/sysvmsg/sysvmsg.c =================================================================== RCS file: /repository/php4/ext/sysvmsg/sysvmsg.c,v retrieving revision 1.2 diff -u -r1.2 sysvmsg.c --- ext/sysvmsg/sysvmsg.c 29 Apr 2002 12:52:34 -0000 1.2 +++ ext/sysvmsg/sysvmsg.c 8 Sep 2002 01:23:27 -0000 @@ -94,7 +94,9 @@ le_sysvmsg = zend_register_list_destructors_ex(sysvmsg_release, NULL, "sysvmsg queue", module_number); REGISTER_LONG_CONSTANT("MSG_IPC_NOWAIT", IPC_NOWAIT, CONST_PERSISTENT|CONST_CS); REGISTER_LONG_CONSTANT("MSG_NOERROR", MSG_NOERROR, CONST_PERSISTENT|CONST_CS); +#ifdef MSG_EXCEPT REGISTER_LONG_CONSTANT("MSG_EXCEPT", MSG_EXCEPT, CONST_PERSISTENT|CONST_CS); +#endif return SUCCESS; } /* }}} */
-- PHP Development Mailing List <http://www.php.net/> To unsubscribe, visit: http://www.php.net/unsub.php