[smuxi] Engine-MessageBuffer: new tool to dump and convert message buffers
- From: Mirco M. M. Bauer <mmmbauer src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [smuxi] Engine-MessageBuffer: new tool to dump and convert message buffers
- Date: Thu, 6 Mar 2014 22:40:28 +0000 (UTC)
commit ce3becd0c083e60bc404764e2d50c20abd165874
Author: Mirco Bauer <meebey meebey net>
Date: Wed Mar 5 21:51:39 2014 +0100
Engine-MessageBuffer: new tool to dump and convert message buffers
Makefile.am | 5 +-
configure.ac | 18 +-
debian/smuxi-engine.install | 2 +
po-Engine-Campfire/POTFILES.skip | 1 +
po-Engine-IRC/POTFILES.skip | 1 +
po-Engine-JabbR/POTFILES.skip | 1 +
po-Engine-MessageBuffer/LINGUAS | 1 +
po-Engine-MessageBuffer/Makefile.in.in | 218 ++++++++++++
po-Engine-MessageBuffer/POTFILES.in | 1 +
po-Engine-MessageBuffer/POTFILES.skip | 18 +
po-Engine-MessageBuffer/de.po | 120 +++++++
po-Engine-Twitter/POTFILES.skip | 1 +
po-Engine-XMPP/POTFILES.skip | 1 +
po-Engine/POTFILES.skip | 1 +
po-Frontend-GNOME-IRC/POTFILES.skip | 1 +
po-Frontend-GNOME-Twitter/POTFILES.skip | 1 +
po-Frontend-GNOME-XMPP/POTFILES.skip | 1 +
po-Frontend-GNOME/POTFILES.skip | 1 +
po-Frontend/POTFILES.skip | 1 +
po-Server/POTFILES.skip | 1 +
src/Engine-MessageBuffer/AssemblyInfo.cs | 38 ++
.../Engine-MessageBuffer.csproj | 67 ++++
src/Engine-MessageBuffer/Main.cs | 353 ++++++++++++++++++++
src/Engine-MessageBuffer/Makefile.am | 35 ++
.../smuxi-message-buffer.exe.config | 16 +
src/Engine-MessageBuffer/smuxi-message-buffer.in | 3 +
src/Engine-Twitter/Makefile.am | 2 +-
src/Engine/MessageBuffers/SqliteMessageBuffer.cs | 15 +
src/Makefile.am | 1 +
src/smuxi.sln | 10 +
30 files changed, 931 insertions(+), 4 deletions(-)
---
diff --git a/Makefile.am b/Makefile.am
index 87f807f..4fa5420 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -60,6 +60,7 @@ DISTCLEANFILES = \
PODIRS = po \
po-Engine \
+ po-Engine-MessageBuffer \
$(PO_ENGINE_CAMPFIRE) \
$(PO_ENGINE_IRC) \
$(PO_ENGINE_JABBR) \
@@ -144,7 +145,8 @@ LINUX_STATIC_BUILD_DIR = $(top_builddir)/bin-linux-static
WIN32_EXE_FILES = \
$(BUILD_DIR)/smuxi-frontend-gnome.exe \
- $(BUILD_DIR)/smuxi-server.exe
+ $(BUILD_DIR)/smuxi-server.exe \
+ $(BUILD_DIR)/smuxi-message-buffer.exe
WIN32_FILES = \
$(WIN32_EXE_FILES) \
@@ -187,6 +189,7 @@ OSX_FILES = \
$(BUILD_DIR)/smuxi-frontend-gnome-twitter.dll \
$(BUILD_DIR)/smuxi-frontend-gnome-xmpp.dll \
$(BUILD_DIR)/smuxi-server.exe \
+ $(BUILD_DIR)/smuxi-message-buffer.exe \
$(BUILD_DIR)/smuxi-common.dll \
$(BUILD_DIR)/smuxi-engine.dll \
$(BUILD_DIR)/smuxi-engine-campfire.dll \
diff --git a/configure.ac b/configure.ac
index e87e899..cd8578b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -22,6 +22,7 @@ IT_PROG_INTLTOOL([0.25])
POSUB="
po
po-Engine
+ po-Engine-MessageBuffer
po-Engine-Campfire
po-Engine-IRC
po-Engine-JabbR
@@ -63,6 +64,10 @@ GETTEXT_PACKAGE_ENGINE_JABBR=smuxi-engine-jabbr
AC_SUBST(GETTEXT_PACKAGE_ENGINE_JABBR)
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE_ENGINE_JABBR, "$GETTEXT_PACKAGE_ENGINE_JABBR", [Gettext package])
+GETTEXT_PACKAGE_MSG_BUFFER=smuxi-message-buffer
+AC_SUBST(GETTEXT_PACKAGE_MSG_BUFFER)
+AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE_MSG_BUFFER, "$GETTEXT_PACKAGE_MSG_BUFFER", [Gettext package])
+
GETTEXT_PACKAGE_SERVER=smuxi-server
AC_SUBST(GETTEXT_PACKAGE_SERVER)
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE_SERVER, "$GETTEXT_PACKAGE_SERVER", [Gettext package])
@@ -174,7 +179,7 @@ AC_SUBST(CSC, "$MCS")
CSC_FLAGS=
if test "x$PROFILE" = "xdebug"; then
AM_CONDITIONAL(ENABLE_DEBUG, true)
- CSC_FLAGS+=-define:DEBUG,TRACE,LOG4NET
+ CSC_FLAGS+="-define:DEBUG,TRACE,LOG4NET -debug"
else
AM_CONDITIONAL(ENABLE_RELEASE, true)
fi
@@ -551,6 +556,12 @@ if test "x$ENABLE_ENGINE_JABBR" != "xno"; then
fi
AM_CONDITIONAL(ENABLE_ENGINE_JABBR, test "x$ENABLE_ENGINE_JABBR" = "xyes")
+# MessageBuffer tool
+if $PKG_CONFIG 'mono >= 2.6'; then
+ MSG_BUFFER_COMPILER_FLAGS+=" -platform:x86"
+fi
+AC_SUBST(MSG_BUFFER_COMPILER_FLAGS)
+
# Server
if $PKG_CONFIG 'mono >= 2.6'; then
SERVER_COMPILER_FLAGS+=" -platform:x86"
@@ -680,6 +691,8 @@ AC_CONFIG_FILES([
src/Engine-XMPP/Makefile
src/Engine-XMPP/smuxi-engine-xmpp.pc
src/Engine-Campfire/Makefile
+ src/Engine-MessageBuffer/Makefile
+ src/Engine-MessageBuffer/smuxi-message-buffer
src/Server/Makefile
src/Server/smuxi-server
src/Frontend/Makefile
@@ -707,6 +720,7 @@ AC_CONFIG_FILES([
po-Engine-JabbR/Makefile.in
po-Engine-Twitter/Makefile.in
po-Engine-XMPP/Makefile.in
+ po-Engine-MessageBuffer/Makefile.in
po-Server/Makefile.in
po-Frontend/Makefile.in
po-Frontend-GNOME/Makefile.in
@@ -731,7 +745,7 @@ AC_MSG_RESULT([
* Engines
-------
- Core: (db4o: $WITH_DB4O)
+ Core: (sqlite: built-in, db4o: $WITH_DB4O)
IRC: $ENABLE_ENGINE_IRC
XMPP: $ENABLE_ENGINE_XMPP
Twitter: $ENABLE_ENGINE_TWITTER
diff --git a/debian/smuxi-engine.install b/debian/smuxi-engine.install
index daad52f..dad0fe9 100644
--- a/debian/smuxi-engine.install
+++ b/debian/smuxi-engine.install
@@ -4,6 +4,7 @@ usr/lib/smuxi/smuxi-common.dll*
usr/lib/smuxi/smuxi-engine*.dll*
usr/lib/smuxi/smuxi-frontend.dll*
usr/lib/smuxi/smuxi-server.exe*
+usr/lib/smuxi/smuxi-message-buffer.exe*
usr/lib/smuxi/Db4objects.Db4o.dll*
usr/lib/smuxi/Meebey.SmartIrc4net.dll*
usr/lib/smuxi/Twitterizer2.dll*
@@ -14,3 +15,4 @@ usr/lib/smuxi/StarkSoftProxy.dll*
usr/share/locale/*/LC_MESSAGES/smuxi-engine*.mo
usr/share/locale/*/LC_MESSAGES/smuxi-frontend.mo
usr/share/locale/*/LC_MESSAGES/smuxi-server.mo
+usr/share/locale/*/LC_MESSAGES/smuxi-message-buffer.mo
diff --git a/po-Engine-Campfire/POTFILES.skip b/po-Engine-Campfire/POTFILES.skip
index e70f382..f643d08 100644
--- a/po-Engine-Campfire/POTFILES.skip
+++ b/po-Engine-Campfire/POTFILES.skip
@@ -9,6 +9,7 @@ src/Frontend-STFL/
src/Frontend-SWF/
src/Frontend-WPF/
src/Engine/
+src/Engine-MessageBuffer/
src/Engine-IRC/
src/Engine-JabbR/
src/Engine-XMPP/
diff --git a/po-Engine-IRC/POTFILES.skip b/po-Engine-IRC/POTFILES.skip
index 12eb41b..e493fa4 100644
--- a/po-Engine-IRC/POTFILES.skip
+++ b/po-Engine-IRC/POTFILES.skip
@@ -1,6 +1,7 @@
glade/
src/Common/
src/Engine/
+src/Engine-MessageBuffer/
src/Engine-Campfire/
src/Engine-JabbR/
src/Engine-XMPP/
diff --git a/po-Engine-JabbR/POTFILES.skip b/po-Engine-JabbR/POTFILES.skip
index b8b579f..e55c953 100644
--- a/po-Engine-JabbR/POTFILES.skip
+++ b/po-Engine-JabbR/POTFILES.skip
@@ -1,6 +1,7 @@
glade/
src/Common/
src/Engine/
+src/Engine-MessageBuffer/
src/Engine-Campfire/
src/Engine-IRC/
src/Engine-Twitter/
diff --git a/po-Engine-MessageBuffer/LINGUAS b/po-Engine-MessageBuffer/LINGUAS
new file mode 100644
index 0000000..7673daa
--- /dev/null
+++ b/po-Engine-MessageBuffer/LINGUAS
@@ -0,0 +1 @@
+de
diff --git a/po-Engine-MessageBuffer/Makefile.in.in b/po-Engine-MessageBuffer/Makefile.in.in
new file mode 100644
index 0000000..dda6f1a
--- /dev/null
+++ b/po-Engine-MessageBuffer/Makefile.in.in
@@ -0,0 +1,218 @@
+# Makefile for program source directory in GNU NLS utilities package.
+# Copyright (C) 1995, 1996, 1997 by Ulrich Drepper <drepper gnu ai mit edu>
+# Copyright (C) 2004-2008 Rodney Dawes <dobey pwns gmail com>
+#
+# This file may be copied and used freely without restrictions. It may
+# be used in projects which are not available under a GNU Public License,
+# but which still want to provide support for the GNU gettext functionality.
+#
+# - Modified by Owen Taylor <otaylor redhat com> to use GETTEXT_PACKAGE
+# instead of PACKAGE and to look for po2tbl in ./ not in intl/
+#
+# - Modified by jacob berkman <jacob ximian com> to install
+# Makefile.in.in and po2tbl.sed.in for use with glib-gettextize
+#
+# - Modified by Rodney Dawes <dobey pwns gmail com> for use with intltool
+#
+# We have the following line for use by intltoolize:
+# INTLTOOL_MAKEFILE
+
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE_MSG_BUFFER@
+PACKAGE = @PACKAGE@
+VERSION = @VERSION@
+
+SHELL = /bin/sh
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+top_builddir = @top_builddir@
+VPATH = @srcdir@
+
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+datadir = @datadir@
+datarootdir = @datarootdir@
+libdir = @libdir@
+DATADIRNAME = @DATADIRNAME@
+itlocaledir = $(prefix)/$(DATADIRNAME)/locale
+subdir = po
+install_sh = @install_sh@
+# Automake >= 1.8 provides @mkdir_p
+# Until it can be supposed, use the safe fallback:
+mkdir_p = $(install_sh) -d
+
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+
+GMSGFMT = @GMSGFMT@
+MSGFMT = @MSGFMT@
+XGETTEXT = @XGETTEXT@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+MSGMERGE = INTLTOOL_EXTRACT=$(INTLTOOL_EXTRACT) srcdir=$(srcdir) $(INTLTOOL_UPDATE) --gettext-package
$(GETTEXT_PACKAGE) --dist
+GENPOT = INTLTOOL_EXTRACT=$(INTLTOOL_EXTRACT) srcdir=$(srcdir) $(INTLTOOL_UPDATE) --gettext-package
$(GETTEXT_PACKAGE) --pot
+
+ALL_LINGUAS = @ALL_LINGUAS@
+
+PO_LINGUAS=$(shell if test -r $(srcdir)/LINGUAS; then grep -v "^\#" $(srcdir)/LINGUAS; fi)
+
+USER_LINGUAS=$(shell if test -n "$(LINGUAS)"; then LLINGUAS="$(LINGUAS)"; ALINGUAS="$(ALL_LINGUAS)"; for
lang in $$LLINGUAS; do if test -n "`grep ^$$lang$$ $(srcdir)/LINGUAS`" -o -n "`echo $$ALINGUAS|grep ' ?$$lang
?'`"; then printf "$$lang "; fi; done; fi)
+
+USE_LINGUAS=$(shell if test -n "$(USER_LINGUAS)"; then LLINGUAS="$(USER_LINGUAS)"; else if test -n
"$(PO_LINGUAS)"; then LLINGUAS="$(PO_LINGUAS)"; else LLINGUAS="$(ALL_LINGUAS)"; fi; fi; for lang in
$$LLINGUAS; do printf "$$lang "; done)
+
+POFILES=$(shell LINGUAS="$(USE_LINGUAS)"; for lang in $$LINGUAS; do printf "$$lang.po "; done)
+
+DISTFILES = Makefile.in.in POTFILES.in $(POFILES)
+EXTRA_DISTFILES = POTFILES.skip Makevars LINGUAS
+
+POTFILES = \
+# This comment gets stripped out
+
+CATALOGS=$(shell LINGUAS="$(USE_LINGUAS)"; for lang in $$LINGUAS; do printf "$$lang.gmo "; done)
+
+.SUFFIXES:
+.SUFFIXES: .po .pox .gmo .mo .msg .cat
+
+.po.pox:
+ $(MAKE) $(GETTEXT_PACKAGE).pot
+ $(MSGMERGE) $< $(GETTEXT_PACKAGE).pot -o $*.pox
+
+.po.mo:
+ $(MSGFMT) -o $@ $<
+
+.po.gmo:
+ file=`echo $* | sed 's,.*/,,'`.gmo \
+ && rm -f $$file && $(GMSGFMT) -o $$file $<
+
+.po.cat:
+ sed -f ../intl/po2msg.sed < $< > $*.msg \
+ && rm -f $@ && gencat $@ $*.msg
+
+
+all: all- USE_NLS@
+
+all-yes: $(CATALOGS)
+all-no:
+
+$(GETTEXT_PACKAGE).pot: $(POTFILES)
+ $(GENPOT)
+
+install: install-data
+install-data: install-data- USE_NLS@
+install-data-no: all
+install-data-yes: all
+ $(mkdir_p) $(DESTDIR)$(itlocaledir)
+ linguas="$(USE_LINGUAS)"; \
+ for lang in $$linguas; do \
+ dir=$(DESTDIR)$(itlocaledir)/$$lang/LC_MESSAGES; \
+ $(mkdir_p) $$dir; \
+ if test -r $$lang.gmo; then \
+ $(INSTALL_DATA) $$lang.gmo $$dir/$(GETTEXT_PACKAGE).mo; \
+ echo "installing $$lang.gmo as $$dir/$(GETTEXT_PACKAGE).mo"; \
+ else \
+ $(INSTALL_DATA) $(srcdir)/$$lang.gmo $$dir/$(GETTEXT_PACKAGE).mo; \
+ echo "installing $(srcdir)/$$lang.gmo as" \
+ "$$dir/$(GETTEXT_PACKAGE).mo"; \
+ fi; \
+ if test -r $$lang.gmo.m; then \
+ $(INSTALL_DATA) $$lang.gmo.m $$dir/$(GETTEXT_PACKAGE).mo.m; \
+ echo "installing $$lang.gmo.m as $$dir/$(GETTEXT_PACKAGE).mo.m"; \
+ else \
+ if test -r $(srcdir)/$$lang.gmo.m ; then \
+ $(INSTALL_DATA) $(srcdir)/$$lang.gmo.m \
+ $$dir/$(GETTEXT_PACKAGE).mo.m; \
+ echo "installing $(srcdir)/$$lang.gmo.m as" \
+ "$$dir/$(GETTEXT_PACKAGE).mo.m"; \
+ else \
+ true; \
+ fi; \
+ fi; \
+ done
+
+# Empty stubs to satisfy archaic automake needs
+dvi info tags TAGS ID:
+
+# Define this as empty until I found a useful application.
+install-exec installcheck:
+
+uninstall:
+ linguas="$(USE_LINGUAS)"; \
+ for lang in $$linguas; do \
+ rm -f $(DESTDIR)$(itlocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE).mo; \
+ rm -f $(DESTDIR)$(itlocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE).mo.m; \
+ done
+
+check: all $(GETTEXT_PACKAGE).pot
+ rm -f missing notexist
+ srcdir=$(srcdir) $(INTLTOOL_UPDATE) -m
+ if [ -r missing -o -r notexist ]; then \
+ exit 1; \
+ fi
+
+mostlyclean:
+ rm -f *.pox $(GETTEXT_PACKAGE).pot *.old.po cat-id-tbl.tmp
+ rm -f .intltool-merge-cache
+
+clean: mostlyclean
+
+distclean: clean
+ rm -f Makefile Makefile.in POTFILES stamp-it
+ rm -f *.mo *.msg *.cat *.cat.m *.gmo
+
+maintainer-clean: distclean
+ @echo "This command is intended for maintainers to use;"
+ @echo "it deletes files that may require special tools to rebuild."
+ rm -f Makefile.in.in
+
+distdir = ../$(PACKAGE)-$(VERSION)/$(subdir)
+dist distdir: $(DISTFILES)
+ dists="$(DISTFILES)"; \
+ extra_dists="$(EXTRA_DISTFILES)"; \
+ for file in $$extra_dists; do \
+ test -f $(srcdir)/$$file && dists="$$dists $(srcdir)/$$file"; \
+ done; \
+ for file in $$dists; do \
+ test -f $$file || file="$(srcdir)/$$file"; \
+ ln $$file $(distdir) 2> /dev/null \
+ || cp -p $$file $(distdir); \
+ done
+
+update-po: Makefile
+ $(MAKE) $(GETTEXT_PACKAGE).pot
+ tmpdir=`pwd`; \
+ linguas="$(USE_LINGUAS)"; \
+ for lang in $$linguas; do \
+ echo "$$lang:"; \
+ result="`$(MSGMERGE) -o $$tmpdir/$$lang.new.po $$lang`"; \
+ if $$result; then \
+ if cmp $(srcdir)/$$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
+ rm -f $$tmpdir/$$lang.new.po; \
+ else \
+ if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
+ :; \
+ else \
+ echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
+ rm -f $$tmpdir/$$lang.new.po; \
+ exit 1; \
+ fi; \
+ fi; \
+ else \
+ echo "msgmerge for $$lang.gmo failed!"; \
+ rm -f $$tmpdir/$$lang.new.po; \
+ fi; \
+ done
+
+Makefile POTFILES: stamp-it
+ @if test ! -f $@; then \
+ rm -f stamp-it; \
+ $(MAKE) stamp-it; \
+ fi
+
+stamp-it: Makefile.in.in $(top_builddir)/config.status POTFILES.in
+ cd $(top_builddir) \
+ && CONFIG_FILES=$(subdir)/Makefile.in CONFIG_HEADERS= CONFIG_LINKS= \
+ $(SHELL) ./config.status
+
+# Tell versions [3.59,3.63) of GNU make not to export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/po-Engine-MessageBuffer/POTFILES.in b/po-Engine-MessageBuffer/POTFILES.in
new file mode 100644
index 0000000..098b14c
--- /dev/null
+++ b/po-Engine-MessageBuffer/POTFILES.in
@@ -0,0 +1 @@
+src/Engine-MessageBuffer/Main.cs
diff --git a/po-Engine-MessageBuffer/POTFILES.skip b/po-Engine-MessageBuffer/POTFILES.skip
new file mode 100644
index 0000000..cff5120
--- /dev/null
+++ b/po-Engine-MessageBuffer/POTFILES.skip
@@ -0,0 +1,18 @@
+glade/
+src/Common/
+src/Engine/
+src/Engine-Campfire/
+src/Engine-IRC/
+src/Engine-JabbR/
+src/Engine-XMPP/
+src/Engine-Twitter/
+src/Frontend/
+src/Frontend-GNOME-IRC/
+src/Frontend-GNOME-Twitter/
+src/Frontend-GNOME-XMPP/
+src/Frontend-GNOME/
+src/Frontend-STFL/
+src/Frontend-SWF/
+src/Frontend-WPF/
+src/Server/
+lib/
diff --git a/po-Engine-MessageBuffer/de.po b/po-Engine-MessageBuffer/de.po
new file mode 100644
index 0000000..648be78
--- /dev/null
+++ b/po-Engine-MessageBuffer/de.po
@@ -0,0 +1,120 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-03-06 21:30+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL ADDRESS>\n"
+"Language-Team: LANGUAGE <LL li org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../src/Engine-MessageBuffer/Main.cs:49
+msgid "Enable debug output"
+msgstr ""
+
+#: ../src/Engine-MessageBuffer/Main.cs:55
+#: ../src/Engine-MessageBuffer/Main.cs:131
+#: ../src/Engine-MessageBuffer/Main.cs:195
+msgid "Show this help"
+msgstr ""
+
+#: ../src/Engine-MessageBuffer/Main.cs:57
+msgid "Usage: smuxi-message-buffer [options] action action-options"
+msgstr ""
+
+#: ../src/Engine-MessageBuffer/Main.cs:59
+msgid "Actions:"
+msgstr ""
+
+#: ../src/Engine-MessageBuffer/Main.cs:63
+#: ../src/Engine-MessageBuffer/Main.cs:142
+#: ../src/Engine-MessageBuffer/Main.cs:207
+msgid "Options:"
+msgstr ""
+
+#: ../src/Engine-MessageBuffer/Main.cs:90
+#, csharp-format
+msgid "Unknown action: '{0}'"
+msgstr ""
+
+#: ../src/Engine-MessageBuffer/Main.cs:97
+#, csharp-format
+msgid "Command line error: {0}"
+msgstr ""
+
+#: ../src/Engine-MessageBuffer/Main.cs:109
+msgid "Database format (valid values: auto, db4o, sqlite)"
+msgstr ""
+
+#: ../src/Engine-MessageBuffer/Main.cs:124
+#: ../src/Engine-MessageBuffer/Main.cs:188
+#, csharp-format
+msgid "Unknown {0} option: '{1}'"
+msgstr ""
+
+#: ../src/Engine-MessageBuffer/Main.cs:135
+#, csharp-format
+msgid "Usage: smuxi-message-buffer {0} [action-options] db_path"
+msgstr ""
+
+#: ../src/Engine-MessageBuffer/Main.cs:140
+msgid "Database path"
+msgstr ""
+
+#: ../src/Engine-MessageBuffer/Main.cs:151
+msgid "db_path is required"
+msgstr ""
+
+#: ../src/Engine-MessageBuffer/Main.cs:165
+msgid "Source format (valid values: auto, db4o, sqlite)"
+msgstr ""
+
+#: ../src/Engine-MessageBuffer/Main.cs:173
+msgid "Destination format (valid values: auto, db4o, sqlite)"
+msgstr ""
+
+#: ../src/Engine-MessageBuffer/Main.cs:199
+#, csharp-format
+msgid ""
+"Usage: smuxi-message-buffer {0} [action-options] source_db destination_db"
+msgstr ""
+
+#: ../src/Engine-MessageBuffer/Main.cs:204
+msgid "Source file path"
+msgstr ""
+
+#: ../src/Engine-MessageBuffer/Main.cs:205
+msgid "Destination file path or -/empty for stdout"
+msgstr ""
+
+#: ../src/Engine-MessageBuffer/Main.cs:216
+msgid "source_db and destination_db are required"
+msgstr ""
+
+#: ../src/Engine-MessageBuffer/Main.cs:232
+msgid "sourceFile must not be empty."
+msgstr ""
+
+#: ../src/Engine-MessageBuffer/Main.cs:248
+#, csharp-format
+msgid "Destination database {0} must be empty!"
+msgstr ""
+
+#: ../src/Engine-MessageBuffer/Main.cs:298
+#, csharp-format
+msgid "Unknown file format: '{0}'"
+msgstr ""
+
+#: ../src/Engine-MessageBuffer/Main.cs:320
+#, csharp-format
+msgid "Unsupported buffer type: '{0}'"
+msgstr ""
diff --git a/po-Engine-Twitter/POTFILES.skip b/po-Engine-Twitter/POTFILES.skip
index dc04b9e..b99c62b 100644
--- a/po-Engine-Twitter/POTFILES.skip
+++ b/po-Engine-Twitter/POTFILES.skip
@@ -1,6 +1,7 @@
glade/
src/Common/
src/Engine/
+src/Engine-MessageBuffer/
src/Engine-Campfire/
src/Engine-IRC/
src/Engine-JabbR/
diff --git a/po-Engine-XMPP/POTFILES.skip b/po-Engine-XMPP/POTFILES.skip
index a3e120b..0b1f914 100644
--- a/po-Engine-XMPP/POTFILES.skip
+++ b/po-Engine-XMPP/POTFILES.skip
@@ -1,6 +1,7 @@
glade/
src/Common/
src/Engine/
+src/Engine-MessageBuffer/
src/Engine-Campfire/
src/Engine-IRC/
src/Engine-JabbR/
diff --git a/po-Engine/POTFILES.skip b/po-Engine/POTFILES.skip
index 0f8bda6..7d9b8cd 100644
--- a/po-Engine/POTFILES.skip
+++ b/po-Engine/POTFILES.skip
@@ -9,6 +9,7 @@ src/Frontend-STFL/
src/Frontend-SWF/
src/Frontend-WPF/
src/Engine/Config/ServerModel.cs
+src/Engine-MessageBuffer/
src/Engine-Campfire/
src/Engine-IRC/
src/Engine-JabbR/
diff --git a/po-Frontend-GNOME-IRC/POTFILES.skip b/po-Frontend-GNOME-IRC/POTFILES.skip
index 832c75a..7bf2577 100644
--- a/po-Frontend-GNOME-IRC/POTFILES.skip
+++ b/po-Frontend-GNOME-IRC/POTFILES.skip
@@ -1,6 +1,7 @@
glade/
src/Common/
src/Engine/
+src/Engine-MessageBuffer/
src/Engine-Campfire/
src/Engine-IRC/
src/Engine-JabbR/
diff --git a/po-Frontend-GNOME-Twitter/POTFILES.skip b/po-Frontend-GNOME-Twitter/POTFILES.skip
index a6d0dc0..aeccc55 100644
--- a/po-Frontend-GNOME-Twitter/POTFILES.skip
+++ b/po-Frontend-GNOME-Twitter/POTFILES.skip
@@ -1,6 +1,7 @@
glade/
src/Common/
src/Engine/
+src/Engine-MessageBuffer/
src/Engine-Campfire/
src/Engine-IRC/
src/Engine-JabbR/
diff --git a/po-Frontend-GNOME-XMPP/POTFILES.skip b/po-Frontend-GNOME-XMPP/POTFILES.skip
index 920f270..c4db11b 100644
--- a/po-Frontend-GNOME-XMPP/POTFILES.skip
+++ b/po-Frontend-GNOME-XMPP/POTFILES.skip
@@ -1,6 +1,7 @@
glade/
src/Common/
src/Engine/
+src/Engine-MessageBuffer/
src/Engine-Campfire/
src/Engine-IRC/
src/Engine-JabbR/
diff --git a/po-Frontend-GNOME/POTFILES.skip b/po-Frontend-GNOME/POTFILES.skip
index 7740ca3..7a27843 100644
--- a/po-Frontend-GNOME/POTFILES.skip
+++ b/po-Frontend-GNOME/POTFILES.skip
@@ -9,6 +9,7 @@ src/Frontend-STFL/
src/Frontend-SWF/
src/Frontend-WPF/
src/Engine/
+src/Engine-MessageBuffer/
src/Engine-Campfire/
src/Engine-IRC/
src/Engine-JabbR/
diff --git a/po-Frontend/POTFILES.skip b/po-Frontend/POTFILES.skip
index eb4cf60..8f40234 100644
--- a/po-Frontend/POTFILES.skip
+++ b/po-Frontend/POTFILES.skip
@@ -8,6 +8,7 @@ src/Frontend-STFL/
src/Frontend-SWF/
src/Frontend-WPF/
src/Engine/
+src/Engine-MessageBuffer/
src/Engine-Campfire/
src/Engine-IRC/
src/Engine-JabbR/
diff --git a/po-Server/POTFILES.skip b/po-Server/POTFILES.skip
index 7707916..554e7f6 100644
--- a/po-Server/POTFILES.skip
+++ b/po-Server/POTFILES.skip
@@ -1,6 +1,7 @@
glade/
src/Common/
src/Engine/
+src/Engine-MessageBuffer/
src/Engine-Campfire/
src/Engine-IRC/
src/Engine-JabbR/
diff --git a/src/Engine-MessageBuffer/AssemblyInfo.cs b/src/Engine-MessageBuffer/AssemblyInfo.cs
new file mode 100644
index 0000000..96ff696
--- /dev/null
+++ b/src/Engine-MessageBuffer/AssemblyInfo.cs
@@ -0,0 +1,38 @@
+/*
+ * Smuxi - Smart MUltipleXed Irc
+ *
+ * Copyright (c) 2014 Mirco Bauer <meebey meebey net>
+ *
+ * Full GPL License: <http://www.gnu.org/licenses/gpl.txt>
+ *
+ * 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
+ */
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+[assembly: AssemblyTitle("Smuxi - MessageBuffer tool")]
+[assembly: AssemblyCopyright("2014 (C) Mirco Bauer <meebey meebey net>")]
+
+[assembly: AssemblyDelaySign(false)]
+[assembly: AssemblyKeyFile("")]
+
+[assembly: CLSCompliant(true)]
+[assembly: ComVisible(false)]
+
+// let log4net use .exe.config file
+[assembly: log4net.Config.XmlConfigurator]
diff --git a/src/Engine-MessageBuffer/Engine-MessageBuffer.csproj
b/src/Engine-MessageBuffer/Engine-MessageBuffer.csproj
new file mode 100644
index 0000000..24c57ff
--- /dev/null
+++ b/src/Engine-MessageBuffer/Engine-MessageBuffer.csproj
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProductVersion>10.0.0</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{7964E3E4-1E98-4AE0-AF1B-1B940CDF0A99}</ProjectGuid>
+ <OutputType>Exe</OutputType>
+ <RootNamespace>Smuxi-Engine</RootNamespace>
+ <AssemblyName>smuxi-message-buffer</AssemblyName>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>..\..\bin\debug</OutputPath>
+ <DefineConstants>DEBUG;TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
+ <ConsolePause>false</ConsolePause>
+ <PlatformTarget>x86</PlatformTarget>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <Optimize>true</Optimize>
+ <OutputPath>..\..\bin\release</OutputPath>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <Externalconsole>true</Externalconsole>
+ <PlatformTarget>x86</PlatformTarget>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="System" />
+ <Reference Include="log4net">
+ <HintPath>..\..\lib\log4net.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Core" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="Main.cs" />
+ <Compile Include="AssemblyInfo.cs" />
+ <Compile Include="..\AssemblyVersion.cs">
+ <Link>AssemblyVersion.cs</Link>
+ </Compile>
+ </ItemGroup>
+ <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+ <ItemGroup>
+ <ProjectReference Include="..\Engine\Engine.csproj">
+ <Project>{BCD52FCF-B7A8-42FB-AA8D-CF9921FF593E}</Project>
+ <Name>Engine</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\Common\Common.csproj">
+ <Project>{73DEF91D-03FF-41E3-B2E1-3259AF247CA7}</Project>
+ <Name>Common</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\..\lib\ServiceStack.Text\src\ServiceStack.Text\ServiceStack.Text.csproj">
+ <Project>{579B3FDB-CDAD-44E1-8417-885C38E49A0E}</Project>
+ <Name>ServiceStack.Text</Name>
+ </ProjectReference>
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="smuxi-message-buffer.exe.config">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </None>
+ </ItemGroup>
+</Project>
\ No newline at end of file
diff --git a/src/Engine-MessageBuffer/Main.cs b/src/Engine-MessageBuffer/Main.cs
new file mode 100644
index 0000000..4c6aafb
--- /dev/null
+++ b/src/Engine-MessageBuffer/Main.cs
@@ -0,0 +1,353 @@
+// Smuxi - Smart MUltipleXed Irc
+//
+// Copyright (c) 2014 Mirco Bauer <meebey meebey net>
+//
+// Full GPL License: <http://www.gnu.org/licenses/gpl.txt>
+//
+// 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
+using System;
+using System.IO;
+using System.Linq;
+using System.Reflection;
+using NDesk.Options;
+using ServiceStack.Text;
+using Smuxi.Common;
+using Smuxi.Engine.Dto;
+using System.Collections.Generic;
+
+namespace Smuxi.Engine
+{
+ public class MainClass
+ {
+ static readonly log4net.ILog Logger =
log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
+ static readonly string LibraryTextDomain = "smuxi-message-buffer";
+
+ public static void Main(string[] args)
+ {
+ System.Threading.Thread.CurrentThread.Name = "Main";
+
+ // initialize log level
+ log4net.Repository.ILoggerRepository repo = log4net.LogManager.GetRepository();
+ repo.Threshold = log4net.Core.Level.Error;
+
+ InitLocale();
+
+ var debug = false;
+ var parser = new OptionSet() {
+ { "d|debug", _("Enable debug output"),
+ val => {
+ debug = true;
+ }
+ }
+ };
+ parser.Add("h|help", _("Show this help"),
+ val => {
+ Console.WriteLine(_("Usage: smuxi-message-buffer [options] action action-options"));
+ Console.WriteLine();
+ Console.WriteLine(_("Actions:"));
+ Console.WriteLine(" cat");
+ Console.WriteLine(" convert/copy/cp");
+ Console.WriteLine();
+ Console.WriteLine(_("Options:"));
+ parser.WriteOptionDescriptions(Console.Out);
+ Environment.Exit(0);
+ }
+ );
+
+ try {
+ var mainArgs = args.TakeWhile(x => x.StartsWith("-"));
+ parser.Parse(mainArgs);
+ if (debug) {
+ repo.Threshold = log4net.Core.Level.Debug;
+ }
+
+ var action = args.Skip(mainArgs.Count()).First();
+ var actionArgs = args.Skip(mainArgs.Count() + 1);
+ switch (action.ToLower()) {
+ case "cat":
+ CatAction(action, actionArgs);
+ break;
+ case "convert":
+ case "copy":
+ case "cp":
+ CopyAction(action, actionArgs);
+ break;
+ default:
+ throw new OptionException(
+ String.Format(
+ _("Unknown action: '{0}'"),
+ action
+ ),
+ "action"
+ );
+ }
+ } catch (OptionException ex) {
+ Console.Error.WriteLine(_("Command line error: {0}"), ex.Message);
+ Environment.Exit(1);
+ } catch (Exception e) {
+ Logger.Fatal(e);
+ }
+ }
+
+ static void CatAction(string action, IEnumerable<string> args)
+ {
+ var dbFormat = "";
+ var parameters = new List<string>();
+ var parser = new OptionSet() {
+ { "format=", _("Database format (valid values: auto, db4o, sqlite)"),
+ val => {
+ if (val == "auto") {
+ val = "";
+ }
+ dbFormat = val;
+ }
+ },
+ { "<>",
+ val => {
+ if (!val.StartsWith("-")) {
+ parameters.Add(val);
+ return;
+ }
+ throw new OptionException(
+ String.Format(_("Unknown {0} option: '{1}'"),
+ action, val),
+ val
+ );
+ }
+ }
+ };
+ parser.Add("h|help", _("Show this help"),
+ val => {
+ Console.WriteLine(
+ String.Format(
+ _("Usage: smuxi-message-buffer {0} [action-options] db_path"),
+ action
+ )
+ );
+ Console.WriteLine();
+ Console.WriteLine(" db_path " + _("Database path"));
+ Console.WriteLine();
+ Console.WriteLine(_("Options:"));
+ parser.WriteOptionDescriptions(Console.Out);
+ Environment.Exit(0);
+ }
+ );
+
+ parser.Parse(args);
+ if (parameters.Count < 1) {
+ throw new OptionException(
+ _("db_path is required"),
+ action
+ );
+ }
+ var dbPath = parameters[0];
+ Copy(dbPath, dbFormat, null, null);
+ }
+
+ static void CopyAction(string action, IEnumerable<string> args)
+ {
+ var sourceFormat = "";
+ var destinationFormat = "";
+ var parameters = new List<string>();
+ var parser = new OptionSet() {
+ { "source-format=", _("Source format (valid values: auto, db4o, sqlite)"),
+ val => {
+ if (val == "auto") {
+ val = "";
+ }
+ sourceFormat = val;
+ }
+ },
+ { "destination-format=", _("Destination format (valid values: auto, db4o, sqlite)"),
+ val => {
+ if (val == "auto") {
+ val = "";
+ }
+ destinationFormat = val;
+ }
+ },
+ { "<>",
+ val => {
+ if (!val.StartsWith("-")) {
+ parameters.Add(val);
+ return;
+ }
+ throw new OptionException(
+ String.Format(_("Unknown {0} option: '{1}'"),
+ action, val),
+ val
+ );
+ }
+ }
+ };
+ parser.Add("h|help", _("Show this help"),
+ val => {
+ Console.WriteLine(
+ String.Format(
+ _("Usage: smuxi-message-buffer {0} [action-options] source_db destination_db"),
+ action
+ )
+ );
+ Console.WriteLine();
+ Console.WriteLine(" source_db " + _("Source file path"));
+ Console.WriteLine(" destination_db " + _("Destination file path or -/empty for
stdout"));
+ Console.WriteLine();
+ Console.WriteLine(_("Options:"));
+ parser.WriteOptionDescriptions(Console.Out);
+ Environment.Exit(0);
+ }
+ );
+
+ parser.Parse(args);
+ if (parameters.Count < 2) {
+ throw new OptionException(
+ _("source_db and destination_db are required"),
+ action
+ );
+ }
+ var sourceFile = parameters[0];
+ var destinationFile = parameters[1];
+ if (destinationFile == "-") {
+ destinationFile = "";
+ }
+ Copy(sourceFile, sourceFormat, destinationFile, destinationFormat);
+ }
+
+ static void Copy(string sourceFile, string sourceFormat,
+ string destinationFile, string destinationFormat)
+ {
+ if (String.IsNullOrEmpty(sourceFile)) {
+ throw new ArgumentException(_("sourceFile must not be empty."));
+ }
+
+ IMessageBuffer sourceBuffer = null, destinationBuffer = null;
+ try {
+ var sourceBufferType = ParseMessageBufferType(sourceFile, sourceFormat);
+ sourceBuffer = CreateMessageBuffer(sourceFile, sourceBufferType);
+
+ if (!String.IsNullOrEmpty(destinationFile)) {
+ var destinationBufferType = ParseMessageBufferType(destinationFile,
+ destinationFormat);
+ destinationBuffer = CreateMessageBuffer(destinationFile,
+ destinationBufferType);
+ if (destinationBuffer.Count > 0) {
+ throw new InvalidOperationException(
+ String.Format(
+ _("Destination database {0} must be empty!"),
+ destinationFile
+ )
+ );
+ }
+ }
+
+ if (destinationBuffer == null) {
+ // JSON pipe
+ Console.WriteLine("[");
+ var msgCount = sourceBuffer.Count;
+ var i = 0;
+ foreach (var msg in sourceBuffer) {
+ var dto = new MessageDtoModelV1(msg);
+ var json = JsonSerializer.SerializeToString(dto);
+ if (i++ < msgCount - 1) {
+ Console.WriteLine("{0},", json);
+ } else {
+ Console.WriteLine(json);
+ }
+ }
+ if (destinationBuffer == null) {
+ Console.WriteLine("]");
+ }
+ } else {
+ foreach (var msg in sourceBuffer) {
+ destinationBuffer.Add(msg);
+ }
+ destinationBuffer.Flush();
+ }
+ } finally {
+ if (sourceBuffer != null) {
+ sourceBuffer.Dispose();
+ }
+ if (destinationBuffer != null) {
+ destinationBuffer.Dispose();
+ }
+ }
+ }
+
+ static MessageBufferType ParseMessageBufferType(string fileName, string type)
+ {
+ if (String.IsNullOrEmpty(type)) {
+ if (fileName.EndsWith(".sqlite3")) {
+ return MessageBufferType.Sqlite;
+ } else if (fileName.EndsWith(".db4o")) {
+ return MessageBufferType.Db4o;
+ } else {
+ throw new ArgumentException(
+ String.Format(
+ _("Unknown file format: '{0}'"),
+ fileName
+ ),
+ "fileName"
+ );
+ }
+ }
+ return (MessageBufferType) Enum.Parse(typeof(MessageBufferType),
+ fileName, true);
+ }
+
+ static IMessageBuffer CreateMessageBuffer(string fileName,
+ MessageBufferType bufferType)
+ {
+ switch (bufferType) {
+ case MessageBufferType.Db4o:
+ return new Db4oMessageBuffer(fileName);
+ case MessageBufferType.Sqlite:
+ return new SqliteMessageBuffer(fileName);
+ default:
+ throw new ArgumentException(
+ String.Format(
+ _("Unsupported buffer type: '{0}'"),
+ bufferType
+ ),
+ "bufferType"
+ );
+ }
+ }
+
+ static void InitLocale()
+ {
+ string appDir = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
+ string localeDir = Path.Combine(appDir, "locale");
+ if (!Directory.Exists(localeDir)) {
+ localeDir = Path.Combine(Defines.InstallPrefix, "share");
+ localeDir = Path.Combine(localeDir, "locale");
+ }
+
+ LibraryCatalog.Init("smuxi-message-buffer", localeDir);
+ Logger.Debug("Using locale data from: " + localeDir);
+ }
+
+ static string _(string msg)
+ {
+ return LibraryCatalog.GetString(msg, LibraryTextDomain);
+ }
+ }
+
+ public enum MessageBufferType {
+ None,
+ Pipe,
+ Db4o,
+ Sqlite
+ }
+}
diff --git a/src/Engine-MessageBuffer/Makefile.am b/src/Engine-MessageBuffer/Makefile.am
new file mode 100644
index 0000000..0ad570d
--- /dev/null
+++ b/src/Engine-MessageBuffer/Makefile.am
@@ -0,0 +1,35 @@
+TARGET_DIR = $(top_builddir)/bin/$(PROFILE)
+ASSEMBLY_NAME = smuxi-message-buffer
+ASSEMBLY_FILENAME = $(ASSEMBLY_NAME).exe
+ASSEMBLY_TARGET = $(TARGET_DIR)/$(ASSEMBLY_FILENAME)
+
+SOURCES = \
+ $(top_srcdir)/src/AssemblyVersion.cs \
+ AssemblyInfo.cs \
+ Main.cs
+
+REFERENCES = \
+ System \
+ System.Core \
+ Mono.Posix \
+ $(LOG4NET_LIBS)
+
+DLL_REFERENCES = \
+ $(TARGET_DIR)/smuxi-common.dll \
+ $(TARGET_DIR)/smuxi-engine.dll \
+ $(TARGET_DIR)/ServiceStack.Text.dll
+
+SOURCES_BUILD = $(addprefix $(srcdir)/, $(SOURCES))
+
+# automake magic variables
+EXTRA_DIST = $(SOURCES_BUILD)
+CLEANFILES = $(ASSEMBLY_TARGET) $(ASSEMBLY_TARGET).mdb
+
+pkgapp_DATA = $(ASSEMBLY_TARGET) $(ASSEMBLY_TARGET).mdb
+
+include $(top_srcdir)/Makefile.include
+
+all: $(ASSEMBLY_TARGET)
+
+$(ASSEMBLY_TARGET): $(SOURCES) $(DLL_REFERENCES)
+ $(CSC) $(CSC_FLAGS) $(MSG_BUFFER_COMPILER_FLAGS) $(build_references_ref) -target:exe -out:$@
$(SOURCES_BUILD)
diff --git a/src/Engine-MessageBuffer/smuxi-message-buffer.exe.config
b/src/Engine-MessageBuffer/smuxi-message-buffer.exe.config
new file mode 100644
index 0000000..d8a3872
--- /dev/null
+++ b/src/Engine-MessageBuffer/smuxi-message-buffer.exe.config
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<configuration>
+ <configSections>
+ <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
+ </configSections>
+ <log4net>
+ <root>
+ <appender-ref ref="ConsoleAppender" />
+ </root>
+ <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
+ <layout type="log4net.Layout.PatternLayout">
+ <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
+ </layout>
+ </appender>
+ </log4net>
+</configuration>
diff --git a/src/Engine-MessageBuffer/smuxi-message-buffer.in
b/src/Engine-MessageBuffer/smuxi-message-buffer.in
new file mode 100644
index 0000000..2da8b0c
--- /dev/null
+++ b/src/Engine-MessageBuffer/smuxi-message-buffer.in
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+exec mono --debug "@expanded_libdir@/@PACKAGE@/smuxi-message-buffer.exe" "$@"
diff --git a/src/Engine-Twitter/Makefile.am b/src/Engine-Twitter/Makefile.am
index 9398d39..e9dec8e 100644
--- a/src/Engine-Twitter/Makefile.am
+++ b/src/Engine-Twitter/Makefile.am
@@ -22,7 +22,7 @@ SOURCES_BUILD = $(addprefix $(srcdir)/, $(SOURCES))
# automake magic variables
EXTRA_DIST = $(SOURCES_BUILD)
-CLEANFILES = $(ASSEMBLY_TARGET)
+CLEANFILES = $(ASSEMBLY_TARGET) $(ASSEMBLY_TARGET).mdb
pkgapp_DATA = $(ASSEMBLY_TARGET)
diff --git a/src/Engine/MessageBuffers/SqliteMessageBuffer.cs
b/src/Engine/MessageBuffers/SqliteMessageBuffer.cs
index bb3f89e..2cfe2aa 100644
--- a/src/Engine/MessageBuffers/SqliteMessageBuffer.cs
+++ b/src/Engine/MessageBuffers/SqliteMessageBuffer.cs
@@ -59,6 +59,21 @@ namespace Smuxi.Engine
base(sessionUsername, protocol, networkId, chatId)
{
DBPath = GetBufferPath() + ".sqlite3";
+ Init();
+ }
+
+ public SqliteMessageBuffer(string dbPath)
+ {
+ if (dbPath == null) {
+ throw new ArgumentNullException("dbPath");
+ }
+
+ DBPath = dbPath;
+ Init();
+ }
+
+ void Init()
+ {
Connection = new SqliteConnection(
"Data Source=" + DBPath + ";" +
// enable Write-Ahead-Log (WAL)
diff --git a/src/Makefile.am b/src/Makefile.am
index 5d2e0ab..44f70e8 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -63,6 +63,7 @@ SUBDIRS = Common \
$(ENGINE_CAMPFIRE) \
$(ENGINE_JABBR) \
$(ENGINE_XMPP) \
+ Engine-MessageBuffer \
Server \
Frontend \
$(FRONTEND_GNOME) \
diff --git a/src/smuxi.sln b/src/smuxi.sln
index 32e352d..f2a5b29 100644
--- a/src/smuxi.sln
+++ b/src/smuxi.sln
@@ -67,6 +67,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StarkSoftProxy", "..\lib\St
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Frontend-GNOME-Twitter",
"Frontend-GNOME-Twitter\Frontend-GNOME-Twitter.csproj", "{298A5895-D8C8-45EB-AC57-1B6AAD05D6AD}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Engine-MessageBuffer",
"Engine-MessageBuffer\Engine-MessageBuffer.csproj", "{7964E3E4-1E98-4AE0-AF1B-1B940CDF0A99}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Release|Any CPU = Release|Any CPU
@@ -219,6 +221,14 @@ Global
{73DEF91D-03FF-41E3-B2E1-3259AF247CA7}.Release|Any CPU.Build.0 = Release|Any CPU
{73DEF91D-03FF-41E3-B2E1-3259AF247CA7}.Release-Win32|x86.ActiveCfg = Release|Any CPU
{73DEF91D-03FF-41E3-B2E1-3259AF247CA7}.Release-Win32|x86.Build.0 = Release|Any CPU
+ {7964E3E4-1E98-4AE0-AF1B-1B940CDF0A99}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {7964E3E4-1E98-4AE0-AF1B-1B940CDF0A99}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {7964E3E4-1E98-4AE0-AF1B-1B940CDF0A99}.Debug-Win32|x86.ActiveCfg = Debug|Any CPU
+ {7964E3E4-1E98-4AE0-AF1B-1B940CDF0A99}.Debug-Win32|x86.Build.0 = Debug|Any CPU
+ {7964E3E4-1E98-4AE0-AF1B-1B940CDF0A99}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {7964E3E4-1E98-4AE0-AF1B-1B940CDF0A99}.Release|Any CPU.Build.0 = Release|Any CPU
+ {7964E3E4-1E98-4AE0-AF1B-1B940CDF0A99}.Release-Win32|x86.ActiveCfg = Release|Any CPU
+ {7964E3E4-1E98-4AE0-AF1B-1B940CDF0A99}.Release-Win32|x86.Build.0 = Release|Any CPU
{7B1E3AB2-FB8C-4439-A2B4-2129EDBD79F8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7B1E3AB2-FB8C-4439-A2B4-2129EDBD79F8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7B1E3AB2-FB8C-4439-A2B4-2129EDBD79F8}.Debug-Win32|x86.ActiveCfg = Debug|Any CPU
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]