From 93d603215114093b92837df0604c5fe285cc04a6 Mon Sep 17 00:00:00 2001
From: Timo Sirainen <cras@irssi.org>
Date: Tue, 9 May 2000 11:42:42 +0000
Subject: [PATCH] - Compiling fixes - GNOME version isn't anymore build here so
 you don't need all that GTK and GNOME crap to compile irssi-text. - Some
 fixes to compile with -ansi -pedantic

git-svn-id: http://svn.irssi.org/repos/irssi/trunk@200 dbcabf3a-b0e7-0310-adc4-f8d773084564
---
 Makefile.am                                   |  19 +-
 acconfig.h                                    |  12 -
 autogen.sh                                    | 113 ++++++-
 configure.in                                  | 192 ++----------
 curses.m4                                     | 278 ++++++++++++++++++
 irssi-config.in                               |   6 +
 irssi.desktop                                 |   8 -
 irssi.gnorba                                  |   5 -
 servertest/Makefile.am                        |   4 +-
 servertest/server.c                           |  32 +-
 src/Makefile.am                               |   7 +-
 src/core/commands.c                           |   6 +-
 src/core/misc.c                               |   2 +-
 src/core/settings.h                           |   2 +-
 src/core/special-vars.c                       |   4 +-
 src/fe-common/core/module-formats.h           |   2 +
 src/fe-common/core/printformat.h              |  25 ++
 src/fe-common/core/printtext.h                |  26 --
 src/fe-common/core/windows.c                  |  11 +
 src/fe-common/core/windows.h                  |   5 +-
 src/fe-common/irc/dcc/module-formats.h        |   4 +-
 src/fe-common/irc/fe-ctcp.c                   |   6 +-
 src/fe-common/irc/flood/module-formats.h      |   2 +
 src/fe-common/irc/module-formats.h            |   2 +
 src/fe-common/irc/notifylist/module-formats.h |   2 +
 src/fe-none/Makefile.am                       |   8 +-
 src/fe-text/Makefile.am                       |   7 +-
 src/fe-text/gui-statusbar.c                   | 237 ---------------
 src/fe-text/module-formats.h                  |   2 +
 src/fe-text/screen.h                          |  14 +-
 src/fe-text/statusbar.c                       |   8 +-
 src/irc/core/irc.h                            |   2 +-
 src/lib-config/iconfig.h                      |   2 +-
 src/lib-config/set.c                          |   4 +-
 34 files changed, 524 insertions(+), 535 deletions(-)
 create mode 100644 curses.m4
 create mode 100644 irssi-config.in
 delete mode 100644 irssi.desktop
 delete mode 100644 irssi.gnorba
 create mode 100644 src/fe-common/core/printformat.h
 delete mode 100644 src/fe-text/gui-statusbar.c

diff --git a/Makefile.am b/Makefile.am
index 3b9e61f3..bd0bed9c 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -11,21 +11,7 @@ if BUILD_SERVERTEST
 SERVERTEST=servertest
 endif
 
-SUBDIRS = po intl macros src $(PLUGINS) $(SERVERTEST) docs scripts
-
-## to automatically rebuild aclocal.m4 if any of the macros in
-## `macros/' change
-@MAINT@include macros/macros.dep
-@MAINT@macros/macros.dep: $(srcdir)/macros/Makefile.am
-@MAINT@	cd macros && $(MAKE) macros.dep
-
-if HAVE_GNOME
-desktopdir = $(datadir)/gnome/apps/Internet
-desktop_DATA = irssi.desktop
-
-corbadir = $(sysconfdir)/CORBA/servers
-corba_DATA = irssi.gnorba
-endif
+SUBDIRS = po intl src $(SERVERTEST) docs scripts
 
 confdir = $(sysconfdir)/irssi
 conf_DATA = config colorless.theme split.theme
@@ -40,7 +26,8 @@ EXTRA_DIST = \
 	irssi.spec \
 	$(conf_DATA) \
 	irssi.gnorba \
-	irssi.desktop
+	irssi.desktop \
+	irssi-config.in
 
 ## make rpms
 rpm: Makefile
diff --git a/acconfig.h b/acconfig.h
index 6ee62c3f..7fc82431 100644
--- a/acconfig.h
+++ b/acconfig.h
@@ -2,17 +2,6 @@
 #undef SYSCONFDIR
 #undef HELPDIR
 #undef PLUGINSDIR
-#undef LOCALEDIR
-
-/* gtk / gnome */
-#undef HAVE_GTK
-#undef HAVE_IMLIB
-#undef HAVE_GNOME
-#undef HAVE_GNOME_PANEL
-
-/* hebrew support for GtkText */
-#undef GTK_HEBREW
-#undef GTK_HEBREW_RC
 
 /* misc.. */
 #undef MEM_DEBUG
@@ -29,7 +18,6 @@
 #undef USE_NCURSES
 #undef NO_COLOR_CURSES
 #undef SCO_FLAVOR
-#undef NCURSES_970530
 
 /* our own curses checks */
 #undef HAVE_NCURSES_USE_DEFAULT_COLORS
diff --git a/autogen.sh b/autogen.sh
index bf36cc97..965bfd8b 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -23,4 +23,115 @@ echo "/* automatically created by autogen.sh */" > irssi-version.h
 echo "#define IRSSI_VERSION \"$version\"" >> irssi-version.h
 echo "#define IRSSI_VERSION_DATE \"$version_date\"" >> irssi-version.h
 
