Imported Upstream version 0.10.1 upstream/0.10.1
authorGerfried Fuchs <rhonda@debian.org>
Tue, 22 Feb 2011 10:09:12 +0000 (11:09 +0100)
committerGerfried Fuchs <rhonda@debian.org>
Tue, 22 Feb 2011 10:09:12 +0000 (11:09 +0100)
40 files changed:
ChangeLog
ChangeLog.api
Makefile.in
TODO
aclocal.m4
configure
configure.ac
doc/HOWTO_modules.txt
doc/Makefile.in
doc/guide/Makefile.in
doc/help/Makefile.in
doc/help/de/hlp_say_to.txt
doc/help/en/hlp_say_to.txt
doc/help/fr/hlp_say_to.txt
doc/mcabber.1
doc/mcabber.1.html
doc/mcabber.1.txt
mcabber/Makefile.in
mcabber/commands.c
mcabber/compl.c
mcabber/compl.h
mcabber/events.c
mcabber/fifo.c
mcabber/help.c
mcabber/hooks.c
mcabber/hooks.h
mcabber/main.c
mcabber/screen.c
mcabber/utils.c
mcabber/xmpp.c
mcabber/xmpp.h
mcabber/xmpp_defines.h
mcabber/xmpp_helper.c
mcabber/xmpp_iq.c
mcabber/xmpp_iqrequest.c
mcabber/xmpp_muc.c
mcabberrc.example
modules/Makefile.in
modules/beep/Makefile.in
modules/xttitle/Makefile.in

index f2552d8..56cb41c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,21 @@
+mcabber (0.10.1)
+
+ * Display a warning when the configuration file hasn't been updated
+ * Display better messages when connecting to the XMPP server
+ * [MUC] Do not block MUC private messages when 'block_unsubscribed' is set
+ * [MUC] Fix handling of empty room topic
+ * [MUC] Add caps to presence when joining a MUC room
+ * New option 'completion_ignore_case' - completion is now case sensitive
+   by default
+ * Display module API information in the output of /version
+ * Increase the number of available categories for completions
+ * [Hooks] New "hook-subscription" hook, update to the message-in hooks
+   (See ChangeLog.api)
+ * Many misc. bugfixes
+ * Minor documentation update
+
+ -- Mikael, 2010-12-01
+
 mcabber (0.10.0)
 
  * Switch to the Loudmouth library (franky)
index 6ef93cc..469afa7 100644 (file)
@@ -1,3 +1,25 @@
+dev (16)
+
+ * Stable api 0.10.1:1
+ * Add "error" argument to the message-in hooks
+ * Changeset 3cabdacf58df
+
+  -- Mikael Berthe, 2010-05-16
+
+dev (15)
+
+ * Add "hook-subscription" hook
+ * Changeset 5d37cee8c6c6
+
+  -- Mikael Berthe, 2010-04-17
+
+dev (14)
+
+ * Add "delayed" argument to the message-in hooks
+ * Changeset ea3f9b4f3558
+
+  -- Mikael Berthe, 2010-04-11
+
 dev (13)
 
  * Stable api 0.10.0:1
index 03c2157..580ba5a 100644 (file)
@@ -210,6 +210,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKGLIB_DIR = @PKGLIB_DIR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
diff --git a/TODO b/TODO
index ad77ee6..f5207b9 100644 (file)
--- a/TODO
+++ b/TODO
@@ -4,9 +4,11 @@ TODO:
 Please see the issue tracker for other features/bugs:
 http://bitbucket.org/McKael/mcabber-crew/issues/?status=new&status=open
 
+The following list isn't necessarily up-to-date:
+
 * Improve the completion system
 * Enable /roster search for offline (hidden) buddies (hidden groups, etc.)
-* Publish personal information
+* Publish personal information (a module exists)
 * MUC: advanced settings for room creation
 * MUC: ignore patterns
 * "Offline roster" (when disconnected)
@@ -18,14 +20,11 @@ http://bitbucket.org/McKael/mcabber-crew/issues/?status=new&status=open
   See XEP-0191: Simple Communications Blocking
 * Human-readable key binding config?
 * Possibility to hide log window(?)
-* Copy highlighted messages to the [status] window (or another one)
 * Improve /info, esp. in MUC rooms
-* Update the terminal's title
-  (Can this be done from an event script?)
-* Message filters
-* Data Forms
+* Data Forms (a module exists)
 
 * File transfer!!
+  Cf. GSoC 2010: http://github.com/alkino/mcabber-jingle/
 
 * Commands:
 
