Initial commit
This commit is contained in:
commit
b060ac5a76
79
.gitignore
vendored
Normal file
79
.gitignore
vendored
Normal file
@ -0,0 +1,79 @@
|
||||
*.swp
|
||||
*~
|
||||
|
||||
/INSTALL
|
||||
aclocal.m4
|
||||
autom4te.cache
|
||||
/build-aux
|
||||
config.guess
|
||||
config.cache
|
||||
config.h
|
||||
config.h.in
|
||||
config.log
|
||||
config.status
|
||||
config.sub
|
||||
configure
|
||||
install-sh
|
||||
libtool
|
||||
ltmain.sh
|
||||
missing
|
||||
stamp-h1
|
||||
depcomp
|
||||
compile
|
||||
/test-driver
|
||||
|
||||
m4/libtool.m4
|
||||
m4/ltoptions.m4
|
||||
m4/ltsugar.m4
|
||||
m4/ltversion.m4
|
||||
m4/lt~obsolete.m4
|
||||
|
||||
Makefile
|
||||
Makefile.in
|
||||
|
||||
.deps
|
||||
.libs
|
||||
|
||||
*.o
|
||||
*.lo
|
||||
*.la
|
||||
*.pyc
|
||||
|
||||
*-glue.[ch]
|
||||
*-marshal.[ch]
|
||||
*-enumtypes.[ch]
|
||||
*-bindings.[ch]
|
||||
*-gen.h
|
||||
|
||||
data/org.freedesktop.Telepathy.ConnectionManager.matrix.service
|
||||
|
||||
extensions/_gen
|
||||
extensions/extensions.html
|
||||
|
||||
src/telepathy-matrix
|
||||
src/telepathy-matrix.8
|
||||
|
||||
core
|
||||
cscope.out
|
||||
tags
|
||||
|
||||
tests/test-ctcp-kill-blingbling
|
||||
tests/test-ctcp-tokenize
|
||||
tests/test-text-encode-and-split
|
||||
tests/test-tokenize-leading-space
|
||||
tests/test-tokenize-leading-space.c
|
||||
tests/*.log
|
||||
tests/*.trs
|
||||
|
||||
tests/twisted/config.py
|
||||
tests/twisted/matrix-twisted-tests.list
|
||||
tests/twisted/tools/exec-with-log.sh
|
||||
tests/twisted/tools/matrix-testing.log
|
||||
tests/twisted/tools/org.freedesktop.Telepathy.ConnectionManager.matrix.service
|
||||
tests/twisted/run-test.sh
|
||||
tests/twisted/test-suite.log
|
||||
tests/twisted/tools/tmp-session-bus.conf
|
||||
|
||||
tests/twisted/with-session-bus*.dbus-monitor-logs
|
||||
tests/twisted/with-session-bus*.address
|
||||
tests/twisted/with-session-bus*.pid
|
165
COPYING
Normal file
165
COPYING
Normal file
@ -0,0 +1,165 @@
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
|
||||
This version of the GNU Lesser General Public License incorporates
|
||||
the terms and conditions of version 3 of the GNU General Public
|
||||
License, supplemented by the additional permissions listed below.
|
||||
|
||||
0. Additional Definitions.
|
||||
|
||||
As used herein, "this License" refers to version 3 of the GNU Lesser
|
||||
General Public License, and the "GNU GPL" refers to version 3 of the GNU
|
||||
General Public License.
|
||||
|
||||
"The Library" refers to a covered work governed by this License,
|
||||
other than an Application or a Combined Work as defined below.
|
||||
|
||||
An "Application" is any work that makes use of an interface provided
|
||||
by the Library, but which is not otherwise based on the Library.
|
||||
Defining a subclass of a class defined by the Library is deemed a mode
|
||||
of using an interface provided by the Library.
|
||||
|
||||
A "Combined Work" is a work produced by combining or linking an
|
||||
Application with the Library. The particular version of the Library
|
||||
with which the Combined Work was made is also called the "Linked
|
||||
Version".
|
||||
|
||||
The "Minimal Corresponding Source" for a Combined Work means the
|
||||
Corresponding Source for the Combined Work, excluding any source code
|
||||
for portions of the Combined Work that, considered in isolation, are
|
||||
based on the Application, and not on the Linked Version.
|
||||
|
||||
The "Corresponding Application Code" for a Combined Work means the
|
||||
object code and/or source code for the Application, including any data
|
||||
and utility programs needed for reproducing the Combined Work from the
|
||||
Application, but excluding the System Libraries of the Combined Work.
|
||||
|
||||
1. Exception to Section 3 of the GNU GPL.
|
||||
|
||||
You may convey a covered work under sections 3 and 4 of this License
|
||||
without being bound by section 3 of the GNU GPL.
|
||||
|
||||
2. Conveying Modified Versions.
|
||||
|
||||
If you modify a copy of the Library, and, in your modifications, a
|
||||
facility refers to a function or data to be supplied by an Application
|
||||
that uses the facility (other than as an argument passed when the
|
||||
facility is invoked), then you may convey a copy of the modified
|
||||
version:
|
||||
|
||||
a) under this License, provided that you make a good faith effort to
|
||||
ensure that, in the event an Application does not supply the
|
||||
function or data, the facility still operates, and performs
|
||||
whatever part of its purpose remains meaningful, or
|
||||
|
||||
b) under the GNU GPL, with none of the additional permissions of
|
||||
this License applicable to that copy.
|
||||
|
||||
3. Object Code Incorporating Material from Library Header Files.
|
||||
|
||||
The object code form of an Application may incorporate material from
|
||||
a header file that is part of the Library. You may convey such object
|
||||
code under terms of your choice, provided that, if the incorporated
|
||||
material is not limited to numerical parameters, data structure
|
||||
layouts and accessors, or small macros, inline functions and templates
|
||||
(ten or fewer lines in length), you do both of the following:
|
||||
|
||||
a) Give prominent notice with each copy of the object code that the
|
||||
Library is used in it and that the Library and its use are
|
||||
covered by this License.
|
||||
|
||||
b) Accompany the object code with a copy of the GNU GPL and this license
|
||||
document.
|
||||
|
||||
4. Combined Works.
|
||||
|
||||
You may convey a Combined Work under terms of your choice that,
|
||||
taken together, effectively do not restrict modification of the
|
||||
portions of the Library contained in the Combined Work and reverse
|
||||
engineering for debugging such modifications, if you also do each of
|
||||
the following:
|
||||
|
||||
a) Give prominent notice with each copy of the Combined Work that
|
||||
the Library is used in it and that the Library and its use are
|
||||
covered by this License.
|
||||
|
||||
b) Accompany the Combined Work with a copy of the GNU GPL and this license
|
||||
document.
|
||||
|
||||
c) For a Combined Work that displays copyright notices during
|
||||
execution, include the copyright notice for the Library among
|
||||
these notices, as well as a reference directing the user to the
|
||||
copies of the GNU GPL and this license document.
|
||||
|
||||
d) Do one of the following:
|
||||
|
||||
0) Convey the Minimal Corresponding Source under the terms of this
|
||||
License, and the Corresponding Application Code in a form
|
||||
suitable for, and under terms that permit, the user to
|
||||
recombine or relink the Application with a modified version of
|
||||
the Linked Version to produce a modified Combined Work, in the
|
||||
manner specified by section 6 of the GNU GPL for conveying
|
||||
Corresponding Source.
|
||||
|
||||
1) Use a suitable shared library mechanism for linking with the
|
||||
Library. A suitable mechanism is one that (a) uses at run time
|
||||
a copy of the Library already present on the user's computer
|
||||
system, and (b) will operate properly with a modified version
|
||||
of the Library that is interface-compatible with the Linked
|
||||
Version.
|
||||
|
||||
e) Provide Installation Information, but only if you would otherwise
|
||||
be required to provide such information under section 6 of the
|
||||
GNU GPL, and only to the extent that such information is
|
||||
necessary to install and execute a modified version of the
|
||||
Combined Work produced by recombining or relinking the
|
||||
Application with a modified version of the Linked Version. (If
|
||||
you use option 4d0, the Installation Information must accompany
|
||||
the Minimal Corresponding Source and Corresponding Application
|
||||
Code. If you use option 4d1, you must provide the Installation
|
||||
Information in the manner specified by section 6 of the GNU GPL
|
||||
for conveying Corresponding Source.)
|
||||
|
||||
5. Combined Libraries.
|
||||
|
||||
You may place library facilities that are a work based on the
|
||||
Library side by side in a single library together with other library
|
||||
facilities that are not Applications and are not covered by this
|
||||
License, and convey such a combined library under terms of your
|
||||
choice, if you do both of the following:
|
||||
|
||||
a) Accompany the combined library with a copy of the same work based
|
||||
on the Library, uncombined with any other library facilities,
|
||||
conveyed under the terms of this License.
|
||||
|
||||
b) Give prominent notice with the combined library that part of it
|
||||
is a work based on the Library, and explaining where to find the
|
||||
accompanying uncombined form of the same work.
|
||||
|
||||
6. Revised Versions of the GNU Lesser General Public License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions
|
||||
of the GNU Lesser General Public License from time to time. Such new
|
||||
versions will be similar in spirit to the present version, but may
|
||||
differ in detail to address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the
|
||||
Library as you received it specifies that a certain numbered version
|
||||
of the GNU Lesser General Public License "or any later version"
|
||||
applies to it, you have the option of following the terms and
|
||||
conditions either of that published version or of any later version
|
||||
published by the Free Software Foundation. If the Library as you
|
||||
received it does not specify a version number of the GNU Lesser
|
||||
General Public License, you may choose any version of the GNU Lesser
|
||||
General Public License ever published by the Free Software Foundation.
|
||||
|
||||
If the Library as you received it specifies that a proxy can decide
|
||||
whether future versions of the GNU Lesser General Public License shall
|
||||
apply, that proxy's public statement of acceptance of any version is
|
||||
permanent authorization for you to choose that version for the
|
||||
Library.
|
11
Makefile.am
Normal file
11
Makefile.am
Normal file
@ -0,0 +1,11 @@
|
||||
ACLOCAL_AMFLAGS = -I m4
|
||||
|
||||
#SUBDIRS = tools extensions src data m4 tests
|
||||
SUBDIRS = src
|
||||
|
||||
#check-twisted : all
|
||||
# $(MAKE) -C tests/twisted check-twisted
|
||||
|
||||
#check-all: check check-twisted
|
||||
|
||||
include tools/telepathy.am
|
9
README.md
Normal file
9
README.md
Normal file
@ -0,0 +1,9 @@
|
||||
# Telepathy connection manager for Matrix.org
|
||||
|
||||
Telepathy Matrix implements the
|
||||
[Telepathy](http://telepathy.freedesktop.org/wiki/)
|
||||
[D-Bus](http://www.freedesktop.org/wiki/Software/dbus/) specification
|
||||
for the [Matrix.org](http://matrix.org/) SDK, allowing Telepathy
|
||||
clients like
|
||||
[Empathy](https://wiki.gnome.org/action/show/Apps/Empathy) to connect
|
||||
to Matrix.org home servers.
|
24
autogen.sh
Executable file
24
autogen.sh
Executable file
@ -0,0 +1,24 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
autoreconf -i -Wno-portability
|
||||
|
||||
# Honor NOCONFIGURE for compatibility with gnome-autogen.sh
|
||||
if test x"$NOCONFIGURE" = x; then
|
||||
run_configure=true
|
||||
for arg in $*; do
|
||||
case $arg in
|
||||
--no-configure)
|
||||
run_configure=false
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
done
|
||||
else
|
||||
run_configure=false
|
||||
fi
|
||||
|
||||
if test $run_configure = true; then
|
||||
./configure "$@"
|
||||
fi
|
142
configure.ac
Normal file
142
configure.ac
Normal file
@ -0,0 +1,142 @@
|
||||
AC_PREREQ([2.60])
|
||||
|
||||
# Making releases:
|
||||
# set the new version number:
|
||||
# odd minor -> development series
|
||||
# even minor -> stable series
|
||||
# increment micro for each release within a series
|
||||
# set nano_version to 0
|
||||
# make the release, tag it
|
||||
# set nano_version to 1
|
||||
|
||||
m4_define([matrix_major_version], [0])
|
||||
m4_define([matrix_minor_version], [0])
|
||||
m4_define([matrix_micro_version], [0])
|
||||
m4_define([matrix_nano_version], [1])
|
||||
|
||||
m4_define([matrix_base_version],
|
||||
[matrix_major_version.matrix_minor_version.matrix_micro_version])
|
||||
m4_define([matrix_version],
|
||||
[m4_if(matrix_nano_version, 0,
|
||||
[matrix_base_version],
|
||||
[matrix_base_version].[matrix_nano_version])])
|
||||
|
||||
AC_INIT([telepathy-matrix], [matrix_version])
|
||||
|
||||
AC_CONFIG_MACRO_DIR([m4])
|
||||
AC_CONFIG_AUX_DIR([build-aux])
|
||||
|
||||
# Enable silent build rules by default, requires at least
|
||||
# Automake-1.11. Disable by either passing --disable-silent-rules to
|
||||
# configure or passing V=1 to make
|
||||
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
|
||||
|
||||
AM_INIT_AUTOMAKE([1.9 -Wno-portability subdir-objects])
|
||||
|
||||
AM_PROG_LIBTOOL
|
||||
AM_CONFIG_HEADER(config.h)
|
||||
AC_PROG_MKDIR_P
|
||||
|
||||
dnl check for tools
|
||||
AC_PROG_CC
|
||||
AC_PROG_CC_STDC
|
||||
AM_PROG_AS
|
||||
|
||||
AS_IF([test matrix_nano_version = 0],
|
||||
[ # version x.y.z - "official release",
|
||||
# disable extra checks by default
|
||||
AC_ARG_ENABLE([fatal-warnings],
|
||||
[AC_HELP_STRING([--enable-fatal-warnings],
|
||||
[make various warnings fatal])],
|
||||
[],
|
||||
[enable_fatal_warnings=no])
|
||||
],
|
||||
[ # version x.y.z.1 - development snapshot,
|
||||
# enable extra checks by default
|
||||
AC_ARG_ENABLE([fatal-warnings],
|
||||
[AC_HELP_STRING([--disable-fatal-warnings],
|
||||
[make various warnings non-fatal])],
|
||||
[],
|
||||
[enable_fatal_warnings=yes])
|
||||
])
|
||||
|
||||
TP_COMPILER_WARNINGS([ERROR_CFLAGS], [test "x$enable_fatal_warnings" = xyes],
|
||||
[all \
|
||||
extra \
|
||||
declaration-after-statement \
|
||||
shadow \
|
||||
missing-prototypes \
|
||||
nested-externs \
|
||||
pointer-arith \
|
||||
sign-compare \
|
||||
strict-prototypes \
|
||||
format-security \
|
||||
init-self],
|
||||
[missing-field-initializers \
|
||||
unused-parameter])
|
||||
AC_SUBST([ERROR_CFLAGS])
|
||||
|
||||
# these aren't really error flags but they serve a similar purpose for us -
|
||||
# making the toolchain stricter
|
||||
AS_IF([test "x$enable_fatal_warnings" = xyes],
|
||||
[TP_ADD_LINKER_FLAG([ERROR_LDFLAGS], [-Wl,--no-copy-dt-needed-entries])])
|
||||
|
||||
AC_HEADER_STDC([])
|
||||
AC_C_INLINE
|
||||
|
||||
AC_DEFINE(GLIB_VERSION_MIN_REQUIRED, GLIB_VERSION_2_28, [Ignore post 2.28 deprecations])
|
||||
AC_DEFINE(GLIB_VERSION_MAX_ALLOWED, GLIB_VERSION_2_32, [Prevent post 2.32 APIs])
|
||||
|
||||
PKG_CHECK_MODULES([GLIB],
|
||||
[glib-2.0 >= 2.32.0, gobject-2.0 >= 2.32.0, gio-2.0 >= 2.32.0 ])
|
||||
|
||||
PKG_CHECK_MODULES([DBUS], [dbus-1 >= 0.51, dbus-glib-1 >= 0.51])
|
||||
|
||||
AC_DEFINE([TP_SEAL_ENABLE], [], [Prevent to use sealed variables])
|
||||
AC_DEFINE([TP_DISABLE_SINGLE_INCLUDE], [], [Disable single header include])
|
||||
AC_DEFINE(TP_VERSION_MIN_REQUIRED, TP_VERSION_0_22, [Ignore post 0.22 deprecations])
|
||||
AC_DEFINE(TP_VERSION_MAX_ALLOWED, TP_VERSION_0_22, [Prevent post 0.22 APIs])
|
||||
PKG_CHECK_MODULES([TELEPATHY], [telepathy-glib >= 0.21])
|
||||
|
||||
dnl Check for code generation tools
|
||||
XSLTPROC=
|
||||
AC_CHECK_PROGS([XSLTPROC], [xsltproc])
|
||||
AS_IF([test -z "$XSLTPROC"],
|
||||
[AC_MSG_ERROR([xsltproc (from the libxslt source package) is required])])
|
||||
|
||||
AM_PATH_PYTHON([2.3])
|
||||
|
||||
dnl check for a version of python that can run the twisted tests
|
||||
AC_MSG_CHECKING([for Python with Twisted and IRC protocol support])
|
||||
for TEST_PYTHON in python2.5 python2.6 python; do
|
||||
AS_IF([$TEST_PYTHON -c "from sys import version_info; import dbus, dbus.mainloop.glib; raise SystemExit(version_info < (2, 5, 0, 'final', 0))" >/dev/null 2>&1],
|
||||
[
|
||||
AS_IF([$TEST_PYTHON -c "import twisted.words.protocols.irc, twisted.internet.reactor" >/dev/null 2>&1],
|
||||
[
|
||||
AM_CONDITIONAL([WANT_TWISTED_TESTS], [true])
|
||||
break
|
||||
],
|
||||
[TEST_PYTHON=no])
|
||||
])
|
||||
done
|
||||
AC_MSG_RESULT([$TEST_PYTHON])
|
||||
AC_SUBST(TEST_PYTHON)
|
||||
AM_CONDITIONAL([WANT_TWISTED_TESTS], test xno != x$TEST_PYTHON)
|
||||
|
||||
|
||||
AS_AC_EXPAND(DATADIR, $datadir)
|
||||
DBUS_SERVICES_DIR="$DATADIR/dbus-1/services"
|
||||
AC_SUBST(DBUS_SERVICES_DIR)
|
||||
AC_DEFINE_UNQUOTED(DBUS_SERVICES_DIR, "$DBUS_SERVICES_DIR", [DBus services directory])
|
||||
|
||||
AC_CHECK_FUNCS(strnlen)
|
||||
|
||||
AC_OUTPUT( Makefile \
|
||||
data/Makefile \
|
||||
m4/Makefile \
|
||||
src/Makefile \
|
||||
dnl tests/Makefile \
|
||||
dnl tests/twisted/Makefile \
|
||||
dnl tests/twisted/tools/Makefile \
|
||||
tools/Makefile \
|
||||
)
|
19
data/Makefile.am
Normal file
19
data/Makefile.am
Normal file
@ -0,0 +1,19 @@
|
||||
# Telepathy manager file
|
||||
managerdir = $(datadir)/telepathy/managers
|
||||
manager_DATA = matrix.manager
|
||||
|
||||
# Dbus service file
|
||||
BUILT_FILES = $(service_in_files:.service.in=.service)
|
||||
|
||||
servicedir = $(DBUS_SERVICES_DIR)
|
||||
service_in_files = org.freedesktop.Telepathy.ConnectionManager.matrix.service.in
|
||||
service_DATA = $(BUILT_FILES)
|
||||
CLEANFILES = $(BUILT_FILES)
|
||||
|
||||
# Rule to make the service file with libexecdir expanded
|
||||
$(service_DATA): $(service_in_files) Makefile
|
||||
@sed -e "s|\@libexecdir\@|$(libexecdir)|" $< > $@
|
||||
|
||||
EXTRA_DIST= \
|
||||
${service_in_files} \
|
||||
${manager_DATA}
|
22
data/matrix.manager
Normal file
22
data/matrix.manager
Normal file
@ -0,0 +1,22 @@
|
||||
[ConnectionManager]
|
||||
Name = matrix
|
||||
BusName = org.freedesktop.Telepathy.ConnectionManager.matrix
|
||||
ObjectPath = /org/freedesktop/Telepathy/ConnectionManager/matrix
|
||||
|
||||
[Protocol matrix]
|
||||
param-account = s required
|
||||
param-server = s required
|
||||
param-fullname = s
|
||||
param-username = s
|
||||
param-port = q
|
||||
param-password = s secret
|
||||
param-charset = s
|
||||
param-keepalive-interval = u
|
||||
param-quit-message = s
|
||||
param-use-ssl = b
|
||||
param-password-prompt = b
|
||||
default-port = 8448
|
||||
default-charset = UTF-8
|
||||
default-keepalive-interval = 30
|
||||
default-use-ssl = true
|
||||
default-password-prompt = true
|
@ -0,0 +1,3 @@
|
||||
[D-BUS Service]
|
||||
Name=org.freedesktop.Telepathy.ConnectionManager.matrix
|
||||
Exec=@libexecdir@/telepathy-matrix
|
4
m4/Makefile.am
Normal file
4
m4/Makefile.am
Normal file
@ -0,0 +1,4 @@
|
||||
EXTRA_DIST = \
|
||||
as-compiler-flag.m4 \
|
||||
as-version.m4 \
|
||||
as-ac-expand.m4
|
40
m4/as-ac-expand.m4
Normal file
40
m4/as-ac-expand.m4
Normal file
@ -0,0 +1,40 @@
|
||||
dnl AS_AC_EXPAND(VAR, CONFIGURE_VAR)
|
||||
dnl
|
||||
dnl example
|
||||
dnl AS_AC_EXPAND(SYSCONFDIR, $sysconfdir)
|
||||
dnl will set SYSCONFDIR to /usr/local/etc if prefix=/usr/local
|
||||
|
||||
AC_DEFUN([AS_AC_EXPAND],
|
||||
[
|
||||
EXP_VAR=[$1]
|
||||
FROM_VAR=[$2]
|
||||
|
||||
dnl first expand prefix and exec_prefix if necessary
|
||||
prefix_save=$prefix
|
||||
exec_prefix_save=$exec_prefix
|
||||
|
||||
dnl if no prefix given, then use /usr/local, the default prefix
|
||||
if test "x$prefix" = "xNONE"; then
|
||||
prefix=$ac_default_prefix
|
||||
fi
|
||||
dnl if no exec_prefix given, then use prefix
|
||||
if test "x$exec_prefix" = "xNONE"; then
|
||||
exec_prefix=$prefix
|
||||
fi
|
||||
|
||||
full_var="$FROM_VAR"
|
||||
dnl loop until it doesn't change anymore
|
||||
while true; do
|
||||
new_full_var="`eval echo $full_var`"
|
||||
if test "x$new_full_var"="x$full_var"; then break; fi
|
||||
full_var=$new_full_var
|
||||
done
|
||||
|
||||
dnl clean up
|
||||
full_var=$new_full_var
|
||||
AC_SUBST([$1], "$full_var")
|
||||
|
||||
dnl restore prefix and exec_prefix
|
||||
prefix=$prefix_save
|
||||
exec_prefix=$exec_prefix_save
|
||||
])
|
33
m4/as-compiler-flag.m4
Normal file
33
m4/as-compiler-flag.m4
Normal file
@ -0,0 +1,33 @@
|
||||
dnl as-compiler-flag.m4 0.1.0
|
||||
|
||||
dnl autostars m4 macro for detection of compiler flags
|
||||
|
||||
dnl David Schleef <ds@schleef.org>
|
||||
|
||||
dnl $Id: as-compiler-flag.m4,v 1.1 2005/06/18 18:02:46 burgerman Exp $
|
||||
|
||||
dnl AS_COMPILER_FLAG(CFLAGS, ACTION-IF-ACCEPTED, [ACTION-IF-NOT-ACCEPTED])
|
||||
dnl Tries to compile with the given CFLAGS.
|
||||
dnl Runs ACTION-IF-ACCEPTED if the compiler can compile with the flags,
|
||||
dnl and ACTION-IF-NOT-ACCEPTED otherwise.
|
||||
|
||||
AC_DEFUN([AS_COMPILER_FLAG],
|
||||
[
|
||||
AC_MSG_CHECKING([to see if compiler understands $1])
|
||||
|
||||
save_CFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS $1"
|
||||
|
||||
AC_TRY_COMPILE([ ], [], [flag_ok=yes], [flag_ok=no])
|
||||
CFLAGS="$save_CFLAGS"
|
||||
|
||||
if test "X$flag_ok" = Xyes ; then
|
||||
$2
|
||||
true
|
||||
else
|
||||
$3
|
||||
true
|
||||
fi
|
||||
AC_MSG_RESULT([$flag_ok])
|
||||
])
|
||||
|
66
m4/as-version.m4
Normal file
66
m4/as-version.m4
Normal file
@ -0,0 +1,66 @@
|
||||
dnl as-version.m4 0.1.0
|
||||
|
||||
dnl autostars m4 macro for versioning
|
||||
|
||||
dnl Thomas Vander Stichele <thomas at apestaart dot org>
|
||||
|
||||
dnl $Id: as-version.m4,v 1.1 2005/06/18 18:02:46 burgerman Exp $
|
||||
|
||||
dnl AS_VERSION(PACKAGE, PREFIX, MAJOR, MINOR, MICRO, NANO,
|
||||
dnl ACTION-IF-NO-NANO, [ACTION-IF-NANO])
|
||||
|
||||
dnl example
|
||||
dnl AS_VERSION(gstreamer, GST_VERSION, 0, 3, 2,)
|
||||
dnl for a 0.3.2 release version
|
||||
|
||||
dnl this macro
|
||||
dnl - defines [$PREFIX]_MAJOR, MINOR and MICRO
|
||||
dnl - if NANO is empty, then we're in release mode, else in cvs/dev mode
|
||||
dnl - defines [$PREFIX], VERSION, and [$PREFIX]_RELEASE
|
||||
dnl - executes the relevant action
|
||||
dnl - AC_SUBST's PACKAGE, VERSION, [$PREFIX] and [$PREFIX]_RELEASE
|
||||
dnl as well as the little ones
|
||||
dnl - doesn't call AM_INIT_AUTOMAKE anymore because it prevents
|
||||
dnl maintainer mode from running ok
|
||||
dnl
|
||||
dnl don't forget to put #undef [$2] and [$2]_RELEASE in acconfig.h
|
||||
dnl if you use acconfig.h
|
||||
|
||||
AC_DEFUN([AS_VERSION],
|
||||
[
|
||||
PACKAGE=[$1]
|
||||
[$2]_MAJOR=[$3]
|
||||
[$2]_MINOR=[$4]
|
||||
[$2]_MICRO=[$5]
|
||||
NANO=[$6]
|
||||
[$2]_NANO=$NANO
|
||||
if test "x$NANO" = "x" || test "x$NANO" = "x0";
|
||||
then
|
||||
AC_MSG_NOTICE(configuring [$1] for release)
|
||||
VERSION=[$3].[$4].[$5]
|
||||
[$2]_RELEASE=1
|
||||
dnl execute action
|
||||
ifelse([$7], , :, [$7])
|
||||
else
|
||||
AC_MSG_NOTICE(configuring [$1] for development with nano $NANO)
|
||||
VERSION=[$3].[$4].[$5].$NANO
|
||||
[$2]_RELEASE=0.`date +%Y%m%d.%H%M%S`
|
||||
dnl execute action
|
||||
ifelse([$8], , :, [$8])
|
||||
fi
|
||||
|
||||
[$2]=$VERSION
|
||||
AC_DEFINE_UNQUOTED([$2], "$[$2]", [Define the version])
|
||||
AC_SUBST([$2])
|
||||
AC_DEFINE_UNQUOTED([$2]_RELEASE, "$[$2]_RELEASE", [Define the release version])
|
||||
AC_SUBST([$2]_RELEASE)
|
||||
|
||||
AC_SUBST([$2]_MAJOR)
|
||||
AC_SUBST([$2]_MINOR)
|
||||
AC_SUBST([$2]_MICRO)
|
||||
AC_SUBST([$2]_NANO)
|
||||
AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Define the package name])
|
||||
AC_SUBST(PACKAGE)
|
||||
AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Define the version])
|
||||
AC_SUBST(VERSION)
|
||||
])
|
43
m4/tp-compiler-flag.m4
Normal file
43
m4/tp-compiler-flag.m4
Normal file
@ -0,0 +1,43 @@
|
||||
dnl A version of AS_COMPILER_FLAG that supports both C and C++.
|
||||
dnl Based on:
|
||||
|
||||
dnl as-compiler-flag.m4 0.1.0
|
||||
dnl autostars m4 macro for detection of compiler flags
|
||||
dnl David Schleef <ds@schleef.org>
|
||||
dnl $Id: as-compiler-flag.m4,v 1.1 2005/06/18 18:02:46 burgerman Exp $
|
||||
|
||||
dnl TP_COMPILER_FLAG(CFLAGS, ACTION-IF-ACCEPTED, [ACTION-IF-NOT-ACCEPTED])
|
||||
dnl Tries to compile with the given CFLAGS and CXXFLAGS.
|
||||
dnl
|
||||
dnl Runs ACTION-IF-ACCEPTED if the compiler for the currently selected
|
||||
dnl AC_LANG can compile with the flags, and ACTION-IF-NOT-ACCEPTED otherwise.
|
||||
|
||||
AC_DEFUN([TP_COMPILER_FLAG],
|
||||
[
|
||||
AC_MSG_CHECKING([to see if compiler understands $1])
|
||||
|
||||
save_CFLAGS="$CFLAGS"
|
||||
save_CXXFLAGS="$CXXFLAGS"
|
||||
CFLAGS="$CFLAGS $1"
|
||||
CXXFLAGS="$CXXFLAGS $1"
|
||||
|
||||
AC_TRY_COMPILE([ ], [], [flag_ok=yes], [flag_ok=no])
|
||||
CFLAGS="$save_CFLAGS"
|
||||
CXXFLAGS="$save_CXXFLAGS"
|
||||
|
||||
if test "X$flag_ok" = Xyes ; then
|
||||
$2
|
||||
true
|
||||
else
|
||||
$3
|
||||
true
|
||||
fi
|
||||
AC_MSG_RESULT([$flag_ok])
|
||||
])
|
||||
|
||||
dnl TP_ADD_COMPILER_FLAG(VARIABLE, CFLAGS)
|
||||
dnl Append CFLAGS to VARIABLE if the compiler supports them.
|
||||
AC_DEFUN([TP_ADD_COMPILER_FLAG],
|
||||
[
|
||||
TP_COMPILER_FLAG([$2], [$1="[$]$1 $2"])
|
||||
])
|
49
m4/tp-compiler-warnings.m4
Normal file
49
m4/tp-compiler-warnings.m4
Normal file
@ -0,0 +1,49 @@
|
||||
dnl TP_COMPILER_WARNINGS(VARIABLE, WERROR_BY_DEFAULT, DESIRABLE, UNDESIRABLE)
|
||||
dnl $1 (VARIABLE): the variable to put flags into
|
||||
dnl $2 (WERROR_BY_DEFAULT): a command returning true if -Werror should be the
|
||||
dnl default
|
||||
dnl $3 (DESIRABLE): warning flags we want (e.g. all extra shadow)
|
||||
dnl $4 (UNDESIRABLE): warning flags we don't want (e.g.
|
||||
dnl missing-field-initializers unused-parameter)
|
||||
AC_DEFUN([TP_COMPILER_WARNINGS],
|
||||
[
|
||||
AC_REQUIRE([AC_ARG_ENABLE])dnl
|
||||
AC_REQUIRE([AC_HELP_STRING])dnl
|
||||
AC_REQUIRE([TP_COMPILER_FLAG])dnl
|
||||
|
||||
tp_warnings=""
|
||||
for tp_flag in $3; do
|
||||
TP_COMPILER_FLAG([-W$tp_flag], [tp_warnings="$tp_warnings -W$tp_flag"])
|
||||
done
|
||||
|
||||
tp_error_flags="-Werror"
|
||||
TP_COMPILER_FLAG([-Werror], [tp_werror=yes], [tp_werror=no])
|
||||
|
||||
for tp_flag in $4; do
|
||||
TP_COMPILER_FLAG([-Wno-$tp_flag],
|
||||
[tp_warnings="$tp_warnings -Wno-$tp_flag"])
|
||||
dnl Yes, we do need to use both -Wno-foo and -Wno-error=foo. Simon says:
|
||||
dnl some warnings we explicitly don't want, like unused-parameter, but
|
||||
dnl they're in -Wall. when a distro using cdbs compiles us, we have:
|
||||
dnl -Werror -Wno-unused-parameter -Wall
|
||||
dnl ^ from us ^ from cdbs
|
||||
dnl which turns -Wunused-parameter back on, in effect
|
||||
TP_COMPILER_FLAG([-Wno-error=$tp_flag],
|
||||
[tp_error_flags="$tp_error_flags -Wno-error=$tp_flag"], [tp_werror=no])
|
||||
done
|
||||
|
||||
AC_ARG_ENABLE([Werror],
|
||||
AC_HELP_STRING([--disable-Werror],
|
||||
[compile without -Werror (normally enabled in development builds)]),
|
||||
tp_werror=$enableval, :)
|
||||
|
||||
if test "x$tp_werror" = xyes && $2; then
|
||||
dnl We put -Wno-error=foo before -Wno-foo because clang interprets -Wall
|
||||
dnl -Werror -Wno-foo -Wno-error=foo as “make foo a non-fatal warning”, but does
|
||||
dnl what we want if you reverse them.
|
||||
$1="$tp_error_flags $tp_warnings"
|
||||
else
|
||||
$1="$tp_warnings"
|
||||
fi
|
||||
|
||||
])
|
44
m4/tp-linker-flag.m4
Normal file
44
m4/tp-linker-flag.m4
Normal file
@ -0,0 +1,44 @@
|
||||
dnl A version of AS_COMPILER_FLAG that supports linker flags
|
||||
dnl Based on:
|
||||
|
||||
dnl as-compiler-flag.m4 0.1.0
|
||||
dnl autostars m4 macro for detection of compiler flags
|
||||
dnl David Schleef <ds@schleef.org>
|
||||
dnl $Id: as-compiler-flag.m4,v 1.1 2005/06/18 18:02:46 burgerman Exp $
|
||||
|
||||
dnl TP_LINKER_FLAG(LDFLAGS, ACTION-IF-ACCEPTED, [ACTION-IF-NOT-ACCEPTED])
|
||||
dnl Tries to compile with the given LDFLAGS.
|
||||
dnl
|
||||
dnl Runs ACTION-IF-ACCEPTED if the compiler/linker for the currently selected
|
||||
dnl AC_LANG can compile with the flags, and ACTION-IF-NOT-ACCEPTED otherwise.
|
||||
dnl
|
||||
dnl Note that LDFLAGS are passed to the linker via the compiler, so you
|
||||
dnl should check for -Wl,--no-add-needed rather than --no-add-needed.
|
||||
|
||||
AC_DEFUN([TP_LINKER_FLAG],
|
||||
[
|
||||
AC_MSG_CHECKING([to see if compiler/linker understand $1])
|
||||
|
||||
save_LDFLAGS="$LDFLAGS"
|
||||
LDFLAGS="$LDFLAGS $1"
|
||||
|
||||
AC_COMPILE_IFELSE(AC_LANG_SOURCE([]), [flag_ok=yes], [flag_ok=no])
|
||||
|
||||
LDFLAGS="$save_LDFLAGS"
|
||||
|
||||
if test "X$flag_ok" = Xyes ; then
|
||||
$2
|
||||
true
|
||||
else
|
||||
$3
|
||||
true
|
||||
fi
|
||||
AC_MSG_RESULT([$flag_ok])
|
||||
])
|
||||
|
||||
dnl TP_ADD_LINKER_FLAG(VARIABLE, LDFLAGS)
|
||||
dnl Append LDFLAGS to VARIABLE if the linker supports them.
|
||||
AC_DEFUN([TP_ADD_LINKER_FLAG],
|
||||
[
|
||||
TP_LINKER_FLAG([$2], [$1="[$]$1 $2"])
|
||||
])
|
50
src/Makefile.am
Normal file
50
src/Makefile.am
Normal file
@ -0,0 +1,50 @@
|
||||
# correctly clean the generated source files
|
||||
CLEANFILES = $(BUILT_SOURCES) $(man_MANS)
|
||||
|
||||
libexec_PROGRAMS=telepathy-matrix
|
||||
|
||||
libmatrix_convenience_la_SOURCES = \
|
||||
matrix-connection-manager.c \
|
||||
matrix-connection-manager.h \
|
||||
matrix-protocol.c \
|
||||
matrix-protocol.h \
|
||||
matrix-debug.c \
|
||||
matrix-debug.h \
|
||||
$(NULL)
|
||||
|
||||
nodist_libmatrix_convenience_la_SOURCES = \
|
||||
$(BUILT_SOURCES)
|
||||
|
||||
telepathy_matrix_SOURCES = \
|
||||
matrix.c
|
||||
|
||||
telepathy_matrix_LDADD = \
|
||||
libmatrix-convenience.la \
|
||||
$(ALL_LIBS)
|
||||
|
||||
noinst_LTLIBRARIES = libmatrix-convenience.la
|
||||
|
||||
AM_CFLAGS = \
|
||||
-I$(top_srcdir) \
|
||||
-I$(top_builddir) \
|
||||
$(ERROR_CFLAGS) \
|
||||
@DBUS_CFLAGS@ \
|
||||
@GLIB_CFLAGS@ \
|
||||
@TELEPATHY_CFLAGS@ \
|
||||
-std=c99
|
||||
|
||||
AM_LDFLAGS = \
|
||||
$(ERROR_LDFLAGS) \
|
||||
$(NULL)
|
||||
|
||||
ALL_LIBS = \
|
||||
@DBUS_LIBS@ \
|
||||
@GLIB_LIBS@ \
|
||||
@TELEPATHY_LIBS@
|
||||
|
||||
man_MANS = telepathy-matrix.8
|
||||
|
||||
EXTRA_DIST = telepathy-matrix.8.in
|
||||
|
||||
%.8: %.8.in Makefile
|
||||
$(AM_V_GEN)sed -e 's,[@]libexecdir[@],@libexecdir@,' < $< > $@
|
62
src/matrix-connection-manager.c
Normal file
62
src/matrix-connection-manager.c
Normal file
@ -0,0 +1,62 @@
|
||||
/*
|
||||
* This file is part of telepathy-matrix.
|
||||
*
|
||||
* telepathy-matrix 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 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* telepathy-matrix 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 telepathy-matrix. If not, see
|
||||
* <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "matrix-connection-manager.h"
|
||||
#include "matrix-protocol.h"
|
||||
|
||||
G_DEFINE_TYPE(MatrixConnectionManager, matrix_connection_manager, TP_TYPE_BASE_CONNECTION_MANAGER);
|
||||
|
||||
static void
|
||||
matrix_connection_manager_finalize(GObject *gobject)
|
||||
{
|
||||
g_signal_handlers_destroy(gobject);
|
||||
G_OBJECT_CLASS(matrix_connection_manager_parent_class)->finalize(gobject);
|
||||
}
|
||||
|
||||
static void
|
||||
matrix_connection_manager_constructed(GObject *gobject)
|
||||
{
|
||||
TpBaseConnectionManager *base = (TpBaseConnectionManager *)gobject;
|
||||
TpBaseProtocol *p;
|
||||
void (*constructed)(GObject *) = ((GObjectClass *)matrix_connection_manager_parent_class)->constructed;
|
||||
|
||||
if (constructed != NULL) {
|
||||
constructed(gobject);
|
||||
}
|
||||
|
||||
p = matrix_protocol_new();
|
||||
tp_base_connection_manager_add_protocol(base, p);
|
||||
g_object_unref(p);
|
||||
}
|
||||
|
||||
static void
|
||||
matrix_connection_manager_class_init(MatrixConnectionManagerClass *klass)
|
||||
{
|
||||
GObjectClass *gobject_class = G_OBJECT_CLASS(klass);
|
||||
TpBaseConnectionManagerClass *parent_class = TP_BASE_CONNECTION_MANAGER_CLASS(klass);
|
||||
|
||||
parent_class->cm_dbus_name = "matrix";
|
||||
|
||||
gobject_class->finalize = matrix_connection_manager_finalize;
|
||||
gobject_class->constructed = matrix_connection_manager_constructed;
|
||||
}
|
||||
|
||||
static void
|
||||
matrix_connection_manager_init(MatrixConnectionManager *connection_manager)
|
||||
{
|
||||
}
|
54
src/matrix-connection-manager.h
Normal file
54
src/matrix-connection-manager.h
Normal file
@ -0,0 +1,54 @@
|
||||
/*
|
||||
* This file is part of telepathy-matrix.
|
||||
*
|
||||
* telepathy-matrix 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 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* telepathy-matrix 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 telepathy-matrix. If not, see
|
||||
* <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __MATRIX_CONNECTION_MANAGER_H__
|
||||
#define __MATRIX_CONNECTION_MANAGER_H__
|
||||
|
||||
#include <glib-object.h>
|
||||
#include <telepathy-glib/telepathy-glib.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
/* TYPE MACROS */
|
||||
|
||||
#define MATRIX_TYPE_CONNECTION_MANAGER (matrix_connection_manager_get_type())
|
||||
#define MATRIX_CONNECTION_MANAGER(o) (G_TYPE_CHECK_INSTANCE_CAST((o), MATRIX_TYPE_CONNECTION_MANAGER, MatrixConnectionManager))
|
||||
#define MATRIX_CONNECTION_MANAGER_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), MATRIX_TYPE_CONNECTION_MANAGER, MatrixConnectionManagerClass))
|
||||
#define MATRIX_IS_CONNECTION_MANAGER(o) (G_TYPE_CHECK_INSTANCE_TYPE((o), MATRIX_TYPE_CONNECTION_MANAGER))
|
||||
#define MATRIX_IS_CONNECTION_MANAGER_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE((k), MATRIX_TYPE_CONNECTION_MANAGER))
|
||||
#define MATRIX_CONNECTION_MANAGER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS((o), MATRIX_TYPE_CONNECTION_MANAGER, MatrixConnectionManagerClass))
|
||||
|
||||
typedef struct _MatrixConnectionManager MatrixConnectionManager;
|
||||
typedef struct _MatrixConnectionManagerClass MatrixConnectionManagerClass;
|
||||
|
||||
struct _MatrixConnectionManagerClass {
|
||||
TpBaseConnectionManagerClass parent_class;
|
||||
};
|
||||
|
||||
struct _MatrixConnectionManager {
|
||||
/* Parent instance structure */
|
||||
TpBaseConnection parent;
|
||||
|
||||
/* Instance members */
|
||||
};
|
||||
|
||||
GType matrix_connection_manager_get_type(void) G_GNUC_CONST;
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* __MATRIX_CONNECTION_MANAGER_H__ */
|
121
src/matrix-debug.c
Normal file
121
src/matrix-debug.c
Normal file
@ -0,0 +1,121 @@
|
||||
/*
|
||||
* This file is part of telepathy-matrix.
|
||||
*
|
||||
* telepathy-matrix 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 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* telepathy-matrix 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 telepathy-matrix. If not, see
|
||||
* <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
#include "matrix-debug.h"
|
||||
|
||||
#include <stdarg.h>
|
||||
#include <telepathy-glib/telepathy-glib.h>
|
||||
|
||||
static MatrixDebugFlags _flags = 0;
|
||||
|
||||
static GDebugKey _keys[] = {
|
||||
{"connection", MATRIX_DEBUG_CONNECTION},
|
||||
{"dns", MATRIX_DEBUG_DNS},
|
||||
{"im", MATRIX_DEBUG_IM},
|
||||
{"muc", MATRIX_DEBUG_MUC},
|
||||
{"network", MATRIX_DEBUG_NETWORK},
|
||||
{"parser", MATRIX_DEBUG_PARSER},
|
||||
{"text", MATRIX_DEBUG_TEXT},
|
||||
{"tls", MATRIX_DEBUG_TLS},
|
||||
{NULL, 0}
|
||||
};
|
||||
|
||||
void
|
||||
matrix_debug_init (void) {
|
||||
const gchar *flags_string = g_getenv("MATRIX_DEBUG");
|
||||
guint nkeys;
|
||||
|
||||
for (nkeys = 0; _keys[nkeys].value; nkeys++) {
|
||||
/* do nothing, just count nkeys */
|
||||
}
|
||||
|
||||
if (flags_string) {
|
||||
tp_debug_set_flags(flags_string);
|
||||
_flags |= g_parse_debug_string(flags_string, _keys, nkeys);
|
||||
}
|
||||
|
||||
if (g_getenv("MATRIX_PERSIST") != NULL)
|
||||
tp_debug_set_persistent(TRUE);
|
||||
}
|
||||
|
||||
GHashTable *flag_to_domains = NULL;
|
||||
|
||||
static const gchar *
|
||||
debug_flag_to_domain (MatrixDebugFlags flag)
|
||||
{
|
||||
if (G_UNLIKELY (flag_to_domains == NULL)) {
|
||||
guint i;
|
||||
|
||||
flag_to_domains = g_hash_table_new_full (NULL, NULL, NULL, g_free);
|
||||
|
||||
for (i = 0; _keys[i].value; i++) {
|
||||
GDebugKey key = _keys[i];
|
||||
gchar *val;
|
||||
|
||||
val = g_strdup_printf ("%s/%s", "matrix", key.key);
|
||||
g_hash_table_insert (flag_to_domains,
|
||||
GUINT_TO_POINTER (key.value), val);
|
||||
}
|
||||
}
|
||||
|
||||
return g_hash_table_lookup (flag_to_domains, GUINT_TO_POINTER (flag));
|
||||
}
|
||||
|
||||
void
|
||||
matrix_debug_free (void)
|
||||
{
|
||||
if (flag_to_domains == NULL)
|
||||
return;
|
||||
|
||||
g_hash_table_destroy (flag_to_domains);
|
||||
flag_to_domains = NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
log_to_debug_sender (MatrixDebugFlags flag,
|
||||
const gchar *message)
|
||||
{
|
||||
TpDebugSender *dbg;
|
||||
GTimeVal now;
|
||||
|
||||
dbg = tp_debug_sender_dup ();
|
||||
|
||||
g_get_current_time (&now);
|
||||
|
||||
tp_debug_sender_add_message (dbg, &now, debug_flag_to_domain (flag),
|
||||
G_LOG_LEVEL_DEBUG, message);
|
||||
|
||||
g_object_unref (dbg);
|
||||
}
|
||||
|
||||
void matrix_debug(MatrixDebugFlags flag, const gchar *format, ...) {
|
||||
gchar *message;
|
||||
va_list args;
|
||||
|
||||
va_start (args, format);
|
||||
message = g_strdup_vprintf (format, args);
|
||||
va_end (args);
|
||||
|
||||
log_to_debug_sender (flag, message);
|
||||
|
||||
if (_flags & flag)
|
||||
g_log (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "%s", message);
|
||||
|
||||
g_free (message);
|
||||
}
|
49
src/matrix-debug.h
Normal file
49
src/matrix-debug.h
Normal file
@ -0,0 +1,49 @@
|
||||
/*
|
||||
* This file is part of telepathy-matrix.
|
||||
*
|
||||
* telepathy-matrix 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 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* telepathy-matrix 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 telepathy-matrix. If not, see
|
||||
* <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __MATRIX_DEBUG_H_
|
||||
#define __MATRIX_DEBUG_H_
|
||||
|
||||
#include <glib.h>
|
||||
|
||||
typedef enum {
|
||||
MATRIX_DEBUG_CONNECTION = (1 << 0),
|
||||
MATRIX_DEBUG_DNS = (1 << 1),
|
||||
MATRIX_DEBUG_IM = (1 << 2),
|
||||
MATRIX_DEBUG_MUC = (1 << 3),
|
||||
MATRIX_DEBUG_NETWORK = (1 << 4),
|
||||
MATRIX_DEBUG_PARSER = (1 << 5),
|
||||
MATRIX_DEBUG_TEXT = (1 << 6),
|
||||
MATRIX_DEBUG_ROOMLIST = (1 << 7),
|
||||
MATRIX_DEBUG_TLS = (1 << 8),
|
||||
} MatrixDebugFlags;
|
||||
|
||||
void matrix_debug_init (void);
|
||||
void matrix_debug(MatrixDebugFlags flag, const gchar *format, ...) G_GNUC_PRINTF(2, 3);
|
||||
|
||||
void matrix_debug_free (void);
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef MATRIX_DEBUG_FLAG
|
||||
|
||||
#undef MATRIX_DEBUG
|
||||
#define MATRIX_DEBUG(format, ...) \
|
||||
matrix_debug(MATRIX_DEBUG_FLAG, "%s: " format, G_STRFUNC, ##__VA_ARGS__)
|
||||
|
||||
#endif
|
51
src/matrix-protocol.c
Normal file
51
src/matrix-protocol.c
Normal file
@ -0,0 +1,51 @@
|
||||
/*
|
||||
* This file is part of telepathy-matrix.
|
||||
*
|
||||
* telepathy-matrix 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 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* telepathy-matrix 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 telepathy-matrix. If not, see
|
||||
* <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "matrix-protocol.h"
|
||||
|
||||
#define PROTOCOL_NAME "matrix"
|
||||
|
||||
G_DEFINE_TYPE(MatrixProtocol, matrix_protocol, TP_TYPE_BASE_PROTOCOL);
|
||||
|
||||
static void
|
||||
matrix_protocol_finalize(GObject *gobject)
|
||||
{
|
||||
g_signal_handlers_destroy(gobject);
|
||||
G_OBJECT_CLASS(matrix_protocol_parent_class)->finalize(gobject);
|
||||
}
|
||||
|
||||
static void
|
||||
matrix_protocol_class_init(MatrixProtocolClass *klass)
|
||||
{
|
||||
GObjectClass *gobject_class = G_OBJECT_CLASS(klass);
|
||||
|
||||
gobject_class->finalize = matrix_protocol_finalize;
|
||||
}
|
||||
|
||||
static void
|
||||
matrix_protocol_init(MatrixProtocol *protocol)
|
||||
{
|
||||
}
|
||||
|
||||
TpBaseProtocol *
|
||||
matrix_protocol_new(void)
|
||||
{
|
||||
return g_object_new(MATRIX_TYPE_PROTOCOL,
|
||||
"name", PROTOCOL_NAME,
|
||||
NULL);
|
||||
}
|
53
src/matrix-protocol.h
Normal file
53
src/matrix-protocol.h
Normal file
@ -0,0 +1,53 @@
|
||||
/*
|
||||
* This file is part of telepathy-matrix.
|
||||
*
|
||||
* telepathy-matrix 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 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* telepathy-matrix 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 telepathy-matrix. If not, see
|
||||
* <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __MATRIX_PROTOCOL_H__
|
||||
#define __MATRIX_PROTOCOL_H__
|
||||
|
||||
#include <telepathy-glib/telepathy-glib.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
#define MATRIX_TYPE_PROTOCOL (matrix_protocol_get_type())
|
||||
#define MATRIX_PROTOCOL(o) (G_TYPE_CHECK_INSTANCE_CAST((o), MATRIX_TYPE_PROTOCOL, MatrixProtocol))
|
||||
#define MATRIX_PROTOCOL_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), MATRIX_TYPE_PROTOCOL, MatrixProtocolClass))
|
||||
#define MATRIX_IS_PROTOCOL(o) (G_TYPE_CHECK_INSTANCE_TYPE((o), MATRIX_TYPE_PROTOCOL))
|
||||
#define MATRIX_IS_PROTOCOL_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE((k), MATRIX_TYPE_PROTOCOL))
|
||||
#define MATRIX_PROTOCOL_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS((o), MATRIX_TYPE_PROTOCOL, MatrixProtocolClass))
|
||||
|
||||
typedef struct _MatrixProtocol MatrixProtocol;
|
||||
typedef struct _MatrixProtocolClass MatrixProtocolClass;
|
||||
|
||||
struct _MatrixProtocol {
|
||||
/* Parent instance structure */
|
||||
TpBaseProtocol parent_instance;
|
||||
|
||||
/* Instance members */
|
||||
};
|
||||
|
||||
struct _MatrixProtocolClass {
|
||||
TpBaseProtocolClass parent_class;
|
||||
};
|
||||
|
||||
GType matrix_protocol_get_type(void) G_GNUC_CONST;
|
||||
|
||||
TpBaseProtocol *matrix_protocol_new(void);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* __MATRIX_PROTOCOL_H__ */
|
54
src/matrix.c
Normal file
54
src/matrix.c
Normal file
@ -0,0 +1,54 @@
|
||||
/*
|
||||
* This file is part of telepathy-matrix.
|
||||
*
|
||||
* telepathy-matrix 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 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* telepathy-matrix 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 telepathy-matrix. If not, see
|
||||
* <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#include <telepathy-glib/telepathy-glib.h>
|
||||
|
||||
#include "matrix-connection-manager.h"
|
||||
#include "matrix-debug.h"
|
||||
|
||||
static
|
||||
TpBaseConnectionManager *_construct_cm(void)
|
||||
{
|
||||
TpBaseConnectionManager *base_cm = TP_BASE_CONNECTION_MANAGER(
|
||||
g_object_new(MATRIX_TYPE_CONNECTION_MANAGER, NULL));
|
||||
|
||||
return base_cm;
|
||||
}
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
TpDebugSender *debug_sender;
|
||||
int result;
|
||||
|
||||
g_type_init ();
|
||||
tp_debug_divert_messages (g_getenv ("MATRIX_LOGFILE"));
|
||||
|
||||
matrix_debug_init();
|
||||
|
||||
debug_sender = tp_debug_sender_dup ();
|
||||
|
||||
result = tp_run_connection_manager(
|
||||
"telepathy-matrix", VERSION,
|
||||
_construct_cm,
|
||||
argc, argv);
|
||||
|
||||
g_object_unref (debug_sender);
|
||||
|
||||
return result;
|
||||
}
|
35
src/telepathy-matrix.8.in
Normal file
35
src/telepathy-matrix.8.in
Normal file
@ -0,0 +1,35 @@
|
||||
.TH TELEPATHY-MATRIX "8" "December 2015" "Telepathy" "D-Bus services"
|
||||
\" This man page was written by Gergely Polonkai for the Telepathy
|
||||
\" Matrix Project, but may be used by others.
|
||||
\" Copyright © 2015 Gergely Polonkai <gergely@polonkai.eu>
|
||||
\" It may be distributed under the same terms as telepathy-matrix itself.
|
||||
.SH NAME
|
||||
telepathy-matrix \- Telepathy connection manager for Matrix.org
|
||||
.SH SYNOPSIS
|
||||
\fB@libexecdir@/telepathy\-matrix\fR
|
||||
.SH DESCRIPTION
|
||||
Telepathy Matrix implements the Telepathy D-Bus specification for
|
||||
Matrix.org, allowing Telepathy clients like
|
||||
.BR empathy (1)
|
||||
to connect to Matrix.org home servers.
|
||||
.PP
|
||||
It is a D-Bus service which runs on the session bus, and should usually be
|
||||
started automatically by D-Bus activation. However, it might be useful to
|
||||
start it manually for debugging.
|
||||
.SH OPTIONS
|
||||
There are no command-line options.
|
||||
.SH ENVIRONMENT
|
||||
.TP
|
||||
\fBMATRIX_LOGFILE\fR=\fIfilename\fR
|
||||
If set, debug output will go to the given file rather than to stderr.
|
||||
If \fB+\fR is prepended to the \fIfilename\fR (e.g.
|
||||
\fBMATRIX_LOGFILE=+matrix.log\fR), debug output will be appended
|
||||
to the file; otherwise, any existing file will be replaced.
|
||||
.TP
|
||||
.TP
|
||||
\fBMATRIX_DEBUG\fR=\fItype\fR
|
||||
May be set to "all" for full debug output, or various undocumented options
|
||||
(which may change from release to release) to filter the output.
|
||||
.SH SEE ALSO
|
||||
.IR http://telepathy.freedesktop.org/ ,
|
||||
.BR empathy (1)
|
14
tools/Makefile.am
Normal file
14
tools/Makefile.am
Normal file
@ -0,0 +1,14 @@
|
||||
EXTRA_DIST = \
|
||||
c-constants-generator.xsl \
|
||||
c-interfaces-generator.xsl \
|
||||
doc-generator.xsl \
|
||||
glib-ginterface-gen.py \
|
||||
identity.xsl \
|
||||
libglibcodegen.py \
|
||||
libtpcodegen.py \
|
||||
make-release-mail.py
|
||||
|
||||
CLEANFILES = libglibcodegen.pyc libglibcodegen.pyo
|
||||
|
||||
glib-ginterface-gen.py: libglibcodegen.py libtpcodegen.py
|
||||
touch $@
|
80
tools/telepathy.am
Normal file
80
tools/telepathy.am
Normal file
@ -0,0 +1,80 @@
|
||||
## Useful top-level Makefile.am snippets for Telepathy projects.
|
||||
|
||||
dist-hook:
|
||||
chmod u+w ${distdir}/ChangeLog
|
||||
if test -d ${top_srcdir}/.git; then \
|
||||
( cd ${top_srcdir} && git log --date=iso $(CHANGELOG_RANGE) ) > ${distdir}/ChangeLog; \
|
||||
fi
|
||||
|
||||
distcheck-hook:
|
||||
@test "z$(CHECK_FOR_UNRELEASED)" = z || \
|
||||
case @VERSION@ in \
|
||||
*.*.*.*|*+) ;; \
|
||||
*) \
|
||||
if grep -r UNRELEASED $(CHECK_FOR_UNRELEASED); \
|
||||
then \
|
||||
echo "^^^ This is meant to be a release, but some files say UNRELEASED" >&2; \
|
||||
exit 2; \
|
||||
fi \
|
||||
;; \
|
||||
esac
|
||||
|
||||
_is-release-check:
|
||||
@case @VERSION@ in \
|
||||
(*.*.*.*|*+) \
|
||||
echo "Hey! @VERSION@ is not a release!" >&2; \
|
||||
exit 2; \
|
||||
;; \
|
||||
esac
|
||||
@cd ${top_srcdir} && \
|
||||
if ! git diff --no-ext-diff --quiet --exit-code; then \
|
||||
echo "Hey! Your tree is dirty! No release for you." >&2; \
|
||||
exit 2; \
|
||||
fi
|
||||
@cd ${top_srcdir} && \
|
||||
if ! git diff --cached --no-ext-diff --quiet --exit-code; then \
|
||||
echo "Hey! You have changes staged! No release for you." >&2; \
|
||||
exit 2; \
|
||||
fi
|
||||
|
||||
%.tar.gz.asc: %.tar.gz
|
||||
$(AM_V_GEN)gpg --detach-sign --armor $@
|
||||
|
||||
@PACKAGE@-@VERSION@.tar.gz:
|
||||
$(MAKE) _is-release-check
|
||||
$(MAKE) check
|
||||
$(MAKE) distcheck
|
||||
|
||||
maintainer-prepare-release:
|
||||
$(MAKE) _is-release-check
|
||||
$(MAKE) all
|
||||
$(MAKE) distcheck
|
||||
$(MAKE) release-mail
|
||||
git tag -s @PACKAGE@-@VERSION@ -m @PACKAGE@' '@VERSION@
|
||||
gpg --detach-sign --armor @PACKAGE@-@VERSION@.tar.gz
|
||||
|
||||
release-mail: NEWS
|
||||
$(AM_V_GEN)(python $(top_srcdir)/tools/make-release-mail.py \
|
||||
@PACKAGE@ @VERSION@ $(top_srcdir)/NEWS > $@.tmp && \
|
||||
mv $@.tmp $@)
|
||||
|
||||
maintainer-upload-release: _maintainer-upload-release
|
||||
|
||||
_maintainer-upload-release-check: _is-release-check
|
||||
test -f @PACKAGE@-@VERSION@.tar.gz
|
||||
test -f @PACKAGE@-@VERSION@.tar.gz.asc
|
||||
gpg --verify @PACKAGE@-@VERSION@.tar.gz.asc
|
||||
|
||||
_maintainer-upload-release: _maintainer-upload-release-check
|
||||
rsync -vzP @PACKAGE@-@VERSION@.tar.gz telepathy.freedesktop.org:/srv/telepathy.freedesktop.org/www/releases/@PACKAGE@/@PACKAGE@-@VERSION@.tar.gz
|
||||
rsync -vzP @PACKAGE@-@VERSION@.tar.gz.asc telepathy.freedesktop.org:/srv/telepathy.freedesktop.org/www/releases/@PACKAGE@/@PACKAGE@-@VERSION@.tar.gz.asc
|
||||
|
||||
maintainer-make-release:
|
||||
$(MAKE) maintainer-prepare-release
|
||||
$(MAKE) maintainer-upload-release
|
||||
@echo "Now:"
|
||||
@echo " • bump the nano-version;"
|
||||
@echo " • push the branch and tags upstream; and"
|
||||
@echo " • send release-mail to <telepathy@lists.freedesktop.org>."
|
||||
|
||||
## vim:set ft=automake:
|
Loading…
Reference in New Issue
Block a user