-. $srcdir/macros/autogen.sh
+# *********** a bit modified GNOME's macros/autogen.sh **********
+DIE=0
+
+(autoconf --version) < /dev/null > /dev/null 2>&1 || {
+  echo
+  echo "**Error**: You must have \`autoconf' installed to compile Gnome."
+  echo "Download the appropriate package for your distribution,"
+  echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/"
+  DIE=1
+}
+
+(grep "^AM_PROG_LIBTOOL" $srcdir/configure.in >/dev/null) && {
+  (libtool --version) < /dev/null > /dev/null 2>&1 || {
+    echo
+    echo "**Error**: You must have \`libtool' installed to compile Gnome."
+    echo "Get ftp://ftp.gnu.org/pub/gnu/libtool-1.2d.tar.gz"
+    echo "(or a newer version if it is available)"
+    DIE=1
+  }
+}
+
+grep "^AM_GNU_GETTEXT" $srcdir/configure.in >/dev/null && {
+  grep "sed.*POTFILES" $srcdir/configure.in >/dev/null || \
+  (gettext --version) < /dev/null > /dev/null 2>&1 || {
+    echo
+    echo "**Error**: You must have \`gettext' installed to compile Gnome."
+    echo "Get ftp://alpha.gnu.org/gnu/gettext-0.10.35.tar.gz"
+    echo "(or a newer version if it is available)"
+    DIE=1
+  }
+}
+
+grep "^AM_GNOME_GETTEXT" $srcdir/configure.in >/dev/null && {
+  grep "sed.*POTFILES" $srcdir/configure.in >/dev/null || \
+  (gettext --version) < /dev/null > /dev/null 2>&1 || {
+    echo
+    echo "**Error**: You must have \`gettext' installed to compile Gnome."
+    echo "Get ftp://alpha.gnu.org/gnu/gettext-0.10.35.tar.gz"
+    echo "(or a newer version if it is available)"
+    DIE=1
+  }
+}
+
+(automake --version) < /dev/null > /dev/null 2>&1 || {
+  echo
+  echo "**Error**: You must have \`automake' installed to compile Gnome."
+  echo "Get ftp://ftp.gnu.org/pub/gnu/automake-1.3.tar.gz"
+  echo "(or a newer version if it is available)"
+  DIE=1
+  NO_AUTOMAKE=yes
+}
+
+
+# if no automake, don't bother testing for aclocal
+test -n "$NO_AUTOMAKE" || (aclocal --version) < /dev/null > /dev/null 2>&1 || {
+  echo
+  echo "**Error**: Missing \`aclocal'.  The version of \`automake'"
+  echo "installed doesn't appear recent enough."
+  echo "Get ftp://ftp.gnu.org/pub/gnu/automake-1.3.tar.gz"
+  echo "(or a newer version if it is available)"
+  DIE=1
+}
+
+if test "$DIE" -eq 1; then
+  exit 1
+fi
+
+if test -z "$*"; then
+  echo "**Warning**: I am going to run \`configure' with no arguments."
+  echo "If you wish to pass any to it, please specify them on the"
+  echo \`$0\'" command line."
+  echo
+fi
+
+case $CC in
+xlc )
+  am_opt=--include-deps;;
+esac
+
+if grep "^AM_GNU_GETTEXT" configure.in >/dev/null; then
+  echo "Creating aclocal.m4 ..."
+  test -r aclocal.m4 || touch aclocal.m4
+  echo "Running gettextize...  Ignore non-fatal messages."
+  echo "no" | gettextize --force --copy
+  echo "Making aclocal.m4 writable ..."
+  test -r aclocal.m4 && chmod u+w aclocal.m4
+fi
+if grep "^AM_PROG_LIBTOOL" configure.in >/dev/null; then
+  echo "Running libtoolize..."
+  libtoolize --force --copy
+fi
+aclocalinclude="$ACLOCAL_FLAGS -I ."
+echo "Running aclocal $aclocalinclude ..."
+aclocal $aclocalinclude
+if grep "^AM_CONFIG_HEADER" configure.in >/dev/null; then
+  echo "Running autoheader..."
+  autoheader
+fi
+echo "Running automake --gnu $am_opt ..."
+automake --add-missing --gnu $am_opt
+echo "Running autoconf ..."
+autoconf
+
+conf_flags="--enable-maintainer-mode --enable-compile-warnings" #--enable-iso-c
+
+if test x$NOCONFIGURE = x; then
+  echo Running $srcdir/configure $conf_flags "$@" ...
+  $srcdir/configure $conf_flags "$@" \
+  && echo Now type \`make\' to compile $PKG_NAME || exit 1
+else
+  echo Skipping configure process.
+fi
diff --git a/configure.in b/configure.in
index 5ffee09a..82f6d411 100644
--- a/configure.in
+++ b/configure.in
@@ -5,8 +5,6 @@ AM_INIT_AUTOMAKE(irssi, 0.7.90)
 
 AM_MAINTAINER_MODE
 
-AM_ACLOCAL_INCLUDE(macros)
-
 AC_ISC_POSIX
 AC_PROG_CC
 AC_PROG_CPP
@@ -16,9 +14,6 @@ AM_PROG_LIBTOOL
 
 AC_CHECK_HEADERS(string.h stdlib.h unistd.h dirent.h sys/ioctl.h libintl.h)
 
-GNOME_INIT
-GNOME_SUPPORT_CHECKS
-
 AC_ARG_WITH(socks,
 [  --with-socks            Build with socks support],
 	if test x$withval = xyes; then
@@ -47,45 +42,6 @@ AC_ARG_WITH(mysql,
 	fi,
 	want_mysql=no)
 
-AC_ARG_WITH(imlib,
-[  --with-imlib            Build with imlib support],
-	if test x$withval = xyes; then
-		want_imlib=yes
-	else
-		if test "x$withval" = xno; then
-        		want_imlib=no
-		else
-        		want_imlib=yes
-		fi
-	fi,
-	want_imlib=yes)
-
-AC_ARG_WITH(gtk,
-[  --with-gtk              Build GTK frontend],
-	if test x$withval = xyes; then
-		want_gtk=yes
-	else
-		if test "x$withval" = xno; then
-        		want_gtk=no
-		else
-        		want_gtk=yes
-		fi
-	fi,
-	want_gtk=yes)
-
-AC_ARG_WITH(gnome-panel,
-[  --with-gnome-panel      Build with gnome panel applet support],
-	if test x$withval = xyes; then
-		want_gnome_panel=yes
-	else
-		if test "x$withval" = xno; then
-        		want_gnome_panel=no
-		else
-        		want_gnome_panel=yes
-		fi
-	fi,
-	want_gnome_panel=yes)
-
 AC_ARG_WITH(textui,
 [  --with-textui           Build text frontend],
 	if test x$withval = xyes; then
@@ -177,19 +133,6 @@ AC_ARG_ENABLE(ipv6,
 	fi,
 	want_ipv6=no)
 
-AC_ARG_ENABLE(gtk-hebrew,
-[  --enable-gtk-hebrew     Enable Hebrew support],
-	if test "x$enableval" = xno; then
-		want_gtk_hebrew=no
-		HEBREW_LIBS=""
-	else
-        	AC_DEFINE(GTK_HEBREW)
-        	AC_DEFINE_UNQUOTED(GTK_HEBREW_RC, "$enableval")
-        	HEBREW_LIBS="-lfribidi"
-		want_gtk_hebrew=yes
-	fi,
-	want_gtk_hebrew=no)
-
 dnl **
 dnl ** just some generic stuff...
 dnl **
@@ -242,82 +185,13 @@ if test "x$want_socks" = "xyes"; then
 	])
 fi
 
-dnl **
-dnl ** check for gnome
-dnl **
-
-if test "x$want_gnome" = "xyes"; then
-	if test "x$GNOME_LIBS" = "x"; then
-        	want_gnome="no";
-        fi
-	if test "x$want_gtk" = "xno"; then
-        	want_gnome="no";
-        fi
-fi
-
-if test "x$want_gnome" = "xyes"; then
-	AC_DEFINE(HAVE_GTK)
-	AC_DEFINE(HAVE_GNOME)
-	AC_DEFINE(HAVE_IMLIB)
-
-	GUI_CFLAGS="$GNOME_INCLUDEDIR"
-
-	dnl **
-	dnl ** check for gnome panel applet library
-	dnl **
-
-        if test "x$want_gnome_panel" = "xyes"; then
-		AC_CHECK_LIB(panel_applet, applet_widget_init, [
-			GUI_LIBS="$GNOME_LIBDIR $GNOMEGNORBA_LIBS -lpanel_applet"
-			AC_DEFINE(HAVE_GNOME_PANEL)
-		], [
-			GUI_LIBS="$GNOME_LIBDIR $GNOMEUI_LIBS"
-                	want_gnome_panel="no"
-		], $GNOME_LIBDIR $GNOMEGNORBA_LIBS -lpanel_applet)
-        else
-		GUI_LIBS="$GNOME_LIBDIR $GNOMEUI_LIBS"
-        fi
-else
-        want_gnome_panel="no"
-
-        if test "x$want_gtk" = "xyes"; then
-		AC_DEFINE(HAVE_GTK)
-		AM_PATH_GTK(1.2.0)
-	else
-		GTK_LIBS=
-	fi
-
-	if test "x$GTK_LIBS" != "x"; then
-		GUI_CFLAGS="$GTK_CFLAGS"
-		GUI_LIBS="$GTK_LIBS"
-
-		if test "x$want_imlib" = "xyes"; then
-			AM_PATH_GDK_IMLIB(, [define_imlib=true])
-			if test x$define_imlib = xtrue; then
-				AC_DEFINE(HAVE_IMLIB)
-        			GUI_CFLAGS="$GUI_CFLAGS $GDK_IMLIB_CFLAGS"
-        			GUI_LIBS="$GDK_IMLIB_LIBS"
-			fi
-		fi
-		GUI_LIBS="$GUI_LIBS ../lib-popt/libpopt.la"
-	fi
-fi
-
-if test "x$GUI_LIBS" != "x"; then
-	GUI_LIBS="$GUI_LIBS $HEBREW_LIBS $PROG_LIBS"
-fi
-
-AC_SUBST(GUI_LIBS)
-AC_SUBST(GUI_CFLAGS)
-
-
 dnl **
 dnl ** fe-text checks
 dnl **
 
 AM_PATH_GLIB(1.2.0,,, gmodule)
 
-PROG_LIBS="$PROG_LIBS $GLIB_LIBS ../lib-popt/libpopt.la"
+PROG_LIBS="$PROG_LIBS $GLIB_LIBS"
 AC_SUBST(PROG_LIBS)
 
 dnl **
@@ -385,13 +259,10 @@ if test "$want_perl" = yes; then
 fi
 
 dnl ** check what we want to build
-AM_CONDITIONAL(BUILD_GNOMEUI, test "x$GUI_LIBS" != "x")
 AM_CONDITIONAL(BUILD_TEXTUI, test "$want_textui" = "yes")
 AM_CONDITIONAL(BUILD_IRSSIBOT, test "$want_irssibot" = "yes")
 AM_CONDITIONAL(BUILD_PLUGINS, test "$want_plugins" = "yes")
 AM_CONDITIONAL(BUILD_SERVERTEST, test "$want_servertest" = "yes")
-AM_CONDITIONAL(HAVE_GNOME, test "$want_gnome" = "yes")
-AM_CONDITIONAL(HAVE_GNOME_PANEL, test "$want_gnome_panel" = "yes")
 AM_CONDITIONAL(HAVE_MYSQL, test "$want_mysql" = "yes")
 AM_CONDITIONAL(HAVE_PERL, test "$want_perl" = "yes")
 
@@ -401,17 +272,38 @@ dnl **
 dnl ** Keep all the libraries here so each frontend doesn't need to
 dnl ** keep track of them all
 dnl **
-CORE_LIBS="../core/libcore.la ../lib-config/libirssi_config.la"
-IRC_LIBS="../irc/libirc.la ../irc/core/libirc_core.la ../irc/dcc/libirc_dcc.la ../irc/flood/libirc_flood.la ../irc/notifylist/libirc_notifylist.la"
-FE_COMMON_LIBS="../fe-common/core/libfe_common_core.la ../fe-common/irc/libfe_common_irc.la ../fe-common/irc/notifylist/libfe_common_irc_notifylist.la ../fe-common/irc/dcc/libfe_common_irc_dcc.la ../fe-common/irc/flood/libfe_common_irc_flood.la"
-PERL_LIBS="../perl/libperl.la"
+dnl ** (these could be made configurable)
 
-AC_SUBST(CORE_LIBS)
-AC_SUBST(IRC_LIBS)
-AC_SUBST(FE_COMMON_LIBS)
+CHAT_MODULES="irc"
+irc_MODULES="dcc flood notifylist"
+
+dnl ****************************************
+
+AC_SUBST(CHAT_MODULES)
+AC_SUBST(irc_MODULES)
+
+CORE_LIBS="../core/libcore.la ../lib-config/libirssi_config.la ../lib-popt/libpopt.la"
+if test "$want_perl" = "yes"; then
+	PERL_LIBS="../perl/libperl.la"
+else
+	PERL_LIBS=""
+fi
+FE_COMMON_LIBS="../fe-common/core/libfe_common_core.la"
+
+CHAT_LIBS=""
+for c in $CHAT_MODULES; do
+	CHAT_LIBS="$CHAT_LIBS ../$c/lib$c.la ../$c/core/lib${c}_core.la"
+	FE_COMMON_LIBS="$FE_COMMON_LIBS ../fe-common/$c/libfe_common_$c.la"
+	for s in `eval echo \\$${c}_MODULES`; do
+		CHAT_LIBS="$CHAT_LIBS ../$c/$s/lib${c}_$s.la"
+		FE_COMMON_LIBS="$FE_COMMON_LIBS ../fe-common/$c/$s/libfe_common_${c}_$s.la"
+	done
+done
 
 dnl ** common libraries needed by frontends
-COMMON_LIBS="$PERL_LIBS $FE_COMMON_LIBS $IRC_LIBS $CORE_LIBS"
+COMMON_NOUI_LIBS="$PERL_LIBS $CHAT_LIBS $CORE_LIBS $INTLLIBS"
+COMMON_LIBS="$FE_COMMON_LIBS $COMMON_NOUI_LIBS"
+AC_SUBST(COMMON_NOUI_LIBS)
 AC_SUBST(COMMON_LIBS)
 
 dnl **
@@ -443,7 +335,6 @@ AC_OUTPUT(
 Makefile
 po/Makefile.in
 intl/Makefile
-macros/Makefile
 src/Makefile
 src/core/Makefile
 src/irc/Makefile
@@ -459,10 +350,6 @@ src/fe-common/irc/flood/Makefile
 src/fe-common/irc/notifylist/Makefile
 src/fe-none/Makefile
 src/fe-text/Makefile
-src/fe-gnome/Makefile
-src/fe-gnome/help/Makefile
-src/fe-gnome/help/C/Makefile
-src/fe-gnome/pixmaps/Makefile
 src/lib-config/Makefile
 src/lib-popt/Makefile
 src/perl/Makefile
@@ -471,16 +358,9 @@ servertest/Makefile
 scripts/Makefile
 docs/Makefile
 docs/help/Makefile
-plugins/Makefile
-plugins/sample/Makefile
-plugins/speech/Makefile
-plugins/sound/Makefile
-plugins/proxy/Makefile
-plugins/external/Makefile
-plugins/bot/Makefile
-plugins/sql/Makefile
 stamp.h
-irssi.spec)
+irssi.spec
+irssi-config)
 
 dnl ** for building from objdir
 if test "x$want_perl" = "xyes"; then
@@ -495,14 +375,6 @@ fi
 
 echo
 
-if test "x$GUI_LIBS" != "x"; then
-	echo Building GTK frontend ...... : yes
-else
-	echo Building GTK frontend ...... : no
-fi
-echo Building with GNOME ........ : $want_gnome
-echo Building with GNOME panel .. : $want_gnome_panel
-
 echo Building text frontend ..... : $want_textui
 echo Building irssi-bot ......... : $want_irssibot
 echo Building with IPv6 support . : $want_ipv6
diff --git a/curses.m4 b/curses.m4
new file mode 100644
index 00000000..07b2b585
--- /dev/null
+++ b/curses.m4
@@ -0,0 +1,278 @@
+dnl Curses detection: Munged from Midnight Commander's configure.in
+dnl
+dnl What it does:
+dnl =============
+dnl
+dnl - Determine which version of curses is installed on your system
+dnl   and set the -I/-L/-l compiler entries and add a few preprocessor
+dnl   symbols 
+dnl - Do an AC_SUBST on the CURSES_INCLUDEDIR and CURSES_LIBS so that
+dnl   @CURSES_INCLUDEDIR@ and @CURSES_LIBS@ will be available in
+dnl   Makefile.in's
+dnl - Modify the following configure variables (these are the only
+dnl   curses.m4 variables you can access from within configure.in)
+dnl   CURSES_INCLUDEDIR - contains -I's and possibly -DRENAMED_CURSES if
+dnl                       an ncurses.h that's been renamed to curses.h
+dnl                       is found.
+dnl   CURSES_LIBS       - sets -L and -l's appropriately
+dnl   CFLAGS            - if --with-sco, add -D_SVID3 
+dnl   has_curses        - exports result of tests to rest of configure
+dnl
+dnl Usage:
+dnl ======
+dnl 1) Add lines indicated below to acconfig.h
+dnl 2) call AC_CHECK_CURSES after AC_PROG_CC in your configure.in
+dnl 3) Instead of #include <curses.h> you should use the following to
+dnl    properly locate ncurses or curses header file
+dnl
+dnl    #if defined(USE_NCURSES) && !defined(RENAMED_NCURSES)
+dnl    #include <ncurses.h>
+dnl    #else
+dnl    #include <curses.h>
+dnl    #endif
+dnl
+dnl 4) Make sure to add @CURSES_INCLUDEDIR@ to your preprocessor flags
+dnl 5) Make sure to add @CURSES_LIBS@ to your linker flags or LIBS
+dnl
+dnl Notes with automake:
+dnl - call AM_CONDITIONAL(HAS_CURSES, test "$has_curses" = true) from
+dnl   configure.in
+dnl - your Makefile.am can look something like this
+dnl   -----------------------------------------------
+dnl   INCLUDES= blah blah blah $(CURSES_INCLUDEDIR) 
+dnl   if HAS_CURSES
+dnl   CURSES_TARGETS=name_of_curses_prog
+dnl   endif
+dnl   bin_PROGRAMS = other_programs $(CURSES_TARGETS)
+dnl   other_programs_SOURCES = blah blah blah
+dnl   name_of_curses_prog_SOURCES = blah blah blah
+dnl   other_programs_LDADD = blah
+dnl   name_of_curses_prog_LDADD = blah $(CURSES_LIBS)
+dnl   -----------------------------------------------
+dnl
+dnl
+dnl The following lines should be added to acconfig.h:
+dnl ==================================================
+dnl
+dnl /*=== Curses version detection defines ===*/
+dnl /* Found some version of curses that we're going to use */
+dnl #undef HAS_CURSES
+dnl    
+dnl /* Use SunOS SysV curses? */
+dnl #undef USE_SUNOS_CURSES
+dnl 
+dnl /* Use old BSD curses - not used right now */
+dnl #undef USE_BSD_CURSES
+dnl 
+dnl /* Use SystemV curses? */
+dnl #undef USE_SYSV_CURSES
+dnl 
+dnl /* Use Ncurses? */
+dnl #undef USE_NCURSES
+dnl 
+dnl /* If you Curses does not have color define this one */
+dnl #undef NO_COLOR_CURSES
+dnl 
+dnl /* Define if you want to turn on SCO-specific code */
+dnl #undef SCO_FLAVOR
+dnl 
+dnl /* Set to reflect version of ncurses *
+dnl  *   0 = version 1.*
+dnl  *   1 = version 1.9.9g
+dnl  *   2 = version 4.0/4.1 */
+dnl #undef NCURSES_970530
+dnl
+dnl /*=== End new stuff for acconfig.h ===*/
+dnl 
+
+
+AC_DEFUN(AC_CHECK_CURSES,[
+	search_ncurses=true
+	screen_manager=""
+	has_curses=false
+
+	CFLAGS=${CFLAGS--O}
+
+	AC_SUBST(CURSES_LIBS)
+	AC_SUBST(CURSES_INCLUDEDIR)
+
+	AC_ARG_WITH(sco,
+	  [  --with-sco              Use this to turn on SCO-specific code],[
+	  if test x$withval = xyes; then
+		AC_DEFINE(SCO_FLAVOR)
+		CFLAGS="$CFLAGS -D_SVID3"
+	  fi
+	])
+
+	AC_ARG_WITH(sunos-curses,
+	  [  --with-sunos-curses     Used to force SunOS 4.x curses],[
+	  if test x$withval = xyes; then
+		AC_USE_SUNOS_CURSES
+	  fi
+	])
+
+	AC_ARG_WITH(osf1-curses,
+	  [  --with-osf1-curses      Used to force OSF/1 curses],[
+	  if test x$withval = xyes; then
+		AC_USE_OSF1_CURSES
+	  fi
+	])
+
+	AC_ARG_WITH(vcurses,
+	  [  --with-vcurses[=incdir] Used to force SysV curses],
+	  if test x$withval != xyes; then
+		CURSES_INCLUDEDIR="-I$withval"
+	  fi
+	  AC_USE_SYSV_CURSES
+	)
+
+	AC_ARG_WITH(ncurses,
+	  [  --with-ncurses[=dir]  Compile with ncurses/locate base dir],
+	  if test x$withval = xno ; then
+		search_ncurses=false
+	  elif test x$withval != xyes ; then
+		CURSES_LIBS="$LIBS -L$withval/lib -lncurses"
+		CURSES_INCLUDEDIR="-I$withval/include"
+		search_ncurses=false
+		screen_manager="ncurses"
+		AC_DEFINE(USE_NCURSES)
+		AC_DEFINE(HAS_CURSES)
+		has_curses=true
+	  fi
+	)
+
+	if $search_ncurses
+	then
+		AC_SEARCH_NCURSES()
+	fi
+
+
+])
+
+
+AC_DEFUN(AC_USE_SUNOS_CURSES, [
+	search_ncurses=false
+	screen_manager="SunOS 4.x /usr/5include curses"
+	AC_MSG_RESULT(Using SunOS 4.x /usr/5include curses)
+	AC_DEFINE(USE_SUNOS_CURSES)
+	AC_DEFINE(HAS_CURSES)
+	has_curses=true
+	AC_DEFINE(NO_COLOR_CURSES)
+	AC_DEFINE(USE_SYSV_CURSES)
+	CURSES_INCLUDEDIR="-I/usr/5include"
+	CURSES_LIBS="/usr/5lib/libcurses.a /usr/5lib/libtermcap.a"
+	AC_MSG_RESULT(Please note that some screen refreshs may fail)
+])
+
+AC_DEFUN(AC_USE_OSF1_CURSES, [
+       AC_MSG_RESULT(Using OSF1 curses)
+       search_ncurses=false
+       screen_manager="OSF1 curses"
+       AC_DEFINE(HAS_CURSES)
+       has_curses=true
+       AC_DEFINE(NO_COLOR_CURSES)
+       AC_DEFINE(USE_SYSV_CURSES)
+       CURSES_LIBS="-lcurses"
+])
+
+AC_DEFUN(AC_USE_SYSV_CURSES, [
+	AC_MSG_RESULT(Using SysV curses)
+	AC_DEFINE(HAS_CURSES)
+	has_curses=true
+	AC_DEFINE(USE_SYSV_CURSES)
+	search_ncurses=false
+	screen_manager="SysV/curses"
+	CURSES_LIBS="-lcurses"
+])
+
+dnl AC_ARG_WITH(bsd-curses,
+dnl [--with-bsd-curses         Used to compile with bsd curses, not very fancy],
+dnl 	search_ncurses=false
+dnl	screen_manager="Ultrix/cursesX"
+dnl	if test $system = ULTRIX
+dnl	then
+dnl	    THIS_CURSES=cursesX
+dnl        else
+dnl	    THIS_CURSES=curses
+dnl	fi
+dnl
+dnl	CURSES_LIBS="-l$THIS_CURSES -ltermcap"
+dnl	AC_DEFINE(HAS_CURSES)
+dnl	has_curses=true
+dnl	AC_DEFINE(USE_BSD_CURSES)
+dnl	AC_MSG_RESULT(Please note that some screen refreshs may fail)
+dnl	AC_WARN(Use of the bsdcurses extension has some)
+dnl	AC_WARN(display/input problems.)
+dnl	AC_WARN(Reconsider using xcurses)
+dnl)
+
+	
+dnl
+dnl Parameters: directory filename cureses_LIBS curses_INCLUDEDIR nicename
+dnl
+AC_DEFUN(AC_NCURSES, [
+    if $search_ncurses
+    then
+        if test -f $1/$2
+	then
+	    AC_MSG_RESULT(Found ncurses on $1/$2)
+ 	    CURSES_LIBS="$3"
+	    CURSES_INCLUDEDIR="$4"
+	    search_ncurses=false
+	    screen_manager=$5
+            AC_DEFINE(HAS_CURSES)
+            has_curses=true
+	    AC_DEFINE(USE_NCURSES)
+	fi
+    fi
+])
+
+AC_DEFUN(AC_SEARCH_NCURSES, [
+    AC_CHECKING("location of ncurses.h file")
+
+    AC_NCURSES(/usr/include, ncurses.h, -lncurses,, "ncurses on /usr/include")
+    AC_NCURSES(/usr/include/ncurses, ncurses.h, -lncurses, -I/usr/include/ncurses, "ncurses on /usr/include/ncurses")
+    AC_NCURSES(/usr/local/include, ncurses.h, -L/usr/local/lib -lncurses, -I/usr/local/include, "ncurses on /usr/local")
+    AC_NCURSES(/usr/local/include/ncurses, ncurses.h, -L/usr/local/lib -L/usr/local/lib/ncurses -lncurses, -I/usr/local/include/ncurses, "ncurses on /usr/local/include/ncurses")
+
+    AC_NCURSES(/usr/local/include/ncurses, curses.h, -L/usr/local/lib -lncurses, -I/usr/local/include/ncurses -DRENAMED_NCURSES, "renamed ncurses on /usr/local/.../ncurses")
+
+    AC_NCURSES(/usr/include/ncurses, curses.h, -lncurses, -I/usr/include/ncurses -DRENAMED_NCURSES, "renamed ncurses on /usr/include/ncurses")
+
+    dnl
+    dnl We couldn't find ncurses, try SysV curses
+    dnl
+    if $search_ncurses 
+    then
+        AC_EGREP_HEADER(init_color, /usr/include/curses.h,
+	    AC_USE_SYSV_CURSES)
+	AC_EGREP_CPP(USE_NCURSES,[
+#include <curses.h>
+#ifdef __NCURSES_H
+#undef USE_NCURSES
+USE_NCURSES
+#endif
+],[
+	CURSES_INCLUDEDIR="$CURSES_INCLUDEDIR -DRENAMED_NCURSES"
+        AC_DEFINE(HAS_CURSES)
+	has_curses=true
+        AC_DEFINE(USE_NCURSES)
+        search_ncurses=false
+        screen_manager="ncurses installed as curses"
+])
+    fi
+
+    dnl
+    dnl Try SunOS 4.x /usr/5{lib,include} ncurses
+    dnl The flags USE_SUNOS_CURSES, USE_BSD_CURSES and BUGGY_CURSES
+    dnl should be replaced by a more fine grained selection routine
+    dnl
+    if $search_ncurses
+    then
+	if test -f /usr/5include/curses.h
+	then
+	    AC_USE_SUNOS_CURSES
+        fi
+    fi
+])
+
diff --git a/irssi-config.in b/irssi-config.in
new file mode 100644
index 00000000..3076247c
--- /dev/null
+++ b/irssi-config.in
@@ -0,0 +1,6 @@
+PROG_LIBS="@PROG_LIBS@"
+PERL_LDFLAGS="@PERL_LDFLAGS@"
+COMMON_LIBS="@COMMON_LIBS@"
+
+CHAT_MODULES="@CHAT_MODULES@"
+irc_MODULES="@irc_MODULES@"
diff --git a/irssi.desktop b/irssi.desktop
deleted file mode 100644
index d76aa6a3..00000000
--- a/irssi.desktop
+++ /dev/null
@@ -1,8 +0,0 @@
-[Desktop Entry]
-Name=irssi
-Comment=irssi IRC client
-Comment[pl]=irssi - klient IRC
-Icon=irssi-icon.png
-Exec=irssi
-Terminal=0
-Type=Application
diff --git a/irssi.gnorba b/irssi.gnorba
deleted file mode 100644
index 6296e4ff..00000000
--- a/irssi.gnorba
+++ /dev/null
@@ -1,5 +0,0 @@
-[irssi]
-type=exe
-repo_id=IDL:GNOME/Applet:1.0
-description=irssi IRC client
-location_info=irssi
diff --git a/servertest/Makefile.am b/servertest/Makefile.am
index 4eb03cdf..6ca9f0d3 100644
--- a/servertest/Makefile.am
+++ b/servertest/Makefile.am
@@ -3,11 +3,11 @@ bin_PROGRAMS = ircserver
 INCLUDES = $(GLIB_CFLAGS) -I$(top_srcdir)/src
 
 if BUILD_MEMDEBUG
-memdebug_src=../src/irc-base/memdebug.o
+memdebug_src=../src/core/memdebug.o
 else
 memdebug_src=
 endif
 
-ircserver_LDADD = -lglib ../src/irc-base/network.o $(memdebug_src)
+ircserver_LDADD = -lglib ../src/core/network.o $(memdebug_src)
 
 ircserver_SOURCES = server.c
diff --git a/servertest/server.c b/servertest/server.c
index 8e049816..677e6b32 100644
--- a/servertest/server.c
+++ b/servertest/server.c
@@ -1,8 +1,8 @@
 #include <common.h>
 
-#include <irc-base/network.h>
+#include "core/network.h"
 
-#define FLOOD_TIMEOUT 50000
+#define FLOOD_TIMEOUT 1
 
 typedef struct
 {
@@ -12,20 +12,10 @@ typedef struct
 CHANNEL_REC;
 
 GList *channels;
-gchar *clientnick, *clienthost;
+gchar *clientnick, clienthost[MAX_IP_LEN];
 
 int clienth;
 
-gint gui_input_add(gint handle, GUIInputCondition condition,
-		   GUIInputFunction function, gpointer data)
-{
-    return -1;
-}
-
-void gui_input_remove(gint tag)
-{
-}
-
 /* Read a line */
 gint read_line(gboolean socket, gint handle, GString *output, GString *buffer)
 {
@@ -135,7 +125,6 @@ void send_cmd(void)
 
     /* send msg to every channel */
     str[511] = '\0';
-
     for (tmp = g_list_first(channels); tmp != NULL; tmp = tmp->next)
     {
         CHANNEL_REC *rec = tmp->data;
@@ -246,12 +235,10 @@ void send_cmd(void)
 
         client_send(str);
     }
-
     makerand(str, 511);
     str[0] = ':';
     str[10] = '!';
     str[20] = '@';
-
     switch (rand() % 11)
     {
 	case 0:
@@ -330,7 +317,7 @@ void send_cmd(void)
             break;
         case 7:
             /* invite */
-            pos = 30+sprintf(str+30, " INVITE %s", clientnick);
+            pos = 30+sprintf(str+30, " INVITE %s ", clientnick);
             str[pos] = 'X';
             break;
         case 8:
@@ -360,11 +347,6 @@ void handle_command(char *str)
     }
 }
 
-guint gui_timeout_add(guint32 interval, GUITimeoutFunction function, gpointer data)
-{
-    return -1;
-}
-
 int main(void)
 {
     static fd_set fdset;
@@ -406,8 +388,8 @@ int main(void)
         tv.tv_usec = FLOOD_TIMEOUT;
         if (select((serverh > clienth ? serverh : clienth)+1, &fdset, NULL, NULL, &tv) <= 0)
         {
-            /* nothing happened, bug the client with some commands.. */
-            if (clienth != -1 && clientnick != NULL) send_cmd();
+		/* nothing happened, bug the client with some commands.. */
+		if (clienth != -1 && clientnick != NULL) send_cmd();
         }
         else
 	{
@@ -434,7 +416,7 @@ int main(void)
                     clienth = net_accept(serverh, &clientip, &port);
                     if (clienth != -1)
 		    {
-			clienthost = g_strdup(net_ip2host(&clientip));
+			net_ip2host(&clientip, clienthost);
                         client_send(":server 001 pla");
                         client_send(":server 002 plapla");
                         client_send(":server 003 plaplapla");
diff --git a/src/Makefile.am b/src/Makefile.am
index 49aa359d..fbd0dc31 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -2,11 +2,6 @@ if BUILD_TEXTUI
 TEXTUI=fe-text
 endif
 
-if BUILD_GNOMEUI
-#GNOMEUI=fe-gnome
-GNOMEUI=
-endif
-
 if BUILD_IRSSIBOT
 BOTUI=fe-none
 endif
@@ -20,4 +15,4 @@ noinst_HEADERS = \
 	common.h \
 	common-setup.h
 
-SUBDIRS = lib-popt lib-config core irc fe-common $(PERLDIR) $(GNOMEUI) $(TEXTUI) $(BOTUI)
+SUBDIRS = lib-popt lib-config core irc fe-common $(PERLDIR) $(TEXTUI) $(BOTUI)
diff --git a/src/core/commands.c b/src/core/commands.c
index e7f2560a..8f02db89 100644
--- a/src/core/commands.c
+++ b/src/core/commands.c
@@ -310,7 +310,7 @@ char *cmd_get_callfuncs(const char *data, int *count, va_list *args)
 
 	ret = g_strdup(data);
 	for (tmp = cmdget_funcs; tmp != NULL; tmp = tmp->next) {
-		func = tmp->data;
+		func = (CMD_GET_FUNC) tmp->data;
 
 		old = ret;
 		ret = func(ret, count, args);
@@ -361,12 +361,12 @@ char *cmd_get_params(const char *data, int count, ...)
 
 void cmd_get_add_func(CMD_GET_FUNC func)
 {
-        cmdget_funcs = g_slist_prepend(cmdget_funcs, func);
+        cmdget_funcs = g_slist_prepend(cmdget_funcs, (void *) func);
 }
 
 void cmd_get_remove_func(CMD_GET_FUNC func)
 {
-        cmdget_funcs = g_slist_prepend(cmdget_funcs, func);
+        cmdget_funcs = g_slist_prepend(cmdget_funcs, (void *) func);
 }
 
 static void parse_outgoing(const char *line, SERVER_REC *server, void *item)
diff --git a/src/core/misc.c b/src/core/misc.c
index 28aaae84..516c6dc3 100644
--- a/src/core/misc.c
+++ b/src/core/misc.c
@@ -377,7 +377,7 @@ int match_wildcards(const char *cmask, const char *data)
 	char *mask, *newmask, *p1, *p2;
 	int ret;
 
-	newmask = mask = strdup(cmask);
+	newmask = mask = g_strdup(cmask);
 	for (; *mask != '\0' && *data != '\0'; mask++) {
 		if (*mask == '?' || toupper(*mask) == toupper(*data)) {
 			data++;
diff --git a/src/core/settings.h b/src/core/settings.h
index 9198bba9..81599db3 100644
--- a/src/core/settings.h
+++ b/src/core/settings.h
@@ -8,7 +8,7 @@ typedef struct _config_rec CONFIG_REC;
 enum {
 	SETTING_TYPE_STRING,
 	SETTING_TYPE_INT,
-	SETTING_TYPE_BOOLEAN,
+	SETTING_TYPE_BOOLEAN
 };
 
 typedef struct {
diff --git a/src/core/special-vars.c b/src/core/special-vars.c
index 26788a65..7d51bca1 100644
--- a/src/core/special-vars.c
+++ b/src/core/special-vars.c
@@ -108,7 +108,7 @@ static char *get_long_variable_value(const char *key, void *server, void *item,
 	*free_ret = FALSE;
 
 	/* expando? */
-	func = g_hash_table_lookup(expandos, key);
+	func = (EXPANDO_FUNC) g_hash_table_lookup(expandos, key);
 	if (func != NULL)
 		return func(server, item, free_ret);
 
@@ -502,7 +502,7 @@ void expando_create(const char *key, EXPANDO_FUNC func)
                 g_free(origkey);
 		g_hash_table_remove(expandos, key);
 	}
-	g_hash_table_insert(expandos, g_strdup(key), func);
+	g_hash_table_insert(expandos, g_strdup(key), (void *) func);
 }
 
 /* Destroy expando */
diff --git a/src/fe-common/core/module-formats.h b/src/fe-common/core/module-formats.h
index 8b9a6375..94392763 100644
--- a/src/fe-common/core/module-formats.h
+++ b/src/fe-common/core/module-formats.h
@@ -66,3 +66,5 @@ enum {
 
 extern FORMAT_REC fecommon_core_formats[];
 #define MODULE_FORMATS fecommon_core_formats
+
+#include "printformat.h"
diff --git a/src/fe-common/core/printformat.h b/src/fe-common/core/printformat.h
new file mode 100644
index 00000000..e1dcf761
--- /dev/null
+++ b/src/fe-common/core/printformat.h
@@ -0,0 +1,25 @@
+/* printformat(...) = printformat_format(module_formats, ...)
+
+   Could this be any harder? :) With GNU C compiler and C99 compilers,
+   use #define. With others use either inline functions if they are
+   supported or static functions if they are not..
+ */
+#if defined (__GNUC__) && !defined (__STRICT_ANSI__)
+/* GCC */
+#  define printformat(server, channel, level, formatnum...) \
+	printformat_format(MODULE_FORMATS, server, channel, level, ##formatnum)
+#elif defined (_ISOC99_SOURCE)
+/* C99 */
+#  define printformat(server, channel, level, formatnum, ...) \
+	printformat_format(MODULE_FORMATS, server, channel, level, formatnum, __VA_ARGS__)
+#else
+/* inline/static */
+static
+#ifdef G_CAN_INLINE
+inline
+#endif
+void printformat(void *server, const char *channel, int level, int formatnum, ...)
+{
+        printformat_format(MODULE_FORMATS, server, channel, level, formatnum);
+}
+#endif
diff --git a/src/fe-common/core/printtext.h b/src/fe-common/core/printtext.h
index 18f3246e..acd6a03e 100644
--- a/src/fe-common/core/printtext.h
+++ b/src/fe-common/core/printtext.h
@@ -24,32 +24,6 @@ typedef struct {
 #define PRINTFLAG_MIRC_COLOR    0x20
 #define PRINTFLAG_INDENT        0x40
 
-/* printformat(...) = printformat_format(module_formats, ...)
-
-   Could this be any harder? :) With GNU C compiler and C99 compilers,
-   use #define. With others use either inline functions if they are
-   supported or static functions if they are not..
- */
-#ifdef __GNUC__
-/* GCC */
-#  define printformat(server, channel, level, formatnum...) \
-	printformat_format(MODULE_FORMATS, server, channel, level, ##formatnum)
-#elif defined (_ISOC99_SOURCE)
-/* C99 */
-#  define printformat(server, channel, level, formatnum, ...) \
-	printformat_format(MODULE_FORMATS, server, channel, level, formatnum, __VA_ARGS__)
-#else
-/* inline/static */
-#ifdef G_CAN_INLINE
-inline
-#else
-static
-#endif
-void printformat(void *server, const char *channel, int level, int formatnum, ...)
-{
-        printformat_format(MODULE_FORMATS, server, channel, level, ##formatnum);
-}
-#endif
 void printformat_format(FORMAT_REC *formats, void *server, const char *channel, int level, int formatnum, ...);
 
 void printtext(void *server, const char *channel, int level, const char *str, ...);
diff --git a/src/fe-common/core/windows.c b/src/fe-common/core/windows.c
index 538b63ac..bcfaa38c 100644
--- a/src/fe-common/core/windows.c
+++ b/src/fe-common/core/windows.c
@@ -181,6 +181,17 @@ void window_set_level(WINDOW_REC *window, int level)
         signal_emit("window level changed", 1, window);
 }
 
+/* return active item's name, or if none is active, window's name */
+char *window_get_active_name(WINDOW_REC *window)
+{
+	g_return_val_if_fail(window != NULL, NULL);
+
+	if (window->active != NULL)
+		return window->active->name;
+
+	return window->name;
+}
+
 WINDOW_REC *window_find_level(void *server, int level)
 {
 	WINDOW_REC *match;
diff --git a/src/fe-common/core/windows.h b/src/fe-common/core/windows.h
index a3b06d86..2b13101b 100644
--- a/src/fe-common/core/windows.h
+++ b/src/fe-common/core/windows.h
@@ -58,8 +58,11 @@ void window_change_server(WINDOW_REC *window, void *server);
 
 void window_set_refnum(WINDOW_REC *window, int refnum);
 void window_set_name(WINDOW_REC *window, const char *name);
-
 void window_set_level(WINDOW_REC *window, int level);
+
+/* return active item's name, or if none is active, window's name */
+char *window_get_active_name(WINDOW_REC *window);
+
 WINDOW_REC *window_find_level(void *server, int level);
 WINDOW_REC *window_find_closest(void *server, const char *name, int level);
 WINDOW_REC *window_find_refnum(int refnum);
diff --git a/src/fe-common/irc/dcc/module-formats.h b/src/fe-common/irc/dcc/module-formats.h
index bc58035e..de01511f 100644
--- a/src/fe-common/irc/dcc/module-formats.h
+++ b/src/fe-common/irc/dcc/module-formats.h
@@ -32,8 +32,10 @@ enum {
 	IRCTXT_DCC_CONNECT_ERROR,
 	IRCTXT_DCC_CANT_CREATE,
 	IRCTXT_DCC_REJECTED,
-	IRCTXT_DCC_CLOSE,
+	IRCTXT_DCC_CLOSE
 };
 
 extern FORMAT_REC fecommon_irc_dcc_formats[];
 #define MODULE_FORMATS fecommon_irc_dcc_formats
+
+#include "printformat.h"
diff --git a/src/fe-common/irc/fe-ctcp.c b/src/fe-common/irc/fe-ctcp.c
index a8d9a1c5..d06e1185 100644
--- a/src/fe-common/irc/fe-ctcp.c
+++ b/src/fe-common/irc/fe-ctcp.c
@@ -47,17 +47,17 @@ static void ctcp_print(const char *pre, const char *data, IRC_SERVER_REC *server
 
 static void ctcp_default_msg(const char *data, IRC_SERVER_REC *server, const char *nick, const char *addr, const char *target)
 {
-    return ctcp_print("unknown CTCP", data, server, nick, addr, target);
+	ctcp_print("unknown CTCP", data, server, nick, addr, target);
 }
 
 static void ctcp_ping_msg(const char *data, IRC_SERVER_REC *server, const char *nick, const char *addr, const char *target)
 {
-    return ctcp_print("CTCP PING", data, server, nick, addr, target);
+	ctcp_print("CTCP PING", data, server, nick, addr, target);
 }
 
 static void ctcp_version_msg(const char *data, IRC_SERVER_REC *server, const char *nick, const char *addr, const char *target)
 {
-    return ctcp_print("CTCP VERSION", data, server, nick, addr, target);
+	ctcp_print("CTCP VERSION", data, server, nick, addr, target);
 }
 
 static void ctcp_default_reply(const char *data, IRC_SERVER_REC *server, const char *nick, const char *addr, const char *target)
diff --git a/src/fe-common/irc/flood/module-formats.h b/src/fe-common/irc/flood/module-formats.h
index b435a752..8311b021 100644
--- a/src/fe-common/irc/flood/module-formats.h
+++ b/src/fe-common/irc/flood/module-formats.h
@@ -11,3 +11,5 @@ enum {
 
 extern FORMAT_REC fecommon_irc_flood_formats[];
 #define MODULE_FORMATS fecommon_irc_flood_formats
+
+#include "printformat.h"
diff --git a/src/fe-common/irc/module-formats.h b/src/fe-common/irc/module-formats.h
index c7dc5bf8..d75ca9c4 100644
--- a/src/fe-common/irc/module-formats.h
+++ b/src/fe-common/irc/module-formats.h
@@ -162,3 +162,5 @@ enum {
 
 extern FORMAT_REC fecommon_irc_formats[];
 #define MODULE_FORMATS fecommon_irc_formats
+
+#include "printformat.h"
diff --git a/src/fe-common/irc/notifylist/module-formats.h b/src/fe-common/irc/notifylist/module-formats.h
index 77b40cc2..f5f855dc 100644
--- a/src/fe-common/irc/notifylist/module-formats.h
+++ b/src/fe-common/irc/notifylist/module-formats.h
@@ -17,3 +17,5 @@ enum {
 
 extern FORMAT_REC fecommon_irc_notifylist_formats[];
 #define MODULE_FORMATS fecommon_irc_notifylist_formats
+
+#include "printformat.h"
diff --git a/src/fe-none/Makefile.am b/src/fe-none/Makefile.am
index b61f4dd2..5fbc6a40 100644
--- a/src/fe-none/Makefile.am
+++ b/src/fe-none/Makefile.am
@@ -8,13 +8,11 @@ INCLUDES = \
 	-I$(top_srcdir)/src/core/ \
 	-I$(top_srcdir)/src/irc/core/
 
-irssi_bot_DEPENDENCIES = @IRC_LIBS@ @CORE_LIBS@
+irssi_bot_DEPENDENCIES = @COMMON_NOUI_LIBS@
 
 irssi_bot_LDADD = \
-	@IRC_LIBS@ \
-	@CORE_LIBS@ \
-        $(PROG_LIBS) \
-	$(INTLLIBS) \
+	@COMMON_NOUI_LIBS@ \
+	$(PROG_LIBS) \
 	$(PERL_LDFLAGS)
 
 irssi_bot_SOURCES = \
diff --git a/src/fe-text/Makefile.am b/src/fe-text/Makefile.am
index 0120a4d9..fc8d7302 100644
--- a/src/fe-text/Makefile.am
+++ b/src/fe-text/Makefile.am
@@ -13,10 +13,9 @@ irssi_text_DEPENDENCIES = @COMMON_LIBS@
 
 irssi_text_LDADD = \
 	@COMMON_LIBS@ \
-        $(PROG_LIBS) \
-        $(CURSES_LIBS) \
-	$(INTLLIBS) \
-	$(PERL_LDFLAGS)
+	$(PROG_LIBS) \
+	$(PERL_LDFLAGS) \
+        $(CURSES_LIBS)
 
 irssi_text_SOURCES = \
         gui-entry.c \
diff --git a/src/fe-text/gui-statusbar.c b/src/fe-text/gui-statusbar.c
deleted file mode 100644
index 130993c2..00000000
--- a/src/fe-text/gui-statusbar.c
+++ /dev/null
@@ -1,237 +0,0 @@
-/*
- gui-statusbar.c : irssi
-
-    Copyright (C) 1999 Timo Sirainen
-
-    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
-    the Free Software Foundation; either version 2 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
-    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-*/
-
-#include "module.h"
-#include "signals.h"
-#include "server.h"
-
-#include "windows.h"
-
-#include "screen.h"
-#include "gui-statusbar.h"
-#include "gui-mainwindows.h"
-#include "gui-windows.h"
-
-typedef struct
-{
-    gint tag;
-
-    gint xpos, ypos;
-    gint size;
-    gboolean right_justify, up;
-    STATUSBAR_FUNC func;
-}
-STATUSBAR_REC;
-
-static GList *sbars;
-static gint sbars_tag;
-
-static void gui_statusbar_redraw_line(gboolean up, gint ypos)
-{
-    GList *tmp;
-    gint xpos, rxpos;
-
-    xpos = 1;
-    for (tmp = sbars; tmp != NULL; tmp = tmp->next)
-    {
-        STATUSBAR_REC *rec = tmp->data;
-
-        if (!rec->right_justify)
-        {
-            if (rec->up == up && rec->ypos == ypos && xpos+rec->size < COLS)
-            {
-                rec->xpos = xpos;
-		rec->func(xpos, rec->ypos + (rec->up ? 0 : last_text_line), rec->size);
-                if (rec->size > 0) xpos += rec->size+1;
-            }
-        }
-    }
-
-    rxpos = COLS-1;
-    for (tmp = sbars; tmp != NULL; tmp = tmp->next)
-    {
-        STATUSBAR_REC *rec = tmp->data;
-
-        if (rec->right_justify)
-        {
-            if (rec->up == up && rec->ypos == ypos && rxpos-rec->size > xpos)
-            {
-                rec->xpos = rxpos-rec->size;
-		rec->func(rec->xpos, rec->ypos + (rec->up ? 0 : last_text_line), rec->size);
-                if (rec->size > 0) rxpos -= rec->size+1;
-            }
-        }
-    }
-}
-
-static void gui_statusbar_redraw_all(void)
-{
-    gint n;
-
-    screen_refresh_freeze();
-    set_bg((1<<4)+15);
-    for (n = 0; n < first_text_line; n++)
-    {
-	move(n, 0); clrtoeol();
-    }
-    for (n = last_text_line; n < LINES-1; n++)
-    {
-	move(n, 0); clrtoeol();
-    }
-    set_bg(0);
-
-    for (n = 0; n < LINES-1; n++)
-    {
-	gui_statusbar_redraw_line(FALSE, n);
-	gui_statusbar_redraw_line(TRUE, n);
-    }
-    screen_refresh_thaw();
-}
-
-void gui_statusbar_redraw(gint tag)
-{
-    GList *tmp;
-
-    if (tag == -1)
-    {
-        gui_statusbar_redraw_all();
-        return;
-    }
-
-    for (tmp = sbars; tmp != NULL; tmp = tmp->next)
-    {
-        STATUSBAR_REC *rec = tmp->data;
-
-        if (rec->tag == tag)
-	{
-	    rec->func(rec->xpos, rec->ypos + (rec->up ? 0 : last_text_line), rec->size);
-            break;
-        }
-    }
-}
-
-/* create new statusbar, return position */
-gint gui_statusbar_create(gboolean up)
-{
-    gint pos;
-
-    pos = up ? first_text_line++ :
-	(LINES-2)-last_text_line--;
-
-    set_bg((1<<4)+15);
-    move(up ? pos : last_text_line+pos, 0); clrtoeol();
-    set_bg(0);
-
-    gui_windows_resize(-1, FALSE);
-    return pos;
-}
-
-void gui_statusbar_delete(gboolean up, gint ypos)
-{
-    GList *tmp, *next;
-
-    if (up && first_text_line > 0)
-	first_text_line--;
-    else if (!up && last_text_line < LINES-1)
-	last_text_line++;
-
-    for (tmp = sbars; tmp != NULL; tmp = next)
-    {
-        STATUSBAR_REC *rec = tmp->data;
-
-	next = tmp->next;
-	if (rec->up == up && rec->ypos == ypos)
-	    gui_statusbar_remove(rec->tag);
-	else if (rec->up == up && rec->ypos > ypos)
-            rec->ypos--;
-    }
-
-    gui_windows_resize(1, FALSE);
-}
-
-/* allocate area in statusbar, returns tag or -1 if failed */
-gint gui_statusbar_allocate(gint size, gboolean right_justify, gboolean up, gint ypos, STATUSBAR_FUNC func)
-{
-    STATUSBAR_REC *rec;
-
-    g_return_val_if_fail(func != NULL, -1);
-
-    rec = g_new0(STATUSBAR_REC, 1);
-    sbars = g_list_append(sbars, rec);
-
-    rec->tag = ++sbars_tag;
-    rec->xpos = -1;
-    rec->up = up;
-    rec->ypos = ypos;
-    rec->size = size;
-    rec->right_justify = right_justify;
-    rec->func = func;
-
-    gui_statusbar_redraw_all();
-    return rec->tag;
-}
-
-void gui_statusbar_resize(gint tag, gint size)
-{
-    GList *tmp;
-
-    for (tmp = sbars; tmp != NULL; tmp = tmp->next)
-    {
-        STATUSBAR_REC *rec = tmp->data;
-
-        if (rec->tag == tag)
-        {
-            rec->size = size;
-            gui_statusbar_redraw_all();
-            break;
-        }
-    }
-}
-
-void gui_statusbar_remove(gint tag)
-{
-    GList *tmp;
-
-    for (tmp = sbars; tmp != NULL; tmp = tmp->next)
-    {
-        STATUSBAR_REC *rec = tmp->data;
-
-        if (rec->tag == tag)
-        {
-            g_free(rec);
-            sbars = g_list_remove(sbars, rec);
-            if (!quitting) gui_statusbar_redraw_all();
-            break;
-        }
-    }
-}
-
-void gui_statusbar_init(void)
-{
-    sbars = NULL;
-    sbars_tag = 0;
-
-    gui_statusbar_create(FALSE);
-}
-
-void gui_statusbar_deinit(void)
-{
-    gui_statusbar_delete(FALSE, 0);
-}
diff --git a/src/fe-text/module-formats.h b/src/fe-text/module-formats.h
index 32f219e2..39d29182 100644
--- a/src/fe-text/module-formats.h
+++ b/src/fe-text/module-formats.h
@@ -12,3 +12,5 @@ enum {
 
 extern FORMAT_REC gui_text_formats[];
 #define MODULE_FORMATS gui_text_formats
+
+#include "printformat.h"
diff --git a/src/fe-text/screen.h b/src/fe-text/screen.h
index 3fc5694e..cdb543c1 100644
--- a/src/fe-text/screen.h
+++ b/src/fe-text/screen.h
@@ -11,18 +11,16 @@
 #define ATTR_COLOR8    0x200
 #define ATTR_REVERSE   0x400
 
-extern gboolean use_colors;
-
-gint init_screen(void); /* Initialize screen, detect screen length */
+int init_screen(void); /* Initialize screen, detect screen length */
 void deinit_screen(void); /* Deinitialize screen */
 
-void set_color(gint col);
-void set_bg(gint col);
+void set_color(int col);
+void set_bg(int col);
 
-void scroll_up(gint y1, gint y2); /* Scroll area up */
-void scroll_down(gint y1, gint y2); /* Scroll area down */
+void scroll_up(int y1, int y2); /* Scroll area up */
+void scroll_down(int y1, int y2); /* Scroll area down */
 
-void move_cursor(gint y, gint x);
+void move_cursor(int y, int x);
 
 void screen_refresh_freeze(void);
 void screen_refresh_thaw(void);
diff --git a/src/fe-text/statusbar.c b/src/fe-text/statusbar.c
index 24e89107..9e83438c 100644
--- a/src/fe-text/statusbar.c
+++ b/src/fe-text/statusbar.c
@@ -58,7 +58,7 @@ static void statusbar_redraw_line(STATUSBAR_REC *bar)
 		if (!rec->right_justify && xpos+rec->size < COLS) {
 			rec->xpos = xpos;
 
-			func = rec->func;
+			func = (STATUSBAR_FUNC) rec->func;
 			func(rec, bar->ypos);
 
 			if (resized) break;
@@ -73,7 +73,7 @@ static void statusbar_redraw_line(STATUSBAR_REC *bar)
 		if (rec->right_justify && rxpos-rec->size > xpos) {
 			rec->xpos = rxpos-rec->size;
 
-			func = rec->func;
+			func = (STATUSBAR_FUNC) rec->func;
 			func(rec, bar->ypos);
 
 			if (resized) break;
@@ -131,7 +131,7 @@ void statusbar_item_redraw(SBAR_ITEM_REC *item)
 
 	g_return_if_fail(item != NULL);
 
-	func = item->func;
+	func = (STATUSBAR_FUNC) item->func;
 	func(item, item->bar->ypos);
 }
 
@@ -215,7 +215,7 @@ SBAR_ITEM_REC *statusbar_item_create(STATUSBAR_REC *bar, int size, int right_jus
 	rec->xpos = -1;
 	rec->size = size;
 	rec->right_justify = right_justify;
-	rec->func = func;
+	rec->func = (void *) func;
 
 	return rec;
 }
diff --git a/src/irc/core/irc.h b/src/irc/core/irc.h
index aa5fbc9d..a971670c 100644
--- a/src/irc/core/irc.h
+++ b/src/irc/core/irc.h
@@ -61,7 +61,7 @@ extern char *current_server_event; /* current server event being processed */
 
 /* Send command to IRC server */
 void irc_send_cmd(IRC_SERVER_REC *server, const char *cmd);
-void irc_send_cmdv(IRC_SERVER_REC *server, const char *cmd, ...) G_GNUC_PRINTF (2, 3);;
+void irc_send_cmdv(IRC_SERVER_REC *server, const char *cmd, ...) G_GNUC_PRINTF (2, 3);
 /* Send command to IRC server, split to multiple commands if necessary so
    that command will never have more target nicks than `max_nicks'. Nicks
    are separated with commas. (works with /msg, /kick, ...) */