index 1dc9c82..9b7c3eb 100644 (file)
@@ -13,8 +13,8 @@
 
 m4_ifndef([AC_AUTOCONF_VERSION],
   [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.65],,
-[m4_warning([this file was generated for autoconf 2.65.
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.67],,
+[m4_warning([this file was generated for autoconf 2.67.
 You have another version of autoconf.  It may work, but is not guaranteed to.
 If you have problems, you may need to regenerate the build system entirely.
 To do so, use the procedure documented by the package, typically `autoreconf'.])])
@@ -114,9 +114,8 @@ main ()
 {
   int major, minor, micro;
   char *tmp_version;
-  int ignored;
 
-  ignored = system ("touch conf.glibtest");
+  fclose (fopen ("conf.glibtest", "w"));
 
   /* HP/UX 9 (%@#!) writes to sscanf strings */
   tmp_version = g_strdup("$min_glib_version");
@@ -785,6 +784,7 @@ AC_SUBST(LIBOTR_LIBS)
 
 
 # pkg.m4 - Macros to locate and utilise pkg-config.            -*- Autoconf -*-
+# serial 1 (pkg-config-0.24)
 # 
 # Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
 #
@@ -812,7 +812,10 @@ AC_SUBST(LIBOTR_LIBS)
 AC_DEFUN([PKG_PROG_PKG_CONFIG],
 [m4_pattern_forbid([^_?PKG_[A-Z_]+$])
 m4_pattern_allow([^PKG_CONFIG(_PATH)?$])
-AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])dnl
+AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])
+AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path])
+AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path])
+
 if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
        AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
 fi
@@ -825,7 +828,6 @@ if test -n "$PKG_CONFIG"; then
                AC_MSG_RESULT([no])
                PKG_CONFIG=""
        fi
-               
 fi[]dnl
 ])# PKG_PROG_PKG_CONFIG
 
@@ -834,34 +836,31 @@ fi[]dnl
 # Check to see whether a particular set of modules exists.  Similar
 # to PKG_CHECK_MODULES(), but does not set variables or print errors.
 #
-#
-# Similar to PKG_CHECK_MODULES, make sure that the first instance of
-# this or PKG_CHECK_MODULES is called, or make sure to call
-# PKG_CHECK_EXISTS manually
+# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+# only at the first occurence in configure.ac, so if the first place
+# it's called might be skipped (such as if it is within an "if", you
+# have to call PKG_CHECK_EXISTS manually
 # --------------------------------------------------------------
 AC_DEFUN([PKG_CHECK_EXISTS],
 [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
 if test -n "$PKG_CONFIG" && \
     AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
-  m4_ifval([$2], [$2], [:])
+  m4_default([$2], [:])
 m4_ifvaln([$3], [else
   $3])dnl
 fi])
 
-
 # _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
 # ---------------------------------------------
 m4_define([_PKG_CONFIG],
-[if test -n "$PKG_CONFIG"; then
-    if test -n "$$1"; then
-        pkg_cv_[]$1="$$1"
-    else
-        PKG_CHECK_EXISTS([$3],
-                         [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`],
-                        [pkg_failed=yes])
-    fi
-else
-       pkg_failed=untried
+[if test -n "$$1"; then
+    pkg_cv_[]$1="$$1"
+ elif test -n "$PKG_CONFIG"; then
+    PKG_CHECK_EXISTS([$3],
+                     [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`],
+                    [pkg_failed=yes])
+ else
+    pkg_failed=untried
 fi[]dnl
 ])# _PKG_CONFIG
 
@@ -903,16 +902,17 @@ and $1[]_LIBS to avoid the need to call pkg-config.
 See the pkg-config man page for more details.])
 
 if test $pkg_failed = yes; then
+       AC_MSG_RESULT([no])
         _PKG_SHORT_ERRORS_SUPPORTED
         if test $_pkg_short_errors_supported = yes; then
-               $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$2"`
+               $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "$2" 2>&1`
         else 
-               $1[]_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"`
+               $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors "$2" 2>&1`
         fi
        # Put the nasty error message in config.log where it belongs
        echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
 
-       ifelse([$4], , [AC_MSG_ERROR(dnl
+       m4_default([$4], [AC_MSG_ERROR(
 [Package requirements ($2) were not met:
 
 $$1_PKG_ERRORS
@@ -920,25 +920,24 @@ $$1_PKG_ERRORS
 Consider adjusting the PKG_CONFIG_PATH environment variable if you
 installed software in a non-standard prefix.
 
-_PKG_TEXT
-])],
-               [AC_MSG_RESULT([no])
-                $4])
+_PKG_TEXT])[]dnl
+        ])
 elif test $pkg_failed = untried; then
-       ifelse([$4], , [AC_MSG_FAILURE(dnl
+       AC_MSG_RESULT([no])
+       m4_default([$4], [AC_MSG_FAILURE(
 [The pkg-config script could not be found or is too old.  Make sure it
 is in your PATH or set the PKG_CONFIG environment variable to the full
 path to pkg-config.
 
 _PKG_TEXT
 
-To get pkg-config, see <http://pkg-config.freedesktop.org/>.])],
-               [$4])
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.])[]dnl
+        ])
 else
        $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
        $1[]_LIBS=$pkg_cv_[]$1[]_LIBS
         AC_MSG_RESULT([yes])
-       ifelse([$3], , :, [$3])
+       $3
 fi[]dnl
 ])# PKG_CHECK_MODULES
 
index 72ff811..90f64c6 100755 (executable)
--- a/configure
+++ b/configure
@@ -1,13 +1,13 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.65 for mcabber 0.10.0.
+# Generated by GNU Autoconf 2.67 for mcabber 0.10.1.
 #
 # Report bugs to <mcabber@lilotux.net>.
 #
 #
 # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
+# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
+# Foundation, Inc.
 #
 #
 # This configure script is free software; the Free Software Foundation
@@ -319,7 +319,7 @@ $as_echo X"$as_dir" |
       test -d "$as_dir" && break
     done
     test -z "$as_dirs" || eval "mkdir $as_dirs"
-  } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
 
 
 } # as_fn_mkdir_p
@@ -359,19 +359,19 @@ else
 fi # as_fn_arith
 
 
-# as_fn_error ERROR [LINENO LOG_FD]
-# ---------------------------------
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
 # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
 # provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-# script with status $?, using 1 if that was 0.
+# script with STATUS, using 1 if that was 0.
 as_fn_error ()
 {
-  as_status=$?; test $as_status -eq 0 && as_status=1
-  if test "$3"; then
-    as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-    $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
   fi
-  $as_echo "$as_me: error: $1" >&2
+  $as_echo "$as_me: error: $2" >&2
   as_fn_exit $as_status
 } # as_fn_error
 
@@ -682,7 +682,7 @@ test -n "$DJDIR" || exec 7<&0 </dev/null
 exec 6>&1
 
 # Name of the host.
-# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
+# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
 # so uname gets run too.
 ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
 
@@ -701,8 +701,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='mcabber'
 PACKAGE_TARNAME='mcabber'
-PACKAGE_VERSION='0.10.0'
-PACKAGE_STRING='mcabber 0.10.0'
+PACKAGE_VERSION='0.10.1'
+PACKAGE_STRING='mcabber 0.10.1'
 PACKAGE_BUGREPORT='mcabber@lilotux.net'
 PACKAGE_URL=''
 
@@ -774,6 +774,8 @@ GLIB_GENMARSHAL
 GLIB_LIBS
 GLIB_CFLAGS
 LIBOBJS
+PKG_CONFIG_LIBDIR
+PKG_CONFIG_PATH
 PKG_CONFIG
 CPP
 OTOOL64
@@ -917,6 +919,8 @@ LIBS
 CPPFLAGS
 CPP
 PKG_CONFIG
+PKG_CONFIG_PATH
+PKG_CONFIG_LIBDIR
 LOUDMOUTH_CFLAGS
 LOUDMOUTH_LIBS
 LIBIDN_CFLAGS
@@ -985,8 +989,9 @@ do
   fi
 
   case $ac_option in
-  *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
-  *)   ac_optarg=yes ;;
+  *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+  *=)   ac_optarg= ;;
+  *)    ac_optarg=yes ;;
   esac
 
   # Accept the important Cygnus configure options, so we can diagnose typos.
@@ -1031,7 +1036,7 @@ do
     ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
     # Reject names that are not valid shell variable names.
     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error "invalid feature name: $ac_useropt"
+      as_fn_error $? "invalid feature name: $ac_useropt"
     ac_useropt_orig=$ac_useropt
     ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
     case $ac_user_opts in
@@ -1057,7 +1062,7 @@ do
     ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
     # Reject names that are not valid shell variable names.
     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error "invalid feature name: $ac_useropt"
+      as_fn_error $? "invalid feature name: $ac_useropt"
     ac_useropt_orig=$ac_useropt
     ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
     case $ac_user_opts in
@@ -1261,7 +1266,7 @@ do
     ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
     # Reject names that are not valid shell variable names.
     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error "invalid package name: $ac_useropt"
+      as_fn_error $? "invalid package name: $ac_useropt"
     ac_useropt_orig=$ac_useropt
     ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
     case $ac_user_opts in
@@ -1277,7 +1282,7 @@ do
     ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
     # Reject names that are not valid shell variable names.
     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error "invalid package name: $ac_useropt"
+      as_fn_error $? "invalid package name: $ac_useropt"
     ac_useropt_orig=$ac_useropt
     ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
     case $ac_user_opts in
@@ -1307,8 +1312,8 @@ do
   | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
     x_libraries=$ac_optarg ;;
 
-  -*) as_fn_error "unrecognized option: \`$ac_option'
-Try \`$0 --help' for more information."
+  -*) as_fn_error $? "unrecognized option: \`$ac_option'
+Try \`$0 --help' for more information"
     ;;
 
   *=*)
@@ -1316,7 +1321,7 @@ Try \`$0 --help' for more information."
     # Reject names that are not valid shell variable names.
     case $ac_envvar in #(
       '' | [0-9]* | *[!_$as_cr_alnum]* )
-      as_fn_error "invalid variable name: \`$ac_envvar'" ;;
+      as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
     esac
     eval $ac_envvar=\$ac_optarg
     export $ac_envvar ;;
@@ -1334,13 +1339,13 @@ done
 
 if test -n "$ac_prev"; then
   ac_option=--`echo $ac_prev | sed 's/_/-/g'`
-  as_fn_error "missing argument to $ac_option"
+  as_fn_error $? "missing argument to $ac_option"
 fi
 
 if test -n "$ac_unrecognized_opts"; then
   case $enable_option_checking in
     no) ;;
-    fatal) as_fn_error "unrecognized options: $ac_unrecognized_opts" ;;
+    fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
     *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
   esac
 fi
@@ -1363,7 +1368,7 @@ do
     [\\/$]* | ?:[\\/]* )  continue;;
     NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
   esac
-  as_fn_error "expected an absolute directory name for --$ac_var: $ac_val"
+  as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
 done
 
 # There might be people who depend on the old broken behavior: `$host'
@@ -1377,8 +1382,8 @@ target=$target_alias
 if test "x$host_alias" != x; then
   if test "x$build_alias" = x; then
     cross_compiling=maybe
-    $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
-    If a cross compiler is detected then cross compile mode will be used." >&2
+    $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host.
+    If a cross compiler is detected then cross compile mode will be used" >&2
   elif test "x$build_alias" != "x$host_alias"; then
     cross_compiling=yes
   fi
@@ -1393,9 +1398,9 @@ test "$silent" = yes && exec 6>/dev/null
 ac_pwd=`pwd` && test -n "$ac_pwd" &&
 ac_ls_di=`ls -di .` &&
 ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
-  as_fn_error "working directory cannot be determined"
+  as_fn_error $? "working directory cannot be determined"
 test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
-  as_fn_error "pwd does not report name of working directory"
+  as_fn_error $? "pwd does not report name of working directory"
 
 
 # Find the source files, if location was not specified.
@@ -1434,11 +1439,11 @@ else
 fi
 if test ! -r "$srcdir/$ac_unique_file"; then
   test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
-  as_fn_error "cannot find sources ($ac_unique_file) in $srcdir"
+  as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
 fi
 ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
 ac_abs_confdir=`(
-       cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error "$ac_msg"
+       cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
        pwd)`
 # When building in place, set srcdir=.
 if test "$ac_abs_confdir" = "$ac_pwd"; then
@@ -1464,7 +1469,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures mcabber 0.10.0 to adapt to many kinds of systems.
+\`configure' configures mcabber 0.10.1 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1478,7 +1483,7 @@ Configuration:
       --help=short        display options specific to this package
       --help=recursive    display the short help of all the included packages
   -V, --version           display version information and exit
-  -q, --quiet, --silent   do not print \`checking...' messages
+  -q, --quiet, --silent   do not print \`checking ...' messages
       --cache-file=FILE   cache test results in FILE [disabled]
   -C, --config-cache      alias for \`--cache-file=config.cache'
   -n, --no-create         do not create output files
@@ -1534,7 +1539,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of mcabber 0.10.0:";;
+     short | recursive ) echo "Configuration of mcabber 0.10.1:";;
    esac
   cat <<\_ACEOF
 
@@ -1584,6 +1589,10 @@ Some influential environment variables:
               you have headers in a nonstandard directory <include dir>
   CPP         C preprocessor
   PKG_CONFIG  path to pkg-config utility
+  PKG_CONFIG_PATH
+              directories to add to pkg-config's search path
+  PKG_CONFIG_LIBDIR
+              path overriding pkg-config's built-in search path
   LOUDMOUTH_CFLAGS
               C compiler flags for LOUDMOUTH, overriding pkg-config
   LOUDMOUTH_LIBS
@@ -1662,10 +1671,10 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-mcabber configure 0.10.0
-generated by GNU Autoconf 2.65
+mcabber configure 0.10.1
+generated by GNU Autoconf 2.67
 
-Copyright (C) 2009 Free Software Foundation, Inc.
+Copyright (C) 2010 Free Software Foundation, Inc.
 This configure script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it.
 _ACEOF
@@ -1769,7 +1778,7 @@ ac_fn_c_check_header_compile ()
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
 $as_echo_n "checking for $2... " >&6; }
-if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+if eval "test \"\${$3+set}\"" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -1812,7 +1821,7 @@ $as_echo "$ac_try_echo"; } >&5
     mv -f conftest.er1 conftest.err
   fi
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } >/dev/null && {
+  test $ac_status = 0; } > conftest.i && {
         test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
         test ! -s conftest.err
        }; then :
@@ -1878,7 +1887,7 @@ ac_fn_c_check_func ()
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
 $as_echo_n "checking for $2... " >&6; }
-if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+if eval "test \"\${$3+set}\"" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -1945,10 +1954,10 @@ $as_echo "$ac_res" >&6; }
 ac_fn_c_check_header_mongrel ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+  if eval "test \"\${$3+set}\"" = set; then :
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
 $as_echo_n "checking for $2... " >&6; }
-if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+if eval "test \"\${$3+set}\"" = set; then :
   $as_echo_n "(cached) " >&6
 fi
 eval ac_res=\$$3
@@ -1984,7 +1993,7 @@ if ac_fn_c_try_cpp "$LINENO"; then :
 else
   ac_header_preproc=no
 fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
 $as_echo "$ac_header_preproc" >&6; }
 
@@ -2007,17 +2016,15 @@ $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
 $as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
     { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-( cat <<\_ASBOX
-## ---------------------------------- ##
+( $as_echo "## ---------------------------------- ##
 ## Report this to mcabber@lilotux.net ##
-## ---------------------------------- ##
-_ASBOX
+## ---------------------------------- ##"
      ) | sed "s/^/$as_me: WARNING:     /" >&2
     ;;
 esac
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
 $as_echo_n "checking for $2... " >&6; }
-if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+if eval "test \"\${$3+set}\"" = set; then :
   $as_echo_n "(cached) " >&6
 else
   eval "$3=\$ac_header_compiler"
@@ -2039,7 +2046,7 @@ ac_fn_c_check_member ()
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5
 $as_echo_n "checking for $2.$3... " >&6; }
-if { as_var=$4; eval "test \"\${$as_var+set}\" = set"; }; then :
+if eval "test \"\${$4+set}\"" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -2087,15 +2094,18 @@ $as_echo "$ac_res" >&6; }
 
 } # ac_fn_c_check_member
 
-# ac_fn_c_check_decl LINENO SYMBOL VAR
-# ------------------------------------
-# Tests whether SYMBOL is declared, setting cache variable VAR accordingly.
+# ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES
+# ---------------------------------------------
+# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR
+# accordingly.
 ac_fn_c_check_decl ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $2 is declared" >&5
-$as_echo_n "checking whether $2 is declared... " >&6; }
-if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+  as_decl_name=`echo $2|sed 's/ *(.*//'`
+  as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5
+$as_echo_n "checking whether $as_decl_name is declared... " >&6; }
+if eval "test \"\${$3+set}\"" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -2104,8 +2114,12 @@ $4
 int
 main ()
 {
-#ifndef $2
-  (void) $2;
+#ifndef $as_decl_name
+#ifdef __cplusplus
+  (void) $as_decl_use;
+#else
+  (void) $as_decl_name;
+#endif
 #endif
 
   ;
@@ -2135,7 +2149,7 @@ ac_fn_c_check_type ()
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
 $as_echo_n "checking for $2... " >&6; }
-if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+if eval "test \"\${$3+set}\"" = set; then :
   $as_echo_n "(cached) " >&6
 else
   eval "$3=no"
@@ -2183,8 +2197,8 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by mcabber $as_me 0.10.0, which was
-generated by GNU Autoconf 2.65.  Invocation command line was
+It was created by mcabber $as_me 0.10.1, which was
+generated by GNU Autoconf 2.67.  Invocation command line was
 
   $ $0 $@
 
@@ -2294,11 +2308,9 @@ trap 'exit_status=$?
   {
     echo
 
-    cat <<\_ASBOX
-## ---------------- ##
+    $as_echo "## ---------------- ##
 ## Cache variables. ##
-## ---------------- ##
-_ASBOX
+## ---------------- ##"
     echo
     # The following way of writing the cache mishandles newlines in values,
 (
@@ -2332,11 +2344,9 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
 )
     echo
 
-    cat <<\_ASBOX
-## ----------------- ##
+    $as_echo "## ----------------- ##
 ## Output variables. ##
-## ----------------- ##
-_ASBOX
+## ----------------- ##"
     echo
     for ac_var in $ac_subst_vars
     do
@@ -2349,11 +2359,9 @@ _ASBOX
     echo
 
     if test -n "$ac_subst_files"; then
-      cat <<\_ASBOX
-## ------------------- ##
+      $as_echo "## ------------------- ##
 ## File substitutions. ##
-## ------------------- ##
-_ASBOX
+## ------------------- ##"
       echo
       for ac_var in $ac_subst_files
       do
@@ -2367,11 +2375,9 @@ _ASBOX
     fi
 
     if test -s confdefs.h; then
-      cat <<\_ASBOX
-## ----------- ##
+      $as_echo "## ----------- ##
 ## confdefs.h. ##
-## ----------- ##
-_ASBOX
+## ----------- ##"
       echo
       cat confdefs.h
       echo
@@ -2426,7 +2432,12 @@ _ACEOF
 ac_site_file1=NONE
 ac_site_file2=NONE
 if test -n "$CONFIG_SITE"; then
-  ac_site_file1=$CONFIG_SITE
+  # We do not want a PATH search for config.site.
+  case $CONFIG_SITE in #((
+    -*)  ac_site_file1=./$CONFIG_SITE;;
+    */*) ac_site_file1=$CONFIG_SITE;;
+    *)   ac_site_file1=./$CONFIG_SITE;;
+  esac
 elif test "x$prefix" != xNONE; then
   ac_site_file1=$prefix/share/config.site
   ac_site_file2=$prefix/etc/config.site
@@ -2441,7 +2452,11 @@ do
     { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
 $as_echo "$as_me: loading site script $ac_site_file" >&6;}
     sed 's/^/| /' "$ac_site_file" >&5
-    . "$ac_site_file"
+    . "$ac_site_file" \
+      || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "failed to load site script $ac_site_file
+See \`config.log' for more details" "$LINENO" 5 ; }
   fi
 done
 
@@ -2517,7 +2532,7 @@ if $ac_cache_corrupted; then
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
   { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
-  as_fn_error "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
+  as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
 fi
 ## -------------------- ##
 ## Main body of script. ##
@@ -2534,16 +2549,22 @@ am__api_version='1.11'
 
 ac_aux_dir=
 for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
-  for ac_t in install-sh install.sh shtool; do
-    if test -f "$ac_dir/$ac_t"; then
-      ac_aux_dir=$ac_dir
-      ac_install_sh="$ac_aux_dir/$ac_t -c"
-      break 2
-    fi
-  done
+  if test -f "$ac_dir/install-sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install-sh -c"
+    break
+  elif test -f "$ac_dir/install.sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install.sh -c"
+    break
+  elif test -f "$ac_dir/shtool"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/shtool install -c"
+    break
+  fi
 done
 if test -z "$ac_aux_dir"; then
-  as_fn_error "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5
+  as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5
 fi
 
 # These three variables are undocumented and unsupported,
@@ -2659,11 +2680,11 @@ am_lf='
 '
 case `pwd` in
   *[\\\"\#\$\&\'\`$am_lf]*)
-    as_fn_error "unsafe absolute working directory name" "$LINENO" 5;;
+    as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5 ;;
 esac
 case $srcdir in
   *[\\\"\#\$\&\'\`$am_lf\ \    ]*)
-    as_fn_error "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;;
+    as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5 ;;
 esac
 
 # Do `set' in a subshell so we don't clobber the current shell's
@@ -2685,7 +2706,7 @@ if (
       # if, for instance, CONFIG_SHELL is bash and it inherits a
       # broken ls alias from the environment.  This has actually
       # happened.  Such a system could not be considered "sane".
-      as_fn_error "ls -t appears to fail.  Make sure there is not a broken
+      as_fn_error $? "ls -t appears to fail.  Make sure there is not a broken
 alias in your environment" "$LINENO" 5
    fi
 
@@ -2695,7 +2716,7 @@ then
    # Ok.
    :
 else
-   as_fn_error "newly created file is older than distributed files!
+   as_fn_error $? "newly created file is older than distributed files!
 Check your system clock" "$LINENO" 5
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
@@ -2933,7 +2954,7 @@ done
 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
 set x ${MAKE-make}
 ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
-if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then :
+if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\"" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat >conftest.make <<\_ACEOF
@@ -2941,7 +2962,7 @@ SHELL = /bin/sh
 all:
        @echo '@@@%%%=$(MAKE)=@@@%%%'
 _ACEOF
-# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
 case `${MAKE-make} -f conftest.make 2>/dev/null` in
   *@@@%%%=?*=@@@%%%*)
     eval ac_cv_prog_make_${ac_make}_set=yes;;
@@ -2975,7 +2996,7 @@ if test "`cd $srcdir && pwd`" != "`pwd`"; then
   am__isrc=' -I$(srcdir)'
   # test to see if srcdir already configured
   if test -f $srcdir/config.status; then
-    as_fn_error "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
+    as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
   fi
 fi
 
@@ -2991,7 +3012,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='mcabber'
- VERSION='0.10.0'
+ VERSION='0.10.1'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -3064,7 +3085,7 @@ ltmain="$ac_aux_dir/ltmain.sh"
 
 # Make sure we can run config.sub.
 $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
-  as_fn_error "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
+  as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
 $as_echo_n "checking build system type... " >&6; }
@@ -3075,16 +3096,16 @@ else
 test "x$ac_build_alias" = x &&
   ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
 test "x$ac_build_alias" = x &&
-  as_fn_error "cannot guess build type; you must specify one" "$LINENO" 5
+  as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
-  as_fn_error "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
+  as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
 
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
 $as_echo "$ac_cv_build" >&6; }
 case $ac_cv_build in
 *-*-*) ;;
-*) as_fn_error "invalid value of canonical build" "$LINENO" 5;;
+*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5 ;;
 esac
 build=$ac_cv_build
 ac_save_IFS=$IFS; IFS='-'
@@ -3109,7 +3130,7 @@ else
   ac_cv_host=$ac_cv_build
 else
   ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
-    as_fn_error "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
+    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
 fi
 
 fi
@@ -3117,7 +3138,7 @@ fi
 $as_echo "$ac_cv_host" >&6; }
 case $ac_cv_host in
 *-*-*) ;;
-*) as_fn_error "invalid value of canonical host" "$LINENO" 5;;
+*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5 ;;
 esac
 host=$ac_cv_host
 ac_save_IFS=$IFS; IFS='-'
@@ -3495,8 +3516,8 @@ fi
 
 test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error "no acceptable C compiler found in \$PATH
