AFAIK it's also needed to run... but you reminded me, wasn't it supposed to be commited to trunk/amsn2/protocol/msnlib/ or something like that ? Was it Harry or Phil who reviewed the directory hierarchy that we were supposed to set up ?
KKRT On Mon, Aug 07, 2006 at 05:26:28PM -0400, J?r?me Gagnon-Voyer wrote: > Do you need Glib only to compile or to run the software also > > J?r?me > Courriel: [EMAIL PROTECTED] > MSN Messenger: [EMAIL PROTECTED] > iChat & AIM: [EMAIL PROTECTED] > Skype: germinator5000 > > > Le 7 ao?t 2006 ? 10:51, [EMAIL PROTECTED] a ?crit : > > >Revision: 7115 > >Author: tjikkun > >Date: 2006-08-07 07:51:28 -0700 (Mon, 07 Aug 2006) > >ViewCVS: http://svn.sourceforge.net/amsn/?rev=7115&view=rev > > > >Log Message: > >----------- > >Initiall add of msnlib, the MSNP13 C/GLib msn library, to be used > >mainly by amsn and telepathy > > > >Added Paths: > >----------- > > trunk/msnlib/ > > trunk/msnlib/Makefile > > trunk/msnlib/libmsn.txt > > trunk/msnlib/msn-connection.c > > trunk/msnlib/msn-connection.h > > trunk/msnlib/msn.c > > trunk/msnlib/msn.h > >Added: trunk/msnlib/Makefile > >=================================================================== > >--- trunk/msnlib/Makefile (rev 0) > >+++ trunk/msnlib/Makefile 2006-08-07 14:51:28 UTC (rev 7115) > >@@ -0,0 +1,22 @@ > >+CFLAGS = -g -Wall > >+ > >+CC = gcc > >+LD = ld > >+RM = rm -f > >+LIBS = -lglib-2.0 -lgobject-2.0 > >+INCLUDES = -I /usr/include/glib-2.0 -I /usr/lib/glib-2.0/include > >+OBJS = msn.o msn-connection.o > >+SRCS = msn.c msn-connection.c > >+HDRS = msn.h msn-connection.h > >+ > >+ > >+all: msn > >+ > >+%.o: %.c > >+ ${CC} ${CFLAGS} ${INCLUDES} -c -o $@ $< > >+ > >+msn: $(OBJS) > >+ ${CC} -o msn ${OBJS} ${LIBS} > >+ > >+clean: > >+ $(RM) msn *.o *~ > > > >Added: trunk/msnlib/libmsn.txt > >=================================================================== > >--- trunk/msnlib/libmsn.txt (rev 0) > >+++ trunk/msnlib/libmsn.txt 2006-08-07 14:51:28 UTC (rev 7115) > >@@ -0,0 +1,218 @@ > >+libmsn > >+------ > >+ > >+What it implements: > >+- Connections > >+- MSNP messages > >+- Lists (TODO) > >+- Contacts (TODO) > >+ > >+ > >+GLib classes > >+------------ > >+ > >+MsnConnection > >+MsnMessage > >+ > >+ > >+Other types > >+----------- > >+ > >+typedef enum { > >+ MSN_DS_CONNECTION, > >+ MSN_NS_CONNECTION, > >+ MSN_SB_CONNECTION > >+} MsnConnectionType; > >+ > >+typedef void (MsnTweenerAuthCallback) (const gchar *account, const > >gchar *password, const gchar *auth_string); > >+ > >+ > >+Functions for connection handling > >+--------------------------------- > >+ > >+gboolean msn_set_g_main_context(GMainContext *context) > >+ context is the GMainContext that should be used in all > >subsequent calls to libmsn functions. > >+ > >+ This function should always be called only once, and before > >calling any other libmsn function. If msn_connection_new is called > >before this function, it will do a msn_set_g_main_context(NULL), so > >libmsn will use the default context. This function never fails on > >the first call, and always fails on subsequent calls. Thus libmsn > >will use the same context all the time. > >+ > >+ This function shall return TRUE on success or FALSE on > >failure. > >+ > >+ > >+MsnConnection *msn_connection_new(MsnConnectionType type) /* > >Design Alternative 1 */ > >+ type is either MSN_DS_CONNECTION, MSN_NS_CONNECTION or > >MSN_SB_CONNECTION. > >+ > >+ MSN_DS_CONNECTION and MSN_NS_CONNECTION are handled the > >same way, with one exception: NS allows the use of a cached NS > >address, DS forces the function to connect to the dispatch server > >messenger.hotmail.com:1863. > >+ MSN_SB_CONNECTION will connect to a switchboard server. > >+ > >+ No addresses need to be passed because the connection > >handler will always know them. Internally it keeps one NS server > >address cached (the one that was successfully connected to most > >recently). This is only cached in memory, so it is lost when the > >process terminates. If the MSN_NS_CONNECTION type is used while no > >address is in cache, it is handled as MSN_DS_CONNECTION. If an > >address is in cache and MSN_DS_CONNECTION is used, the cached > >address should not change. If the DS supplies an NS address > >different from the one cached, the cached address should only > >change once a connection to the new address succeeds. When > >connecting with type MSN_NS_CONNECTION, while the previous NS or DS > >connection redirected, then the address supplied in the redirection > >command should be favored rather than a cached address. If that > >connection fails, the next attempt will again use the cached > >address. The function should only attempt to connect once when > >called, and should just fail if the c > > onnection could not be established. So the 'next attemp' is the > >next call to the function. [Protocol sequences: VER, CVR] > >+ > >+ When connecting with type MSN_SB_CONNNECTION, a connection > >will be made to a switchboard server. The address and the necessary > >authentication info is obtained from the NS. If no NS connection is > >active yet, this function will simply fail. [Protocol sequences: > >XFR SB (on the NS connection), USR (on the brand-new SB connection)] > >+ > >+ This function executes synchronously, but if the connection > >was established successfully, it will prepare the connection object > >for asynchronous operation by adding sources to the GMainContext > >specified by a call to msn_set_g_main_context(). If none has been > >set, it defaults to NULL, which will make glib use the default > >context. > >+ > >+ Failure is indicated by a NULL return value. > >+ > >+ > >+/* A few macros for msn_connection_new Design Alternative 2 */ > >+#define msn_connection_new_ns() msn_connection_new > >(MSN_NS_CONNECTION, NULL) > >+#define msn_connection_new_sb(ns_conn) msn_connection_new > >(MSN_SB_CONNECTION, ns_conn) > >+ > >+MsnConnection *msn_connection_new(MsnConnectionType type, > >MsnConnection *ns_conn) /* Design Alternative 2 */ > >+ type is either MSN_DS_CONNECTION, MSN_NS_CONNECTION or > >MSN_SB_CONNECTION. > >+ ns_conn (see below) > >+ > >+ MSN_DS_CONNECTION and MSN_NS_CONNECTION are handled the > >same way, with one exception: NS allows the use of a cached NS > >address, DS forces the function to connect to the dispatch server > >messenger.hotmail.com:1863. For these two types the ns_conn > >parameter is ignored, and should be set to NULL. > >+ > >+ MSN_SB_CONNECTION will connect to a switchboard server. For > >this type, ns_conn should be set to a pointer to a connection > >object of type MSN_NS_CONNECTION, which should be connected and > >authenticated. > >+ > >+ No addresses need to be passed because the connection > >handler will always know them. Internally it keeps one NS server > >address cached (the one that was successfully connected to most > >recently). This is only cached in memory, so it is lost when the > >process terminates. If the MSN_NS_CONNECTION type is used while no > >address is in cache, it is handled as MSN_DS_CONNECTION. If an > >address is in cache and MSN_DS_CONNECTION is used, the cached > >address should not change. If the DS supplies an NS address > >different from the one cached, the cached address should only > >change once a connection to the new address succeeds. When > >connecting with type MSN_NS_CONNECTION, while the previous NS or DS > >connection redirected, then the address supplied in the redirection > >command should be favored rather than a cached address. If that > >connection fails, the next attempt will again use the cached > >address. The function should only attempt to connect once when > >called, and should just fail if the c > > onnection could not be established. So the 'next attemp' is the > >next call to the function. [Protocol sequences: VER, CVR] > >+ > >+ When connecting with type MSN_SB_CONNECTION, a connection > >will be made to a switchboard server. The address and the necessary > >authentication info are obtained from the NS. If no NS connection > >is active yet, this function will simply fail. [Protocol sequences: > >XFR SB (on the NS connection), USR (on the brand-new SB connection)] > >+ > >+ This function executes synchronously, but if the connection > >was established successfully, it will prepare the connection object > >for asynchronous operation by adding sources to the GMainContext > >specified by a call to msn_set_g_main_context(). If none has been > >set, it defaults to NULL, which will make glib use the default > >context. > >+ > >+ Failure is indicated by a NULL return value. > >+ > >+ > >+void msn_connection_login(MsnConnection *this, const gchar > >*account, const gchar *password, MsnTweenerAuthCallback *twn_cb) > >+ this Pointer to the object the method is invoked on. The pointer > >must be obtained from msn_connection_new. > >+ account The account name to use when logging in > >+ password The password of the account > >+ twn_cb A callback function as defined by: > >+ typedef void (MsnTweenerAuthCallback) (const char *account, > >const char *password, const char *auth_string); > >+ account The account name to use when logging in, this is > >the same pointer as was passed to msn_connection_login. > >+ password The password of the account, this is the same > >pointer as was passed to msn_connection_login. > >+ auth_string is the string obtained from the NS in the USR > >sequence before Tweener authentication. > >+ > >+ twn_cb may free the account and password strings, > >libmsn will not use them after doing the callback. > >+ twn_cb must not free auth_string, it is owned by > >libmsn, and will therefore be freed by libmsn. > >+ > >+ This function will log into the MSN Messenger Service. > >[Protocol sequence: USR, XFR NS] > >+ It delegates the Tweener (HTTP + SOAP) part to the callback > >function. > >+ > >+ This function should only be invoked on a DS or NS > >connection that did not yet login. If invoked on a SB connection or > >on a connection that logged in already, it must immediately return > >with return value 0. > >+ > >+ This function executes asynchronously and returns > >immediately after sending the initial USR. > >+ > >+ This function initiates a chain of actions: > >+ 1. This function checks if this MsnConnection object has > >authenticated already, if not, it sends the initial USR and updates > >the object's state accordingly. This function returns here, the > >rest of the actions are initiated from the glib mainloop. > >+ 2. When the reply from the server arrives, and that is an > >USR, the twn_cb callback function is called, which will send the > >Tweener authentication request. This should be done using a HTTP > >library that also utilises the glib mainloop, or is just non- > >blocking so it can be wrapped to run in the mainloop. The twn_cb > >function should make sure that a callback (let's call it > >twn_reply_cb) is registered to catch the Tweener reply. The twn_cb > >function must return without delay (i.e. it must not wait for the > >HTTP response). > >+ If the server sent an XFR reply instead of USR, an event is > >fired to indicate that we're being redirected [Needs detail], and > >the sequence ends here. > >+ 3. On arrival of the Tweener response, twn_reply_cb will > >extract the ticket from it, and call > >msn_connection_set_login_ticket. That function will send the USR > >message with the ticket and return. > >+ 4. On arrival of the final USR response an event is fired > >to indicate success or failure of the authentication. [Needs detail] > >+ > >+ > >+void msn_connection_set_login_ticket(MsnConnection *this, const > >gchar *ticket) > >+ this Pointer to the object the method is invoked on. The pointer > >must be obtained from msn_connection_new. > >+ ticket is the authentication ticket from the tweener response. > >+ > >+ The ticket string may be freed after > >msn_connection_set_login_ticket returns. > >+ > >+ For details about this function, see the description of > >msn_connection_login. If this function is called while the object > >is not waiting for a Tweener ticket, it will do nothing and return > >immediately. > >+ > >+ > >+void msn_connection_close(MsnConnection *this) > >+ this Pointer to the object the method is invoked on. The pointer > >must be obtained from msn_connection_new. > >+ > >+ This function will close the connection, and free any > >resources related to it. > >+ A user of libmsn must always call this if a connection will > >not be used anymore, a connection is never closed automatically. > >+ > >+ Please note that this won't free the MsnConnection object > >itself! The object will enter the disconnected state, and thus > >cannot be used anymore. It should therefore be unref'ed so it will > >eventually get freed. > >+ > >+ > >+Functions for message handling > >+------------------------------ > >+ > >+MsnMessage *msn_message_new() > >+ > >+ This function creates a new, empty MsnMessage object. > >+ > >+ > >+MsnMessage *msn_message_from_string(const gchar *msgtext) > >+ msgtext The message as a string. This will usually have been > >received from the server. > >+ > >+ This function creates an MsnMessage object from the passed > >string. > >+ The returned MsnMessage object will be read only. > >+ > >+ > >+const char *msn_message_get_header(MsnMessage *this, const gchar > >*name) > >+ name The name of the header to get. > >+ > >+ This function returns the content of the requested header, > >or NULL if the message does not contain a header with the specified > >name. The caller must not free the string returned by this function. > >+ > >+ > >+const char *msn_message_get_body(MsnMessage *this) > >+ this Pointer to the object the method is invoked on. Must be > >obtained from msn_message_new or msn_message_from_string. > >+ > >+ This function returns the content of the message body, or > >NULL if the message has no body. > >+ The caller must not free the string returned by this function. > >+ > >+ > >+const char * msn_message_get_command(MsnMessage *this) > >+ this Pointer to the object the method is invoked on. Must be > >obtained from msn_message_new or msn_message_from_string. > >+ > >+ This function returns the MSN protocol command in this > >message. This is equal to the element at index 0 of the array > >returned by msn_message_get_command_header. > >+ The caller must not free the string returned by this function. > >+ > >+ > >+const char * const * msn_message_get_command_header(MsnMessage *this) > >+ this Pointer to the object the method is invoked on. Must be > >obtained from msn_message_new or msn_message_from_string. > >+ > >+ This function returns an array of strings. Each element of > >the array holds one token from the very first line of the message > >(the MSNP protocol command, and its arguments). The TrId is > >omitted. The array will be NULL-terminated. > >+ The caller must not free the returned array, nor any of the > >strings it points to. > >+ > >+ > >+int msn_message_get_trid(MsnMessage *this) > >+ this Pointer to the object the method is invoked on. Must be > >obtained from msn_message_new or msn_message_from_string. > >+ > >+ This function returns the message's TrId, or -1 if it has no > >TrId. > >+ > >+ > >+void msn_message_set_header(MsnMessage *this, const gchar *name, > >const gchar *value) > >+ this Pointer to the object the method is invoked on. Must be > >obtained from msn_message_new. > >+ name The name of the header to set. > >+ value The value to set it to. > >+ > >+ This function sets a header with the specified name, and > >assigns it the given value. If a header of that name already > >exists, it is replaced. > >+ Both the name and the value may be freed by the caller after > >this function returns. > >+ > >+ > >+void msn_message_set_body(MsnMessage *this, const gchar *body) > >+ this Pointer to the object the method is invoked on. Must be > >obtained from msn_message_new. > >+ body The message body > >+ > >+ This function sets the message body. If a body is already > >set, it will be replaced. > >+ The passed body may be freed by the caller after this > >function returns. > >+ > >+ > >+void msn_message_append_body(MsnMessage *this, const gchar *string) > >+ this Pointer to the object the method is invoked on. Must be > >obtained from msn_message_new. > >+ string The string to append to the message body. > >+ > >+ This function appends the given string to the message body. > >+ If no body has been set yet, it operates like the > >msn_message_set_body function. > >+ The passed string may be freed by the caller after this > >function returns. > >+ > >+ > >+void msn_message_set_command_header(MsnMessage *this, const gchar > >* const argv[]) > >+ this Pointer to the object the method is invoked on. Must be > >obtained from msn_message_new or msn_message_from_string. > >+ argv An array holding the MSNP command at index 0 and its > >arguments at index 1 and up. The array must be NULL terminated. > >+ > >+ This function sets the first line of the message (the MSN > >protocol command and its arguments). Each element of the argv array > >holds one token. The TrId must be omitted. > >+ The caller may free the array passed to this function after > >this function returns. > >+ > >+ > >+void msn_message_set_command_header_from_string(MsnMessage *this, > >const gchar *command_hdr) > >+ this Pointer to the object the method is invoked on. Must be > >obtained from msn_message_new or msn_message_from_string. > >+ command_hdr Pointer to the command string. > >+ > >+ This function sets the first line of the message (the MSN > >protocol command and its arguments). The TrId must be omitted. The > >caller may free the string passed to this function after this > >function returns. > >+ > >+ > >+void msn_message_send(MsnMessage *this, MsnConnection *conn) > >+ this Pointer to the object the method is invoked on. Must be > >obtained from msn_message_new. > >+ conn The connection where the message is to be sent. > >+ > >+ This function will assign the message a TrId (if required by > >the protocol) and send it through the specified connection. > >+ > >+ > > > >Added: trunk/msnlib/msn-connection.c > >=================================================================== > >--- trunk/msnlib/msn-connection.c (rev 0) > >+++ trunk/msnlib/msn-connection.c 2006-08-07 14:51:28 UTC (rev 7115) > >@@ -0,0 +1,204 @@ > >+/* > >+ * msn-connection.c - Source for MsnConnection > >+ * Copyright (C) 2006 ? > >+ * Copyright (C) 2006 ? > >+ * > >+ * This library is free software; you can redistribute it and/or > >+ * modify it under the terms of the GNU Lesser General Public > >+ * License as published by the Free Software Foundation; either > >+ * version 2.1 of the License, or (at your option) any later version. > >+ * > >+ * This library 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 > >+ * Lesser General Public License for more details. > >+ * > >+ * You should have received a copy of the GNU Lesser General Public > >+ * License along with this library; if not, write to the Free > >Software > >+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA > >02110-1301 USA > >+ */ > >+ > >+ > >+#include <stdio.h> > >+#include <stdlib.h> > >+#include <string.h> > >+#include <sys/types.h> > >+#include <sys/socket.h> > >+#include <unistd.h> > >+#include <netdb.h> > >+ > >+#include "msn-connection.h" > >+ > >+#define g_printf printf > >+ > >+G_DEFINE_TYPE(MsnConnection, msn_connection, G_TYPE_OBJECT) > >+ > >+/* private structure */ > >+typedef struct _MsnConnectionPrivate MsnConnectionPrivate; > >+ > >+struct _MsnConnectionPrivate > >+{ > >+ gboolean connected; > >+ GIOChannel *channel; > >+ guint trid; > >+}; > >+ > >+#define MSN_CONNECTION_GET_PRIVATE(o) > >(G_TYPE_INSTANCE_GET_PRIVATE ((o), MSN_TYPE_CONNECTION, > >MsnConnectionPrivate)) > >+ > >+/* type definition stuff */ > >+ > >+static void > >+msn_connection_init (MsnConnection *obj) > >+{ > >+ MsnConnectionPrivate *priv = MSN_CONNECTION_GET_PRIVATE (obj); > >+ priv->connected = FALSE; > >+ priv->trid = 1; > >+} > >+ > >+static void msn_connection_dispose (GObject *object); > >+static void msn_connection_finalize (GObject *object); > >+ > >+static void > >+msn_connection_class_init (MsnConnectionClass *msn_connection_class) > >+{ > >+ GObjectClass *object_class = G_OBJECT_CLASS (msn_connection_class); > >+ > >+ g_type_class_add_private (msn_connection_class, sizeof > >(MsnConnectionPrivate)); > >+ > >+ object_class->dispose = msn_connection_dispose; > >+ object_class->finalize = msn_connection_finalize; > >+} > >+ > >+void > >+msn_connection_dispose (GObject *object) > >+{ > >+ MsnConnection *self = MSN_CONNECTION (object); > >+ MsnConnectionPrivate *priv = MSN_CONNECTION_GET_PRIVATE (self); > >+ > >+ /* release any references held by the object here */ > >+ > >+ if (G_OBJECT_CLASS (msn_connection_parent_class)->dispose) > >+ G_OBJECT_CLASS (msn_connection_parent_class)->dispose (object); > >+} > >+ > >+void > >+msn_connection_finalize (GObject *object) > >+{ > >+ MsnConnection *self = MSN_CONNECTION (object); > >+ MsnConnectionPrivate *priv = MSN_CONNECTION_GET_PRIVATE (self); > >+ > >+ G_OBJECT_CLASS (msn_connection_parent_class)->finalize (object); > >+} > >+ > >+struct sockaddr_in *get_msn_server(const char *server, gint port) { > >+ /* > >+ * if no server is specified (NULL) then MSN_DEFAULT_SERVER is taken > >+ * if no port is specified (< 0) then MSN_DEFAULT_PORT is taken > >+ */ > >+ > >+ struct sockaddr_in *msn_serv; > >+ struct in_addr *addr; > >+ struct hostent *host; > >+ msn_serv = malloc((socklen_t) sizeof(struct sockaddr_in)); > >+ if (msn_serv == NULL) { > >+ // error > >+ return NULL; > >+ } > >+ if (server == NULL) { > >+ host = gethostbyname(MSN_DEFAULT_SERVER); > >+ } else { > >+ host = gethostbyname(server); > >+ } > >+ if (host == NULL) { > >+ // error > >+ return NULL; > >+ } > >+ addr = (struct in_addr*) host->h_addr_list[0]; > >+ msn_serv->sin_family = AF_INET; > >+ if (port < 0) { > >+ port = MSN_DEFAULT_PORT; > >+ } > >+ msn_serv->sin_port = htons(port); > >+ msn_serv->sin_addr.s_addr = addr->s_addr; > >+ return msn_serv; > >+} > >+ > >+ > >+ > >+/** > >+ * msn_connection_connect > >+ * > >+ * > >+ * Returns: MsnConnection if successful, NULL if not successfull. > >+ */ > >+MsnConnection *msn_connection_new(MsnConnectionType type) > >+{ > >+ MsnConnectionPrivate *priv; > >+ MsnConnection *conn; > >+ guint written; > >+ gint port, i; > >+ gchar *server, *buffer; > >+ GError *error = NULL; > >+ guint err, my_socket; > >+ GIOStatus status; > >+ > >+ conn = g_object_new(MSN_TYPE_CONNECTION, NULL); > >+ g_assert (MSN_IS_CONNECTION (conn)); > >+ > >+ priv = MSN_CONNECTION_GET_PRIVATE (conn); > >+ > >+ buffer = malloc(512 * sizeof(gchar)); > >+ > >+ /* Create a connection to given server */ > >+ switch (type) { > >+ case MSN_NS_CONNECTION: > >+/* if (cached) { > >+ port = cached_port; > >+ server = cached_server; > >+ break; > >+ }*/ > >+ case MSN_DS_CONNECTION: > >+ port = -1; > >+ server = NULL; > >+ break; > >+ case MSN_SB_CONNECTION: > >+ break; > >+ default: > >+ break; > >+ } > >+ > >+ my_socket = socket(AF_INET, SOCK_STREAM, 0); > >+ if (my_socket == -1) { > >+ g_debug("socket call failed"); > >+ return NULL; > >+ } > >+ if (connect(my_socket, (struct sockaddr *) get_msn_server > >(server, port), (socklen_t) sizeof(struct sockaddr_in)) != 0) { > >+ g_debug("connect call failed"); > >+ return NULL; > >+ } > >+ > >+ /* Create G_IO_Channel */ > >+ priv->channel = g_io_channel_unix_new(my_socket); > >+ g_io_channel_set_encoding(priv->channel, NULL, NULL); > >+ g_io_channel_set_line_term(priv->channel, "\r\n", 2); > >+ g_printf("connected to server!\n"); > >+ g_printf("sending VER 1 MSNP13 CVR0\\r\\n\n"); > >+ status = g_io_channel_write_chars(priv->channel, "VER 1 MSNP13 > >CVR0\r\n", -1, &written, &error); > >+ g_io_channel_flush(priv->channel, &error); > >+ g_printf("status: %i\n", status); > >+ g_printf("written %i\n", written); > >+ status = g_io_channel_read_chars(priv->channel, &buffer[0], 19, > >&written, &error); > >+ g_printf("status: %i\n", status); > >+ g_printf("written %i\n", written); > >+ g_printf("return: "); > >+ for (i = 0; i < 19; i++) { > >+ g_printf("%c", buffer[i]); > >+ } > >+ g_printf("\n"); > >+/* g_printf("sending CVR 2 0x0409 winnt 5.1 i386 MSG80BETA > >8.0.0566 msmsgs [EMAIL PROTECTED]"); > >+ err = write(my_socket, "CVR 2 0x0409 winnt 5.1 i386 MSG80BETA > >8.0.0566 msmsgs [EMAIL PROTECTED]", strlen("CVR 2 0x0409 > >winnt 5.1 i386 MSG80BETA 8.0.0566 msmsgs [EMAIL PROTECTED] > >\n") + 1);*/ > >+/* g_io_channel_shutdown(priv->channel, TRUE, &error);*/ > >+ close(my_socket); > >+ return NULL; > >+} > >+ > > > >Added: trunk/msnlib/msn-connection.h > >=================================================================== > >--- trunk/msnlib/msn-connection.h (rev 0) > >+++ trunk/msnlib/msn-connection.h 2006-08-07 14:51:28 UTC (rev 7115) > >@@ -0,0 +1,69 @@ > >+/* > >+ * msn-connection.h - Header for MsnConnection > >+ * Copyright (C) 2006 ? > >+ * Copyright (C) 2006 ? > >+ * > >+ * This library is free software; you can redistribute it and/or > >+ * modify it under the terms of the GNU Lesser General Public > >+ * License as published by the Free Software Foundation; either > >+ * version 2.1 of the License, or (at your option) any later version. > >+ * > >+ * This library 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 > >+ * Lesser General Public License for more details. > >+ * > >+ * You should have received a copy of the GNU Lesser General Public > >+ * License along with this library; if not, write to the Free > >Software > >+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA > >02110-1301 USA > >+ */ > >+ > >+#ifndef __MSN_CONNECTION_H__ > >+#define __MSN_CONNECTION_H__ > >+ > >+#include <glib.h> > >+#include <glib-object.h> > >+ > >+G_BEGIN_DECLS > >+ > >+#define MSN_DEFAULT_SERVER "messenger.hotmail.com" > >+#define MSN_DEFAULT_PORT 1863 > >+ > >+typedef enum { > >+ MSN_DS_CONNECTION, > >+ MSN_NS_CONNECTION, > >+ MSN_SB_CONNECTION > >+} MsnConnectionType; > >+ > >+typedef struct _MsnConnection MsnConnection; > >+typedef struct _MsnConnectionClass MsnConnectionClass; > >+ > >+struct _MsnConnectionClass { > >+ GObjectClass parent_class; > >+}; > >+ > >+struct _MsnConnection { > >+ GObject parent; > >+}; > >+ > >+GType msn_connection_get_type(void); > >+ > >+/* TYPE MACROS */ > >+#define MSN_TYPE_CONNECTION \ > >+ (msn_connection_get_type()) > >+#define MSN_CONNECTION(obj) \ > >+ (G_TYPE_CHECK_INSTANCE_CAST((obj), MSN_TYPE_CONNECTION, > >MsnConnection)) > >+#define MSN_CONNECTION_CLASS(klass) \ > >+ (G_TYPE_CHECK_CLASS_CAST((klass), MSN_TYPE_CONNECTION, > >MsnConnectionClass)) > >+#define MSN_IS_CONNECTION(obj) \ > >+ (G_TYPE_CHECK_INSTANCE_TYPE((obj), MSN_TYPE_CONNECTION)) > >+#define MSN_IS_CONNECTION_CLASS(klass) \ > >+ (G_TYPE_CHECK_CLASS_TYPE((klass), MSN_TYPE_CONNECTION)) > >+#define MSN_CONNECTION_GET_CLASS(obj) \ > >+ (G_TYPE_INSTANCE_GET_CLASS ((obj), MSN_TYPE_CONNECTION, > >MsnConnectionClass)) > >+ > >+MsnConnection *msn_connection_new(MsnConnectionType type); > >+ > >+G_END_DECLS > >+ > >+#endif /* #ifndef __MSN_CONNECTION_H__*/ > > > >Added: trunk/msnlib/msn.c > >=================================================================== > >--- trunk/msnlib/msn.c (rev 0) > >+++ trunk/msnlib/msn.c 2006-08-07 14:51:28 UTC (rev 7115) > >@@ -0,0 +1,43 @@ > >+/* > >+ * msn.c - > >+ * Copyright (C) 2006 > >+ * Copyright (C) 2006 > >+ * > >+ * This library is free software; you can redistribute it and/or > >+ * modify it under the terms of the GNU Lesser General Public > >+ * License as published by the Free Software Foundation; either > >+ * version 2.1 of the License, or (at your option) any later version. > >+ * > >+ * This library 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 > >+ * Lesser General Public License for more details. > >+ * > >+ * You should have received a copy of the GNU Lesser General Public > >+ * License along with this library; if not, write to the Free > >Software > >+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA > >02110-1301 USA > >+ */ > >+ > >+#include <stdio.h> > >+#include <stdlib.h> > >+#include <string.h> > >+#include <unistd.h> > >+ > >+#include "msn.h" > >+#include "msn-connection.h" > >+ > >+GMainLoop *mainloop = NULL; > >+MsnConnection *conn = NULL; > >+ > >+int > >+main (int argc, > >+ char **argv) > >+{ > >+ g_type_init(); > >+ g_set_prgname("msn-test"); > >+ conn = msn_connection_new(MSN_DS_CONNECTION); > >+ mainloop = g_main_loop_new (NULL, FALSE); > >+ g_main_loop_run (mainloop); > >+ > >+ return 0; > >+} > > > >Added: trunk/msnlib/msn.h > >=================================================================== > >--- trunk/msnlib/msn.h (rev 0) > >+++ trunk/msnlib/msn.h 2006-08-07 14:51:28 UTC (rev 7115) > >@@ -0,0 +1,32 @@ > >+/* > >+ * msn.h - > >+ * Copyright (C) 2006 > >+ * Copyright (C) 2006 > >+ * > >+ * This library is free software; you can redistribute it and/or > >+ * modify it under the terms of the GNU Lesser General Public > >+ * License as published by the Free Software Foundation; either > >+ * version 2.1 of the License, or (at your option) any later version. > >+ * > >+ * This library 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 > >+ * Lesser General Public License for more details. > >+ * > >+ * You should have received a copy of the GNU Lesser General Public > >+ * License along with this library; if not, write to the Free > >Software > >+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA > >02110-1301 USA > >+ */ > >+ > >+#ifndef __MSN_H__ > >+#define __MSN_H__ > >+ > >+#include <glib.h> > >+#include <glib-object.h> > >+ > >+G_BEGIN_DECLS > >+ > >+G_END_DECLS > >+ > >+#endif /* #ifndef __MSN_H__*/ > >+ > > > > > >This was sent by the SourceForge.net collaborative development > >platform, the world's largest Open Source development site. > > > > > >---------------------------------------------------------------------- > >--- > >Using Tomcat but need to do more? Need to support web services, > >security? > >Get stuff done quickly with pre-integrated technology to make your > >job easier > >Download IBM WebSphere Application Server v.1.0.1 based on Apache > >Geronimo > >http://sel.as-us.falkag.net/sel? > >cmd=lnk&kid=120709&bid=263057&dat=121642 > >_______________________________________________ > >Amsn-commits mailing list > >[EMAIL PROTECTED] > >https://lists.sourceforge.net/lists/listinfo/amsn-commits > > ------------------------------------------------------------------------- > Using Tomcat but need to do more? Need to support web services, security? > Get stuff done quickly with pre-integrated technology to make your job easier > Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo > http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 > _______________________________________________ > Amsn-devel mailing list > Amsn-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/amsn-devel ------------------------------------------------------------------------- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 _______________________________________________ Amsn-devel mailing list Amsn-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/amsn-devel