diff --git a/src/lib-config/iconfig.h b/src/lib-config/iconfig.h
index 320b0629..a45ffdec 100644
--- a/src/lib-config/iconfig.h
+++ b/src/lib-config/iconfig.h
@@ -6,7 +6,7 @@ enum {
         NODE_TYPE_VALUE,
         NODE_TYPE_BLOCK,
         NODE_TYPE_LIST,
-	NODE_TYPE_COMMENT,
+	NODE_TYPE_COMMENT
 };
 
 #define has_node_value(a) \
diff --git a/src/lib-config/set.c b/src/lib-config/set.c
index 6748fce9..ce078f38 100644
--- a/src/lib-config/set.c
+++ b/src/lib-config/set.c
@@ -102,12 +102,12 @@ void config_node_set_int(CONFIG_NODE *parent, const char *key, int value)
 	char str[MAX_INT_STRLEN];
 
 	g_snprintf(str, sizeof(str), "%d", value);
-	return config_node_set_str(parent, key, str);
+	config_node_set_str(parent, key, str);
 }
 
 void config_node_set_bool(CONFIG_NODE *parent, const char *key, int value)
 {
-	return config_node_set_str(parent, key, value ? "yes" : "no");
+	config_node_set_str(parent, key, value ? "yes" : "no");
 }
 
 int config_set_str(CONFIG_REC *rec, const char *section, const char *key, const char *value)