New Package for meanwhile.

This commit is contained in:
Zach Bacon
2014-10-26 15:44:04 -04:00
parent fb0819250b
commit aaceaf71fb
4 changed files with 522 additions and 0 deletions

View File

@@ -0,0 +1,52 @@
# Maintainer: Troy C < rstrox -ta yahoo -tod com >
# Contributor: Marek Skrobacki <skrobul@skrobul.com>
# Contributor: Alasdair Haswell <ali at arhaswell dot co dot uk>
_realname=meanwhile
pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}")
pkgver=1.0.2
pkgrel=1
pkgdesc="Meanwhile libraries (mingw64)"
arch=('any')
url="http://sourceforge.net/projects/meanwhile"
license=('GPL')
depends=("${MINGW_PACKAGE_PREFIX}-glib2")
conflicts=('meanwhile-svn')
source=(http://downloads.sourceforge.net/sourceforge/meanwhile/${_realname}-$pkgver.tar.gz
broken-status.patch
fix_glib_includes.patch
fix_groupchat.patch)
sha256sums=('38a8059eaa549cbcb45ca0a5b453e9608ceadab360db2ae14581fb22ddabdf23'
'9a60e2ca35d902d5dd9647254a20099ceb399a025f1b04c2676f90ffe2d276f0'
'c3dc0e423f7f4ceee65e4c08c1daebee23c61c608b970185074d118ed0199c47'
'90467c648c18086a3f7989b7bab8f21eb44631c19a7d531121e927a0a1e74e9c')
prepare() {
cd $srcdir/${_realname}-$pkgver/src
patch -Np0 -i "${srcdir}/broken-status.patch"
patch -Np2 -i "${srcdir}/fix_glib_includes.patch"
patch -Np2 -i "${srcdir}/fix_groupchat.patch"
}
build() {
cd $srcdir/${_realname}-$pkgver
CFLAGS="-mtune=generic -pipe -fno-stack-protector --param=ssp-buffer-size=4"
CXXFLAGS="${CFLAGS}"
export lt_cv_deplibs_check_method='pass_all'
export CFLAGS CXXFLAGS
./configure \
--prefix=${MINGW_PREFIX} \
--build=${MINGW_CHOST} \
--host=${MINGW_CHOST} \
--disable-doxygen \
--disable-mailme \
--disable-static \
--enable-shared
make
}
package() {
cd $srcdir/${_realname}-$pkgver
make DESTDIR=$pkgdir install
}

View File