-See \`config.log' for more details." "$LINENO" 5; }
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5 ; }
 
 # Provide some information about the compiler.
 $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
@@ -3610,9 +3631,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ as_fn_set_status 77
-as_fn_error "C compiler cannot create executables
-See \`config.log' for more details." "$LINENO" 5; }; }
+as_fn_error 77 "C compiler cannot create executables
+See \`config.log' for more details" "$LINENO" 5 ; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
@@ -3654,8 +3674,8 @@ done
 else
   { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error "cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details." "$LINENO" 5; }
+as_fn_error $? "cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details" "$LINENO" 5 ; }
 fi
 rm -f conftest conftest$ac_cv_exeext
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
@@ -3712,9 +3732,9 @@ $as_echo "$ac_try_echo"; } >&5
     else
        { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error "cannot run C compiled programs.
+as_fn_error $? "cannot run C compiled programs.
 If you meant to cross compile, use \`--host'.
-See \`config.log' for more details." "$LINENO" 5; }
+See \`config.log' for more details" "$LINENO" 5 ; }
     fi
   fi
 fi
@@ -3765,8 +3785,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error "cannot compute suffix of object files: cannot compile
-See \`config.log' for more details." "$LINENO" 5; }
+as_fn_error $? "cannot compute suffix of object files: cannot compile
+See \`config.log' for more details" "$LINENO" 5 ; }
 fi
 rm -f conftest.$ac_cv_objext conftest.$ac_ext
 fi
@@ -4170,7 +4190,7 @@ esac
   done
 IFS=$as_save_IFS
   if test -z "$ac_cv_path_SED"; then
-    as_fn_error "no acceptable sed could be found in \$PATH" "$LINENO" 5
+    as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
   fi
 else
   ac_cv_path_SED=$SED
@@ -4246,7 +4266,7 @@ esac
   done
 IFS=$as_save_IFS
   if test -z "$ac_cv_path_GREP"; then
-    as_fn_error "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
   fi
 else
   ac_cv_path_GREP=$GREP
@@ -4312,7 +4332,7 @@ esac
   done
 IFS=$as_save_IFS
   if test -z "$ac_cv_path_EGREP"; then
-    as_fn_error "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
   fi
 else
   ac_cv_path_EGREP=$EGREP
@@ -4379,7 +4399,7 @@ esac
   done
 IFS=$as_save_IFS
   if test -z "$ac_cv_path_FGREP"; then
-    as_fn_error "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+    as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
   fi
 else
   ac_cv_path_FGREP=$FGREP
@@ -4495,7 +4515,7 @@ else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
-test -z "$LD" && as_fn_error "no acceptable ld found in \$PATH" "$LINENO" 5
+test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
 if test "${lt_cv_prog_gnu_ld+set}" = set; then :
@@ -4697,13 +4717,13 @@ if test "${lt_cv_nm_interface+set}" = set; then :
 else
   lt_cv_nm_interface="BSD nm"
   echo "int some_variable = 0;" > conftest.$ac_ext
-  (eval echo "\"\$as_me:4700: $ac_compile\"" >&5)
+  (eval echo "\"\$as_me:4720: $ac_compile\"" >&5)
   (eval "$ac_compile" 2>conftest.err)
   cat conftest.err >&5
-  (eval echo "\"\$as_me:4703: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
+  (eval echo "\"\$as_me:4723: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
   (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
   cat conftest.err >&5
-  (eval echo "\"\$as_me:4706: output\"" >&5)
+  (eval echo "\"\$as_me:4726: output\"" >&5)
   cat conftest.out >&5
   if $GREP 'External.*some_variable' conftest.out > /dev/null; then
     lt_cv_nm_interface="MS dumpbin"
@@ -5909,7 +5929,7 @@ ia64-*-hpux*)
   ;;
 *-*-irix6*)
   # Find out which ABI we are using.
-  echo '#line 5912 "configure"' > conftest.$ac_ext
+  echo '#line 5932 "configure"' > conftest.$ac_ext
   if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
@@ -6698,7 +6718,7 @@ else
   # Broken: fails on valid input.
 continue
 fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
 
   # OK, works on sane cases.  Now check whether nonexistent headers
   # can be detected and how.
@@ -6714,11 +6734,11 @@ else
 ac_preproc_ok=:
 break
 fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
 
 done
 # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.i conftest.err conftest.$ac_ext
 if $ac_preproc_ok; then :
   break
 fi
@@ -6757,7 +6777,7 @@ else
   # Broken: fails on valid input.
 continue
 fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
 
   # OK, works on sane cases.  Now check whether nonexistent headers
   # can be detected and how.
@@ -6773,18 +6793,18 @@ else
 ac_preproc_ok=:
 break
 fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
 
 done
 # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.i conftest.err conftest.$ac_ext
 if $ac_preproc_ok; then :
 
 else
   { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error "C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details." "$LINENO" 5; }
+as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details" "$LINENO" 5 ; }
 fi
 
 ac_ext=c
@@ -6913,8 +6933,7 @@ do :
   as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
 ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
 "
-eval as_val=\$$as_ac_Header
-   if test "x$as_val" = x""yes; then :
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
 #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
@@ -7439,11 +7458,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:7442: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:7461: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:7446: \$? = $ac_status" >&5
+   echo "$as_me:7465: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -7778,11 +7797,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:7781: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:7800: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:7785: \$? = $ac_status" >&5
+   echo "$as_me:7804: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -7883,11 +7902,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:7886: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:7905: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:7890: \$? = $ac_status" >&5
+   echo "$as_me:7909: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -7938,11 +7957,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:7941: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:7960: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:7945: \$? = $ac_status" >&5
+   echo "$as_me:7964: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -10322,7 +10341,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 10325 "configure"
+#line 10344 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -10418,7 +10437,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 10421 "configure"
+#line 10440 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -11039,8 +11058,8 @@ fi
 
 test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error "no acceptable C compiler found in \$PATH
-See \`config.log' for more details." "$LINENO" 5; }
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5 ; }
 
 # Provide some information about the compiler.
 $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
 
 
 
+
+
+
+
 if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
        if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
@@ -11737,7 +11760,6 @@ $as_echo "yes" >&6; }
 $as_echo "no" >&6; }
                PKG_CONFIG=""
        fi
-
 fi
 
 # Checks for header files.
@@ -11859,8 +11881,7 @@ for ac_header in arpa/inet.h fcntl.h locale.h netdb.h netinet/in.h stddef.h \
 do :
   as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
 ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-eval as_val=\$$as_ac_Header
-   if test "x$as_val" = x""yes; then :
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
 #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
@@ -11878,7 +11899,7 @@ if test "x$ac_cv_header_unistd_h" = x""yes; then :
 _ACEOF
 
 else
-  as_fn_error "Missing header file" "$LINENO" 5
+  as_fn_error $? "Missing header file" "$LINENO" 5
 fi
 
 done
@@ -12634,8 +12655,7 @@ for ac_header in sys/select.h sys/socket.h
 do :
   as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
 ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-eval as_val=\$$as_ac_Header
-   if test "x$as_val" = x""yes; then :
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
 #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
@@ -12820,8 +12840,7 @@ for ac_func in alarm arc4random bzero gethostbyname gethostname inet_ntoa \
 do :
   as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
 ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-eval as_val=\$$as_ac_var
-   if test "x$as_val" = x""yes; then :
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
 #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
 _ACEOF
@@ -12954,7 +12973,7 @@ else
         as_ac_Lib=`$as_echo "ac_cv_lib_$lib''_waddnwstr" | $as_tr_sh`
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for waddnwstr in -l$lib" >&5
 $as_echo_n "checking for waddnwstr in -l$lib... " >&6; }
-if { as_var=$as_ac_Lib; eval "test \"\${$as_var+set}\" = set"; }; then :
+if eval "test \"\${$as_ac_Lib+set}\"" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -12989,8 +13008,7 @@ fi
 eval ac_res=\$$as_ac_Lib
               { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
 $as_echo "$ac_res" >&6; }
-eval as_val=\$$as_ac_Lib
-   if test "x$as_val" = x""yes; then :
+if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
   cf_ncurses="$lib"; cf_ncurses_unicode="yes"; break
 fi
 
@@ -12998,7 +13016,7 @@ fi
     as_ac_Lib=`$as_echo "ac_cv_lib_$cf_ncurses''_initscr" | $as_tr_sh`
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for initscr in -l$cf_ncurses" >&5
 $as_echo_n "checking for initscr in -l$cf_ncurses... " >&6; }
-if { as_var=$as_ac_Lib; eval "test \"\${$as_var+set}\" = set"; }; then :
+if eval "test \"\${$as_ac_Lib+set}\"" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 eval ac_res=\$$as_ac_Lib
               { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
 $as_echo "$ac_res" >&6; }
-eval as_val=\$$as_ac_Lib
-   if test "x$as_val" = x""yes; then :
+if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
   LIBS="$LIBS -l$cf_ncurses"
          if test "$cf_ncurses" = ncursesw; then
             for ac_header in ncursesw/ncurses.h ncursesw/panel.h
 do :
   as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
 ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-eval as_val=\$$as_ac_Header
-   if test "x$as_val" = x""yes; then :
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
 #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
@@ -13052,14 +13068,13 @@ else
 do :
   as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
 ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-eval as_val=\$$as_ac_Header
-   if test "x$as_val" = x""yes; then :
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
 #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
 
 else
-  as_fn_error "Missing header file" "$LINENO" 5
+  as_fn_error $? "Missing header file" "$LINENO" 5
 fi
 
 done
@@ -13073,8 +13088,7 @@ done
 do :
   as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
 ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-eval as_val=\$$as_ac_Header
-   if test "x$as_val" = x""yes; then :
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
 #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
@@ -13084,14 +13098,13 @@ else
 do :
   as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
 ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-eval as_val=\$$as_ac_Header
-   if test "x$as_val" = x""yes; then :
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
 #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
 
 else
-  as_fn_error "Missing header file" "$LINENO" 5
+  as_fn_error $? "Missing header file" "$LINENO" 5
 fi
 
 done
@@ -13275,7 +13288,7 @@ else
                        as_ac_Lib=`$as_echo "ac_cv_lib_$cf_term_lib''_tgoto" | $as_tr_sh`
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgoto in -l$cf_term_lib" >&5
 $as_echo_n "checking for tgoto in -l$cf_term_lib... " >&6; }
-if { as_var=$as_ac_Lib; eval "test \"\${$as_var+set}\" = set"; }; then :
+if eval "test \"\${$as_ac_Lib+set}\"" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -13310,8 +13323,7 @@ fi
 eval ac_res=\$$as_ac_Lib
               { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
 $as_echo "$ac_res" >&6; }
-eval as_val=\$$as_ac_Lib
-   if test "x$as_val" = x""yes; then :
+if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
   break
 fi
 
@@ -13327,7 +13339,7 @@ fi
                as_ac_Lib=`$as_echo "ac_cv_lib_$cf_curs_lib''_initscr" | $as_tr_sh`
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for initscr in -l$cf_curs_lib" >&5
 $as_echo_n "checking for initscr in -l$cf_curs_lib... " >&6; }
-if { as_var=$as_ac_Lib; eval "test \"\${$as_var+set}\" = set"; }; then :
+if eval "test \"\${$as_ac_Lib+set}\"" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 eval ac_res=\$$as_ac_Lib
               { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
 $as_echo "$ac_res" >&6; }
-eval as_val=\$$as_ac_Lib
-   if test "x$as_val" = x""yes; then :
+if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
   break
 fi
 
        done
-       test $cf_curs_lib = unknown && as_fn_error "no curses library found" "$LINENO" 5
+       test $cf_curs_lib = unknown && as_fn_error $? "no curses library found" "$LINENO" 5
 
        LIBS="-l$cf_curs_lib $cf_save_LIBS"
        if test "$cf_term_lib" = unknown ; then
@@ -13394,7 +13405,7 @@ rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
                { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cf_result" >&5
 $as_echo "$cf_result" >&6; }
-               test $cf_result = no && as_fn_error "Cannot link curses library" "$LINENO" 5
+               test $cf_result = no && as_fn_error $? "Cannot link curses library" "$LINENO" 5
        elif test "$cf_term_lib" != predefined ; then
                { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we need both $cf_curs_lib and $cf_term_lib libraries" >&5
 $as_echo_n "checking if we need both $cf_curs_lib and $cf_term_lib libraries... " >&6; }
 
 
 
+
+
+
+
 if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
        if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
@@ -13747,7 +13762,6 @@ $as_echo "yes" >&6; }
 $as_echo "no" >&6; }
                PKG_CONFIG=""
        fi
-
 fi
 
   no_glib=""
@@ -13809,9 +13823,8 @@ main ()
 {
   int major, minor, micro;
   char *tmp_version;
-  int ignored;
 
-  ignored = system ("touch conf.glibtest");
+  fclose (fopen ("conf.glibtest", "w"));
 
   /* HP/UX 9 (%@#!) writes to sscanf strings */
   tmp_version = g_strdup("$min_glib_version");
 
 
 
+
+
+
+
 if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
        if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
@@ -14090,7 +14107,6 @@ $as_echo "yes" >&6; }
 $as_echo "no" >&6; }
                PKG_CONFIG=""
        fi
-
 fi
 
   no_glib=""
@@ -14152,9 +14168,8 @@ main ()
 {
   int major, minor, micro;
   char *tmp_version;
-  int ignored;
 
-  ignored = system ("touch conf.glibtest");
+  fclose (fopen ("conf.glibtest", "w"));
 
   /* HP/UX 9 (%@#!) writes to sscanf strings */
   tmp_version = g_strdup("$min_glib_version");
@@ -14287,7 +14302,7 @@ rm -f core conftest.err conftest.$ac_objext \
      GLIB_GENMARSHAL=""
      GOBJECT_QUERY=""
      GLIB_MKENUMS=""
-     as_fn_error "glib is required" "$LINENO" 5
+     as_fn_error $? "glib is required" "$LINENO" 5
   fi
 
 
@@ -14311,11 +14326,10 @@ pkg_failed=no
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LOUDMOUTH" >&5
 $as_echo_n "checking for LOUDMOUTH... " >&6; }
 
-if test -n "$PKG_CONFIG"; then
-    if test -n "$LOUDMOUTH_CFLAGS"; then
-        pkg_cv_LOUDMOUTH_CFLAGS="$LOUDMOUTH_CFLAGS"
-    else
-        if test -n "$PKG_CONFIG" && \
+if test -n "$LOUDMOUTH_CFLAGS"; then
+    pkg_cv_LOUDMOUTH_CFLAGS="$LOUDMOUTH_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
     { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"loudmouth-1.0 >= 1.4.2\""; } >&5
   ($PKG_CONFIG --exists --print-errors "loudmouth-1.0 >= 1.4.2") 2>&5
   ac_status=$?
@@ -14325,15 +14339,13 @@ if test -n "$PKG_CONFIG"; then
 else
   pkg_failed=yes
 fi
-    fi
-else
-       pkg_failed=untried
+ else
+    pkg_failed=untried
 fi
-if test -n "$PKG_CONFIG"; then
-    if test -n "$LOUDMOUTH_LIBS"; then
-        pkg_cv_LOUDMOUTH_LIBS="$LOUDMOUTH_LIBS"
-    else
-        if test -n "$PKG_CONFIG" && \
+if test -n "$LOUDMOUTH_LIBS"; then
+    pkg_cv_LOUDMOUTH_LIBS="$LOUDMOUTH_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
     { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"loudmouth-1.0 >= 1.4.2\""; } >&5
   ($PKG_CONFIG --exists --print-errors "loudmouth-1.0 >= 1.4.2") 2>&5
   ac_status=$?
@@ -14343,14 +14355,15 @@ if test -n "$PKG_CONFIG"; then
 else
   pkg_failed=yes
 fi
-    fi
-else
-       pkg_failed=untried
+ else
+    pkg_failed=untried
 fi
 
 
 
 if test $pkg_failed = yes; then
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 
 if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
         _pkg_short_errors_supported=yes
@@ -14358,14 +14371,14 @@ else
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-               LOUDMOUTH_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "loudmouth-1.0 >= 1.4.2"`
+               LOUDMOUTH_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "loudmouth-1.0 >= 1.4.2" 2>&1`
         else
-               LOUDMOUTH_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "loudmouth-1.0 >= 1.4.2"`
+               LOUDMOUTH_PKG_ERRORS=`$PKG_CONFIG --print-errors "loudmouth-1.0 >= 1.4.2" 2>&1`
         fi
        # Put the nasty error message in config.log where it belongs
        echo "$LOUDMOUTH_PKG_ERRORS" >&5
 
-       as_fn_error "Package requirements (loudmouth-1.0 >= 1.4.2) were not met:
+       as_fn_error $? "Package requirements (loudmouth-1.0 >= 1.4.2) were not met:
 
 $LOUDMOUTH_PKG_ERRORS
 
@@ -14374,12 +14387,13 @@ installed software in a non-standard prefix.
 
 Alternatively, you may set the environment variables LOUDMOUTH_CFLAGS
 and LOUDMOUTH_LIBS to avoid the need to call pkg-config.
