adium 3113:751a7ad968fa: For some reason, this caused issues in ...
commits at adium.im
commits at adium.im
Tue Feb 9 01:59:11 UTC 2010
details: http://hg.adium.im/adium/rev/751a7ad968fa
revision: 3113:751a7ad968fa
author: Stephen Holt <sholt at adium.im>
date: Mon Feb 08 20:52:04 2010 -0500
For some reason, this caused issues in gst_init. Needs investigatoin.
Backed out changeset a6983fef0bd4
diffs (truncated from 3833 to 1000 lines):
diff -r a6983fef0bd4 -r 751a7ad968fa Frameworks/libglib.framework/Versions/2.0.0/libglib
Binary file Frameworks/libglib.framework/Versions/2.0.0/libglib has changed
diff -r a6983fef0bd4 -r 751a7ad968fa Frameworks/libgmodule.framework/Versions/2.0.0/libgmodule
Binary file Frameworks/libgmodule.framework/Versions/2.0.0/libgmodule has changed
diff -r a6983fef0bd4 -r 751a7ad968fa Frameworks/libgobject.framework/Versions/2.0.0/libgobject
Binary file Frameworks/libgobject.framework/Versions/2.0.0/libgobject has changed
diff -r a6983fef0bd4 -r 751a7ad968fa Frameworks/libgstbase.framework/Versions/0.10.0/libgstbase
Binary file Frameworks/libgstbase.framework/Versions/0.10.0/libgstbase has changed
diff -r a6983fef0bd4 -r 751a7ad968fa Frameworks/libgstfarsight.framework/Versions/0.10.0/libgstfarsight
Binary file Frameworks/libgstfarsight.framework/Versions/0.10.0/libgstfarsight has changed
diff -r a6983fef0bd4 -r 751a7ad968fa Frameworks/libgstinterfaces.framework/Versions/0.10.0/libgstinterfaces
Binary file Frameworks/libgstinterfaces.framework/Versions/0.10.0/libgstinterfaces has changed
diff -r a6983fef0bd4 -r 751a7ad968fa Frameworks/libgstreamer.framework/PlugIns/libfsfunnel.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libfsfunnel.so has changed
diff -r a6983fef0bd4 -r 751a7ad968fa Frameworks/libgstreamer.framework/PlugIns/libfsmsnconference.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libfsmsnconference.so has changed
diff -r a6983fef0bd4 -r 751a7ad968fa Frameworks/libgstreamer.framework/PlugIns/libfsrtcpfilter.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libfsrtcpfilter.so has changed
diff -r a6983fef0bd4 -r 751a7ad968fa Frameworks/libgstreamer.framework/PlugIns/libfsrtpconference.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libfsrtpconference.so has changed
diff -r a6983fef0bd4 -r 751a7ad968fa Frameworks/libgstreamer.framework/PlugIns/libfsselector.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libfsselector.so has changed
diff -r a6983fef0bd4 -r 751a7ad968fa Frameworks/libgstreamer.framework/PlugIns/libfsvideoanyrate.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libfsvideoanyrate.so has changed
diff -r a6983fef0bd4 -r 751a7ad968fa Frameworks/libgstreamer.framework/PlugIns/libgstadder.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstadder.so has changed
diff -r a6983fef0bd4 -r 751a7ad968fa Frameworks/libgstreamer.framework/PlugIns/libgstalaw.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstalaw.so has changed
diff -r a6983fef0bd4 -r 751a7ad968fa Frameworks/libgstreamer.framework/PlugIns/libgstapp.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstapp.so has changed
diff -r a6983fef0bd4 -r 751a7ad968fa Frameworks/libgstreamer.framework/PlugIns/libgstaudioconvert.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstaudioconvert.so has changed
diff -r a6983fef0bd4 -r 751a7ad968fa Frameworks/libgstreamer.framework/PlugIns/libgstaudiorate.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstaudiorate.so has changed
diff -r a6983fef0bd4 -r 751a7ad968fa Frameworks/libgstreamer.framework/PlugIns/libgstaudioresample.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstaudioresample.so has changed
diff -r a6983fef0bd4 -r 751a7ad968fa Frameworks/libgstreamer.framework/PlugIns/libgstautodetect.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstautodetect.so has changed
diff -r a6983fef0bd4 -r 751a7ad968fa Frameworks/libgstreamer.framework/PlugIns/libgstcoreelements.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstcoreelements.so has changed
diff -r a6983fef0bd4 -r 751a7ad968fa Frameworks/libgstreamer.framework/PlugIns/libgstcoreindexers.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstcoreindexers.so has changed
diff -r a6983fef0bd4 -r 751a7ad968fa Frameworks/libgstreamer.framework/PlugIns/libgstequalizer.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstequalizer.so has changed
diff -r a6983fef0bd4 -r 751a7ad968fa Frameworks/libgstreamer.framework/PlugIns/libgstffmpegcolorspace.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstffmpegcolorspace.so has changed
diff -r a6983fef0bd4 -r 751a7ad968fa Frameworks/libgstreamer.framework/PlugIns/libgstflxdec.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstflxdec.so has changed
diff -r a6983fef0bd4 -r 751a7ad968fa Frameworks/libgstreamer.framework/PlugIns/libgstgdp.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstgdp.so has changed
diff -r a6983fef0bd4 -r 751a7ad968fa Frameworks/libgstreamer.framework/PlugIns/libgstjrtp.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstjrtp.so has changed
diff -r a6983fef0bd4 -r 751a7ad968fa Frameworks/libgstreamer.framework/PlugIns/libgstlevel.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstlevel.so has changed
diff -r a6983fef0bd4 -r 751a7ad968fa Frameworks/libgstreamer.framework/PlugIns/libgstmulaw.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstmulaw.so has changed
diff -r a6983fef0bd4 -r 751a7ad968fa Frameworks/libgstreamer.framework/PlugIns/libgstnetsim.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstnetsim.so has changed
diff -r a6983fef0bd4 -r 751a7ad968fa Frameworks/libgstreamer.framework/PlugIns/libgstnice.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstnice.so has changed
diff -r a6983fef0bd4 -r 751a7ad968fa Frameworks/libgstreamer.framework/PlugIns/libgstosxaudio.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstosxaudio.so has changed
diff -r a6983fef0bd4 -r 751a7ad968fa Frameworks/libgstreamer.framework/PlugIns/libgstosxvideosink.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstosxvideosink.so has changed
diff -r a6983fef0bd4 -r 751a7ad968fa Frameworks/libgstreamer.framework/PlugIns/libgstrtp.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstrtp.so has changed
diff -r a6983fef0bd4 -r 751a7ad968fa Frameworks/libgstreamer.framework/PlugIns/libgstrtpdemux.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstrtpdemux.so has changed
diff -r a6983fef0bd4 -r 751a7ad968fa Frameworks/libgstreamer.framework/PlugIns/libgstrtpjitterbuffer.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstrtpjitterbuffer.so has changed
diff -r a6983fef0bd4 -r 751a7ad968fa Frameworks/libgstreamer.framework/PlugIns/libgstrtppayloads.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstrtppayloads.so has changed
diff -r a6983fef0bd4 -r 751a7ad968fa Frameworks/libgstreamer.framework/PlugIns/libgstrtsp.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstrtsp.so has changed
diff -r a6983fef0bd4 -r 751a7ad968fa Frameworks/libgstreamer.framework/PlugIns/libgsttcp.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgsttcp.so has changed
diff -r a6983fef0bd4 -r 751a7ad968fa Frameworks/libgstreamer.framework/PlugIns/libgsttypefindfunctions.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgsttypefindfunctions.so has changed
diff -r a6983fef0bd4 -r 751a7ad968fa Frameworks/libgstreamer.framework/PlugIns/libgstudp.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstudp.so has changed
diff -r a6983fef0bd4 -r 751a7ad968fa Frameworks/libgstreamer.framework/PlugIns/libgstvideobox.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstvideobox.so has changed
diff -r a6983fef0bd4 -r 751a7ad968fa Frameworks/libgstreamer.framework/PlugIns/libgstvideocrop.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstvideocrop.so has changed
diff -r a6983fef0bd4 -r 751a7ad968fa Frameworks/libgstreamer.framework/PlugIns/libgstvideomixer.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstvideomixer.so has changed
diff -r a6983fef0bd4 -r 751a7ad968fa Frameworks/libgstreamer.framework/PlugIns/libgstvideorate.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstvideorate.so has changed
diff -r a6983fef0bd4 -r 751a7ad968fa Frameworks/libgstreamer.framework/PlugIns/libgstvideoscale.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstvideoscale.so has changed
diff -r a6983fef0bd4 -r 751a7ad968fa Frameworks/libgstreamer.framework/PlugIns/libgstvolume.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstvolume.so has changed
diff -r a6983fef0bd4 -r 751a7ad968fa Frameworks/libgstreamer.framework/PlugIns/libgstwavenc.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstwavenc.so has changed
diff -r a6983fef0bd4 -r 751a7ad968fa Frameworks/libgstreamer.framework/PlugIns/libgstwavparse.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstwavparse.so has changed
diff -r a6983fef0bd4 -r 751a7ad968fa Frameworks/libgstreamer.framework/PlugIns/libgsty4menc.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgsty4menc.so has changed
diff -r a6983fef0bd4 -r 751a7ad968fa Frameworks/libgstreamer.framework/Versions/0.10.0/libgstreamer
Binary file Frameworks/libgstreamer.framework/Versions/0.10.0/libgstreamer has changed
diff -r a6983fef0bd4 -r 751a7ad968fa Frameworks/libgthread.framework/Versions/2.0.0/libgthread
Binary file Frameworks/libgthread.framework/Versions/2.0.0/libgthread has changed
diff -r a6983fef0bd4 -r 751a7ad968fa Frameworks/libintl.framework/Versions/8/libintl
Binary file Frameworks/libintl.framework/Versions/8/libintl has changed
diff -r a6983fef0bd4 -r 751a7ad968fa Frameworks/libjson-glib.framework/Headers
--- a/Frameworks/libjson-glib.framework/Headers Mon Feb 08 18:49:48 2010 -0500
+++ b/Frameworks/libjson-glib.framework/Headers Mon Feb 08 20:52:04 2010 -0500
@@ -1,1 +1,1 @@
-Versions/1.0.0/Headers
\ No newline at end of file
+Versions/Current/Headers
\ No newline at end of file
diff -r a6983fef0bd4 -r 751a7ad968fa Frameworks/libjson-glib.framework/Resources
--- a/Frameworks/libjson-glib.framework/Resources Mon Feb 08 18:49:48 2010 -0500
+++ b/Frameworks/libjson-glib.framework/Resources Mon Feb 08 20:52:04 2010 -0500
@@ -1,1 +1,1 @@
-Versions/1.0.0/Resources
\ No newline at end of file
+Versions/Current/Resources
\ No newline at end of file
diff -r a6983fef0bd4 -r 751a7ad968fa Frameworks/libjson-glib.framework/Versions/1.0.0/libjson-glib
Binary file Frameworks/libjson-glib.framework/Versions/1.0.0/libjson-glib has changed
diff -r a6983fef0bd4 -r 751a7ad968fa Frameworks/libmeanwhile.framework/Versions/1/libmeanwhile
Binary file Frameworks/libmeanwhile.framework/Versions/1/libmeanwhile has changed
diff -r a6983fef0bd4 -r 751a7ad968fa Frameworks/libotr.framework/Versions/2.2.0/Resources/Info.plist
Binary file Frameworks/libotr.framework/Versions/2.2.0/Resources/Info.plist has changed
diff -r a6983fef0bd4 -r 751a7ad968fa Frameworks/libotr.framework/Versions/2.2.0/libotr
Binary file Frameworks/libotr.framework/Versions/2.2.0/libotr has changed
diff -r a6983fef0bd4 -r 751a7ad968fa Frameworks/libpurple.framework/Headers
--- a/Frameworks/libpurple.framework/Headers Mon Feb 08 18:49:48 2010 -0500
+++ b/Frameworks/libpurple.framework/Headers Mon Feb 08 20:52:04 2010 -0500
@@ -1,1 +1,1 @@
-Versions/0.6.5/Headers
\ No newline at end of file
+Versions/Current/Headers
\ No newline at end of file
diff -r a6983fef0bd4 -r 751a7ad968fa Frameworks/libpurple.framework/Resources
--- a/Frameworks/libpurple.framework/Resources Mon Feb 08 18:49:48 2010 -0500
+++ b/Frameworks/libpurple.framework/Resources Mon Feb 08 20:52:04 2010 -0500
@@ -1,1 +1,1 @@
-Versions/0.6.5/Resources
\ No newline at end of file
+Versions/Current/Resources
\ No newline at end of file
diff -r a6983fef0bd4 -r 751a7ad968fa Frameworks/libpurple.framework/Versions/0.6.5/Headers/fix_purple.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Frameworks/libpurple.framework/Versions/0.6.5/Headers/fix_purple.h Mon Feb 08 20:52:04 2010 -0500
@@ -0,0 +1,39 @@
+/**
+ * Copyright (C) 2007-2008 Felipe Contreras
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#ifndef FIX_PURPLE_H
+#define FIX_PURPLE_H
+
+struct _PurpleConnection;
+
+#include <glib.h>
+
+#if !GLIB_CHECK_VERSION(2,3,1)
+
+#if GLIB_SIZEOF_LONG == 8
+#define G_GSIZE_FORMAT "lu"
+#else
+#define G_GSIZE_FORMAT "u"
+#endif
+
+#endif /* !GLIB_CHECK_VERSION(2,3,1) */
+
+void purple_buddy_set_displayname (struct _PurpleConnection *gc, const gchar *who, const gchar *value);
+void purple_buddy_set_nickname (struct _PurpleConnection *gc, const gchar *who, const gchar *value);
+
+#endif /* FIX_PURPLE_H */
diff -r a6983fef0bd4 -r 751a7ad968fa Frameworks/libpurple.framework/Versions/0.6.5/Headers/fix_purple_win32.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Frameworks/libpurple.framework/Versions/0.6.5/Headers/fix_purple_win32.h Mon Feb 08 20:52:04 2010 -0500
@@ -0,0 +1,30 @@
+/**
+ * Copyright (C) 2007-2008 Felipe Contreras
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#ifndef FIX_PURPLE_WIN32_H
+#define FIX_PURPLE_WIN32_H
+
+#ifndef G_GNUC_NULL_TERMINATED
+#if __GNUC__ >= 4
+#define G_GNUC_NULL_TERMINATED __attribute__((__sentinel__))
+#else
+#define G_GNUC_NULL_TERMINATED
+#endif
+#endif
+
+#endif /* FIX_PURPLE_WIN32_H */
diff -r a6983fef0bd4 -r 751a7ad968fa Frameworks/libpurple.framework/Versions/0.6.5/Headers/libgadu-i386.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Frameworks/libpurple.framework/Versions/0.6.5/Headers/libgadu-i386.h Mon Feb 08 20:52:04 2010 -0500
@@ -0,0 +1,1393 @@
+/* include/libgadu.h. Generated from libgadu.h.in by configure. */
+/* $Id: libgadu.h.in,v 1.5.2.1 2007-04-21 23:44:25 wojtekka Exp $ */
+
+/*
+ * (C) Copyright 2001-2003 Wojtek Kaniewski <wojtekka at irc.pl>
+ * Robert J. Wo¼ny <speedy at ziew.org>
+ * Arkadiusz Mi¶kiewicz <arekm at pld-linux.org>
+ * Tomasz Chiliñski <chilek at chilan.com>
+ * Piotr Wysocki <wysek at linux.bydg.org>
+ * Dawid Jarosz <dawjar at poczta.onet.pl>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License Version
+ * 2.1 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307,
+ * USA.
+ */
+
+#ifndef __GG_LIBGADU_H
+#define __GG_LIBGADU_H
+
+#ifdef __cplusplus
+#ifdef _WIN32
+#pragma pack(push, 1)
+#endif
+extern "C" {
+#endif
+
+#include <sys/types.h>
+#include <stdio.h>
+#include <stdarg.h>
+
+/* Defined if libgadu was compiled for bigendian machine. */
+/* #undef GG_CONFIG_BIGENDIAN */
+
+/* Defined if this machine has gethostbyname_r(). */
+/* #undef GG_CONFIG_HAVE_GETHOSTBYNAME_R */
+
+/* Defined if libgadu was compiled and linked with pthread support. */
+/* #undef GG_CONFIG_HAVE_PTHREAD */
+
+/* Defined if this machine has C99-compiliant vsnprintf(). */
+#define GG_CONFIG_HAVE_C99_VSNPRINTF
+
+/* Defined if this machine has va_copy(). */
+#define GG_CONFIG_HAVE_VA_COPY
+
+/* Defined if this machine has __va_copy(). */
+#define GG_CONFIG_HAVE___VA_COPY
+
+/* Defined if this machine supports long long. */
+#define GG_CONFIG_HAVE_LONG_LONG
+
+/* Defined if libgadu was compiled and linked with TLS support. */
+#define GG_CONFIG_HAVE_OPENSSL
+
+/* Defined if uintX_t types are defined in <stdint.h>. */
+#define GG_CONFIG_HAVE_STDINT_H
+
+/* Defined if uintX_t types are defined in <inttypes.h>. */
+/* #undef GG_CONFIG_HAVE_INTTYPES_H */
+
+/* Defined if uintX_t types are defined in <sys/inttypes.h>. */
+/* #undef GG_CONFIG_HAVE_SYS_INTTYPES_H */
+
+/* Defined if uintX_t types are defined in <sys/int_types.h>. */
+/* #undef GG_CONFIG_HAVE_SYS_INT_TYPES_H */
+
+/* Defined if uintX_t types are defined in <sys/types.h>. */
+/* #undef GG_CONFIG_HAVE_SYS_TYPES_H */
+
+#ifdef GG_CONFIG_HAVE_OPENSSL
+#include <openssl/ssl.h>
+#endif
+
+#ifdef GG_CONFIG_HAVE_STDINT_H
+#include <stdint.h>
+#else
+# ifdef GG_CONFIG_HAVE_INTTYPES_H
+# include <inttypes.h>
+# else
+# ifdef GG_CONFIG_HAVE_SYS_INTTYPES_H
+# include <sys/inttypes.h>
+# else
+# ifdef GG_CONFIG_HAVE_SYS_INT_TYPES_H
+# include <sys/int_types.h>
+# else
+# ifdef GG_CONFIG_HAVE_SYS_TYPES_H
+# include <sys/types.h>
+# else
+
+#ifndef __AC_STDINT_H
+#define __AC_STDINT_H
+
+/* ISO C 9X: 7.18 Integer types <stdint.h> */
+
+typedef unsigned char uint8_t;
+typedef unsigned short uint16_t;
+typedef unsigned int uint32_t;
+
+#ifndef __CYGWIN__
+#define __int8_t_defined
+typedef signed char int8_t;
+typedef signed short int16_t;
+typedef signed int int32_t;
+#endif
+
+#endif /* __AC_STDINT_H */
+
+# endif
+# endif
+# endif
+# endif
+#endif
+
+/*
+ * typedef uin_t
+ *
+ * typ reprezentuj±cy numer osoby.
+ */
+typedef uint32_t uin_t;
+
+/*
+ * ogólna struktura opisuj±ca ró¿ne sesje. przydatna w klientach.
+ */
+#define gg_common_head(x) \
+ int fd; /* podgl±dany deskryptor */ \
+ int check; /* sprawdzamy zapis czy odczyt */ \
+ int state; /* aktualny stan maszynki */ \
+ int error; /* kod b³êdu dla GG_STATE_ERROR */ \
+ int type; /* rodzaj sesji */ \
+ int id; /* identyfikator */ \
+ int timeout; /* sugerowany timeout w sekundach */ \
+ int (*callback)(x*); /* callback przy zmianach */ \
+ void (*destroy)(x*); /* funkcja niszczenia */
+
+struct gg_common {
+ gg_common_head(struct gg_common)
+};
+
+struct gg_image_queue;
+
+/*
+ * struct gg_session
+ *
+ * struktura opisuj±ca dan± sesjê. tworzona przez gg_login(), zwalniana
+ * przez gg_free_session().
+ */
+struct gg_session {
+ gg_common_head(struct gg_session)
+
+ int async; /* czy po³±czenie jest asynchroniczne */
+ int pid; /* pid procesu resolvera */
+ int port; /* port, z którym siê ³±czymy */
+ int seq; /* numer sekwencyjny ostatniej wiadomo¶ci */
+ int last_pong; /* czas otrzymania ostatniego ping/pong */
+ int last_event; /* czas otrzymania ostatniego pakietu */
+
+ struct gg_event *event; /* zdarzenie po ->callback() */
+
+ uint32_t proxy_addr; /* adres proxy, keszowany */
+ uint16_t proxy_port; /* port proxy */
+
+ uint32_t hub_addr; /* adres huba po resolvniêciu */
+ uint32_t server_addr; /* adres serwera, od huba */
+
+ uint32_t client_addr; /* adres klienta */
+ uint16_t client_port; /* port, na którym klient s³ucha */
+
+ uint32_t external_addr; /* adres zewnetrzny klienta */
+ uint16_t external_port; /* port zewnetrzny klienta */
+
+ uin_t uin; /* numerek klienta */
+ char *password; /* i jego has³o. zwalniane automagicznie */
+
+ int initial_status; /* pocz±tkowy stan klienta */
+ int status; /* aktualny stan klienta */
+
+ char *recv_buf; /* bufor na otrzymywane pakiety */
+ int recv_done; /* ile ju¿ wczytano do bufora */
+ int recv_left; /* i ile jeszcze trzeba wczytaæ */
+
+ int protocol_version; /* wersja u¿ywanego protoko³u */
+ char *client_version; /* wersja u¿ywanego klienta */
+ int last_sysmsg; /* ostatnia wiadomo¶æ systemowa */
+
+ char *initial_descr; /* pocz±tkowy opis stanu klienta */
+
+ void *resolver; /* wska¼nik na informacje resolvera */
+
+ char *header_buf; /* bufor na pocz±tek nag³ówka */
+ unsigned int header_done;/* ile ju¿ mamy */
+
+#ifdef GG_CONFIG_HAVE_OPENSSL
+ SSL *ssl; /* sesja TLS */
+ SSL_CTX *ssl_ctx; /* kontekst sesji? */
+#else
+ void *ssl; /* zachowujemy ABI */
+ void *ssl_ctx;
+#endif
+
+ int image_size; /* maksymalny rozmiar obrazków w KiB */
+
+ char *userlist_reply; /* fragment odpowiedzi listy kontaktów */
+
+ int userlist_blocks; /* na ile kawa³ków podzielono listê kontaktów */
+
+ struct gg_image_queue *images; /* aktualnie wczytywane obrazki */
+};
+
+/*
+ * struct gg_http
+ *
+ * ogólna struktura opisuj±ca stan wszystkich operacji HTTP. tworzona
+ * przez gg_http_connect(), zwalniana przez gg_http_free().
+ */
+struct gg_http {
+ gg_common_head(struct gg_http)
+
+ int async; /* czy po³±czenie asynchroniczne */
+ int pid; /* pid procesu resolvera */
+ int port; /* port, z którym siê ³±czymy */
+
+ char *query; /* bufor zapytania http */
+ char *header; /* bufor nag³ówka */
+ int header_size; /* rozmiar wczytanego nag³ówka */
+ char *body; /* bufor otrzymanych informacji */
+ unsigned int body_size; /* oczekiwana ilo¶æ informacji */
+
+ void *data; /* dane danej operacji http */
+
+ char *user_data; /* dane u¿ytkownika, nie s± zwalniane przez gg_http_free() */
+
+ void *resolver; /* wska¼nik na informacje resolvera */
+
+ unsigned int body_done; /* ile ju¿ tre¶ci odebrano? */
+};
+
+#ifdef __GNUC__
+#define GG_PACKED __attribute__ ((packed))
+#else
+#define GG_PACKED
+#endif
+
+#define GG_MAX_PATH 276
+
+/*
+ * struct gg_file_info
+ *
+ * odpowiednik windowsowej struktury WIN32_FIND_DATA niezbêdnej przy
+ * wysy³aniu plików.
+ */
+struct gg_file_info {
+ uint32_t mode; /* dwFileAttributes */
+ uint32_t ctime[2]; /* ftCreationTime */
+ uint32_t atime[2]; /* ftLastAccessTime */
+ uint32_t mtime[2]; /* ftLastWriteTime */
+ uint32_t size_hi; /* nFileSizeHigh */
+ uint32_t size; /* nFileSizeLow */
+ uint32_t reserved0; /* dwReserved0 */
+ uint32_t reserved1; /* dwReserved1 */
+ unsigned char filename[GG_MAX_PATH - 14]; /* cFileName */
+ unsigned char short_filename[14]; /* cAlternateFileName */
+} GG_PACKED;
+
+/*
+ * struct gg_dcc
+ *
+ * struktura opisuj±ca nas³uchuj±ce gniazdo po³±czeñ miêdzy klientami.
+ * tworzona przez gg_dcc_socket_create(), zwalniana przez gg_dcc_free().
+ */
+struct gg_dcc {
+ gg_common_head(struct gg_dcc)
+
+ struct gg_event *event; /* opis zdarzenia */
+
+ int active; /* czy to my siê ³±czymy? */
+ int port; /* port, na którym siedzi */
+ uin_t uin; /* uin klienta */
+ uin_t peer_uin; /* uin drugiej strony */
+ int file_fd; /* deskryptor pliku */
+ unsigned int offset; /* offset w pliku */
+ unsigned int chunk_size;/* rozmiar kawa³ka */
+ unsigned int chunk_offset;/* offset w aktualnym kawa³ku */
+ struct gg_file_info file_info;
+ /* informacje o pliku */
+ int established; /* po³±czenie ustanowione */
+ char *voice_buf; /* bufor na pakiet po³±czenia g³osowego */
+ int incoming; /* po³±czenie przychodz±ce */
+ char *chunk_buf; /* bufor na kawa³ek danych */
+ uint32_t remote_addr; /* adres drugiej strony */
+ uint16_t remote_port; /* port drugiej strony */
+};
+
+/*
+ * enum gg_session_t
+ *
+ * rodzaje sesji.
+ */
+enum gg_session_t {
+ GG_SESSION_GG = 1, /* po³±czenie z serwerem gg */
+ GG_SESSION_HTTP, /* ogólna sesja http */
+ GG_SESSION_SEARCH, /* szukanie */
+ GG_SESSION_REGISTER, /* rejestrowanie */
+ GG_SESSION_REMIND, /* przypominanie has³a */
+ GG_SESSION_PASSWD, /* zmiana has³a */
+ GG_SESSION_CHANGE, /* zmiana informacji o sobie */
+ GG_SESSION_DCC, /* ogólne po³±czenie DCC */
+ GG_SESSION_DCC_SOCKET, /* nas³uchuj±cy socket */
+ GG_SESSION_DCC_SEND, /* wysy³anie pliku */
+ GG_SESSION_DCC_GET, /* odbieranie pliku */
+ GG_SESSION_DCC_VOICE, /* rozmowa g³osowa */
+ GG_SESSION_USERLIST_GET, /* pobieranie userlisty */
+ GG_SESSION_USERLIST_PUT, /* wysy³anie userlisty */
+ GG_SESSION_UNREGISTER, /* usuwanie konta */
+ GG_SESSION_USERLIST_REMOVE, /* usuwanie userlisty */
+ GG_SESSION_TOKEN, /* pobieranie tokenu */
+
+ GG_SESSION_USER0 = 256, /* zdefiniowana dla u¿ytkownika */
+ GG_SESSION_USER1, /* j.w. */
+ GG_SESSION_USER2, /* j.w. */
+ GG_SESSION_USER3, /* j.w. */
+ GG_SESSION_USER4, /* j.w. */
+ GG_SESSION_USER5, /* j.w. */
+ GG_SESSION_USER6, /* j.w. */
+ GG_SESSION_USER7 /* j.w. */
+};
+
+/*
+ * enum gg_state_t
+ *
+ * opisuje stan asynchronicznej maszyny.
+ */
+enum gg_state_t {
+ /* wspólne */
+ GG_STATE_IDLE = 0, /* nie powinno wyst±piæ. */
+ GG_STATE_RESOLVING, /* wywo³a³ gethostbyname() */
+ GG_STATE_CONNECTING, /* wywo³a³ connect() */
+ GG_STATE_READING_DATA, /* czeka na dane http */
+ GG_STATE_ERROR, /* wyst±pi³ b³±d. kod w x->error */
+
+ /* gg_session */
+ GG_STATE_CONNECTING_HUB, /* wywo³a³ connect() na huba */
+ GG_STATE_CONNECTING_GG, /* wywo³a³ connect() na serwer */
+ GG_STATE_READING_KEY, /* czeka na klucz */
+ GG_STATE_READING_REPLY, /* czeka na odpowied¼ */
+ GG_STATE_CONNECTED, /* po³±czy³ siê */
+
+ /* gg_http */
+ GG_STATE_SENDING_QUERY, /* wysy³a zapytanie http */
+ GG_STATE_READING_HEADER, /* czeka na nag³ówek http */
+ GG_STATE_PARSING, /* przetwarza dane */
+ GG_STATE_DONE, /* skoñczy³ */
+
+ /* gg_dcc */
+ GG_STATE_LISTENING, /* czeka na po³±czenia */
+ GG_STATE_READING_UIN_1, /* czeka na uin peera */
+ GG_STATE_READING_UIN_2, /* czeka na swój uin */
+ GG_STATE_SENDING_ACK, /* wysy³a potwierdzenie dcc */
+ GG_STATE_READING_ACK, /* czeka na potwierdzenie dcc */
+ GG_STATE_READING_REQUEST, /* czeka na komendê */
+ GG_STATE_SENDING_REQUEST, /* wysy³a komendê */
+ GG_STATE_SENDING_FILE_INFO, /* wysy³a informacje o pliku */
+ GG_STATE_READING_PRE_FILE_INFO, /* czeka na pakiet przed file_info */
+ GG_STATE_READING_FILE_INFO, /* czeka na informacje o pliku */
+ GG_STATE_SENDING_FILE_ACK, /* wysy³a potwierdzenie pliku */
+ GG_STATE_READING_FILE_ACK, /* czeka na potwierdzenie pliku */
+ GG_STATE_SENDING_FILE_HEADER, /* wysy³a nag³ówek pliku */
+ GG_STATE_READING_FILE_HEADER, /* czeka na nag³ówek */
+ GG_STATE_GETTING_FILE, /* odbiera plik */
+ GG_STATE_SENDING_FILE, /* wysy³a plik */
+ GG_STATE_READING_VOICE_ACK, /* czeka na potwierdzenie voip */
+ GG_STATE_READING_VOICE_HEADER, /* czeka na rodzaj bloku voip */
+ GG_STATE_READING_VOICE_SIZE, /* czeka na rozmiar bloku voip */
+ GG_STATE_READING_VOICE_DATA, /* czeka na dane voip */
+ GG_STATE_SENDING_VOICE_ACK, /* wysy³a potwierdzenie voip */
+ GG_STATE_SENDING_VOICE_REQUEST, /* wysy³a ¿±danie voip */
+ GG_STATE_READING_TYPE, /* czeka na typ po³±czenia */
+
+ /* nowe. bez sensu jest to API. */
+ GG_STATE_TLS_NEGOTIATION /* negocjuje po³±czenie TLS */
+};
+
+/*
+ * enum gg_check_t
+ *
+ * informuje, co proces klienta powinien sprawdziæ na deskryptorze danego
+ * po³±czenia.
+ */
+enum gg_check_t {
+ GG_CHECK_NONE = 0, /* nic. nie powinno wyst±piæ */
+ GG_CHECK_WRITE = 1, /* sprawdzamy mo¿liwo¶æ zapisu */
+ GG_CHECK_READ = 2 /* sprawdzamy mo¿liwo¶æ odczytu */
+};
+
+/*
+ * struct gg_login_params
+ *
+ * parametry gg_login(). przeniesiono do struktury, ¿eby unikn±æ problemów
+ * z ci±g³ymi zmianami API, gdy dodano co¶ nowego do protoko³u.
+ */
+struct gg_login_params {
+ uin_t uin; /* numerek */
+ char *password; /* has³o */
+ int async; /* asynchroniczne sockety? */
+ int status; /* pocz±tkowy status klienta */
+ char *status_descr; /* opis statusu */
+ uint32_t server_addr; /* adres serwera gg */
+ uint16_t server_port; /* port serwera gg */
+ uint32_t client_addr; /* adres dcc klienta */
+ uint16_t client_port; /* port dcc klienta */
+ int protocol_version; /* wersja protoko³u */
+ char *client_version; /* wersja klienta */
+ int has_audio; /* czy ma d¼wiêk? */
+ int last_sysmsg; /* ostatnia wiadomo¶æ systemowa */
+ uint32_t external_addr; /* adres widziany na zewnatrz */
+ uint16_t external_port; /* port widziany na zewnatrz */
+ int tls; /* czy ³±czymy po TLS? */
+ int image_size; /* maksymalny rozmiar obrazka w KiB */
+ int era_omnix; /* czy udawaæ klienta era omnix? */
+
+ char dummy[6 * sizeof(int)]; /* miejsce na kolejnych 6 zmiennych,
+ * ¿eby z dodaniem parametru nie
+ * zmienia³ siê rozmiar struktury */
+};
+
+struct gg_session *gg_login(const struct gg_login_params *p);
+void gg_free_session(struct gg_session *sess);
+void gg_logoff(struct gg_session *sess);
+int gg_change_status(struct gg_session *sess, int status);
+int gg_change_status_descr(struct gg_session *sess, int status, const char *descr);
+int gg_change_status_descr_time(struct gg_session *sess, int status, const char *descr, int time);
+int gg_send_message(struct gg_session *sess, int msgclass, uin_t recipient, const unsigned char *message);
+int gg_send_message_richtext(struct gg_session *sess, int msgclass, uin_t recipient, const unsigned char *message, const unsigned char *format, int formatlen);
+int gg_send_message_confer(struct gg_session *sess, int msgclass, int recipients_count, uin_t *recipients, const unsigned char *message);
+int gg_send_message_confer_richtext(struct gg_session *sess, int msgclass, int recipients_count, uin_t *recipients, const unsigned char *message, const unsigned char *format, int formatlen);
+int gg_send_message_ctcp(struct gg_session *sess, int msgclass, uin_t recipient, const unsigned char *message, int message_len);
+int gg_ping(struct gg_session *sess);
+int gg_userlist_request(struct gg_session *sess, char type, const char *request);
+int gg_image_request(struct gg_session *sess, uin_t recipient, int size, uint32_t crc32);
+int gg_image_reply(struct gg_session *sess, uin_t recipient, const char *filename, const char *image, int size);
+
+uint32_t gg_crc32(uint32_t crc, const unsigned char *buf, int len);
+
+struct gg_image_queue {
+ uin_t sender; /* nadawca obrazka */
+ uint32_t size; /* rozmiar */
+ uint32_t crc32; /* suma kontrolna */
+ char *filename; /* nazwa pliku */
+ char *image; /* bufor z obrazem */
+ uint32_t done; /* ile ju¿ wczytano */
+
+ struct gg_image_queue *next; /* nastêpny na li¶cie */
+};
+
+/*
+ * enum gg_event_t
+ *
+ * rodzaje zdarzeñ.
+ */
+enum gg_event_t {
+ GG_EVENT_NONE = 0, /* nic siê nie wydarzy³o */
+ GG_EVENT_MSG, /* otrzymano wiadomo¶æ */
+ GG_EVENT_NOTIFY, /* kto¶ siê pojawi³ */
+ GG_EVENT_NOTIFY_DESCR, /* kto¶ siê pojawi³ z opisem */
+ GG_EVENT_STATUS, /* kto¶ zmieni³ stan */
+ GG_EVENT_ACK, /* potwierdzenie wys³ania wiadomo¶ci */
+ GG_EVENT_PONG, /* pakiet pong */
+ GG_EVENT_CONN_FAILED, /* po³±czenie siê nie uda³o */
+ GG_EVENT_CONN_SUCCESS, /* po³±czenie siê powiod³o */
+ GG_EVENT_DISCONNECT, /* serwer zrywa po³±czenie */
+
+ GG_EVENT_DCC_NEW, /* nowe po³±czenie miêdzy klientami */
+ GG_EVENT_DCC_ERROR, /* b³±d po³±czenia miêdzy klientami */
+ GG_EVENT_DCC_DONE, /* zakoñczono po³±czenie */
+ GG_EVENT_DCC_CLIENT_ACCEPT, /* moment akceptacji klienta */
+ GG_EVENT_DCC_CALLBACK, /* klient siê po³±czy³ na ¿±danie */
+ GG_EVENT_DCC_NEED_FILE_INFO, /* nale¿y wype³niæ file_info */
+ GG_EVENT_DCC_NEED_FILE_ACK, /* czeka na potwierdzenie pliku */
+ GG_EVENT_DCC_NEED_VOICE_ACK, /* czeka na potwierdzenie rozmowy */
+ GG_EVENT_DCC_VOICE_DATA, /* ramka danych rozmowy g³osowej */
+
+ GG_EVENT_PUBDIR50_SEARCH_REPLY, /* odpowiedz wyszukiwania */
+ GG_EVENT_PUBDIR50_READ, /* odczytano w³asne dane z katalogu */
+ GG_EVENT_PUBDIR50_WRITE, /* wpisano w³asne dane do katalogu */
+
+ GG_EVENT_STATUS60, /* kto¶ zmieni³ stan w GG 6.0 */
+ GG_EVENT_NOTIFY60, /* kto¶ siê pojawi³ w GG 6.0 */
+ GG_EVENT_USERLIST, /* odpowied¼ listy kontaktów w GG 6.0 */
+ GG_EVENT_IMAGE_REQUEST, /* pro¶ba o wys³anie obrazka GG 6.0 */
+ GG_EVENT_IMAGE_REPLY, /* podes³any obrazek GG 6.0 */
+ GG_EVENT_DCC_ACK /* potwierdzenie transmisji */
+};
+
+#define GG_EVENT_SEARCH50_REPLY GG_EVENT_PUBDIR50_SEARCH_REPLY
+
+/*
+ * enum gg_failure_t
+ *
+ * okre¶la powód nieudanego po³±czenia.
+ */
+enum gg_failure_t {
+ GG_FAILURE_RESOLVING = 1, /* nie znaleziono serwera */
+ GG_FAILURE_CONNECTING, /* nie mo¿na siê po³±czyæ */
+ GG_FAILURE_INVALID, /* serwer zwróci³ nieprawid³owe dane */
+ GG_FAILURE_READING, /* zerwano po³±czenie podczas odczytu */
+ GG_FAILURE_WRITING, /* zerwano po³±czenie podczas zapisu */
+ GG_FAILURE_PASSWORD, /* nieprawid³owe has³o */
+ GG_FAILURE_404, /* XXX nieu¿ywane */
+ GG_FAILURE_TLS, /* b³±d negocjacji TLS */
+ GG_FAILURE_NEED_EMAIL, /* serwer roz³±czy³ nas z pro¶b± o zmianê emaila */
+ GG_FAILURE_INTRUDER, /* za du¿o prób po³±czenia siê z nieprawid³owym has³em */
+ GG_FAILURE_UNAVAILABLE /* serwery s± wy³±czone */
+};
+
+/*
+ * enum gg_error_t
+ *
+ * okre¶la rodzaj b³êdu wywo³anego przez dan± operacjê. nie zawiera
+ * przesadnie szczegó³owych informacji o powodzie b³êdu, by nie komplikowaæ
+ * obs³ugi b³êdów. je¶li wymagana jest wiêksza dok³adno¶æ, nale¿y sprawdziæ
+ * zawarto¶æ zmiennej errno.
+ */
+enum gg_error_t {
+ GG_ERROR_RESOLVING = 1, /* b³±d znajdowania hosta */
+ GG_ERROR_CONNECTING, /* b³±d ³aczenia siê */
+ GG_ERROR_READING, /* b³±d odczytu */
+ GG_ERROR_WRITING, /* b³±d wysy³ania */
+
+ GG_ERROR_DCC_HANDSHAKE, /* b³±d negocjacji */
+ GG_ERROR_DCC_FILE, /* b³±d odczytu/zapisu pliku */
+ GG_ERROR_DCC_EOF, /* plik siê skoñczy³? */
+ GG_ERROR_DCC_NET, /* b³±d wysy³ania/odbierania */
+ GG_ERROR_DCC_REFUSED /* po³±czenie odrzucone przez usera */
+};
+
+/*
+ * struktury dotycz±ce wyszukiwania w GG 5.0. NIE NALE¯Y SIÊ DO NICH
+ * ODWO£YWAÆ BEZPO¦REDNIO! do dostêpu do nich s³u¿± funkcje gg_pubdir50_*()
+ */
+struct gg_pubdir50_entry {
+ int num;
+ char *field;
+ char *value;
+};
+
+struct gg_pubdir50_s {
+ int count;
+ uin_t next;
+ int type;
+ uint32_t seq;
+ struct gg_pubdir50_entry *entries;
+ int entries_count;
+};
+
+/*
+ * typedef gg_pubdir_50_t
+ *
+ * typ opisuj±cy zapytanie lub wynik zapytania katalogu publicznego
+ * z protoko³u GG 5.0. nie nale¿y siê odwo³ywaæ bezpo¶rednio do jego
+ * pól -- s³u¿± do tego funkcje gg_pubdir50_*()
+ */
+typedef struct gg_pubdir50_s *gg_pubdir50_t;
+
+/*
+ * struct gg_event
+ *
+ * struktura opisuj±ca rodzaj zdarzenia. wychodzi z gg_watch_fd() lub
+ * z gg_dcc_watch_fd()
+ */
+struct gg_event {
+ int type; /* rodzaj zdarzenia -- gg_event_t */
+ union { /* @event */
+ struct gg_notify_reply *notify; /* informacje o li¶cie kontaktów -- GG_EVENT_NOTIFY */
+
+ enum gg_failure_t failure; /* b³±d po³±czenia -- GG_EVENT_FAILURE */
+
+ struct gg_dcc *dcc_new; /* nowe po³±czenie bezpo¶rednie -- GG_EVENT_DCC_NEW */
+
+ int dcc_error; /* b³±d po³±czenia bezpo¶redniego -- GG_EVENT_DCC_ERROR */
+
+ gg_pubdir50_t pubdir50; /* wynik operacji zwi±zanej z katalogiem publicznym -- GG_EVENT_PUBDIR50_* */
+
+ struct { /* @msg odebrano wiadomo¶æ -- GG_EVENT_MSG */
+ uin_t sender; /* numer nadawcy */
+ int msgclass; /* klasa wiadomo¶ci */
+ time_t time; /* czas nadania */
+ unsigned char *message; /* tre¶æ wiadomo¶ci */
+
+ int recipients_count; /* ilo¶æ odbiorców konferencji */
+ uin_t *recipients; /* odbiorcy konferencji */
+
+ int formats_length; /* d³ugo¶æ informacji o formatowaniu tekstu */
+ void *formats; /* informacje o formatowaniu tekstu */
+ } msg;
+
+ struct { /* @notify_descr informacje o li¶cie kontaktów z opisami stanu -- GG_EVENT_NOTIFY_DESCR */
+ struct gg_notify_reply *notify; /* informacje o li¶cie kontaktów */
+ char *descr; /* opis stanu */
+ } notify_descr;
+
+ struct { /* @status zmiana stanu -- GG_EVENT_STATUS */
+ uin_t uin; /* numer */
+ uint32_t status; /* nowy stan */
+ char *descr; /* opis stanu */
+ } status;
+
+ struct { /* @status60 zmiana stanu -- GG_EVENT_STATUS60 */
+ uin_t uin; /* numer */
+ int status; /* nowy stan */
+ uint32_t remote_ip; /* adres ip */
+ uint16_t remote_port; /* port */
+ int version; /* wersja klienta */
+ int image_size; /* maksymalny rozmiar grafiki w KiB */
+ char *descr; /* opis stanu */
+ time_t time; /* czas powrotu */
+ } status60;
+
+ struct { /* @notify60 informacja o li¶cie kontaktów -- GG_EVENT_NOTIFY60 */
+ uin_t uin; /* numer */
+ int status; /* stan */
+ uint32_t remote_ip; /* adres ip */
+ uint16_t remote_port; /* port */
+ int version; /* wersja klienta */
+ int image_size; /* maksymalny rozmiar grafiki w KiB */
+ char *descr; /* opis stanu */
+ time_t time; /* czas powrotu */
+ } *notify60;
+
+ struct { /* @ack potwierdzenie wiadomo¶ci -- GG_EVENT_ACK */
+ uin_t recipient; /* numer odbiorcy */
+ int status; /* stan dorêczenia wiadomo¶ci */
+ int seq; /* numer sekwencyjny wiadomo¶ci */
+ } ack;
+
+ struct { /* @dcc_voice_data otrzymano dane d¼wiêkowe -- GG_EVENT_DCC_VOICE_DATA */
+ uint8_t *data; /* dane d¼wiêkowe */
+ int length; /* ilo¶æ danych d¼wiêkowych */
+ } dcc_voice_data;
+
+ struct { /* @userlist odpowied¼ listy kontaktów serwera */
+ char type; /* rodzaj odpowiedzi */
+ char *reply; /* tre¶æ odpowiedzi */
+ } userlist;
+
+ struct { /* @image_request pro¶ba o obrazek */
+ uin_t sender; /* nadawca pro¶by */
+ uint32_t size; /* rozmiar obrazka */
+ uint32_t crc32; /* suma kontrolna */
+ } image_request;
+
+ struct { /* @image_reply odpowied¼ z obrazkiem */
+ uin_t sender; /* nadawca odpowiedzi */
+ uint32_t size; /* rozmiar obrazka */
+ uint32_t crc32; /* suma kontrolna */
+ char *filename; /* nazwa pliku */
+ char *image; /* bufor z obrazkiem */
+ } image_reply;
+ } event;
+};
+
+struct gg_event *gg_watch_fd(struct gg_session *sess);
+void gg_event_free(struct gg_event *e);
+#define gg_free_event gg_event_free
+
+/*
+ * funkcje obs³ugi listy kontaktów.
+ */
+int gg_notify_ex(struct gg_session *sess, uin_t *userlist, char *types, int count);
+int gg_notify(struct gg_session *sess, uin_t *userlist, int count);
+int gg_add_notify_ex(struct gg_session *sess, uin_t uin, char type);
+int gg_add_notify(struct gg_session *sess, uin_t uin);
+int gg_remove_notify_ex(struct gg_session *sess, uin_t uin, char type);
+int gg_remove_notify(struct gg_session *sess, uin_t uin);
+
+/*
+ * funkcje obs³ugi http.
+ */
+struct gg_http *gg_http_connect(const char *hostname, int port, int async, const char *method, const char *path, const char *header);
+int gg_http_watch_fd(struct gg_http *h);
+void gg_http_stop(struct gg_http *h);
+void gg_http_free(struct gg_http *h);
+void gg_http_free_fields(struct gg_http *h);
+#define gg_free_http gg_http_free
+
+/*
+ * struktury opisuj±ca kryteria wyszukiwania dla gg_search(). nieaktualne,
+ * zast±pione przez gg_pubdir50_t. pozostawiono je dla zachowania ABI.
+ */
+struct gg_search_request {
+ int active;
+ unsigned int start;
+ char *nickname;
+ char *first_name;
+ char *last_name;
+ char *city;
+ int gender;
+ int min_birth;
+ int max_birth;
+ char *email;
+ char *phone;
+ uin_t uin;
+};
+
+struct gg_search {
+ int count;
+ struct gg_search_result *results;
+};
+
+struct gg_search_result {
+ uin_t uin;
+ char *first_name;
+ char *last_name;
+ char *nickname;
+ int born;
+ int gender;
+ char *city;
+ int active;
+};
+
+#define GG_GENDER_NONE 0
+#define GG_GENDER_FEMALE 1
+#define GG_GENDER_MALE 2
+
+/*
+ * funkcje wyszukiwania.
+ */
+struct gg_http *gg_search(const struct gg_search_request *r, int async);
+int gg_search_watch_fd(struct gg_http *f);
+void gg_free_search(struct gg_http *f);
+#define gg_search_free gg_free_search
+
+const struct gg_search_request *gg_search_request_mode_0(char *nickname, char *first_name, char *last_name, char *city, int gender, int min_birth, int max_birth, int active, int start);
+const struct gg_search_request *gg_search_request_mode_1(char *email, int active, int start);
+const struct gg_search_request *gg_search_request_mode_2(char *phone, int active, int start);
+const struct gg_search_request *gg_search_request_mode_3(uin_t uin, int active, int start);
+void gg_search_request_free(struct gg_search_request *r);
+
+/*
+ * funkcje obs³ugi katalogu publicznego zgodne z GG 5.0. tym razem funkcje
+ * zachowuj± pewien poziom abstrakcji, ¿eby unikn±æ zmian ABI przy zmianach
+ * w protokole.
+ *
+ * NIE NALE¯Y SIÊ ODWO£YWAÆ DO PÓL gg_pubdir50_t BEZPO¦REDNIO!
+ */
+uint32_t gg_pubdir50(struct gg_session *sess, gg_pubdir50_t req);
+gg_pubdir50_t gg_pubdir50_new(int type);
+int gg_pubdir50_add(gg_pubdir50_t req, const char *field, const char *value);
+int gg_pubdir50_seq_set(gg_pubdir50_t req, uint32_t seq);
+const char *gg_pubdir50_get(gg_pubdir50_t res, int num, const char *field);
+int gg_pubdir50_type(gg_pubdir50_t res);
+int gg_pubdir50_count(gg_pubdir50_t res);
+uin_t gg_pubdir50_next(gg_pubdir50_t res);
+uint32_t gg_pubdir50_seq(gg_pubdir50_t res);
+void gg_pubdir50_free(gg_pubdir50_t res);
+
+#define GG_PUBDIR50_UIN "FmNumber"
+#define GG_PUBDIR50_STATUS "FmStatus"
+#define GG_PUBDIR50_FIRSTNAME "firstname"
+#define GG_PUBDIR50_LASTNAME "lastname"
+#define GG_PUBDIR50_NICKNAME "nickname"
+#define GG_PUBDIR50_BIRTHYEAR "birthyear"
+#define GG_PUBDIR50_CITY "city"
+#define GG_PUBDIR50_GENDER "gender"
+#define GG_PUBDIR50_GENDER_FEMALE "1"
+#define GG_PUBDIR50_GENDER_MALE "2"
+#define GG_PUBDIR50_GENDER_SET_FEMALE "2"
More information about the commits
mailing list