@@ -0,0 +1,159 @@
--- cipher.c 2005-12-24 19:32:50.000000000 +0000
+++ ../../../cipher.c 2010-10-26 16:30:51.234362617 +0100
@@ -1,4 +1,3 @@
-
/*
Meanwhile - Unofficial Lotus Sametime Community Client Library
Copyright (C) 2004 Christopher (siege) O'Brien
@@ -718,7 +717,7 @@
static void accepted_RC2_128(struct mwCipherInstance *ci,
struct mwEncryptItem *item) {
- return offered_RC2_128(ci, item);
+ offered_RC2_128(ci, item);
}
@@ -965,4 +964,3 @@
g_free(ci);
}
-
--- common.c 2005-12-08 19:48:36.000000000 +0000
+++ ../../../common.c 2010-10-26 16:32:48.220662572 +0100
@@ -1,4 +1,3 @@
-
/*
Meanwhile - Unofficial Lotus Sametime Community Client Library
Copyright (C) 2004 Christopher (siege) O'Brien
@@ -878,24 +877,25 @@
/* 8.4.2.4 Snapshot */
void mwAwareSnapshot_get(struct mwGetBuffer *b, struct mwAwareSnapshot *idb) {
- guint32 junk;
- char *empty = NULL;
+ guint32 end_of_block;
g_return_if_fail(b != NULL);
g_return_if_fail(idb != NULL);
- guint32_get(b, &junk);
+ guint32_get(b, &end_of_block);
mwAwareIdBlock_get(b, &idb->id);
mwString_get(b, &idb->group);
gboolean_get(b, &idb->online);
- g_free(empty);
-
if(idb->online) {
mwString_get(b, &idb->alt_id);
mwUserStatus_get(b, &idb->status);
mwString_get(b, &idb->name);
}
+
+ if(b->ptr < b->buf + end_of_block) {
+ mwGetBuffer_advance(b, b->buf + end_of_block - b->ptr);
+ }
}
@@ -924,4 +924,3 @@
g_free(idb->group);
memset(idb, 0x00, sizeof(struct mwAwareSnapshot));
}
-
--- mw_cipher.h 2005-12-15 00:30:28.000000000 +0000
+++ ../../../mw_cipher.h 2010-10-26 16:31:39.030127293 +0100
@@ -1,4 +1,3 @@
-
/*
Meanwhile - Unofficial Lotus Sametime Community Client Library
Copyright (C) 2004 Christopher (siege) O'Brien
@@ -74,8 +73,8 @@
struct mwSession *session;
guint16 type; /**< @see mwCipher_getType */
- const char *(*get_name)(); /**< @see mwCipher_getName */
- const char *(*get_desc)(); /**< @see mwCipher_getDesc */
+ const char *(*get_name)(void); /**< @see mwCipher_getName */
+ const char *(*get_desc)(void); /**< @see mwCipher_getDesc */
/** Generate a new Cipher Instance for use on a channel
@see mwCipher_newInstance */
@@ -252,7 +251,7 @@
/** prepare a new mpi value */
-struct mwMpi *mwMpi_new();
+struct mwMpi *mwMpi_new(void);
/** destroy an mpi value */
--- mw_common.h 2005-12-15 00:30:28.000000000 +0000
+++ ../../../mw_common.h 2010-10-26 16:33:17.914697797 +0100
@@ -1,4 +1,3 @@
-
/*
Meanwhile - Unofficial Lotus Sametime Community Client Library
Copyright (C) 2004 Christopher (siege) O'Brien
@@ -153,10 +152,14 @@
/* 8.3.5 User Status Types */
enum mwStatusType {
+ mwStatus_OFFLINE = 0x0000,
+
mwStatus_ACTIVE = 0x0020,
mwStatus_IDLE = 0x0040,
mwStatus_AWAY = 0x0060,
mwStatus_BUSY = 0x0080,
+
+ mwStatus_MASK_MOBILE = 0x0200,
};
@@ -224,7 +227,7 @@
/** allocate a new empty buffer */
-struct mwPutBuffer *mwPutBuffer_new();
+struct mwPutBuffer *mwPutBuffer_new(void);
/** write raw data to the put buffer */
--- mw_st_list.h 2005-12-15 00:30:28.000000000 +0000
+++ ../../../mw_st_list.h 2010-10-26 16:32:16.350153506 +0100
@@ -1,4 +1,3 @@
-
/*
Meanwhile - Unofficial Lotus Sametime Community Client Library
Copyright (C) 2004 Christopher (siege) O'Brien
@@ -77,7 +76,7 @@
/** Create a new list */
-struct mwSametimeList *mwSametimeList_new();
+struct mwSametimeList *mwSametimeList_new(void);
/** Free the list, all of its groups, and all of the groups' members */
--- srvc_conf.c 2005-12-28 02:46:54.000000000 +0000
+++ ../../../srvc_conf.c 2010-10-26 16:33:57.337870772 +0100
@@ -1,4 +1,3 @@
-
/*
Meanwhile - Unofficial Lotus Sametime Community Client Library
Copyright (C) 2004 Christopher (siege) O'Brien
@@ -156,7 +155,7 @@
if(conf->members)
g_hash_table_destroy(conf->members);
- g_list_remove_all(srvc->confs, conf);
+ srvc->confs = g_list_remove_all(srvc->confs, conf);
mw_datum_clear(&conf->client_data);
@@ -864,4 +863,3 @@
g_return_val_if_fail(srvc != NULL, NULL);
return g_list_copy(srvc->confs);
}
-

View File

@@ -0,0 +1,235 @@
diff --git a/src/channel.c b/src/channel.c
index d7215a9..932522d 100644
--- a/src/channel.c
+++ b/src/channel.c
@@ -19,8 +19,6 @@
*/
#include <glib.h>
-#include <glib/ghash.h>
-#include <glib/glist.h>
#include <string.h>
#include "mw_channel.h"
diff --git a/src/mw_debug.c b/src/mw_debug.c
index cf47a38..d22d287 100644
--- a/src/mw_debug.c
+++ b/src/mw_debug.c
@@ -19,7 +19,7 @@
*/
-#include <glib/gstring.h>
+#include <glib.h>
#include "mw_debug.h"
diff --git a/src/mw_message.h b/src/mw_message.h
index 8402b8b..a825ec2 100644
--- a/src/mw_message.h
+++ b/src/mw_message.h
@@ -22,7 +22,7 @@
#define _MW_MESSAGE_H
-#include <glib/glist.h>
+#include <glib.h>
#include "mw_common.h"
diff --git a/src/mw_srvc_conf.h b/src/mw_srvc_conf.h
index 156c639..66d885b 100644
--- a/src/mw_srvc_conf.h
+++ b/src/mw_srvc_conf.h
@@ -22,7 +22,7 @@
#define _MW_SRVC_CONF_H
-#include <glib/glist.h>
+#include <glib.h>
#include "mw_common.h"
diff --git a/src/mw_srvc_dir.h b/src/mw_srvc_dir.h
index b9230bb..8fd1c85 100644
--- a/src/mw_srvc_dir.h
+++ b/src/mw_srvc_dir.h
@@ -22,7 +22,7 @@
#include <glib.h>
-#include <glib/glist.h>
+#include <glib.h>
#ifdef __cplusplus
diff --git a/src/mw_srvc_place.h b/src/mw_srvc_place.h
index e17aa71..bba97b6 100644
--- a/src/mw_srvc_place.h
+++ b/src/mw_srvc_place.h
@@ -22,7 +22,7 @@
#define _MW_SRVC_PLACE_H
-#include <glib/glist.h>
+#include <glib.h>
#include "mw_common.h"
diff --git a/src/mw_srvc_resolve.h b/src/mw_srvc_resolve.h
index 3b06b75..55aefdf 100644
--- a/src/mw_srvc_resolve.h
+++ b/src/mw_srvc_resolve.h
@@ -23,7 +23,7 @@
#include <glib.h>
-#include <glib/glist.h>
+#include <glib.h>
#ifdef __cplusplus
diff --git a/src/mw_st_list.h b/src/mw_st_list.h
index 39e1cbf..c0032d4 100644
--- a/src/mw_st_list.h
+++ b/src/mw_st_list.h
@@ -30,7 +30,7 @@
#include <glib.h>
-#include <glib/glist.h>
+#include <glib.h>
#include "mw_common.h"
diff --git a/src/mw_util.h b/src/mw_util.h
index b8e0b7e..10dcd69 100644
--- a/src/mw_util.h
+++ b/src/mw_util.h
@@ -23,9 +23,6 @@
#include <glib.h>
-#include <glib/ghash.h>
-#include <glib/glist.h>
-
#define map_guint_new() \
g_hash_table_new(g_direct_hash, g_direct_equal)
diff --git a/src/srvc_aware.c b/src/srvc_aware.c
index 869f973..dc2c12f 100644
--- a/src/srvc_aware.c
+++ b/src/srvc_aware.c
@@ -19,8 +19,6 @@
*/
#include <glib.h>
-#include <glib/ghash.h>
-#include <glib/glist.h>
#include <string.h>
#include "mw_channel.h"
diff --git a/src/srvc_conf.c b/src/srvc_conf.c
index da8e6f3..eee0051 100644
--- a/src/srvc_conf.c
+++ b/src/srvc_conf.c
@@ -19,8 +19,6 @@
*/
#include <glib.h>
-#include <glib/ghash.h>
-#include <glib/glist.h>
#include <stdio.h>
#include <stdlib.h>
diff --git a/src/srvc_dir.c b/src/srvc_dir.c
index cf49152..ed5997e 100644
--- a/src/srvc_dir.c
+++ b/src/srvc_dir.c
@@ -18,7 +18,7 @@
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-#include <glib/ghash.h>
+#include <glib.h>
#include "mw_channel.h"
#include "mw_common.h"
diff --git a/src/srvc_ft.c b/src/srvc_ft.c
index 0564732..ff9f010 100644
--- a/src/srvc_ft.c
+++ b/src/srvc_ft.c
@@ -19,7 +19,7 @@
*/
-#include <glib/glist.h>
+#include <glib.h>
#include "mw_channel.h"
#include "mw_common.h"
diff --git a/src/srvc_im.c b/src/srvc_im.c
index 5930687..16714c7 100644
--- a/src/srvc_im.c
+++ b/src/srvc_im.c
@@ -19,7 +19,7 @@
*/
#include <glib.h>
-#include <glib/glist.h>
+#include <glib.h>
#include <string.h>
#include "mw_channel.h"
diff --git a/src/srvc_place.c b/src/srvc_place.c
index fc979ff..58ba574 100644
--- a/src/srvc_place.c
+++ b/src/srvc_place.c
@@ -19,8 +19,6 @@
*/
#include <glib.h>
-#include <glib/ghash.h>
-#include <glib/glist.h>
#include <stdio.h>
#include <stdlib.h>
diff --git a/src/srvc_resolve.c b/src/srvc_resolve.c
index aac0d49..c71d7b3 100644
--- a/src/srvc_resolve.c
+++ b/src/srvc_resolve.c
@@ -18,7 +18,7 @@
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-#include <glib/ghash.h>
+#include <glib.h>
#include "mw_channel.h"
#include "mw_common.h"
diff --git a/src/srvc_store.c b/src/srvc_store.c
index 90f2efc..afbd2b6 100644
--- a/src/srvc_store.c
+++ b/src/srvc_store.c
@@ -18,7 +18,7 @@
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-#include <glib/glist.h>
+#include <glib.h>
#include "mw_channel.h"
#include "mw_debug.h"
diff --git a/src/st_list.c b/src/st_list.c
index 949696a..e47ec35 100644
--- a/src/st_list.c
+++ b/src/st_list.c
@@ -20,7 +20,7 @@
#include <stdio.h>
#include <string.h>
-#include <glib/gstring.h>
+#include <glib.h>
#include "mw_debug.h"
#include "mw_util.h"