-See the pkg-config man page for more details.
-" "$LINENO" 5
+See the pkg-config man page for more details." "$LINENO" 5
 elif test $pkg_failed = untried; then
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
        { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error "The pkg-config script could not be found or is too old.  Make sure it
+as_fn_error $? "The pkg-config script could not be found or is too old.  Make sure it
 is in your PATH or set the PKG_CONFIG environment variable to the full
 path to pkg-config.
 
@@ -14388,13 +14402,13 @@ and LOUDMOUTH_LIBS to avoid the need to call pkg-config.
 See the pkg-config man page for more details.
 
 To get pkg-config, see <http://pkg-config.freedesktop.org/>.
-See \`config.log' for more details." "$LINENO" 5; }
+See \`config.log' for more details" "$LINENO" 5 ; }
 else
        LOUDMOUTH_CFLAGS=$pkg_cv_LOUDMOUTH_CFLAGS
        LOUDMOUTH_LIBS=$pkg_cv_LOUDMOUTH_LIBS
         { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
-       :
+
 fi
 
 # Check for libidn
@@ -14412,11 +14426,10 @@ pkg_failed=no
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBIDN" >&5
 $as_echo_n "checking for LIBIDN... " >&6; }
 
-if test -n "$PKG_CONFIG"; then
-    if test -n "$LIBIDN_CFLAGS"; then
-        pkg_cv_LIBIDN_CFLAGS="$LIBIDN_CFLAGS"
-    else
-        if test -n "$PKG_CONFIG" && \
+if test -n "$LIBIDN_CFLAGS"; then
+    pkg_cv_LIBIDN_CFLAGS="$LIBIDN_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
     { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libidn >= 0.0.0\""; } >&5
   ($PKG_CONFIG --exists --print-errors "libidn >= 0.0.0") 2>&5
   ac_status=$?
@@ -14426,15 +14439,13 @@ if test -n "$PKG_CONFIG"; then
 else
   pkg_failed=yes
 fi
-    fi
-else
-       pkg_failed=untried
+ else
+    pkg_failed=untried
 fi
-if test -n "$PKG_CONFIG"; then
-    if test -n "$LIBIDN_LIBS"; then
-        pkg_cv_LIBIDN_LIBS="$LIBIDN_LIBS"
-    else
-        if test -n "$PKG_CONFIG" && \
+if test -n "$LIBIDN_LIBS"; then
+    pkg_cv_LIBIDN_LIBS="$LIBIDN_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
     { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libidn >= 0.0.0\""; } >&5
   ($PKG_CONFIG --exists --print-errors "libidn >= 0.0.0") 2>&5
   ac_status=$?
@@ -14444,14 +14455,15 @@ if test -n "$PKG_CONFIG"; then
 else
   pkg_failed=yes
 fi
-    fi
-else
-       pkg_failed=untried
+ else
+    pkg_failed=untried
 fi
 
 
 
 if test $pkg_failed = yes; then
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 
 if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
         _pkg_short_errors_supported=yes
@@ -14459,17 +14471,17 @@ else
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-               LIBIDN_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "libidn >= 0.0.0"`
+               LIBIDN_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "libidn >= 0.0.0" 2>&1`
         else
-               LIBIDN_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "libidn >= 0.0.0"`
+               LIBIDN_PKG_ERRORS=`$PKG_CONFIG --print-errors "libidn >= 0.0.0" 2>&1`
         fi
        # Put the nasty error message in config.log where it belongs
        echo "$LIBIDN_PKG_ERRORS" >&5
 
-       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-                libidn=no
+       libidn=no
 elif test $pkg_failed = untried; then
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
        libidn=no
 else
        LIBIDN_CFLAGS=$pkg_cv_LIBIDN_CFLAGS
@@ -14938,7 +14950,7 @@ if test "x$libotr_found" = "xyes" ; then
 else
    LIBOTR_CFLAGS=""
    LIBOTR_LIBS=""
-   as_fn_error "libotr 3.1.0 or newer is required." "$LINENO" 5
+   as_fn_error $? "libotr 3.1.0 or newer is required." "$LINENO" 5
 fi
 
 
@@ -14948,7 +14960,7 @@ fi
   else
     LIBGCRYPT_CFLAGS=""
     LIBGCRYPT_LIBS=""
-    as_fn_error "libgcrypt 1.2.2 or newer is required." "$LINENO" 5
+    as_fn_error $? "libgcrypt 1.2.2 or newer is required." "$LINENO" 5
 
   fi
 
@@ -14979,11 +14991,10 @@ pkg_failed=no
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ENCHANT" >&5
 $as_echo_n "checking for ENCHANT... " >&6; }
 
-if test -n "$PKG_CONFIG"; then
-    if test -n "$ENCHANT_CFLAGS"; then
-        pkg_cv_ENCHANT_CFLAGS="$ENCHANT_CFLAGS"
-    else
-        if test -n "$PKG_CONFIG" && \
+if test -n "$ENCHANT_CFLAGS"; then
+    pkg_cv_ENCHANT_CFLAGS="$ENCHANT_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
     { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"enchant\""; } >&5
   ($PKG_CONFIG --exists --print-errors "enchant") 2>&5
   ac_status=$?
@@ -14993,15 +15004,13 @@ if test -n "$PKG_CONFIG"; then
 else
   pkg_failed=yes
 fi
-    fi
-else
-       pkg_failed=untried
+ else
+    pkg_failed=untried
 fi
-if test -n "$PKG_CONFIG"; then
-    if test -n "$ENCHANT_LIBS"; then
-        pkg_cv_ENCHANT_LIBS="$ENCHANT_LIBS"
-    else
-        if test -n "$PKG_CONFIG" && \
+if test -n "$ENCHANT_LIBS"; then
+    pkg_cv_ENCHANT_LIBS="$ENCHANT_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
     { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"enchant\""; } >&5
   ($PKG_CONFIG --exists --print-errors "enchant") 2>&5
   ac_status=$?
@@ -15011,14 +15020,15 @@ if test -n "$PKG_CONFIG"; then
 else
   pkg_failed=yes
 fi
-    fi
-else
-       pkg_failed=untried
+ else
+    pkg_failed=untried
 fi
 
 
 
 if test $pkg_failed = yes; then
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 
 if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
         _pkg_short_errors_supported=yes
@@ -15026,14 +15036,14 @@ else
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-               ENCHANT_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "enchant"`
+               ENCHANT_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "enchant" 2>&1`
         else
-               ENCHANT_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "enchant"`
+               ENCHANT_PKG_ERRORS=`$PKG_CONFIG --print-errors "enchant" 2>&1`
         fi
        # Put the nasty error message in config.log where it belongs
        echo "$ENCHANT_PKG_ERRORS" >&5
 
-       as_fn_error "Package requirements (enchant) were not met:
+       as_fn_error $? "Package requirements (enchant) were not met:
 
 $ENCHANT_PKG_ERRORS
 
@@ -15042,12 +15052,13 @@ installed software in a non-standard prefix.
 
 Alternatively, you may set the environment variables ENCHANT_CFLAGS
 and ENCHANT_LIBS to avoid the need to call pkg-config.
-See the pkg-config man page for more details.
-" "$LINENO" 5
+See the pkg-config man page for more details." "$LINENO" 5
 elif test $pkg_failed = untried; then
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
        { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error "The pkg-config script could not be found or is too old.  Make sure it
+as_fn_error $? "The pkg-config script could not be found or is too old.  Make sure it
 is in your PATH or set the PKG_CONFIG environment variable to the full
 path to pkg-config.
 
@@ -15056,7 +15067,7 @@ and ENCHANT_LIBS to avoid the need to call pkg-config.
 See the pkg-config man page for more details.
 
 To get pkg-config, see <http://pkg-config.freedesktop.org/>.
-See \`config.log' for more details." "$LINENO" 5; }
+See \`config.log' for more details" "$LINENO" 5 ; }
 else
        ENCHANT_CFLAGS=$pkg_cv_ENCHANT_CFLAGS
        ENCHANT_LIBS=$pkg_cv_ENCHANT_LIBS
 
 # Prepare some config.h variables
 
-$as_echo "#define MCABBER_BRANCH \"0.10.0\"" >>confdefs.h
+$as_echo "#define MCABBER_BRANCH \"0.10.1\"" >>confdefs.h
 
 
-$as_echo "#define MCABBER_VERSION \"0.10.0\"" >>confdefs.h
+$as_echo "#define MCABBER_VERSION \"0.10.1\"" >>confdefs.h
 
 
 # We need _GNU_SOURCE for strptime() and strcasestr()
@@ -15347,6 +15358,7 @@ DEFS=-DHAVE_CONFIG_H
 
 ac_libobjs=
 ac_ltlibobjs=
+U=
 for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
   # 1. Remove the extension, and $U if already installed.
   ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
@@ -15370,27 +15382,27 @@ else
 fi
 
 if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
-  as_fn_error "conditional \"AMDEP\" was never defined.
+  as_fn_error $? "conditional \"AMDEP\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
-  as_fn_error "conditional \"am__fastdepCC\" was never defined.
+  as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
-  as_fn_error "conditional \"am__fastdepCC\" was never defined.
+  as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HGCSET_TRUE}" && test -z "${HGCSET_FALSE}"; then
-  as_fn_error "conditional \"HGCSET\" was never defined.
+  as_fn_error $? "conditional \"HGCSET\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${OTR_TRUE}" && test -z "${OTR_FALSE}"; then
-  as_fn_error "conditional \"OTR\" was never defined.
+  as_fn_error $? "conditional \"OTR\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${INSTALL_HEADERS_TRUE}" && test -z "${INSTALL_HEADERS_FALSE}"; then
-  as_fn_error "conditional \"INSTALL_HEADERS\" was never defined.
+  as_fn_error $? "conditional \"INSTALL_HEADERS\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 
@@ -15540,19 +15552,19 @@ export LANGUAGE
 (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
 
 
-# as_fn_error ERROR [LINENO LOG_FD]
-# ---------------------------------
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
 # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
 # provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-# script with status $?, using 1 if that was 0.
+# script with STATUS, using 1 if that was 0.
 as_fn_error ()
 {
-  as_status=$?; test $as_status -eq 0 && as_status=1
-  if test "$3"; then
-    as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-    $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
   fi
-  $as_echo "$as_me: error: $1" >&2
+  $as_echo "$as_me: error: $2" >&2
   as_fn_exit $as_status
 } # as_fn_error
 
@@ -15748,7 +15760,7 @@ $as_echo X"$as_dir" |
       test -d "$as_dir" && break
     done
     test -z "$as_dirs" || eval "mkdir $as_dirs"
-  } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
 
 
 } # as_fn_mkdir_p
@@ -15801,8 +15813,8 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by mcabber $as_me 0.10.0, which was
-generated by GNU Autoconf 2.65.  Invocation command line was
+This file was extended by mcabber $as_me 0.10.1, which was
+generated by GNU Autoconf 2.67.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
   CONFIG_HEADERS  = $CONFIG_HEADERS
@@ -15867,11 +15879,11 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-mcabber config.status 0.10.0
-configured by $0, generated by GNU Autoconf 2.65,
+mcabber config.status 0.10.1
+configured by $0, generated by GNU Autoconf 2.67,
   with options \\"\$ac_cs_config\\"
 
-Copyright (C) 2009 Free Software Foundation, Inc.
+Copyright (C) 2010 Free Software Foundation, Inc.
 This config.status script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it."
 
@@ -15889,11 +15901,16 @@ ac_need_defaults=:
 while test $# != 0
 do
   case $1 in
-  --*=*)
+  --*=?*)
     ac_option=`expr "X$1" : 'X\([^=]*\)='`
     ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
     ac_shift=:
     ;;
+  --*=)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=
+    ac_shift=:
+    ;;
   *)
     ac_option=$1
     ac_optarg=$2
@@ -15915,6 +15932,7 @@ do
     $ac_shift
     case $ac_optarg in
     *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    '') as_fn_error $? "missing file argument" ;;
     esac
     as_fn_append CONFIG_FILES " '$ac_optarg'"
     ac_need_defaults=false;;
@@ -15927,7 +15945,7 @@ do
     ac_need_defaults=false;;
   --he | --h)
     # Conflict between --help and --header
-    as_fn_error "ambiguous option: \`$1'
+    as_fn_error $? "ambiguous option: \`$1'
 Try \`$0 --help' for more information.";;
   --help | --hel | -h )
     $as_echo "$ac_cs_usage"; exit ;;
@@ -15936,7 +15954,7 @@ Try \`$0 --help' for more information.";;
     ac_cs_silent=: ;;
 
   # This is an error.
-  -*) as_fn_error "unrecognized option: \`$1'
+  -*) as_fn_error $? "unrecognized option: \`$1'
 Try \`$0 --help' for more information." ;;
 
   *) as_fn_append ac_config_targets " $1"
@@ -16259,7 +16277,7 @@ do
     "mcabber.pc") CONFIG_FILES="$CONFIG_FILES mcabber.pc" ;;
     "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
 
-  *) as_fn_error "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
+  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5 ;;
   esac
 done
 
@@ -16297,7 +16315,7 @@ $debug ||
 {
   tmp=./conf$$-$RANDOM
   (umask 077 && mkdir "$tmp")
-} || as_fn_error "cannot create a temporary directory in ." "$LINENO" 5
+} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
 
 # Set up the scripts for CONFIG_FILES section.
 # No need to generate them if there are no CONFIG_FILES.
@@ -16314,7 +16332,7 @@ if test "x$ac_cr" = x; then
 fi
 ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
 if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
-  ac_cs_awk_cr='\r'
+  ac_cs_awk_cr='\\r'
 else
   ac_cs_awk_cr=$ac_cr
 fi
@@ -16328,18 +16346,18 @@ _ACEOF
   echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
   echo "_ACEOF"
 } >conf$$subs.sh ||
-  as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
-ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'`
+  as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
 ac_delim='%!_!# '
 for ac_last_try in false false false false false :; do
   . ./conf$$subs.sh ||
-    as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
 
   ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
   if test $ac_delim_n = $ac_delim_num; then
     break
   elif $ac_last_try; then
-    as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
   else
     ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
   fi
@@ -16428,20 +16446,28 @@ if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
 else
   cat
 fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \
-  || as_fn_error "could not setup config files machinery" "$LINENO" 5
+  || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
 _ACEOF
 
-# VPATH may cause trouble with some makes, so we remove $(srcdir),
-# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
+# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
 # trailing colons and then remove the whole line if VPATH becomes empty
 # (actually we leave an empty line to preserve line numbers).
 if test "x$srcdir" = x.; then
-  ac_vpsub='/^[         ]*VPATH[        ]*=/{
-s/:*\$(srcdir):*/:/
-s/:*\${srcdir}:*/:/
-s/:*@srcdir@:*/:/
-s/^\([^=]*=[    ]*\):*/\1/
+  ac_vpsub='/^[         ]*VPATH[        ]*=[    ]*/{
+h
+s///
+s/^/:/
+s/[     ]*$/:/
+s/:\$(srcdir):/:/g
+s/:\${srcdir}:/:/g
+s/:@srcdir@:/:/g
+s/^:*//
 s/:*$//
+x
+s/\(=[  ]*\).*/\1/
+G
+s/\n//
 s/^[^=]*=[      ]*$//
 }'
 fi
@@ -16469,7 +16495,7 @@ for ac_last_try in false false :; do
   if test -z "$ac_t"; then
     break
   elif $ac_last_try; then
-    as_fn_error "could not make $CONFIG_HEADERS" "$LINENO" 5
+    as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5
   else
     ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
   fi
@@ -16554,7 +16580,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 _ACAWK
 _ACEOF
 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-  as_fn_error "could not setup config headers machinery" "$LINENO" 5
+  as_fn_error $? "could not setup config headers machinery" "$LINENO" 5
 fi # test -n "$CONFIG_HEADERS"
 
 
@@ -16567,7 +16593,7 @@ do
   esac
   case $ac_mode$ac_tag in
   :[FHL]*:*);;
-  :L* | :C*:*) as_fn_error "invalid tag \`$ac_tag'" "$LINENO" 5;;
+  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5 ;;
   :[FH]-) ac_tag=-:-;;
   :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
   esac
@@ -16595,7 +16621,7 @@ do
           [\\/$]*) false;;
           *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
           esac ||
-          as_fn_error "cannot find input file: \`$ac_f'" "$LINENO" 5;;
+          as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5 ;;
       esac
       case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
       as_fn_append ac_file_inputs " '$ac_f'"
@@ -16622,7 +16648,7 @@ $as_echo "$as_me: creating $ac_file" >&6;}
 
     case $ac_tag in
     *:-:* | *:-) cat >"$tmp/stdin" \
