Merged in remicollet/ext-ircclient/issue-030 (pull request #1)
authorMichael Wallner <mike@php.net>
Fri, 10 Jan 2014 13:31:45 +0000 (14:31 +0100)
committerMichael Wallner <mike@php.net>
Fri, 10 Jan 2014 13:31:45 +0000 (14:31 +0100)
Various bug fixes on v 0.3.0

config.m4
php_ircclient.c

index c8940daae46c74abe80513a078bf19a7835619c0..d238bbe098f169209c56e19602d4295d1233e8a8 100644 (file)
--- a/config.m4
+++ b/config.m4
@@ -5,20 +5,25 @@ if test "$PHP_IRCCLIENT" != "no"; then
        AC_PROG_EGREP
        AC_PROG_SED
        
-       AC_MSG_CHECKING([for libircclient/libircclient.h])
+       AC_MSG_CHECKING([for libircclient.h])
        for d in $PHP_IRCCLIENT /usr /usr/local /opt; do
-               if test -f $d/include/libircclient/libircclient.h; then
+               if test -f $d/include/libircclient.h; then
+                       IRCCLIENT_INCDIR=$d/include
+                       IRCCLIENT_LIBDIR=$d/$PHP_LIBDIR
                        AC_MSG_RESULT([found in $d])
-                       IRCCLIENT_DIR=$d
+               elif test -f $d/include/libircclient/libircclient.h; then
+                       AC_MSG_RESULT([found in $d])
+                       IRCCLIENT_INCDIR=$d/include/libircclient
+                       IRCCLIENT_LIBDIR=$d/$PHP_LIBDIR
                        break
                fi
        done
-       if test "x$IRCCLIENT_DIR" = "x"; then
+       if test "x$IRCCLIENT_INCDIR" = "x"; then
                AC_MSG_ERROR([not found])
        fi
-       if test -f "$IRCCLIENT_DIR/include/libircclient/libirc_params.h"; then
-               PHP_IRCCLIENT_LIBIRCCLIENT_VERSION_HIGH=`$EGREP "define LIBIRC_VERSION_HIGH" $IRCCLIENT_DIR/include/libircclient/libirc_params.h | $SED -e 's/[[^0-9\x]]//g'`
-               PHP_IRCCLIENT_LIBIRCCLIENT_VERSION_LOW=`$EGREP "define LIBIRC_VERSION_LOW" $IRCCLIENT_DIR/include/libircclient/libirc_params.h | $SED -e 's/[[^0-9\x]]//g'`
+       if test -f "$IRCCLIENT_INCDIR/libirc_params.h"; then
+               PHP_IRCCLIENT_LIBIRCCLIENT_VERSION_HIGH=`$EGREP "define LIBIRC_VERSION_HIGH" $IRCCLIENT_INCDIR/libirc_params.h | $SED -e 's/[[^0-9\x]]//g'`
+               PHP_IRCCLIENT_LIBIRCCLIENT_VERSION_LOW=`$EGREP "define LIBIRC_VERSION_LOW" $IRCCLIENT_INCDIR/libirc_params.h | $SED -e 's/[[^0-9\x]]//g'`
        else
                PHP_IRCCLIENT_LIBIRCCLIENT_VERSION_HIGH=0
                PHP_IRCCLIENT_LIBIRCCLIENT_VERSION_LOW=0
@@ -26,20 +31,20 @@ if test "$PHP_IRCCLIENT" != "no"; then
        AC_DEFINE_UNQUOTED([PHP_IRCCLIENT_LIBIRCCLIENT_VERSION_HIGH], [$PHP_IRCCLIENT_LIBIRCCLIENT_VERSION_HIGH], [ ])
        AC_DEFINE_UNQUOTED([PHP_IRCCLIENT_LIBIRCCLIENT_VERSION_LOW], [$PHP_IRCCLIENT_LIBIRCCLIENT_VERSION_LOW], [ ])
        
-       PHP_ADD_INCLUDE($IRCCLIENT_DIR/include)
+       PHP_ADD_INCLUDE($IRCCLIENT_INCDIR)
        AC_CHECK_MEMBER([irc_callbacks_t.event_channel_notice], [
                AC_DEFINE(HAVE_LIBIRCCLIENT_EVENT_CHANNEL_NOTICE, 1, [ ])
        ], [], [
-               [#include <libircclient/libircclient.h>]
+               [#include <libircclient.h>]
        ])
        PHP_CHECK_LIBRARY(ircclient, irc_create_session,
        [
-               PHP_ADD_LIBRARY_WITH_PATH(ircclient, $IRCCLIENT_DIR/lib, IRCCLIENT_SHARED_LIBADD)
+               PHP_ADD_LIBRARY_WITH_PATH(ircclient, $IRCCLIENT_LIBDIR, IRCCLIENT_SHARED_LIBADD)
                AC_DEFINE(HAVE_LIBIRCCLIENT,1,[ ])
        ],[
                AC_MSG_ERROR([libircclient not found])
        ],[
-               -L$IRCCLIENT_DIR/lib -lm
+               -L$IRCCLIENT_LIBDIR -lm
        ])
        PHP_SUBST([IRCCLIENT_SHARED_LIBADD])
        PHP_NEW_EXTENSION([ircclient], [php_ircclient.c], [$ext_shared])
index e7134a124be3a5bd415c4f2e348b1f26c737f249..022d2981a9384a48428a7dcebe671b026fd88e25 100644 (file)
@@ -19,6 +19,7 @@
 #include <main/php_network.h>
 #include <ext/standard/php_string.h>
 #include <ext/standard/info.h>
+#include <ext/standard/basic_functions.h>
 
 #include <Zend/zend.h>
 #include <Zend/zend_constants.h>
@@ -32,7 +33,7 @@
 
 #include <errno.h>
 #include <ctype.h>
-#include <libircclient/libircclient.h>
+#include <libircclient.h>
 
 PHP_FUNCTION(parse_origin)
 {
@@ -418,7 +419,7 @@ PHP_METHOD(Session, doConnect)
        if (SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "bs|ls!", &ip6, &server_str, &server_len, &port, &passwd_str, &passwd_len)) {
                php_ircclient_session_object_t *obj = zend_object_store_get_object(getThis() TSRMLS_CC);
                char *nick = NULL, *user = NULL, *real = NULL;
-               zval *znick, *zuser, *zreal, *tmp;
+               zval *znick, *zuser, *zreal;
 
                znick = zend_read_property(php_ircclient_session_class_entry, getThis(), ZEND_STRL("nick"), 0 TSRMLS_CC);
                SEPARATE_ARG_IF_REF(znick);
@@ -1420,8 +1421,12 @@ PHP_MINFO_FUNCTION(ircclient)
 
        irc_get_version(&high, &low);
        spprintf(&version[1], 0, "%u.%u", high, low);
+#if PHP_IPHP_IRCCLIENT_LIBIRCCLIENT_VERSION_HIGH
        spprintf(&version[0], 0, "%u.%u", PHP_IRCCLIENT_LIBIRCCLIENT_VERSION_HIGH, PHP_IRCCLIENT_LIBIRCCLIENT_VERSION_LOW);
-
+#else
+       /* version <= 1.6 doesn't exposed its version */
+       spprintf(&version[0], 0, "-");
+#endif
        php_info_print_table_start();
        php_info_print_table_header(2, "IRC client support", "enabled");
        php_info_print_table_row(2, "Version", PHP_IRCCLIENT_VERSION);