--- 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);
 }
-