-      || as_fn_error "could not create $ac_file" "$LINENO" 5 ;;
+      || as_fn_error $? "could not create $ac_file" "$LINENO" 5  ;;
     esac
     ;;
   esac
@@ -16759,22 +16785,22 @@ s&@MKDIR_P@&$ac_MKDIR_P&;t t
 $ac_datarootdir_hack
 "
 eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \
-  || as_fn_error "could not create $ac_file" "$LINENO" 5
+  || as_fn_error $? "could not create $ac_file" "$LINENO" 5
 
 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
   { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
   { ac_out=`sed -n '/^[         ]*datarootdir[  ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
   { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined.  Please make sure it is defined." >&5
+which seems to be undefined.  Please make sure it is defined" >&5
 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined.  Please make sure it is defined." >&2;}
+which seems to be undefined.  Please make sure it is defined" >&2;}
 
   rm -f "$tmp/stdin"
   case $ac_file in
   -) cat "$tmp/out" && rm -f "$tmp/out";;
   *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";;
   esac \
-  || as_fn_error "could not create $ac_file" "$LINENO" 5
+  || as_fn_error $? "could not create $ac_file" "$LINENO" 5
  ;;
   :H)
   #
@@ -16785,19 +16811,19 @@ which seems to be undefined.  Please make sure it is defined." >&2;}
       $as_echo "/* $configure_input  */" \
       && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs"
     } >"$tmp/config.h" \
-      || as_fn_error "could not create $ac_file" "$LINENO" 5
+      || as_fn_error $? "could not create $ac_file" "$LINENO" 5
     if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then
       { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
 $as_echo "$as_me: $ac_file is unchanged" >&6;}
     else
       rm -f "$ac_file"
       mv "$tmp/config.h" "$ac_file" \
-       || as_fn_error "could not create $ac_file" "$LINENO" 5
+       || as_fn_error $? "could not create $ac_file" "$LINENO" 5
     fi
   else
     $as_echo "/* $configure_input  */" \
       && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \
-      || as_fn_error "could not create -" "$LINENO" 5
+      || as_fn_error $? "could not create -" "$LINENO" 5
   fi
 # Compute "$ac_file"'s index in $config_headers.
 _am_arg="$ac_file"
@@ -17582,7 +17608,7 @@ _ACEOF
 ac_clean_files=$ac_clean_files_save
 
 test $ac_write_fail = 0 ||
-  as_fn_error "write failure creating $CONFIG_STATUS" "$LINENO" 5
+  as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
 
 
 # configure is writing to config.log, and then calls config.status.
@@ -17603,7 +17629,7 @@ if test "$no_create" != yes; then
   exec 5>>config.log
   # Use ||, not &&, to avoid exiting from the if with $? = 1, which
   # would make configure fail if this is the last instruction.
-  $ac_cs_success || as_fn_exit $?
+  $ac_cs_success || as_fn_exit 1
 fi
 if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
   { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
index 77f3d35..e701272 100644 (file)
@@ -2,7 +2,7 @@
 # Process this file with autoconf to produce a configure script.
 
 AC_PREREQ(2.59)
-AC_INIT([mcabber],[0.10.0],[mcabber@lilotux.net])
+AC_INIT([mcabber],[0.10.1],[mcabber@lilotux.net])
 AM_INIT_AUTOMAKE
 AC_CONFIG_SRCDIR([mcabber])
 AM_CONFIG_HEADER(mcabber/config.h)
@@ -272,7 +272,7 @@ AM_CONDITIONAL([OTR], [test x$libotr_found = xyes])
 AM_CONDITIONAL([INSTALL_HEADERS], [test x$enable_modules != xno])
 
 # Prepare some config.h variables
-AC_DEFINE([MCABBER_BRANCH], "0.10.0", [Mcabber branch])
+AC_DEFINE([MCABBER_BRANCH], "0.10.1", [Mcabber branch])
 AC_DEFINE([MCABBER_VERSION], "AC_PACKAGE_VERSION", [Mcabber version string])
 
 # We need _GNU_SOURCE for strptime() and strcasestr()
index 70eaee4..ee5be43 100644 (file)
@@ -198,6 +198,9 @@ Currently the following events exist:
    * resource - resource of the incoming message
    * message - message body, converted to locale charset
    * groupchat - ("true" or "false")
+   * delayed - message timestamp (ISO-8601 string) or empty string if
+     the message wasn't delayed
+   * error - "true" if this is an error message
  - hook-post-message-in (HOOK_POST_MESSAGE_IN) with parameters
    * jid - sender of the incoming message
    * resource - resource of the incoming message
@@ -206,6 +209,9 @@ Currently the following events exist:
    * attention - In a MUC message, true if you've been highlighted
      In a regular message, true if the sender has requested your
      attention (only implemented for MUC currently)
+   * delayed - message timestamp (ISO-8601 string) or empty string if
+     the message wasn't delayed
+   * error - "true" if this is an error message
  - hook-message-out (HOOK_MESSAGE_OUT) with parameters
    * jid - recipient of the outgoing message
    * message - message body, converted to locale charset
@@ -231,6 +237,11 @@ Currently the following events exist:
    * attention - number of non-MUC buffers with the attention sign (!)
    * muc_unread - number of MUC buffers with the unread message flag
    * muc_attention - number of MUC buffers with the attention sign
+ - hook-subscription (HOOK_SUBSCRIPTION)
+   * type - the type of the subscription message received.  Can be one
+     of subscribe, unsubscribe, subscribed, unsubscribed.
+   * jid - sender of the incoming subscription message
+   * message - optional message sent with the request
 
 
 ------------------------------------------------------------------------
index e809300..d34ead5 100644 (file)
@@ -195,6 +195,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKGLIB_DIR = @PKGLIB_DIR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
index aaf257a..249b51c 100644 (file)
@@ -130,6 +130,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKGLIB_DIR = @PKGLIB_DIR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
index c576892..0c11186 100644 (file)
@@ -130,6 +130,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKGLIB_DIR = @PKGLIB_DIR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
index 84713f4..a613fdc 100644 (file)
@@ -2,7 +2,8 @@
  /SAY_TO [-n|-h] [-q] [-f file] jid text
 
 Sendet die Nachricht "text" zu der jid.
-Denk daran, dass dieser Befehl die Nachricht an alle Ressourcen der jid gleichzeitig schicken wird. Wenn du unterschiedliche Nachrichten an diese schicken willst, musst du die Ressource mit angeben.
-Mit den Schaltern -n und -h kann man den Typ der Nachricht setzen(normal und headline).
+Beachte bitte, dass du die vollständige JID mit Resource angeben musst, wenn du genau festlegen willst, wohin die Nachricht gesendet werden soll.
+Du kannst zum abkürzen der vollständigen JID bei dem gerade ausgewählten Kontakt auch den Befehl /say_to ./resoucename benutzen.
+Mit den Schaltern -n und -h kann man den Typ der Nachricht setzen(normal und headline). "--" kann benutzt werden um Nachrichten die mit -n oder -h beginnen zu versenden.
 Um eine Nachricht im Hintergrund zu versenden, kann man den Schalter -q benutzen.
 Mit -f kann man eine Textdatei angeben, aus der die Nachricht ausgelesen wird.
index a79b0e5..ccfc327 100644 (file)
@@ -2,7 +2,8 @@
  /SAY_TO [-n|-h] [-q] [-f file] jid text
 
 Send the "text" message to the specified jid.
-Please note that this command doesn't set the default resource for a contact, so if you want to send several messages to a specific resource you will have to use "/say_to" for each message.
+Please note that you'll have to use a full jid with a resource identifier if you want to specify exactly where the message should go.
+You can send a message to a specific resource of the currently selected contact by using /say_to ./resourcename message.
 The "-n" flag turns the message to "normal" type, "-h" to "headline".  "--" can be used to send chat messages beginning with -n or -h.
 When "-q" is used, the message will be sent in the background and will not change the current active window.
 A text file can be provided with the "-f" switch (in which case there's no need to pass a text argument after the jid, of course).
index 0ed69fb..b91325c 100644 (file)
@@ -2,6 +2,7 @@
  /SAY_TO [-n|-h] [-q] [-f fichier] jid texte
 
 Envoie le message "texte" à l'utilisateur "jid".
-Remarquez que cette commande ne définit pas la ressource par défaut d'un contact, par conséquent si vous désirez envoyer plusieurs messages à une ressource précise il faudra utiliser "/say_to" à chaque fois.
+Notez que vous devrez utiliser un JID complet (avec identifiant de ressource) si vous désirez préciser où le message doit arriver exactement.
+Vous pouvez envoyer un message à une ressource spécifique du contact sélectionné en faisant /say_to ./resource message.
 Lorsque "-q" est utilisé, le message sera envoyé en arrière plan et la fenêtre active sera conservée.
 Un fichier texte peut être fourni avec l'option "-f" (auquel cas il est inutile de préciser le paramètre texte).
index 05f9d98..05e73b9 100644 (file)
@@ -2,12 +2,12 @@
 .\"     Title: mcabber
 .\"    Author: [see the "AUTHOR" section]
 .\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
-.\"      Date: 03/28/2010
+.\"      Date: 11/10/2010
 .\"    Manual: \ \&
-.\"    Source: \ \& 0.10.0
+.\"    Source: \ \& 0.10.1
 .\"  Language: English
 .\"
-.TH "MCABBER" "1" "03/28/2010" "\ \& 0\&.10\&.0\-dev" "\ \&"
+.TH "MCABBER" "1" "11/10/2010" "\ \& 0\&.10\&.1\" "\ \&"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -1332,6 +1332,8 @@ Send the "text" message to the specified jid\&.
 
 Please note that this command doesn\(cqt set the default resource for a contact, so if you want to send several messages to a specific resource you will have to use "/say_to" for each message\&.
 
+You can send a message to a specific resource of the currently selected contact by using /say_to ./resourcename message\&.
+
 The "\-n" flag turns the message to "normal" type, "\-h" to "headline"\&. "\-\-" can be used to send chat messages beginning with \-n or \-h\&.
 
 When "\-q" is used, the message will be sent in the background and will not change the current active window\&.
index 4a89ecf..beec618 100644 (file)
@@ -2511,6 +2511,7 @@ Set/update/delete an annotation. If there is no text, the current item&#8217;s a
 <p>\r
         Send the "text" message to the specified jid.<br />\r
         Please note that this command doesn&#8217;t set the default resource for a contact, so if you want to send several messages to a specific resource you will have to use "/say_to" for each message.<br />\r
+        You can send a message to a specific resource of the currently selected contact by using /say_to ./resourcename message.<br />\r
         The "-n" flag turns the message to "normal" type, "-h" to "headline".  "--" can be used to send chat messages beginning with -n or -h.<br />\r
         When "-q" is used, the message will be sent in the background and will not change the current active window.<br />\r
         A text file can be provided with the "-f" switch (in which case there&#8217;s no need to pass a text argument after the jid, of course).\r
@@ -2623,8 +2624,8 @@ License (GPL).</p></div>
 <div id="footnotes"><hr /></div>\r
 <div id="footer">\r
 <div id="footer-text">\r
-Version 0.10.0<br />\r
-Last updated 2010-03-28 11:48:11 CEST\r
+Version 0.10.1<br />\r
+Last updated 2010-11-10 14:19:41 CEST\r
 </div>\r
 </div>\r
 </body>\r
index 4bc205e..4627ab7 100644 (file)
@@ -1,7 +1,7 @@
 MCABBER(1)
 ===========
 Mikael BERTHE <mcabber@lilotux.net>
-v0.10.0, April 2010
+v0.10.1, December 2010
 
 NAME
 ----
@@ -478,6 +478,7 @@ COMMANDS RELATED TO MCABBER
 /say_to [-n|-h] [-q] [-f file] jid text::
         Send the "text" message to the specified jid. +
         Please note that this command doesn't set the default resource for a contact, so if you want to send several messages to a specific resource you will have to use "/say_to" for each message. +
+        You can send a message to a specific resource of the currently selected contact by using /say_to ./resourcename message. +
         The "-n" flag turns the message to "normal" type, "-h" to "headline".  "--" can be used to send chat messages beginning with -n or -h. +
         When "-q" is used, the message will be sent in the background and will not change the current active window. +
         A text file can be provided with the "-f" switch (in which case there's no need to pass a text argument after the jid, of course).
index 3dd2bbc..4f38d6a 100644 (file)
@@ -208,6 +208,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKGLIB_DIR = @PKGLIB_DIR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
index e52dfa5..10a43e5 100644 (file)
@@ -195,7 +195,7 @@ void cmd_init(void)
           COMPL_JID, COMPL_STATUS, &do_status_to);
   cmd_add("version", "Show mcabber version", 0, 0, &do_version);
 #ifdef MODULES_ENABLE
-  cmd_add("module", "Manipulations with modules", 0, 0, &do_module);
+  cmd_add("module", "Manipulations with modules", COMPL_MODULE, 0, &do_module);
 #endif
 
   // Status category
@@ -330,6 +330,14 @@ void cmd_init(void)
   compl_add_category_word(COMPL_COLOR, "roster");
   compl_add_category_word(COMPL_COLOR, "muc");
   compl_add_category_word(COMPL_COLOR, "mucnick");
+
+#ifdef MODULES_ENABLE
+  // Module category
+  compl_add_category_word(COMPL_MODULE, "info");
+  compl_add_category_word(COMPL_MODULE, "list");
+  compl_add_category_word(COMPL_MODULE, "load");
+  compl_add_category_word(COMPL_MODULE, "unload");
+#endif
 }
 
 //  expandalias(line)
@@ -3217,6 +3225,13 @@ static void do_version(char *arg)
   gchar *ver = mcabber_version();
   scr_LogPrint(LPRINT_NORMAL, "This is mcabber version %s.", ver);
   g_free(ver);
+#ifdef MODULES_ENABLE
+  scr_LogPrint(LPRINT_NORMAL, "Compiled with modules support (API %s:%d-%d).",
+         MCABBER_BRANCH, MCABBER_API_MIN, MCABBER_API_VERSION);
+# ifdef PKGLIB_DIR
+  scr_LogPrint(LPRINT_NORMAL, " Modules directory: " PKGLIB_DIR);
+# endif
+#endif
 }
 
 static void do_request(char *arg)
index f116d0b..ece890b 100644 (file)
@@ -36,6 +36,8 @@
 #include "utf8.h"
 #include "roster.h"
 #include "events.h"
+#include "settings.h"
+#include "logprint.h"
 
 // Completion structure
 typedef struct {
@@ -47,7 +49,7 @@ typedef struct {
 
 // Category structure
 typedef struct {
-  guint flag;
+  guint64 flag;
   GSList *words;
 } category;
 
@@ -55,13 +57,38 @@ static GSList *Categories;
 static compl *InputCompl;
 
 #ifdef MODULES_ENABLE
-guint registered_cats = COMPL_CMD|COMPL_JID|COMPL_URLJID|COMPL_NAME| \
-                        COMPL_STATUS|COMPL_FILENAME|COMPL_ROSTER|COMPL_BUFFER| \
-                        COMPL_GROUP|COMPL_GROUPNAME|COMPL_MULTILINE|COMPL_ROOM| \
-                        COMPL_RESOURCE|COMPL_AUTH|COMPL_REQUEST|COMPL_EVENTS| \
-                        COMPL_EVENTSID|COMPL_PGP|COMPL_COLOR| \
-                        COMPL_OTR|COMPL_OTRPOLICY| \
-                        0;
+static guint64 registered_cats;
+
+static inline void register_builtin_cat(guint c) {
+  registered_cats |= 1UL << (c-1);
+}
+
+void compl_init_system(void)
+{
+  // Builtin completion categories:
+  register_builtin_cat(COMPL_CMD);
+  register_builtin_cat(COMPL_JID);
+  register_builtin_cat(COMPL_URLJID);
+  register_builtin_cat(COMPL_NAME);
+  register_builtin_cat(COMPL_STATUS);
+  register_builtin_cat(COMPL_FILENAME);
+  register_builtin_cat(COMPL_ROSTER);
+  register_builtin_cat(COMPL_BUFFER);
+  register_builtin_cat(COMPL_GROUP);
+  register_builtin_cat(COMPL_GROUPNAME);
+  register_builtin_cat(COMPL_MULTILINE);
+  register_builtin_cat(COMPL_ROOM);
+  register_builtin_cat(COMPL_RESOURCE);
+  register_builtin_cat(COMPL_AUTH);
+  register_builtin_cat(COMPL_REQUEST);
+  register_builtin_cat(COMPL_EVENTS);
+  register_builtin_cat(COMPL_EVENTSID);
+  register_builtin_cat(COMPL_PGP);
+  register_builtin_cat(COMPL_COLOR);
+  register_builtin_cat(COMPL_OTR);
+  register_builtin_cat(COMPL_OTRPOLICY);
+  register_builtin_cat(COMPL_MODULE);
+}
 
 //  compl_new_category()
 // Reserves id for new completion category.
@@ -73,12 +100,12 @@ guint compl_new_category(void)
   guint i = 0;
   while ((registered_cats >> i) & 1)
     i++;
-  if (i >= 8 * sizeof (guint))
+  if (i >= 8 * sizeof (registered_cats))
     return 0;
   else {
-    guint id = 1 << i;
+    guint64 id = 1 << i;
     registered_cats |= id;
-    return id;
+    return i+1;
   }
 }
 
@@ -88,7 +115,13 @@ guint compl_new_category(void)
 // and specify exactly what you get from compl_new_category.
 void compl_del_category(guint id)
 {
-  registered_cats &= ~id;
+  if (!id) {
+    scr_log_print(LPRINT_LOGNORM, "Error: compl_del_category() - "
+                  "Invalid category.");
+    return;
+  }
+  id--;
+  registered_cats &= ~(1<<id);
 }
 #endif
 
@@ -103,17 +136,23 @@ guint new_completion(const char *prefix, GSList *compl_cat, const gchar *suffix)
 {
   compl *c;
   GSList *sl_cat;
+  gint (*cmp)(const char *s1, const char *s2, size_t n);
   size_t len = strlen(prefix);
 
   if (InputCompl) { // This should not happen, but hey...
     cancel_completion();
   }
 
+  if (settings_opt_get_int("completion_ignore_case"))
+    cmp = &strncasecmp;
+  else
+    cmp = &strncmp;
+
   c = g_new0(compl, 1);
   // Build the list of matches
   for (sl_cat = compl_cat; sl_cat; sl_cat = g_slist_next(sl_cat)) {
     char *word = sl_cat->data;
-    if (!strncasecmp(prefix, word, len)) {
+    if (!cmp(prefix, word, len)) {
       if (strlen(word) != len) {
         gchar *compval;
         if (suffix)
@@ -186,17 +225,28 @@ const char *complete()
 // Adds a keyword as a possible completion in category categ.
 void compl_add_category_word(guint categ, const gchar *word)
 {
+  guint64 catv;
   GSList *sl_cat;
   category *cat;
   char *nword;
+
+  if (!categ) {
+    scr_log_print(LPRINT_LOGNORM, "Error: compl_add_category_word() - "
+                  "Invalid category.");
+    return;
+  }
+
+  categ--;
+  catv = 1UL << categ;
+
   // Look for category
   for (sl_cat=Categories; sl_cat; sl_cat = g_slist_next(sl_cat)) {
-    if (categ == ((category*)sl_cat->data)->flag)
+    if (catv == ((category*)sl_cat->data)->flag)
       break;
   }
   if (!sl_cat) {   // Category not found, let's create it
     cat = g_new0(category, 1);
-    cat->flag = categ;
+    cat->flag = catv;
     Categories = g_slist_append(Categories, cat);
   } else
     cat = (category*)sl_cat->data;
@@ -222,12 +272,23 @@ void compl_add_category_word(guint categ, const gchar *word)
 // Removes a keyword from category categ in completion list.
 void compl_del_category_word(guint categ, const gchar *word)
 {
+  guint64 catv;
   GSList *sl_cat, *sl_elt;
   category *cat;
   char *nword;
+
+  if (!categ) {
+    scr_log_print(LPRINT_LOGNORM, "Error: compl_del_category_word() - "
+                  "Invalid category.");
+    return;
+  }
+
+  categ--;
+  catv = 1UL << categ;
+
   // Look for category
   for (sl_cat=Categories; sl_cat; sl_cat = g_slist_next(sl_cat)) {
-    if (categ == ((category*)sl_cat->data)->flag)
+    if (catv == ((category*)sl_cat->data)->flag)
       break;
   }
   if (!sl_cat) return;   // Category not found, finished!
@@ -256,18 +317,24 @@ void compl_del_category_word(guint categ, const gchar *word)
 }
 
 //  compl_get_category_list()
-// Returns a slist of all words in the categories specified by the given flags
+// Returns a slist of all words in the specified categorie.
 // Iff this function sets *dynlist to TRUE, then the caller must free the
 // whole list after use.
-GSList *compl_get_category_list(guint cat_flags, guint *dynlist)
+GSList *compl_get_category_list(guint categ, guint *dynlist)
 {
+  guint64 cat_flags;
   GSList *sl_cat;
 
+  if (!categ) {
+    scr_log_print(LPRINT_LOGNORM, "Error: compl_get_category_list() - "
+                  "Invalid category.");
+    return NULL;
+  }
+
   *dynlist = FALSE;
+  cat_flags = 1UL << (categ - 1);
 
-  // Look for category
-  // XXX Actually that's not that simple... cat_flags can be a combination
-  // of several flags!
+  // Look for the category
   for (sl_cat=Categories; sl_cat; sl_cat = g_slist_next(sl_cat)) {
     if (cat_flags == ((category*)sl_cat->data)->flag)
       break;
@@ -277,16 +344,16 @@ GSList *compl_get_category_list(guint cat_flags, guint *dynlist)
 
   // Handle dynamic SLists
   *dynlist = TRUE;
-  if (cat_flags == COMPL_GROUPNAME) {
+  if (categ == COMPL_GROUPNAME) {
     return compl_list(ROSTER_TYPE_GROUP);
   }
-  if (cat_flags == COMPL_JID) {
+  if (categ == COMPL_JID) {
     return compl_list(ROSTER_TYPE_USER);
   }
-  if (cat_flags == COMPL_RESOURCE) {
+  if (categ == COMPL_RESOURCE) {
     return buddy_getresources_locale(NULL);
   }
-  if (cat_flags == COMPL_EVENTSID) {
+  if (categ == COMPL_EVENTSID) {
     GSList *compl = evs_geteventslist();
     GSList *cel;
     for (cel = compl; cel; cel = cel->next)
index 6dbb617..2fc4b5e 100644 (file)
@@ -5,37 +5,38 @@
 
 #include <mcabber/config.h>
 
-#define COMPL_CMD         (1U<<0)
-#define COMPL_JID         (1U<<1)
-#define COMPL_URLJID      (1U<<2)   // Not implemented yet
-#define COMPL_NAME        (1U<<3)   // Not implemented yet
-#define COMPL_STATUS      (1U<<4)
-#define COMPL_FILENAME    (1U<<5)   // Not implemented yet
-#define COMPL_ROSTER      (1U<<6)
-#define COMPL_BUFFER      (1U<<7)
-#define COMPL_GROUP       (1U<<8)
-#define COMPL_GROUPNAME   (1U<<9)
-#define COMPL_MULTILINE   (1U<<10)
-#define COMPL_ROOM        (1U<<11)
-#define COMPL_RESOURCE    (1U<<12)
-#define COMPL_AUTH        (1U<<13)
-#define COMPL_REQUEST     (1U<<14)
-#define COMPL_EVENTS      (1U<<15)
-#define COMPL_EVENTSID    (1U<<16)
-#define COMPL_PGP         (1U<<17)
-#define COMPL_COLOR       (1U<<18)
-#define COMPL_OTR         (1U<<19)
-#define COMPL_OTRPOLICY   (1U<<20)
-#ifdef MODULES_ENABLE
-#define COMPL_MAX_BUILTIN (1U<<20)
+#define COMPL_CMD         1
+#define COMPL_JID         2
+#define COMPL_URLJID      3   // Not implemented yet
+#define COMPL_NAME        4   // Not implemented yet
+#define COMPL_STATUS      5
+#define COMPL_FILENAME    6   // Not implemented yet
+#define COMPL_ROSTER      7
+#define COMPL_BUFFER      8
+#define COMPL_GROUP       9
+#define COMPL_GROUPNAME   10
+#define COMPL_MULTILINE   11
+#define COMPL_ROOM        12
+#define COMPL_RESOURCE    13
+#define COMPL_AUTH        14
+#define COMPL_REQUEST     15
+#define COMPL_EVENTS      16
+#define COMPL_EVENTSID    17
+#define COMPL_PGP         18
+#define COMPL_COLOR       19
+#define COMPL_OTR         20
+#define COMPL_OTRPOLICY   21
+#define COMPL_MODULE      22
 
-guint compl_new_category (void);
-void  compl_del_category (guint id);
+#ifdef MODULES_ENABLE
+void  compl_init_system(void);
+guint compl_new_category(void);
+void  compl_del_category(guint id);
 #endif
 
-void    compl_add_category_word(guint, const gchar *command);
+void    compl_add_category_word(guint categ, const gchar *command);
 void    compl_del_category_word(guint categ, const gchar *word);
-GSList *compl_get_category_list(guint cat_flags, guint *dynlist);
+GSList *compl_get_category_list(guint categ, guint *dynlist);
 
 guint   new_completion(const gchar *prefix, GSList *compl_cat,
                        const gchar *suffix);
index fb1c0ab..eb66295 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * events.c     -- Events fonctions
  *
- * Copyright (C) 2006-2009 Mikael Berthe <mikael@lilotux.net>
+ * Copyright (C) 2006-2010 Mikael Berthe <mikael@lilotux.net>
  * Copyrigth (C) 2010      Myhailo Danylenko <isbear@ukrposte.net>
  *
  * This program is free software; you can redistribute it and/or modify
index 8c2df7e..c2abacd 100644 (file)
@@ -121,6 +121,9 @@ static gboolean attach_fifo(const char *name)
   if (fd == -1)
     return FALSE;
 
+  if (fifo_channel)
+    g_io_channel_unref(fifo_channel);
+
   fifo_channel = g_io_channel_unix_new(fd);
 
   g_io_channel_set_flags(fifo_channel, G_IO_FLAG_NONBLOCK, NULL);
index 8c8776c..917536d 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * help.c       -- Help command
  *
- * Copyright (C) 2006-2009 Mikael Berthe <mikael@lilotux.net>
+ * Copyright (C) 2006-2010 Mikael Berthe <mikael@lilotux.net>
  * Copyrigth (C) 2009      Myhailo Danylenko <isbear@ukrpost.net>
  *
  * This program is free software; you can redistribute it and/or modify
@@ -195,6 +195,8 @@ static gboolean do_help_in_dir(const char *arg, const char *path, const char *ji
     ++lines;
   }
 
+  g_io_channel_unref(channel);
+
   g_string_free(line, TRUE);
 
   if (!lines)
index 303eb30..fb630f6 100644 (file)
@@ -197,6 +197,15 @@ void hk_message_in(const char *bjid, const char *resname,
   unsigned mucnicklen = 0;
   const char *ename = NULL;
   gboolean attention = FALSE, mucprivmsg = FALSE;
+  gboolean error_msg_subtype = (type == LM_MESSAGE_SUB_TYPE_ERROR);
+#ifdef MODULES_ENABLE
+  gchar strdelay[32];
+
+  if (timestamp)
+    to_iso8601(strdelay, timestamp);
+  else
+    strdelay[0] = '\0';
+#endif
 
   if (encrypted == ENCRYPTED_PGP)
     message_flags |= HBB_PREFIX_PGPCRYPT;
@@ -240,6 +249,8 @@ void hk_message_in(const char *bjid, const char *resname,
       { "resource", resname },
       { "message", msg },
       { "groupchat", is_groupchat ? "true" : "false" },
+      { "delayed", strdelay },
+      { "error", error_msg_subtype ? "true" : "false" },
       { NULL, NULL },
     };
     h_result = hk_run_handlers(HOOK_PRE_MESSAGE_IN, args);
@@ -323,7 +334,7 @@ void hk_message_in(const char *bjid, const char *resname,
     }
   }
 
-  if (type  == LM_MESSAGE_SUB_TYPE_ERROR) {
+  if (error_msg_subtype) {
     message_flags = HBB_PREFIX_ERR | HBB_PREFIX_IN;
     scr_LogPrint(LPRINT_LOGNORM, "Error message received from <%s>", bjid);
   }
@@ -389,6 +400,8 @@ void hk_message_in(const char *bjid, const char *resname,
       { "message", msg },
       { "groupchat", is_groupchat ? "true" : "false" },
       { "attention", attention ? "true" : "false" },
+      { "delayed", strdelay },
+      { "error", error_msg_subtype ? "true" : "false" },
       { NULL, NULL },
     };
     hk_run_handlers(HOOK_POST_MESSAGE_IN, args);
@@ -699,6 +712,42 @@ void hk_unread_list_change(guint unread_count, guint attention_count,
   g_free(str_unread);
 }
 
+//  hk_presence_subscription_request(jid, message)
+// Return non-zero if mcabber should stop processing the subscription request
+guint hk_subscription(LmMessageSubType mstype, const gchar *bjid,
+                      const gchar *msg)
+{
+#ifdef MODULES_ENABLE
+  guint h_result;
+  const char *stype;
+
+  if (mstype == LM_MESSAGE_SUB_TYPE_SUBSCRIBE)
+    stype = "subscribe";
+  else if (mstype == LM_MESSAGE_SUB_TYPE_UNSUBSCRIBE)
+    stype = "unsubscribe";
+  else if (mstype == LM_MESSAGE_SUB_TYPE_SUBSCRIBED)
+    stype = "subscribed";
+  else if (mstype == LM_MESSAGE_SUB_TYPE_UNSUBSCRIBED)
+    stype = "unsubscribed";
+  else return 0; // Should not happen
+
+  {
+    hk_arg_t args[] = {
+      { "type", stype },
+      { "jid", bjid },
+      { "message", msg ? msg : "" },
+      { NULL, NULL },
+    };
+    h_result = hk_run_handlers(HOOK_SUBSCRIPTION, args);
+  }
+  if (h_result != HOOK_HANDLER_RESULT_ALLOW_MORE_HANDLERS) {
+    scr_LogPrint(LPRINT_DEBUG, "Subscription message ignored (hook result).");
+    return h_result;
+  }
+#endif
+  return 0;
+}
+
 
 /* External commands */
 
index 324acd1..a8aa79e 100644 (file)
@@ -22,6 +22,7 @@
 #define HOOK_POST_CONNECT       "hook-post-connect"
 #define HOOK_PRE_DISCONNECT     "hook-pre-disconnect"
 #define HOOK_UNREAD_LIST_CHANGE "hook-unread-list-change"
+#define HOOK_SUBSCRIPTION       "hook-subscription"
 
 typedef enum {
   HOOK_HANDLER_RESULT_ALLOW_MORE_HANDLERS = 0,
@@ -62,6 +63,9 @@ void hk_predisconnect(void);
 void hk_unread_list_change(guint unread_count, guint attention_count,
                            guint muc_unread, guint muc_attention);
 
+guint hk_subscription(LmMessageSubType mstype, const gchar *bjid,
+                      const gchar *msg);
+
 void hk_ext_cmd_init(const char *command);
 void hk_ext_cmd(const char *bjid, guchar type, guchar info, const char *data);
 
index 9640d93..dd27387 100644 (file)
@@ -2,7 +2,6 @@
  * main.c
  *
  * Copyright (C) 2005-2010 Mikael Berthe <mikael@lilotux.net>
- * Parts of this file come from Cabber <cabber@ajmacias.com>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -48,6 +47,7 @@
 #include "events.h"
 
 #ifdef MODULES_ENABLE
+# include "compl.h"
 # include "modules.h"
 #endif
 
@@ -163,7 +163,7 @@ static void credits(void)
   const char *v_fmt = "MCabber %s -- Email: mcabber [at] lilotux [dot] net\n";
   char *v = mcabber_version();
   printf(v_fmt, v);
-  scr_LogPrint(LPRINT_LOGNORM|LPRINT_NOTUTF8, v_fmt, v);
+  scr_LogPrint(LPRINT_NORMAL|LPRINT_NOTUTF8, v_fmt, v);
   g_free(v);
 }
 
@@ -364,6 +364,7 @@ int main(int argc, char **argv)
   scr_init_bindings();
   caps_init();
 #ifdef MODULES_ENABLE
+  compl_init_system();
   modules_init();
 #endif
   /* Initialize charset */
@@ -379,19 +380,35 @@ int main(int argc, char **argv)
   if (ret == -2)
     exit(EXIT_FAILURE);
 
+  /* Display configuration settings */
+  {
+    const char *p;
+    if ((p = settings_opt_get("server")) != NULL)
+      scr_log_print(LPRINT_NORMAL, "Server: %s", p);
+    if ((p = settings_opt_get("jid")) != NULL) {
+      scr_log_print(LPRINT_NORMAL, "User JID: %s", p);
+    } else if (settings_opt_get("username")) {
+      /* TODO: remove after 0.10.2/3 */
+      scr_log_print(LPRINT_NORMAL, "** ERROR: The JID is missing, but "
+                    "the variable 'username' is defined in your "
+                    "configuration file.\n"
+                    "** Please update your configuration file and set "
+                    "the 'jid' variable.");
+    }
+
+    if (settings_opt_get("ssl_verify")) {  // Deprecated option
+      /* TODO: remove after 0.10.2/3 */
+      scr_log_print(LPRINT_NORMAL,
+                    "** ERROR: The option ssl_verify is deprecated.\n"
+                    "** Please update your configuration file and use "
+                    "the 'ssl_ignore_checks' variable.");
+    }
+  }
+
   /* If no password is stored, we ask for it before entering
      ncurses mode -- unless the username is unknown. */
   if (settings_opt_get("jid") && !settings_opt_get("password")) {
-    const char *p;
-    char *pwd;
-    p = settings_opt_get("server");
-    if (p)
-      printf("Server: %s\n", p);
-    p = settings_opt_get("jid");
-    if (p)
-      printf("User JID: %s\n", p);
-
-    pwd = ask_password("your Jabber password");
+    char *pwd = ask_password("your Jabber password");
     settings_set(SETTINGS_TYPE_OPTION, "password", pwd);
     g_free(pwd);
   }
index 6cf5fe8..ca926aa 100644 (file)
@@ -163,7 +163,7 @@ typedef struct {
 } keyseq;
 
 #ifdef HAVE_GLIB_REGEX
-static GRegex *url_regex;
+static GRegex *url_regex = NULL;
 #endif
 
 GSList *keyseqlist;
@@ -808,8 +808,10 @@ void scr_terminate_curses(void)
   refresh();
   endwin();
 #ifdef HAVE_GLIB_REGEX
-  if (url_regex)
+  if (url_regex) {
     g_regex_unref(url_regex);
+    url_regex = NULL;
+  }
 #endif
   Curses = FALSE;
   return;
@@ -1375,7 +1377,8 @@ static void scr_write_in_window(const char *winId, const char *text,
   if (mucnicklen) {
     nicktmp = g_strndup(text, mucnicklen);
     nicklocaltmp = from_utf8(nicktmp);
-    mucnicklen = strlen(nicklocaltmp);
+    if (nicklocaltmp)
+      mucnicklen = strlen(nicklocaltmp);
     g_free(nicklocaltmp);
     g_free(nicktmp);
   }
@@ -3141,6 +3144,14 @@ static const char *scr_cmdhisto_next(char *mask, guint len)
   return cmdhisto_backup;
 }
 
+static char *_strmove(char *dst, const char *src)
+{
+  char *dest = dst;
+  while ((*dest++ = *src++) != '\0')
+    ;
+  return dest;
+}
+
 //  readline_transpose_chars()
 // Drag  the  character  before point forward over the character at
 // point, moving point forward as well.  If point is at the end  of
@@ -3221,10 +3232,7 @@ void readline_backward_kill_word(void)
 
   // Modify the line
   ptr_inputline = c;
-  for (;;) {
-    *c = *old++;
-    if (!*c++) break;
-  }
+  _strmove(ptr_inputline, old);
   check_offset(-1);
 }
 
@@ -3451,9 +3459,7 @@ void readline_backward_kill_char(void)
   src = ptr_inputline;
   c = prev_char(ptr_inputline, inputLine);
   ptr_inputline = c;
-  for ( ; *src ; )
-    *c++ = *src++;
-  *c = 0;
+  _strmove(ptr_inputline, src);
   check_offset(-1);
 }
 
@@ -3462,7 +3468,7 @@ void readline_forward_kill_char(void)
   if (!*ptr_inputline)
     return;
 
-  strcpy(ptr_inputline, next_char(ptr_inputline));
+  _strmove(ptr_inputline, next_char(ptr_inputline));
 }
 
 void readline_iline_start(void)
@@ -3486,7 +3492,7 @@ void readline_backward_kill_iline(void)
   if (*dest == COMMAND_CHAR && ptr_inputline != dest+1)
     dest = next_char(dest);
 
-  strcpy(dest, ptr_inputline);
+  _strmove(dest, ptr_inputline);
   ptr_inputline = dest;
   inputline_offset = 0;
 }
@@ -3613,7 +3619,12 @@ static void scr_handle_tab(void)
 
   if (!completion_started) {
     guint dynlist;
-    GSList *list = compl_get_category_list(compl_categ, &dynlist);
+    GSList *list;
+
+    if (!compl_categ)
+      return; // Nothing to complete
+
+    list = compl_get_category_list(compl_categ, &dynlist);
     if (list) {
       guint n;
       char *prefix = g_strndup(row, ptr_inputline-row);
@@ -4012,9 +4023,10 @@ void scr_process_key(keycode kcode)
 
   switch (kcode.mcode) {
     case 0:
+        // key = kcode.value;
         break;
     case MKEY_EQUIV:
-        key = kcode.value;
+        // key = kcode.value;
         break;
     case MKEY_META:
     default:
index 1e60ca4..60c0387 100644 (file)
@@ -52,6 +52,7 @@ static char idnprep[1024];
 #include "utils.h"
 #include "logprint.h"
 #include "settings.h"
+#include "main.h"
 
 static int DebugEnabled;
 static char *FName;
@@ -64,6 +65,12 @@ char *jidtodisp(const char *fjid)
   char *ptr;
   char *alias;
 
+  if (!fjid) {
+    scr_LogPrint(LPRINT_LOGNORM, "** jidtodisp: NULL JID, "
+                                 "this is probably a bug, please report!");
+    return NULL;
+  }
+
   alias = g_strdup(fjid);
 
   if ((ptr = strchr(alias, JID_RESOURCE_SEPARATOR)) != NULL) {
@@ -160,6 +167,7 @@ static gboolean tracelog_create(void)
   FILE *fp;
   struct stat buf;
   int err;
+  char *v;
 
   fp = fopen(FName, "a");
   if (!fp) {
@@ -180,9 +188,11 @@ static gboolean tracelog_create(void)
   }
   fchmod(fileno(fp), S_IRUSR|S_IWUSR);
 
-  fputs("New trace log started.\n----------------------\n", fp);
+  v = mcabber_version();
+  fprintf(fp, "New trace log started.  MCabber version %s\n"
+              "----------------------\n", v);
+  g_free(v);
   fclose(fp);
-
   return TRUE;
 }
 
index 719c75f..290a347 100644 (file)
@@ -804,8 +804,6 @@ static void check_signature(const char *barejid, const char *rname,
 
 static LmSSLResponse ssl_cb(LmSSL *ssl, LmSSLStatus status, gpointer ud)
 {
-  scr_LogPrint(LPRINT_LOGNORM, "SSL status:%d", status);
-
   switch (status) {
   case LM_SSL_STATUS_NO_CERT_FOUND:
     scr_LogPrint(LPRINT_LOGNORM, "No certificate found!");
@@ -840,6 +838,8 @@ static LmSSLResponse ssl_cb(LmSSL *ssl, LmSSLStatus status, gpointer ud)
   case LM_SSL_STATUS_GENERIC_ERROR:
     scr_LogPrint(LPRINT_LOGNORM, "Generic SSL error!");
     break;
+  default:
+    scr_LogPrint(LPRINT_LOGNORM, "SSL error:%d", status);
   }
 
   if (settings_opt_get_int("ssl_ignore_checks"))
@@ -1153,6 +1153,7 @@ static void gotmessage(LmMessageSubType type, const char *from,
   // this is a regular message from an unsubscribed user.
   // System messages (from our server) are allowed.
   if (settings_opt_get_int("block_unsubscribed") &&
+      (roster_gettype(bjid) != ROSTER_TYPE_ROOM) &&
       !(roster_getsubscription(bjid) & sub_from) &&
       (type != LM_MESSAGE_SUB_TYPE_GROUPCHAT)) {
     char *sbjid = jidtodisp(lm_connection_get_jid(lconnection));
@@ -1238,9 +1239,15 @@ static LmHandlerResult handle_messages(LmMessageHandler *handler,
       // Display inside the room window
       if (r == s) {
         // No specific resource (this is certainly history)
-        mbuf = g_strdup_printf("The topic has been set to: %s", subj);
+        if (*subj)
+          mbuf = g_strdup_printf("The topic has been set to: %s", subj);
+        else
+          mbuf = g_strdup_printf("The topic has been cleared");
       } else {
-        mbuf = g_strdup_printf("%s has set the topic to: %s", r, subj);
+        if (*subj)
+          mbuf = g_strdup_printf("%s has set the topic to: %s", r, subj);
+        else
+          mbuf = g_strdup_printf("%s has cleared the topic", r);
       }
       scr_WriteIncomingMessage(s, mbuf, 0,
                                HBB_PREFIX_INFO|HBB_PREFIX_NOFLAG, 0);
@@ -1286,8 +1293,7 @@ static LmHandlerResult handle_messages(LmMessageHandler *handler,
   }
 
   if (from) {
-    x = lm_message_node_find_xmlns(m->node,
-                                   "http://jabber.org/protocol/muc#user");
+    x = lm_message_node_find_xmlns(m->node, NS_MUC_USER);
     if (x && !strcmp(x->name, "x"))
       got_muc_message(from, x);
   }
@@ -1335,13 +1341,22 @@ static LmHandlerResult handle_presence(LmMessageHandler *handler,
   char bpprio;
   time_t timestamp = 0L;
   LmMessageNode *muc_packet, *caps;
-  LmMessageSubType mstype;
+  LmMessageSubType mstype = lm_message_get_sub_type(m);
 
   // Check for MUC presence packet
-  muc_packet = lm_message_node_find_xmlns
-          (m->node, "http://jabber.org/protocol/muc#user");
+  muc_packet = lm_message_node_find_xmlns(m->node, NS_MUC_USER);
 
   from = lm_message_get_from(m);
+  if (!from) {
+    scr_LogPrint(LPRINT_LOGNORM, "Unexpected presence packet!");
+
+    if (mstype == LM_MESSAGE_SUB_TYPE_ERROR) {
+      display_server_error(lm_message_node_get_child(m->node, "error"),
+                           lm_message_get_from(m));
+      return LM_HANDLER_RESULT_REMOVE_MESSAGE;
+    }
+    return LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS;
+  }
 
   rname = strchr(from, JID_RESOURCE_SEPARATOR);
   if (rname) rname++;
@@ -1354,7 +1369,6 @@ static LmHandlerResult handle_presence(LmMessageHandler *handler,
   }
 
   bjid = jidtodisp(from);
-  mstype = lm_message_get_sub_type(m);
 
   if (mstype == LM_MESSAGE_SUB_TYPE_ERROR) {
     LmMessageNode *x;
@@ -1395,6 +1409,8 @@ static LmHandlerResult handle_presence(LmMessageHandler *handler,
     ust = offline;
 
   ustmsg = lm_message_node_get_child_value(m->node, "status");
+  if (ustmsg && !*ustmsg)
+    ustmsg = NULL;
 
   // Timestamp?
   timestamp = lm_message_node_get_timestamp(m->node);
@@ -1426,6 +1442,12 @@ static LmHandlerResult handle_presence(LmMessageHandler *handler,
   if (caps && ust != offline) {
     const char *ver = lm_message_node_get_attribute(caps, "ver");
     GSList *sl_buddy = NULL;
+
+    if (!ver) {
+      scr_LogPrint(LPRINT_LOGNORM, "Error: malformed caps version (%s)", bjid);
+      goto handle_presence_return;
+    }
+
     if (rname)
       sl_buddy = roster_find(bjid, jidsearch, ROSTER_TYPE_USER);
     // Only cache the caps if the user is on the roster
@@ -1454,6 +1476,7 @@ static LmHandlerResult handle_presence(LmMessageHandler *handler,
     }
   }
 
+handle_presence_return:
   g_free(bjid);
   return LM_HANDLER_RESULT_REMOVE_MESSAGE;
 }
@@ -1474,6 +1497,12 @@ static LmHandlerResult handle_iq(LmMessageHandler *handler,
     return LM_HANDLER_RESULT_REMOVE_MESSAGE;
   }
 
+  if (mstype == LM_MESSAGE_SUB_TYPE_RESULT) {
+    scr_LogPrint(LPRINT_DEBUG, "Unhandled IQ result? %s",
+                 lm_message_node_to_string(m->node));
+    return LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS;
+  }
+
   for (x = m->node->children; x; x=x->next) {
     xmlns = lm_message_node_get_attribute(x, "xmlns");
     if (xmlns)
@@ -1487,12 +1516,11 @@ static LmHandlerResult handle_iq(LmMessageHandler *handler,
       (mstype == LM_MESSAGE_SUB_TYPE_GET))
     send_iq_error(connection, m, XMPP_ERROR_NOT_IMPLEMENTED);
 
-  scr_LogPrint(LPRINT_DEBUG, "Unhandled IQ: %s", lm_message_node_to_string(m->node));
+  scr_LogPrint(LPRINT_DEBUG, "Unhandled IQ: %s",
+               lm_message_node_to_string(m->node));
 
-  if (mstype != LM_MESSAGE_SUB_TYPE_RESULT) {
-    scr_LogPrint(LPRINT_NORMAL, "Received unhandled IQ request from <%s>.",
-                 lm_message_get_from(m));
-  }
+  scr_LogPrint(LPRINT_NORMAL, "Received unhandled IQ request from <%s>.",
+               lm_message_get_from(m));
 
   return LM_HANDLER_RESULT_REMOVE_MESSAGE;
 }
@@ -1504,19 +1532,34 @@ static LmHandlerResult handle_s10n(LmMessageHandler *handler,
   char *r;
   char *buf;
   int newbuddy;
+  guint hook_result;
+  LmMessageSubType mstype = lm_message_get_sub_type(m);
   const char *from = lm_message_get_from(m);
-  LmMessageSubType mstype;
+  const char *msg = lm_message_node_get_child_value(m->node, "status");
 
+  if (mstype == LM_MESSAGE_SUB_TYPE_ERROR) {
+    display_server_error(lm_message_node_get_child(m->node, "error"),
+                         lm_message_get_from(m));
+    return LM_HANDLER_RESULT_REMOVE_MESSAGE;
+  }
+
+  if (!from) {
+    scr_LogPrint(LPRINT_DEBUG, "handle_s10n: Unexpected presence packet!");
+    return LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS;
+  }
   r = jidtodisp(from);
 
   newbuddy = !roster_find(r, jidsearch, 0);
-  mstype = lm_message_get_sub_type(m);
+
+  hook_result = hk_subscription(mstype, r, msg);
 
   if (mstype == LM_MESSAGE_SUB_TYPE_SUBSCRIBE) {
     /* The sender wishes to subscribe to our presence */
-    const char *msg;
 
-    msg = lm_message_node_get_child_value(m->node, "status");
+    if (hook_result) {
+      g_free(r);
+      return LM_HANDLER_RESULT_REMOVE_MESSAGE;
+    }
 
     buf = g_strdup_printf("<%s> wants to subscribe to your presence updates",
                           from);
@@ -1712,8 +1755,9 @@ gint xmpp_connect(void)
   lm_message_handler_unref(handler);
 
   /* Connect to server */
-  scr_LogPrint(LPRINT_NORMAL|LPRINT_DEBUG, "Connecting to server: %s",
-               servername ? servername : "...");
+  scr_LogPrint(LPRINT_NORMAL|LPRINT_DEBUG, "Connecting to server%s%s",
+               servername ? ": " : "",
+               servername ? servername : "");
   if (!resource)
     resource = resource_prefix;
 
@@ -1736,7 +1780,7 @@ gint xmpp_connect(void)
 
   if (port)
     scr_LogPrint(LPRINT_NORMAL|LPRINT_DEBUG, " using port %d", port);
-  scr_LogPrint(LPRINT_NORMAL|LPRINT_DEBUG, " resource %s", resource);
+  scr_LogPrint(LPRINT_NORMAL|LPRINT_DEBUG, " with resource %s", resource);
 
   if (proxy_host) {
     int proxy_port = settings_opt_get_int("proxy_port");
@@ -1815,9 +1859,9 @@ gint xmpp_connect(void)
   return 0;
 }
 
-//  insert_entity_capabilities(presence_stanza)
+//  xmpp_insert_entity_capabilities(presence_stanza)
 // Entity Capabilities (XEP-0115)
-static void insert_entity_capabilities(LmMessageNode *x, enum imstatus status)
+void xmpp_insert_entity_capabilities(LmMessageNode *x, enum imstatus status)
 {
   LmMessageNode *y;
   const char *ver = entity_version(status);
@@ -1878,7 +1922,7 @@ void xmpp_setstatus(enum imstatus st, const char *recipient, const char *msg,
   if (isonline) {
     const char *s_msg = (st != invisible ? msg : NULL);
     m = lm_message_new_presence(st, recipient, s_msg);
-    insert_entity_capabilities(m->node, st); // Entity Capabilities (XEP-0115)
+    xmpp_insert_entity_capabilities(m->node, st); // Entity Caps (XEP-0115)
 #ifdef HAVE_GPGME
     if (!do_not_sign && gpg_enabled()) {
       char *signature;
index 881a317..0c80cf1 100644 (file)
@@ -63,6 +63,8 @@ void xmpp_setstatus(enum imstatus st, const char *recipient,
 
 void xmpp_send_chatstate(gpointer buddy, guint chatstate);
 
+void xmpp_insert_entity_capabilities(LmMessageNode *x, enum imstatus status);
+
 GSList *xmpp_get_all_storage_bookmarks(void);
 GSList *xmpp_get_all_storage_rosternotes(void);
 void xmpp_set_storage_bookmark(const char *roomid, const char *name,
index 666bb20..9664810 100644 (file)
@@ -43,6 +43,9 @@
 #define NS_CHATSTATES "http://jabber.org/protocol/chatstates"
 #define NS_COMMANDS   "http://jabber.org/protocol/commands"
 #define NS_MUC        "http://jabber.org/protocol/muc"
+#define NS_MUC_USER   "http://jabber.org/protocol/muc#user"
+#define NS_MUC_ADMIN  "http://jabber.org/protocol/muc#admin"
+#define NS_MUC_OWNER  "http://jabber.org/protocol/muc#owner"
 
 #define NS_XDBGINSERT "jabber:xdb:ginsert"
 #define NS_XDBNSLIST  "jabber:xdb:nslist"
index 0894048..6767cc6 100644 (file)
@@ -1,8 +1,8 @@
 /*
  * xmpp_helper.c    -- Jabber protocol helper functions
  *
- * Copyright (C) 2008-2009 Frank Zschockelt <mcabber@freakysoft.de>
- * Copyright (C) 2005-2009 Mikael Berthe <mikael@lilotux.net>
+ * Copyright (C) 2008-2010 Frank Zschockelt <mcabber@freakysoft.de>
+ * Copyright (C) 2005-2010 Mikael Berthe <mikael@lilotux.net>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -109,9 +109,11 @@ const gchar* lm_message_node_get_child_value(LmMessageNode *node,
 {
   LmMessageNode *tmp;
   tmp = lm_message_node_find_child(node, child);
-  if (tmp)
-    return lm_message_node_get_value(tmp);
-  else return NULL;
+  if (tmp) {
+    const gchar *val = lm_message_node_get_value(tmp);
+    return (val ? val : "");
+  }
+  return NULL;
 }
 
 static LmMessageNode *hidden = NULL;
index 4e884d1..1879a83 100644 (file)
@@ -636,6 +636,14 @@ LmHandlerResult handle_iq_roster(LmMessageHandler *h, LmConnection *c,
     g_free(cleanalias);
   }
 
+  // Acknowledge IQ message
+  if (lm_message_get_sub_type(m) == LM_MESSAGE_SUB_TYPE_SET) {
+    LmMessage *result;
+    result = lm_message_new_iq_from_query(m, LM_MESSAGE_SUB_TYPE_RESULT);
+    lm_connection_send(c, result, NULL);
+    lm_message_unref(result);
+  }
+
   buddylist_build();
   update_roster = TRUE;
   if (need_refresh)
index 5dab485..9edd5f4 100644 (file)
@@ -241,21 +241,21 @@ static LmHandlerResult cb_version(LmMessageHandler *h, LmConnection *c,
 
   // Get result data...
   p = lm_message_node_get_child_value(ansqry, "name");
-  if (p) {
+  if (p && *p) {
     buf = g_strdup_printf("Name:    %s", p);
     scr_WriteIncomingMessage(bjid, buf,
                              0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0);
     g_free(buf);
   }
   p = lm_message_node_get_child_value(ansqry, "version");
-  if (p) {
+  if (p && *p) {
     buf = g_strdup_printf("Version: %s", p);
     scr_WriteIncomingMessage(bjid, buf,
                              0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0);
     g_free(buf);
   }
   p = lm_message_node_get_child_value(ansqry, "os");
-  if (p) {
+  if (p && *p) {
     buf = g_strdup_printf("OS:      %s", p);
     scr_WriteIncomingMessage(bjid, buf,
                              0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0);
@@ -306,21 +306,21 @@ static LmHandlerResult cb_time(LmMessageHandler *h, LmConnection *c,
 
   // Get result data...
   p = lm_message_node_get_child_value(ansqry, "utc");
-  if (p) {
+  if (p && *p) {
     buf = g_strdup_printf("UTC:  %s", p);
     scr_WriteIncomingMessage(bjid, buf,
                              0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0);
     g_free(buf);
   }
   p = lm_message_node_get_child_value(ansqry, "tz");
-  if (p) {
+  if (p && *p) {
     buf = g_strdup_printf("TZ:   %s", p);
     scr_WriteIncomingMessage(bjid, buf,
                              0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0);
     g_free(buf);
   }
   p = lm_message_node_get_child_value(ansqry, "display");
-  if (p) {
+  if (p && *p) {
     buf = g_strdup_printf("Time: %s", p);
     scr_WriteIncomingMessage(bjid, buf,
                              0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0);
@@ -406,7 +406,7 @@ static void display_vcard_item(const char *bjid, const char *label,
 {
   char *buf;
 
-  if (!text || !bjid || !label)
+  if (!text || !*text || !bjid || !label)
     return;
 
   buf = g_strdup_printf("%s: %s%s%s%s%s%s%s%s%s%s", label,
index e095f41..b96e02a 100644 (file)
@@ -51,8 +51,7 @@ static void decline_invitation(event_muc_invitation *invitation, const char *rea
   m = lm_message_new(invitation->to, LM_MESSAGE_TYPE_MESSAGE);
 
   x = lm_message_node_add_child(m->node, "x", NULL);
-  lm_message_node_set_attribute(x, "xmlns",
-                                "http://jabber.org/protocol/muc#user");
+  lm_message_node_set_attribute(x, "xmlns", NS_MUC_USER);
 
   y = lm_message_node_add_child(x, "decline", NULL);
   lm_message_node_set_attribute(y, "to", invitation->from);
@@ -148,8 +147,9 @@ void xmpp_room_join(const char *room, const char *nickname, const char *passwd)
 
   // Send the XML request
   x = lm_message_new_presence(mystatus, roomid, mystatusmsg);
+  xmpp_insert_entity_capabilities(x->node, mystatus); // Entity Caps (XEP-0115)
   y = lm_message_node_add_child(x->node, "x", NULL);
-  lm_message_node_set_attribute(y, "xmlns", "http://jabber.org/protocol/muc");
+  lm_message_node_set_attribute(y, "xmlns", NS_MUC);
   if (passwd)
     lm_message_node_add_child(y, "password", passwd);
 
@@ -172,8 +172,7 @@ void xmpp_room_invite(const char *room, const char *fjid, const char *reason)
   msg = lm_message_new(room, LM_MESSAGE_TYPE_MESSAGE);
 
   x = lm_message_node_add_child(msg->node, "x", NULL);
-  lm_message_node_set_attribute(x, "xmlns",
-                                "http://jabber.org/protocol/muc#user");
+  lm_message_node_set_attribute(x, "xmlns", NS_MUC_USER);
 
   y = lm_message_node_add_child(x, "invite", NULL);
   lm_message_node_set_attribute(y, "to", fjid);
@@ -211,8 +210,7 @@ int xmpp_room_setattrib(const char *roomid, const char *fjid,
   iq = lm_message_new_with_sub_type(roomid, LM_MESSAGE_TYPE_IQ,
                                     LM_MESSAGE_SUB_TYPE_SET);
   query = lm_message_node_add_child(iq->node, "query", NULL);
-  lm_message_node_set_attribute(query, "xmlns",
-                                "http://jabber.org/protocol/muc#admin");
+  lm_message_node_set_attribute(query, "xmlns", NS_MUC_ADMIN);
   x = lm_message_node_add_child(query, "item", NULL);
 
   if (fjid) {
@@ -249,8 +247,7 @@ void xmpp_room_unlock(const char *room)
                                     LM_MESSAGE_SUB_TYPE_SET);
 
   node = lm_message_node_add_child(iq->node, "query", NULL);
-  lm_message_node_set_attribute(node, "xmlns",
-                                "http://jabber.org/protocol/muc#owner");
+  lm_message_node_set_attribute(node, "xmlns", NS_MUC_OWNER);
   node = lm_message_node_add_child(node, "x", NULL);
   lm_message_node_set_attributes(node, "xmlns", "jabber:x:data",
                                  "type", "submit", NULL);
@@ -272,8 +269,7 @@ void xmpp_room_destroy(const char *room, const char *venue, const char *reason)
   iq = lm_message_new_with_sub_type(room, LM_MESSAGE_TYPE_IQ,
                                     LM_MESSAGE_SUB_TYPE_SET);
   query = lm_message_node_add_child(iq->node, "query", NULL);
-  lm_message_node_set_attribute(query, "xmlns",
-                                "http://jabber.org/protocol/muc#owner");
+  lm_message_node_set_attribute(query, "xmlns", NS_MUC_OWNER);
   x = lm_message_node_add_child(query, "destroy", NULL);
 
   if (venue && *venue)
@@ -325,6 +321,8 @@ static void muc_get_item_info(const char *from, LmMessageNode *xmldata,
   *mbnick = lm_message_node_get_attribute(y, "nick");
   // For kick/ban, there can be actor and reason tags
   *reason = lm_message_node_get_child_value(y, "reason");
+  if (*reason && !**reason)
+    *reason = NULL;
   z = lm_message_node_find_child(y, "actor");
   if (z)
     *actorjid = lm_message_node_get_attribute(z, "jid");
@@ -491,7 +489,7 @@ void handle_muc_presence(const char *from, LmMessageNode *xmldata,
   }
 
   // Check for departure/arrival
-  if (!mbnick && ust == offline) {
+  if (statuscode != 303 && ust == offline) {
     // Somebody is leaving
     enum { leave=0, kick, ban } how = leave;
     bool we_left = FALSE;
@@ -515,21 +513,27 @@ void handle_muc_presence(const char *from, LmMessageNode *xmldata,
     // The message depends on _who_ left, and _how_
     if (how) {
       gchar *mbuf_end;
+      gchar *reason_msg = NULL;
       // Forced leave
       if (actorjid) {
-        mbuf_end = g_strdup_printf("%s from %s by <%s>.\nReason: %s",
+        mbuf_end = g_strdup_printf("%s from %s by <%s>.",
                                    (how == ban ? "banned" : "kicked"),
-                                   roomjid, actorjid, reason);
+                                   roomjid, actorjid);
       } else {
         mbuf_end = g_strdup_printf("%s from %s.",
                                    (how == ban ? "banned" : "kicked"),
                                    roomjid);
       }
+      if (reason)
+        reason_msg = g_strdup_printf("\nReason: %s", reason);
       if (we_left)
-        mbuf = g_strdup_printf("You have been %s", mbuf_end);
+        mbuf = g_strdup_printf("You have been %s%s", mbuf_end,
+                               reason_msg ? reason_msg : "");
       else
-        mbuf = g_strdup_printf("%s has been %s", rname, mbuf_end);
+        mbuf = g_strdup_printf("%s has been %s%s", rname, mbuf_end,
+                               reason_msg ? reason_msg : "");
 
+      g_free(reason_msg);
       g_free(mbuf_end);
     } else {
       // Natural leave
@@ -537,8 +541,8 @@ void handle_muc_presence(const char *from, LmMessageNode *xmldata,
         LmMessageNode *destroynode = lm_message_node_find_child(xmldata,
                                                                 "destroy");
         if (destroynode) {
-          if ((reason = lm_message_node_get_child_value(destroynode,
-                                                       "reason"))) {
+          reason = lm_message_node_get_child_value(destroynode, "reason");
+          if (reason && *reason) {
             mbuf = g_strdup_printf("You have left %s, "
                                    "the room has been destroyed: %s",
                                    roomjid, reason);
index 6435005..6d89bcf 100644 (file)
@@ -126,6 +126,10 @@ set cmdhistory_lines = 250
 # running you can use "/roster display").
 #set roster_display_filter = ofdna_
 
+# By default command line completion is case-sensitive; this can be changed
+# by setting the option 'completion_ignore_case' to 1.
+#set completion_ignore_case = 0
+
 # Typing notifications, Chat States, Events (XEP-22/85)
 # Set disable_chatstates to 1 if you don't want to use typing notifications.
 # Note: changing this option once mcabber is running has no effect.
index ce37f52..fb5f630 100644 (file)
@@ -170,6 +170,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKGLIB_DIR = @PKGLIB_DIR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
index c28fab9..d9e8ec0 100644 (file)
@@ -177,6 +177,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKGLIB_DIR = @PKGLIB_DIR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
index 76a4eef..d99b07f 100644 (file)
@@ -177,6 +177,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKGLIB_DIR = @PKGLIB_DIR@
 PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@