Author: yamakenz
Date: Wed Jan 30 07:35:03 2008
New Revision: 5147
Modified:
trunk/configure.ac
trunk/uim/Makefile.am
trunk/uim/uim-internal.h
trunk/uim/uim-notify.c
trunk/uim/uim.c
Log:
* This commit make uim-notify optional
* uim/uim-notify.c
- (agent_body): Remove the static initialization (See uim_notify_init())
- (uim_notify_init): Add uim_notify_load_stderr() invocation
* uim/uim-internal.h
- (uim_init_notify_subrs): Enable only if UIM_USE_NOTIFY
- (uim_notify_info, uim_notify_fatal): Define as alias of printf if
!UIM_USE_NOTIFY
* uim/uim.c
- Include uim-notify.h only if UIM_USE_NOTIFY
- (uim_init_internal):
* Add uim_notify_init() invocation
* Call uim_init_notify_subrs() iff UIM_USE_NOTIFY
- (uim_quit): Add uim_notify_quit() invocation
* uim/Makefile.am
- (pkginclude_HEADERS): Add uim-notify.h iff NOTIFY
- (libuim_la_SOURCES): Add uim-notify.c iff NOTIFY
* configure.ac
- AC_DEFINE UIM_USE_NOTIFY
- AM_CONDITIONAL NOTIFY
- Add 'stderr' to $use_notify
- Fix some uim-notify handlings
Modified: trunk/configure.ac
==============================================================================
--- trunk/configure.ac (original)
+++ trunk/configure.ac Wed Jan 30 07:35:03 2008
@@ -22,6 +22,7 @@
AC_PATH_PROG(RSVG, rsvg)
AC_PATH_PROGS(MD5, md5 md5sum)
AC_PATH_PROGS(SHA1, sha1 sha1sum)
+AC_PATH_PROGS(SED, sed gsed)
AX_PATH_QMAKE4
AM_MAINTAINER_MODE
@@ -1295,45 +1296,48 @@
AM_CONDITIONAL(ENABLE_ANTHY_UTF8_STATIC, test
x$build_anthy_utf8_static = xyes)
-# *******************************
-# *** Tests for NOTIFY ***
-# *******************************
-notify_targets='libnotify knotify3'
+# ****************************
+# *** Tests for uim-notify ***
+# ****************************
+notify_targets='stderr libnotify knotify3'
AC_ARG_ENABLE(notify,
- [ --enable-notify[=mode_list] (HIGHLY EXPERIMENTAL)
- enable notify module (specify comma
separated mode list)
- libnotify: libnotify
- knotify3: KDE3 notify],
+ AS_HELP_STRING([--enable-notify@<:@=agent-list@:>@ (HIGHLY EXPERIMENTAL)],
+ [enable system message notification for users
+ (specify comma separated notification agent list
+ from stderr, libnotify and knotify3)]),
[ enable_notify=$enableval
have_notify_opt=yes ],
[ enable_notify=yes
have_notify_opt=no ])
if test "x$enable_notify" != xno; then
- for i in `echo $enable_notify | sed 's/,/ /g'`; do
+ AC_DEFINE(UIM_USE_NOTIFY, 1, [Define to 1 if you want to use uim-notify])
+ use_notify="${use_notify}stderr "
+
+ for i in `echo $enable_notify | ${SED} 's/,/ /g'`; do
eval "au_enable_$i=yes"
done
fi
-AC_MSG_CHECKING(enable_notify=libnotify)
+AC_MSG_CHECKING([whether libnotify is requested])
if test "x$au_enable_libnotify" = xyes; then
- AC_MSG_RESULT([yes, configuring libnotify])
+ AC_MSG_RESULT([yes])
PKG_CHECK_MODULES(LIBNOTIFY, libnotify >= 0.4, use_libnotify="yes",
use_libnotify="no")
if test "x$use_libnotify" = "xyes"; then
AC_DEFINE(ENABLE_LIBNOTIFY, 1, [set notify interface with libnotify])
AC_SUBST(LIBNOTIFY_LIBS)
AC_SUBST(LIBNOTIFY_CFLAGS)
- use_notify="libnotify "
+ use_notify="${use_notify}libnotify "
fi
else
AC_MSG_RESULT(no)
fi
-AC_MSG_CHECKING(enable_notify=knotify3)
+AC_MSG_CHECKING([whether knotify3 is requested])
if test "x$au_enable_knotify3" = xyes; then
- AC_MSG_RESULT([yes, configuring knotify3])
+ AC_MSG_RESULT([yes])
if test "x$use_qt" = "xyes"; then
if test "x$KDE_CONFIG" != "xno"; then
KNOTIFY3_PREFIX=`kde-config --prefix`
@@ -1357,6 +1361,8 @@
else
use_knotify3="no"
fi
+else
+ AC_MSG_RESULT(no)
fi
if test "x$use_knotify3" = "xyes"; then
AC_DEFINE(ENABLE_KNOTIFY3, 1, [set notify interface with knotify3])
@@ -1371,6 +1377,7 @@
use_notify=none
fi
+AM_CONDITIONAL(NOTIFY, test "x$enable_notify" != xno)
AM_CONDITIONAL(LIBNOTIFY, test x$use_libnotify = xyes)
AM_CONDITIONAL(KNOTIFY3, test x$use_knotify3 = xyes)
Modified: trunk/uim/Makefile.am
==============================================================================
--- trunk/uim/Makefile.am (original)
+++ trunk/uim/Makefile.am Wed Jan 30 07:35:03 2008
@@ -39,8 +39,11 @@
pkginclude_HEADERS = uim-scm.h uim-scm-abbrev.h uim.h \
uim-util.h plugin.h \
uim-helper.h uim-im-switcher.h \
- uim-custom.h uim-notify.h
+ uim-custom.h
pkginclude_HEADERS += bsdlook.h
+if NOTIFY
+pkginclude_HEADERS += uim-notify.h
+endif
libuim_la_SOURCES = \
uim-internal.h uim-error.c uim.c \
@@ -48,7 +51,10 @@
iconv.c plugin.c \
uim-ipc.c uim-helper.c uim-helper-client.c \
gettext.h intl.c \
- rk.c uim-notify.c
+ rk.c
+if NOTIFY
+libuim_la_SOURCES += uim-notify.c
+endif
libuim_custom_la_SOURCES = uim-custom.c
Modified: trunk/uim/uim-internal.h
==============================================================================
--- trunk/uim/uim-internal.h (original)
+++ trunk/uim/uim-internal.h Wed Jan 30 07:35:03 2008
@@ -156,10 +156,18 @@
void uim_init_im_subrs(void);
void uim_init_key_subrs(void);
void uim_init_util_subrs(void);
+#if UIM_USE_NOTIFY
void uim_init_notify_subrs(void);
+#endif
void uim_init_rk_subrs(void);
void uim_init_intl_subrs(void);
+
+#if !UIM_USE_NOTIFY
+/* FIXME: Output to stderr */
+#define uim_notify_info printf
+#define uim_notify_fatal printf
+#endif
void uim_set_encoding(uim_context uc, const char *enc);
#if HAVE_ISSETUGID
Modified: trunk/uim/uim-notify.c
==============================================================================
--- trunk/uim/uim-notify.c (original)
+++ trunk/uim/uim-notify.c Wed Jan 30 07:35:03 2008
@@ -73,23 +73,14 @@
};
static my_dlfunc_t load_func(const char *path, const char *name);
-static void uim_notify_load_stderr(void);
+/* FIXME: Move these decls to the 'stderr' agent section and make
+ * invisible from other part of uim-notify. -- YamaKen 2008-01-30 */
+static void uim_notify_load_stderr(void);
static const uim_notify_desc *uim_notify_stderr_get_desc(void);
-static int uim_notify_stderr_init(void);
-static void uim_notify_stderr_quit(void);
-static int uim_notify_stderr_info(const char *);
-static int uim_notify_stderr_fatal(const char *);
-
-static struct uim_notify_agent agent_body = {
- uim_notify_stderr_get_desc,
- uim_notify_stderr_init,
- uim_notify_stderr_quit,
- uim_notify_stderr_info,
- uim_notify_stderr_fatal
-};
+static struct uim_notify_agent agent_body;
static struct uim_notify_agent *agent = &agent_body;
static void *notify_dlhandle = NULL;
@@ -176,6 +167,12 @@
int
uim_notify_init(void)
{
+ /* Since a cyclic init/quit sequence leaves *agent uncleared,
+ * explicit initialization is required. Such data initialization is
+ * needed for some embedded platforms such as Qtopia.
+ * -- YamaKen 2008-01-30 */
+ uim_notify_load_stderr();
+
return agent->init();
}
@@ -310,6 +307,11 @@
/*
* builtin 'stderr' notification agent
*/
+static int uim_notify_stderr_init(void);
+static void uim_notify_stderr_quit(void);
+static int uim_notify_stderr_info(const char *);
+static int uim_notify_stderr_fatal(const char *);
+
static const uim_notify_desc uim_notify_stderr_desc = {
"stderr",
"Standard Error output",
@@ -344,12 +346,14 @@
return;
}
+/* FIXME: accept extra args */
static int
uim_notify_stderr_info(const char *msg)
{
return fprintf(stderr, "uim [Info]: %s", msg);
}
+/* FIXME: accept extra args */
static int
uim_notify_stderr_fatal(const char *msg)
{
Modified: trunk/uim/uim.c
==============================================================================
--- trunk/uim/uim.c (original)
+++ trunk/uim/uim.c Wed Jan 30 07:35:03 2008
@@ -43,6 +43,9 @@
#include "uim-im-switcher.h"
#include "uim-scm.h"
#include "uim-scm-abbrev.h"
+#if UIM_USE_NOTIFY
+#include "uim-notify.h"
+#endif
enum uim_result {
@@ -121,7 +124,10 @@
uim_init_im_subrs();
uim_init_intl_subrs();
uim_init_util_subrs();
- uim_init_notify_subrs();
+#if UIM_USE_NOTIFY
+ uim_notify_init(); /* init uim-notify facility */
+ uim_init_notify_subrs(); /* init Scheme interface of uim-notify */
+#endif
uim_init_key_subrs();
uim_init_rk_subrs();
uim_init_plugin();
@@ -164,6 +170,9 @@
#endif
#ifdef ENABLE_ANTHY_UTF8_STATIC
uim_anthy_utf8_plugin_instance_quit();
+#endif
+#if UIM_USE_NOTIFY
+ uim_notify_quit();
#endif
uim_scm_quit();
uim_initialized = UIM_FALSE;