adium 3111:f7e8fd586c8f: Build libpurple and dependancies with -...

commits at adium.im commits at adium.im
Mon Feb 8 23:55:50 UTC 2010


details:	http://hg.adium.im/adium/rev/f7e8fd586c8f
revision:	3111:f7e8fd586c8f
author:		Stephen Holt <sholt at adium.im>
date:		Mon Feb 08 18:49:14 2010 -0500

Build libpurple and dependancies with -Os...
Subject: adium 3112:a6983fef0bd4: Apparently... building with -Os gives us a huge binary size win. Imagine that.

details:	http://hg.adium.im/adium/rev/a6983fef0bd4
revision:	3112:a6983fef0bd4
author:		Stephen Holt <sholt at adium.im>
date:		Mon Feb 08 18:49:48 2010 -0500

Apparently... building with -Os gives us a huge binary size win. Imagine that.

diffs (truncated from 3846 to 1000 lines):

diff -r 3d0a53def683 -r a6983fef0bd4 Dependencies/build.sh
--- a/Dependencies/build.sh	Thu Feb 04 20:37:55 2010 -0500
+++ b/Dependencies/build.sh	Mon Feb 08 18:49:48 2010 -0500
@@ -25,7 +25,8 @@
 BASE_CFLAGS="-fstack-protector -isysroot $SDK_ROOT \
 	-mmacosx-version-min=$MIN_OS_VERSION \
 	-I$ROOTDIR/build/include \
-	-L$ROOTDIR/build/lib"
+	-L$ROOTDIR/build/lib \
+	-Os"
 BASE_LDFLAGS="-mmacosx-version-min=$MIN_OS_VERSION \
 	-Wl,-syslibroot,$SDK_ROOT \
 	-Wl,-headerpad_max_install_names \
diff -r 3d0a53def683 -r a6983fef0bd4 Frameworks/libglib.framework/Versions/2.0.0/libglib
Binary file Frameworks/libglib.framework/Versions/2.0.0/libglib has changed
diff -r 3d0a53def683 -r a6983fef0bd4 Frameworks/libgmodule.framework/Versions/2.0.0/libgmodule
Binary file Frameworks/libgmodule.framework/Versions/2.0.0/libgmodule has changed
diff -r 3d0a53def683 -r a6983fef0bd4 Frameworks/libgobject.framework/Versions/2.0.0/libgobject
Binary file Frameworks/libgobject.framework/Versions/2.0.0/libgobject has changed
diff -r 3d0a53def683 -r a6983fef0bd4 Frameworks/libgstbase.framework/Versions/0.10.0/libgstbase
Binary file Frameworks/libgstbase.framework/Versions/0.10.0/libgstbase has changed
diff -r 3d0a53def683 -r a6983fef0bd4 Frameworks/libgstfarsight.framework/Versions/0.10.0/libgstfarsight
Binary file Frameworks/libgstfarsight.framework/Versions/0.10.0/libgstfarsight has changed
diff -r 3d0a53def683 -r a6983fef0bd4 Frameworks/libgstinterfaces.framework/Versions/0.10.0/libgstinterfaces
Binary file Frameworks/libgstinterfaces.framework/Versions/0.10.0/libgstinterfaces has changed
diff -r 3d0a53def683 -r a6983fef0bd4 Frameworks/libgstreamer.framework/PlugIns/libfsfunnel.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libfsfunnel.so has changed
diff -r 3d0a53def683 -r a6983fef0bd4 Frameworks/libgstreamer.framework/PlugIns/libfsmsnconference.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libfsmsnconference.so has changed
diff -r 3d0a53def683 -r a6983fef0bd4 Frameworks/libgstreamer.framework/PlugIns/libfsrtcpfilter.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libfsrtcpfilter.so has changed
diff -r 3d0a53def683 -r a6983fef0bd4 Frameworks/libgstreamer.framework/PlugIns/libfsrtpconference.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libfsrtpconference.so has changed
diff -r 3d0a53def683 -r a6983fef0bd4 Frameworks/libgstreamer.framework/PlugIns/libfsselector.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libfsselector.so has changed
diff -r 3d0a53def683 -r a6983fef0bd4 Frameworks/libgstreamer.framework/PlugIns/libfsvideoanyrate.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libfsvideoanyrate.so has changed
diff -r 3d0a53def683 -r a6983fef0bd4 Frameworks/libgstreamer.framework/PlugIns/libgstadder.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstadder.so has changed
diff -r 3d0a53def683 -r a6983fef0bd4 Frameworks/libgstreamer.framework/PlugIns/libgstalaw.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstalaw.so has changed
diff -r 3d0a53def683 -r a6983fef0bd4 Frameworks/libgstreamer.framework/PlugIns/libgstapp.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstapp.so has changed
diff -r 3d0a53def683 -r a6983fef0bd4 Frameworks/libgstreamer.framework/PlugIns/libgstaudioconvert.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstaudioconvert.so has changed
diff -r 3d0a53def683 -r a6983fef0bd4 Frameworks/libgstreamer.framework/PlugIns/libgstaudiorate.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstaudiorate.so has changed
diff -r 3d0a53def683 -r a6983fef0bd4 Frameworks/libgstreamer.framework/PlugIns/libgstaudioresample.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstaudioresample.so has changed
diff -r 3d0a53def683 -r a6983fef0bd4 Frameworks/libgstreamer.framework/PlugIns/libgstautodetect.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstautodetect.so has changed
diff -r 3d0a53def683 -r a6983fef0bd4 Frameworks/libgstreamer.framework/PlugIns/libgstcoreelements.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstcoreelements.so has changed
diff -r 3d0a53def683 -r a6983fef0bd4 Frameworks/libgstreamer.framework/PlugIns/libgstcoreindexers.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstcoreindexers.so has changed
diff -r 3d0a53def683 -r a6983fef0bd4 Frameworks/libgstreamer.framework/PlugIns/libgstequalizer.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstequalizer.so has changed
diff -r 3d0a53def683 -r a6983fef0bd4 Frameworks/libgstreamer.framework/PlugIns/libgstffmpegcolorspace.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstffmpegcolorspace.so has changed
diff -r 3d0a53def683 -r a6983fef0bd4 Frameworks/libgstreamer.framework/PlugIns/libgstflxdec.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstflxdec.so has changed
diff -r 3d0a53def683 -r a6983fef0bd4 Frameworks/libgstreamer.framework/PlugIns/libgstgdp.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstgdp.so has changed
diff -r 3d0a53def683 -r a6983fef0bd4 Frameworks/libgstreamer.framework/PlugIns/libgstjrtp.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstjrtp.so has changed
diff -r 3d0a53def683 -r a6983fef0bd4 Frameworks/libgstreamer.framework/PlugIns/libgstlevel.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstlevel.so has changed
diff -r 3d0a53def683 -r a6983fef0bd4 Frameworks/libgstreamer.framework/PlugIns/libgstmulaw.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstmulaw.so has changed
diff -r 3d0a53def683 -r a6983fef0bd4 Frameworks/libgstreamer.framework/PlugIns/libgstnetsim.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstnetsim.so has changed
diff -r 3d0a53def683 -r a6983fef0bd4 Frameworks/libgstreamer.framework/PlugIns/libgstnice.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstnice.so has changed
diff -r 3d0a53def683 -r a6983fef0bd4 Frameworks/libgstreamer.framework/PlugIns/libgstosxaudio.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstosxaudio.so has changed
diff -r 3d0a53def683 -r a6983fef0bd4 Frameworks/libgstreamer.framework/PlugIns/libgstosxvideosink.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstosxvideosink.so has changed
diff -r 3d0a53def683 -r a6983fef0bd4 Frameworks/libgstreamer.framework/PlugIns/libgstrtp.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstrtp.so has changed
diff -r 3d0a53def683 -r a6983fef0bd4 Frameworks/libgstreamer.framework/PlugIns/libgstrtpdemux.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstrtpdemux.so has changed
diff -r 3d0a53def683 -r a6983fef0bd4 Frameworks/libgstreamer.framework/PlugIns/libgstrtpjitterbuffer.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstrtpjitterbuffer.so has changed
diff -r 3d0a53def683 -r a6983fef0bd4 Frameworks/libgstreamer.framework/PlugIns/libgstrtppayloads.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstrtppayloads.so has changed
diff -r 3d0a53def683 -r a6983fef0bd4 Frameworks/libgstreamer.framework/PlugIns/libgstrtsp.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstrtsp.so has changed
diff -r 3d0a53def683 -r a6983fef0bd4 Frameworks/libgstreamer.framework/PlugIns/libgsttcp.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgsttcp.so has changed
diff -r 3d0a53def683 -r a6983fef0bd4 Frameworks/libgstreamer.framework/PlugIns/libgsttypefindfunctions.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgsttypefindfunctions.so has changed
diff -r 3d0a53def683 -r a6983fef0bd4 Frameworks/libgstreamer.framework/PlugIns/libgstudp.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstudp.so has changed
diff -r 3d0a53def683 -r a6983fef0bd4 Frameworks/libgstreamer.framework/PlugIns/libgstvideobox.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstvideobox.so has changed
diff -r 3d0a53def683 -r a6983fef0bd4 Frameworks/libgstreamer.framework/PlugIns/libgstvideocrop.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstvideocrop.so has changed
diff -r 3d0a53def683 -r a6983fef0bd4 Frameworks/libgstreamer.framework/PlugIns/libgstvideomixer.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstvideomixer.so has changed
diff -r 3d0a53def683 -r a6983fef0bd4 Frameworks/libgstreamer.framework/PlugIns/libgstvideorate.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstvideorate.so has changed
diff -r 3d0a53def683 -r a6983fef0bd4 Frameworks/libgstreamer.framework/PlugIns/libgstvideoscale.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstvideoscale.so has changed
diff -r 3d0a53def683 -r a6983fef0bd4 Frameworks/libgstreamer.framework/PlugIns/libgstvolume.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstvolume.so has changed
diff -r 3d0a53def683 -r a6983fef0bd4 Frameworks/libgstreamer.framework/PlugIns/libgstwavenc.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstwavenc.so has changed
diff -r 3d0a53def683 -r a6983fef0bd4 Frameworks/libgstreamer.framework/PlugIns/libgstwavparse.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgstwavparse.so has changed
diff -r 3d0a53def683 -r a6983fef0bd4 Frameworks/libgstreamer.framework/PlugIns/libgsty4menc.so
Binary file Frameworks/libgstreamer.framework/PlugIns/libgsty4menc.so has changed
diff -r 3d0a53def683 -r a6983fef0bd4 Frameworks/libgstreamer.framework/Versions/0.10.0/libgstreamer
Binary file Frameworks/libgstreamer.framework/Versions/0.10.0/libgstreamer has changed
diff -r 3d0a53def683 -r a6983fef0bd4 Frameworks/libgthread.framework/Versions/2.0.0/libgthread
Binary file Frameworks/libgthread.framework/Versions/2.0.0/libgthread has changed
diff -r 3d0a53def683 -r a6983fef0bd4 Frameworks/libintl.framework/Versions/8/libintl
Binary file Frameworks/libintl.framework/Versions/8/libintl has changed
diff -r 3d0a53def683 -r a6983fef0bd4 Frameworks/libjson-glib.framework/Headers
--- a/Frameworks/libjson-glib.framework/Headers	Thu Feb 04 20:37:55 2010 -0500
+++ b/Frameworks/libjson-glib.framework/Headers	Mon Feb 08 18:49:48 2010 -0500
@@ -1,1 +1,1 @@
-Versions/Current/Headers
\ No newline at end of file
+Versions/1.0.0/Headers
\ No newline at end of file
diff -r 3d0a53def683 -r a6983fef0bd4 Frameworks/libjson-glib.framework/Resources
--- a/Frameworks/libjson-glib.framework/Resources	Thu Feb 04 20:37:55 2010 -0500
+++ b/Frameworks/libjson-glib.framework/Resources	Mon Feb 08 18:49:48 2010 -0500
@@ -1,1 +1,1 @@
-Versions/Current/Resources
\ No newline at end of file
+Versions/1.0.0/Resources
\ No newline at end of file
diff -r 3d0a53def683 -r a6983fef0bd4 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 3d0a53def683 -r a6983fef0bd4 Frameworks/libmeanwhile.framework/Versions/1/libmeanwhile
Binary file Frameworks/libmeanwhile.framework/Versions/1/libmeanwhile has changed
diff -r 3d0a53def683 -r a6983fef0bd4 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 3d0a53def683 -r a6983fef0bd4 Frameworks/libotr.framework/Versions/2.2.0/libotr
Binary file Frameworks/libotr.framework/Versions/2.2.0/libotr has changed
diff -r 3d0a53def683 -r a6983fef0bd4 Frameworks/libpurple.framework/Headers
--- a/Frameworks/libpurple.framework/Headers	Thu Feb 04 20:37:55 2010 -0500
+++ b/Frameworks/libpurple.framework/Headers	Mon Feb 08 18:49:48 2010 -0500
@@ -1,1 +1,1 @@
-Versions/Current/Headers
\ No newline at end of file
+Versions/0.6.5/Headers
\ No newline at end of file
diff -r 3d0a53def683 -r a6983fef0bd4 Frameworks/libpurple.framework/Resources
--- a/Frameworks/libpurple.framework/Resources	Thu Feb 04 20:37:55 2010 -0500
+++ b/Frameworks/libpurple.framework/Resources	Mon Feb 08 18:49:48 2010 -0500
@@ -1,1 +1,1 @@
-Versions/Current/Resources
\ No newline at end of file
+Versions/0.6.5/Resources
\ No newline at end of file
diff -r 3d0a53def683 -r a6983fef0bd4 Frameworks/libpurple.framework/Versions/0.6.5/Headers/fix_purple.h
--- a/Frameworks/libpurple.framework/Versions/0.6.5/Headers/fix_purple.h	Thu Feb 04 20:37:55 2010 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
-/**
- * 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 3d0a53def683 -r a6983fef0bd4 Frameworks/libpurple.framework/Versions/0.6.5/Headers/fix_purple_win32.h
--- a/Frameworks/libpurple.framework/Versions/0.6.5/Headers/fix_purple_win32.h	Thu Feb 04 20:37:55 2010 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-/**
- * 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 3d0a53def683 -r a6983fef0bd4 Frameworks/libpurple.framework/Versions/0.6.5/Headers/libgadu-i386.h
--- a/Frameworks/libpurple.framework/Versions/0.6.5/Headers/libgadu-i386.h	Thu Feb 04 20:37:55 2010 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1393 +0,0 @@
-/* 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);




More information about the commits mailing list