View File

@@ -0,0 +1,76 @@
--- a/src/srvc_place.c 2013-10-02 13:49:18.048588870 -0500
+++ b/src/srvc_place.c 2013-10-02 13:50:18.027648225 -0500
@@ -39,6 +39,16 @@
#define PROTOCOL_TYPE 0x00
#define PROTOCOL_VER 0x05
+/*
+ As of Sametime ~v8.5, there's a slightly different group chat invite message.
+ This identifies the earliest server version using the new format. Currently,
+ it's set for 8.5.1. If other people are having issues, we'll need to decrease
+ this to their version.
+*/
+#define NEW_FORMAT_SERVER_VER_MAJOR 0x001e
+#define NEW_FORMAT_SERVER_VER_MINOR 0x213f
+
+#define GUINT(val) (GPOINTER_TO_UINT((val)))
enum incoming_msg {
msg_in_JOIN_RESPONSE = 0x0000, /* ? */
@@ -165,6 +175,7 @@
guint16 login_type;
guint32 unknown_a;
guint32 unknown_b;
+ char *extraname;
};
@@ -189,6 +200,7 @@
mwIdBlock_clear(&p->idb);
g_free(p->login_id);
g_free(p->name);
+ g_free(p->extraname);
g_free(p);
}
@@ -394,6 +406,9 @@
guint16_get(b, &pm->login_type);
guint32_get(b, &pm->unknown_a);
guint32_get(b, &pm->unknown_b);
+ /* TODO: Since the Notes upgrade, an extra name string is sent to
+ recv_SECTION_LIST(). It might be sent here, but since we're only
+ parsing one user, it probably doesn't matter here. */
PUT_MEMBER(place, pm);
if(srvc->handler && srvc->handler->peerJoined)
@@ -519,8 +534,18 @@
static int recv_SECTION_LIST(struct mwPlace *place,
struct mwGetBuffer *b) {
- int ret = 0;
+ int ret = 0, major, minor;
guint32 sec, count;
+ struct mwSession *session;
+ gboolean newMsgFormat;
+
+ /* Check the server version to see if the message uses the new format */
+ session = mwService_getSession(MW_SERVICE(place->service));
+ major = GUINT(mwSession_getProperty(session, mwSession_SERVER_VER_MAJOR));
+ minor = GUINT(mwSession_getProperty(session, mwSession_SERVER_VER_MINOR));
+ newMsgFormat = (major == NEW_FORMAT_SERVER_VER_MAJOR
+ && minor >= NEW_FORMAT_SERVER_VER_MINOR)
+ || major > NEW_FORMAT_SERVER_VER_MAJOR;
mwGetBuffer_advance(b, 4);
guint32_get(b, &sec);
@@ -545,6 +570,10 @@
guint32_get(b, &m->unknown_a);
guint32_get(b, &m->unknown_b);
+ if(newMsgFormat) {
+ mwString_get(b, &m->extraname);
+ }
+
PUT_MEMBER(place, m);
}