You can subscribe to this list here.
| 2003 |
Jan
|
Feb
|
Mar
|
Apr
(8) |
May
(15) |
Jun
(4) |
Jul
|
Aug
|
Sep
(44) |
Oct
(7) |
Nov
|
Dec
(26) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2004 |
Jan
(26) |
Feb
(10) |
Mar
|
Apr
|
May
(2) |
Jun
(2) |
Jul
|
Aug
(4) |
Sep
(1) |
Oct
(2) |
Nov
(3) |
Dec
(1) |
| 2005 |
Jan
|
Feb
(2) |
Mar
(2) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
| 2006 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
|
Nov
|
Dec
|
| 2007 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
|
Nov
|
Dec
(1) |
| 2008 |
Jan
|
Feb
|
Mar
|
Apr
(14) |
May
|
Jun
(13) |
Jul
|
Aug
(17) |
Sep
(3) |
Oct
(1) |
Nov
|
Dec
|
| 2009 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(4) |
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
(2) |
Dec
(3) |
| 2010 |
Jan
(3) |
Feb
|
Mar
|
Apr
(8) |
May
(1) |
Jun
(2) |
Jul
(6) |
Aug
(5) |
Sep
(6) |
Oct
|
Nov
|
Dec
|
|
From: <ka...@us...> - 2010-09-25 10:27:54
|
Revision: 390
http://libyahoo2.svn.sourceforge.net/libyahoo2/?rev=390&view=rev
Author: kay21s
Date: 2010-09-25 10:27:47 +0000 (Sat, 25 Sep 2010)
Log Message:
-----------
Add new callback function -- ext_yahoo_chat_room_received, it is called when user has received the response from server after requesting for chat room information
Modified Paths:
--------------
trunk/libyahoo2/src/libyahoo2.c
trunk/libyahoo2/src/sample_client.c
trunk/libyahoo2/src/yahoo2_callbacks.h
Modified: trunk/libyahoo2/src/libyahoo2.c
===================================================================
--- trunk/libyahoo2/src/libyahoo2.c 2010-09-19 18:15:44 UTC (rev 389)
+++ trunk/libyahoo2/src/libyahoo2.c 2010-09-25 10:27:47 UTC (rev 390)
@@ -3120,7 +3120,7 @@
return info;
}
-static void parse_chat_cat_xml(int id, const char *xml)
+static int parse_chat_cat_xml(int id, const char *xml)
{
struct yahoo_data *yd = find_conn_by_id(id);
struct yahoo_input_data *yid = find_input_by_id_and_type(id, YAHOO_CONNECTION_CHATCAT);
@@ -3129,7 +3129,7 @@
YList *room_list;
YList *list_ptr;
YList *cat_stack[5];
- int stack_ptr = 0;
+ int stack_ptr = 0, room_id = 0;
YList *temp, *child, *tail, *category;
room_list = y_new0(struct _YList, 1);
@@ -3138,6 +3138,7 @@
if (content == NULL) {
category = find_room_category(yd->chat_room_list, yid->chat_room_id);
+ room_id = yid->chat_room_id;
content = strdup(xml);
content = strstr(content, "<chatRooms>");
@@ -3188,6 +3189,7 @@
((yahoo_chatroom_category *)(category->data))->room_list = room_list->next;
} else {
+ room_id = 0;
while(stack_ptr >= 0) {
/* prev is used as a pointer linked with its child categories */
@@ -3235,19 +3237,26 @@
yd->chat_room_list = room_list->next;
}
FREE(room_list); /* free the head node */
+ return room_id;
}
static void yahoo_process_chatcat_connection(struct yahoo_input_data *yid, int over)
{
+ int room_id;
+
if (over)
return;
if (strstr((char *)yid->rxqueue, "</content>")) {
- parse_chat_cat_xml(yid->yd->client_id, (char *)yid->rxqueue);
+ room_id = parse_chat_cat_xml(yid->yd->client_id, (char *)yid->rxqueue);
+ YAHOO_CALLBACK(ext_yahoo_chat_room_received) (yid->yd->client_id, room_id);
+
/* ext_yahoo_chat_cat_xml() needs to be deprecated in future releases */
- YAHOO_CALLBACK(ext_yahoo_chat_cat_xml) (yid->yd->client_id,
- (char *)yid->rxqueue);
+ if (NULL != YAHOO_CALLBACK(ext_yahoo_chat_cat_xml)) {
+ YAHOO_CALLBACK(ext_yahoo_chat_cat_xml) (yid->yd->client_id,
+ (char *)yid->rxqueue);
+ }
}
}
Modified: trunk/libyahoo2/src/sample_client.c
===================================================================
--- trunk/libyahoo2/src/sample_client.c 2010-09-19 18:15:44 UTC (rev 389)
+++ trunk/libyahoo2/src/sample_client.c 2010-09-25 10:27:47 UTC (rev 390)
@@ -633,6 +633,20 @@
}
}
+static void ext_yahoo_chat_room_received(int id, int room_id)
+{
+ YList *list;
+ void *ext_data = NULL;
+
+ list = yahoo_get_chat_room_list(id, room_id, ext_data);
+ if(list) {
+ if(room_id == 0)
+ traverse_cat_list(list, 0);
+ else
+ traverse_room_list(list);
+ }
+}
+
static void ext_yahoo_chat_join(int id, const char *me, const char *room, const char * topic, YList *members, void *fd)
{
print_message(("You [%s] have joined the chatroom %s with topic %s", me, room, topic));
Modified: trunk/libyahoo2/src/yahoo2_callbacks.h
===================================================================
--- trunk/libyahoo2/src/yahoo2_callbacks.h 2010-09-19 18:15:44 UTC (rev 389)
+++ trunk/libyahoo2/src/yahoo2_callbacks.h 2010-09-25 10:27:47 UTC (rev 390)
@@ -727,6 +727,13 @@
*/
void YAHOO_CALLBACK_TYPE(ext_yahoo_chat_verify) (const char *url, char *vcode);
+/**
+ * After user request the server to send the chat room categories or chat room list, this function
+ * is called when the response is received
+ * @param id client id
+ * @param room_id chat room id, 0 if it is chat room categories
+ */
+ void YAHOO_CALLBACK_TYPE(ext_yahoo_chat_room_received) (int id, int room_id);
};
/**
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <sid...@us...> - 2010-09-19 18:15:52
|
Revision: 389
http://libyahoo2.svn.sourceforge.net/libyahoo2/?rev=389&view=rev
Author: siddheshp
Date: 2010-09-19 18:15:44 +0000 (Sun, 19 Sep 2010)
Log Message:
-----------
Add configure check for OpenSSL devel libraries if the sample client
needs to be built. sample client build is disabled if OpenSSL devel
libraries are not present.
Modified Paths:
--------------
trunk/libyahoo2/configure.ac
Modified: trunk/libyahoo2/configure.ac
===================================================================
--- trunk/libyahoo2/configure.ac 2010-09-19 15:31:25 UTC (rev 388)
+++ trunk/libyahoo2/configure.ac 2010-09-19 18:15:44 UTC (rev 389)
@@ -53,7 +53,6 @@
AC_PROG_INSTALL
# Checks for libraries.
-enable_sample_client="yes"
AC_SEARCH_LIBS(socket, socket, ,
[AC_SEARCH_LIBS(socket, socket, LIBS="$LIBS -lnsl",
enable_sample_client="no", -lnsl)])
@@ -77,7 +76,7 @@
[Define to `unsigned int' if not defined.])])
AC_CHECK_TYPE([uint64_t],,
[AC_DEFINE([uint64_t], [unsigned long long],
-[Define to `unsigned long long' if not defined.])])
+[Define to 'unsigned long long' if not defined.])])
dnl Checks for library functions.
AC_CHECK_FUNCS(strerror)
@@ -94,8 +93,46 @@
[Define if you want to use a callback structure instead of callback functions])
fi
-AC_ARG_ENABLE([sample-client], [AC_HELP_STRING([--disable-sample-client],
-[do not compile the sample client program])])
+AC_ARG_ENABLE([sample-client], AC_HELP_STRING([--disable-sample-client],
+ [do not compile the sample client program]))
+
+if test "$enable_sample_client" != no; then
+
+ AC_ARG_WITH(openssl-prefix, AC_HELP_STRING([--with-openssl-prefix=PFX],
+ [Prefix where openssl is installed (optional)]))
+
+ SSL_INCLUDES=
+ SSL_LIBDIR=
+
+ if test "$with_openssl_prefix" != ""; then
+ SSL_INCLUDES="-I${with_openssl_prefix}/include"
+ SSL_LIBDIR="-L${with_openssl_prefix}/lib"
+ fi
+
+ ac_check_lib_save_LIBS=$LIBS
+ ac_check_lib_save_CFLAGS=$CFLAGS
+
+ AC_MSG_CHECKING(for openssl)
+
+ LIBS="$SSL_LIBDIR -lssl -lcrypto $LIBS"
+ CFLAGS="$SSL_INCLUDES $CFLAGS"
+ AC_TRY_LINK([#include <openssl/opensslv.h>],
+ [ return OPENSSL_VERSION_NUMBER; ],
+ [have_openssl=yes], [have_openssl=no])
+
+ if test "$have_openssl" = yes; then
+ AC_DEFINE(HAVE_OPENSSL, 1, [Define if you have openssl])
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ AC_MSG_WARN([OpenSSL libraries not found. The sample client will not be built])
+ enable_sample_client="no"
+ fi
+
+ LIBS=$ac_check_lib_save_LIBS
+ CFLAGS=$ac_check_lib_save_CFLAGS
+fi
+
AM_CONDITIONAL(SAMPLE_CLIENT, test "$enable_sample_client" != "no")
YAHOOPKGREQ=""
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <sid...@us...> - 2010-09-19 15:31:31
|
Revision: 388
http://libyahoo2.svn.sourceforge.net/libyahoo2/?rev=388&view=rev
Author: siddheshp
Date: 2010-09-19 15:31:25 +0000 (Sun, 19 Sep 2010)
Log Message:
-----------
Move ext_yahoo_chat_verify callback to the end of the structure to
maintain backward ABI compatibility.
Modified Paths:
--------------
trunk/libyahoo2/src/yahoo2_callbacks.h
Modified: trunk/libyahoo2/src/yahoo2_callbacks.h
===================================================================
--- trunk/libyahoo2/src/yahoo2_callbacks.h 2010-09-14 19:22:31 UTC (rev 387)
+++ trunk/libyahoo2/src/yahoo2_callbacks.h 2010-09-19 15:31:25 UTC (rev 388)
@@ -237,15 +237,6 @@
const char *me, const char *who, const char *room);
/**
- * Captcha image verification. This event occurs after you request to log into a chat room
- * using yahoo_chat_room_logon
- *
- * @param url Rhe URL of the image for verification
- * @param[out] vcode Fill in the response to the captcha here
- */
- void YAHOO_CALLBACK_TYPE(ext_yahoo_chat_verify) (const char *url, char *vcode);
-
-/**
* An xml dump of the chat room categories. This is deprecated and hence may not make it
* to a future version of libyahoo2. The xml dump is protocol specific and could change
* when Yahoo modifies their chat protocol.
@@ -727,6 +718,15 @@
const char *me, const char *who, const char *old_group,
const char *new_group);
+/**
+ * Captcha image verification. This event occurs after you request to log into a chat room
+ * using yahoo_chat_room_logon
+ *
+ * @param url Rhe URL of the image for verification
+ * @param[out] vcode Fill in the response to the captcha here
+ */
+ void YAHOO_CALLBACK_TYPE(ext_yahoo_chat_verify) (const char *url, char *vcode);
+
};
/**
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <sid...@us...> - 2010-09-14 19:22:37
|
Revision: 387
http://libyahoo2.svn.sourceforge.net/libyahoo2/?rev=387&view=rev
Author: siddheshp
Date: 2010-09-14 19:22:31 +0000 (Tue, 14 Sep 2010)
Log Message:
-----------
Spec file fixes
- Included some fixes from the Fedora rpm spec file to get it to build
- Install the API documentation and man pages
- Install the sample client source code
- Remove *.la from the installation
- use parallel make
- make setup quiet
- Add doxygen to build requirements
Modified Paths:
--------------
trunk/libyahoo2/libyahoo2.spec.in
Modified: trunk/libyahoo2/libyahoo2.spec.in
===================================================================
--- trunk/libyahoo2/libyahoo2.spec.in 2010-09-12 05:07:59 UTC (rev 386)
+++ trunk/libyahoo2/libyahoo2.spec.in 2010-09-14 19:22:31 UTC (rev 387)
@@ -8,6 +8,8 @@
Source: %{name}-%{version}.tar.bz2
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
+BuildRequires: doxygen
+
%description
libyahoo2 is a C library interface to the new Yahoo! Messenger protocol. It
supports almost all current features of the protocol.
@@ -22,15 +24,19 @@
libyahoo2
%prep
-%setup
+%setup -q
%build
-%configure --with-struct-callbacks
-make
+%configure
+make %{?_smp_flags}
%install
-rm -rf $RPM_BUILD_ROOT
-make DESTDIR=$RPM_BUILD_ROOT install
+rm -rf %{buildroot}
+make DESTDIR=%{buildroot} install
+# Remove man to make way for the rest of the API to be installed in
+# the right location
+rm -rf doc/api/man
+rm -f %{buildroot}/%{_libdir}/*.la
%clean
rm -rf $RPM_BUILD_ROOT
@@ -43,12 +49,13 @@
%files devel
%defattr(-,root,root)
%doc doc/ymsg-9.txt NEWS COPYING AUTHORS README ChangeLog
+%doc doc/api src/sample_client.c src/autoresponder.c
%{_includedir}/*
%{_libdir}/*.so
%{_libdir}/*.a
%{_libdir}/pkgconfig/*
+%{_mandir}/man*/*
-
%changelog
@CHANGELOG@
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <sid...@us...> - 2010-09-12 05:08:10
|
Revision: 386
http://libyahoo2.svn.sourceforge.net/libyahoo2/?rev=386&view=rev
Author: siddheshp
Date: 2010-09-12 05:07:59 +0000 (Sun, 12 Sep 2010)
Log Message:
-----------
Doxygen style API documentation.
The documentation is generated in html, latex and man format.
Modified Paths:
--------------
trunk/libyahoo2/Makefile.am
trunk/libyahoo2/acinclude.m4
trunk/libyahoo2/configure.ac
trunk/libyahoo2/doc/Makefile.am
trunk/libyahoo2/src/yahoo2.h
trunk/libyahoo2/src/yahoo2_callbacks.h
trunk/libyahoo2/src/yahoo2_types.h
trunk/libyahoo2/src/yahoo_httplib.h
trunk/libyahoo2/src/yahoo_list.h
Added Paths:
-----------
trunk/libyahoo2/Doxyfile.in
trunk/libyahoo2/aminclude.am
trunk/libyahoo2/ax_prog_doxygen.m4
Added: trunk/libyahoo2/Doxyfile.in
===================================================================
--- trunk/libyahoo2/Doxyfile.in (rev 0)
+++ trunk/libyahoo2/Doxyfile.in 2010-09-12 05:07:59 UTC (rev 386)
@@ -0,0 +1,1635 @@
+# Doxyfile 1.7.1
+
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for a project
+#
+# All text after a hash (#) is considered a comment and will be ignored
+# The format is:
+# TAG = value [value, ...]
+# For lists items can also be appended using:
+# TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (" ")
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+
+# This tag specifies the encoding used for all characters in the config file
+# that follow. The default is UTF-8 which is also the encoding used for all
+# text before the first occurrence of this tag. Doxygen uses libiconv (or the
+# iconv built into libc) for the transcoding. See
+# http://www.gnu.org/software/libiconv for the list of possible encodings.
+
+DOXYFILE_ENCODING = UTF-8
+
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
+# by quotes) that should identify the project.
+
+PROJECT_NAME = @PACKAGE@
+
+# The PROJECT_NUMBER tag can be used to enter a project or revision number.
+# This could be handy for archiving the generated documentation or
+# if some version control system is used.
+
+PROJECT_NUMBER = @VERSION@
+
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
+# base path where the generated documentation will be put.
+# If a relative path is entered, it will be relative to the location
+# where doxygen was started. If left blank the current directory will be used.
+
+OUTPUT_DIRECTORY = doc/api
+
+# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
+# 4096 sub-directories (in 2 levels) under the output directory of each output
+# format and will distribute the generated files over these directories.
+# Enabling this option can be useful when feeding doxygen a huge amount of
+# source files, where putting all generated files in the same directory would
+# otherwise cause performance problems for the file system.
+
+CREATE_SUBDIRS = NO
+
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all
+# documentation generated by doxygen is written. Doxygen will use this
+# information to generate all constant output in the proper language.
+# The default language is English, other supported languages are:
+# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
+# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German,
+# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English
+# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian,
+# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak,
+# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese.
+
+OUTPUT_LANGUAGE = English
+
+# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
+# include brief member descriptions after the members that are listed in
+# the file and class documentation (similar to JavaDoc).
+# Set to NO to disable this.
+
+BRIEF_MEMBER_DESC = YES
+
+# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
+# the brief description of a member or function before the detailed description.
+# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
+# brief descriptions will be completely suppressed.
+
+REPEAT_BRIEF = YES
+
+# This tag implements a quasi-intelligent brief description abbreviator
+# that is used to form the text in various listings. Each string
+# in this list, if found as the leading text of the brief description, will be
+# stripped from the text and the result after processing the whole list, is
+# used as the annotated text. Otherwise, the brief description is used as-is.
+# If left blank, the following values are used ("$name" is automatically
+# replaced with the name of the entity): "The $name class" "The $name widget"
+# "The $name file" "is" "provides" "specifies" "contains"
+# "represents" "a" "an" "the"
+
+ABBREVIATE_BRIEF =
+
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
+# Doxygen will generate a detailed section even if there is only a brief
+# description.
+
+ALWAYS_DETAILED_SEC = NO
+
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
+# inherited members of a class in the documentation of that class as if those
+# members were ordinary class members. Constructors, destructors and assignment
+# operators of the base classes will not be shown.
+
+INLINE_INHERITED_MEMB = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
+# path before files name in the file list and in the header files. If set
+# to NO the shortest path that makes the file name unique will be used.
+
+FULL_PATH_NAMES = YES
+
+# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
+# can be used to strip a user-defined part of the path. Stripping is
+# only done if one of the specified strings matches the left-hand part of
+# the path. The tag can be used to show relative paths in the file list.
+# If left blank the directory from which doxygen is run is used as the
+# path to strip.
+
+STRIP_FROM_PATH =
+
+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
+# the path mentioned in the documentation of a class, which tells
+# the reader which header file to include in order to use a class.
+# If left blank only the name of the header file containing the class
+# definition is used. Otherwise one should specify the include paths that
+# are normally passed to the compiler using the -I flag.
+
+STRIP_FROM_INC_PATH =
+
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
+# (but less readable) file names. This can be useful is your file systems
+# doesn't support long names like on DOS, Mac, or CD-ROM.
+
+SHORT_NAMES = NO
+
+# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
+# will interpret the first line (until the first dot) of a JavaDoc-style
+# comment as the brief description. If set to NO, the JavaDoc
+# comments will behave just like regular Qt-style comments
+# (thus requiring an explicit @brief command for a brief description.)
+
+JAVADOC_AUTOBRIEF = NO
+
+# If the QT_AUTOBRIEF tag is set to YES then Doxygen will
+# interpret the first line (until the first dot) of a Qt-style
+# comment as the brief description. If set to NO, the comments
+# will behave just like regular Qt-style comments (thus requiring
+# an explicit \brief command for a brief description.)
+
+QT_AUTOBRIEF = NO
+
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
+# treat a multi-line C++ special comment block (i.e. a block of //! or ///
+# comments) as a brief description. This used to be the default behaviour.
+# The new default is to treat a multi-line C++ comment block as a detailed
+# description. Set this tag to YES if you prefer the old behaviour instead.
+
+MULTILINE_CPP_IS_BRIEF = NO
+
+# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
+# member inherits the documentation from any documented member that it
+# re-implements.
+
+INHERIT_DOCS = YES
+
+# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
+# a new page for each member. If set to NO, the documentation of a member will
+# be part of the file/class/namespace that contains it.
+
+SEPARATE_MEMBER_PAGES = NO
+
+# The TAB_SIZE tag can be used to set the number of spaces in a tab.
+# Doxygen uses this value to replace tabs by spaces in code fragments.
+
+TAB_SIZE = 8
+
+# This tag can be used to specify a number of aliases that acts
+# as commands in the documentation. An alias has the form "name=value".
+# For example adding "sideeffect=\par Side Effects:\n" will allow you to
+# put the command \sideeffect (or @sideeffect) in the documentation, which
+# will result in a user-defined paragraph with heading "Side Effects:".
+# You can put \n's in the value part of an alias to insert newlines.
+
+ALIASES =
+
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
+# sources only. Doxygen will then generate output that is more tailored for C.
+# For instance, some of the names that are used will be different. The list
+# of all members will be omitted, etc.
+
+OPTIMIZE_OUTPUT_FOR_C = YES
+
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
+# sources only. Doxygen will then generate output that is more tailored for
+# Java. For instance, namespaces will be presented as packages, qualified
+# scopes will look different, etc.
+
+OPTIMIZE_OUTPUT_JAVA = NO
+
+# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
+# sources only. Doxygen will then generate output that is more tailored for
+# Fortran.
+
+OPTIMIZE_FOR_FORTRAN = NO
+
+# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
+# sources. Doxygen will then generate output that is tailored for
+# VHDL.
+
+OPTIMIZE_OUTPUT_VHDL = NO
+
+# Doxygen selects the parser to use depending on the extension of the files it
+# parses. With this tag you can assign which parser to use for a given extension.
+# Doxygen has a built-in mapping, but you can override or extend it using this
+# tag. The format is ext=language, where ext is a file extension, and language
+# is one of the parsers supported by doxygen: IDL, Java, Javascript, CSharp, C,
+# C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, C++. For instance to make
+# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C
+# (default is Fortran), use: inc=Fortran f=C. Note that for custom extensions
+# you also need to set FILE_PATTERNS otherwise the files are not read by doxygen.
+
+EXTENSION_MAPPING =
+
+# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
+# to include (a tag file for) the STL sources as input, then you should
+# set this tag to YES in order to let doxygen match functions declarations and
+# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
+# func(std::string) {}). This also make the inheritance and collaboration
+# diagrams that involve STL classes more complete and accurate.
+
+BUILTIN_STL_SUPPORT = NO
+
+# If you use Microsoft's C++/CLI language, you should set this option to YES to
+# enable parsing support.
+
+CPP_CLI_SUPPORT = NO
+
+# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only.
+# Doxygen will parse them like normal C++ but will assume all classes use public
+# instead of private inheritance when no explicit protection keyword is present.
+
+SIP_SUPPORT = NO
+
+# For Microsoft's IDL there are propget and propput attributes to indicate getter
+# and setter methods for a property. Setting this option to YES (the default)
+# will make doxygen to replace the get and set methods by a property in the
+# documentation. This will only work if the methods are indeed getting or
+# setting a simple type. If this is not the case, or you want to show the
+# methods anyway, you should set this option to NO.
+
+IDL_PROPERTY_SUPPORT = YES
+
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
+# tag is set to YES, then doxygen will reuse the documentation of the first
+# member in the group (if any) for the other members of the group. By default
+# all members of a group must be documented explicitly.
+
+DISTRIBUTE_GROUP_DOC = NO
+
+# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
+# the same type (for instance a group of public functions) to be put as a
+# subgroup of that type (e.g. under the Public Functions section). Set it to
+# NO to prevent subgrouping. Alternatively, this can be done per class using
+# the \nosubgrouping command.
+
+SUBGROUPING = YES
+
+# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum
+# is documented as struct, union, or enum with the name of the typedef. So
+# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
+# with name TypeT. When disabled the typedef will appear as a member of a file,
+# namespace, or class. And the struct will be named TypeS. This can typically
+# be useful for C code in case the coding convention dictates that all compound
+# types are typedef'ed and only the typedef is referenced, never the tag name.
+
+TYPEDEF_HIDES_STRUCT = YES
+
+# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to
+# determine which symbols to keep in memory and which to flush to disk.
+# When the cache is full, less often used symbols will be written to disk.
+# For small to medium size projects (<1000 input files) the default value is
+# probably good enough. For larger projects a too small cache size can cause
+# doxygen to be busy swapping symbols to and from disk most of the time
+# causing a significant performance penality.
+# If the system has enough physical memory increasing the cache will improve the
+# performance by keeping more symbols in memory. Note that the value works on
+# a logarithmic scale so increasing the size by one will rougly double the
+# memory usage. The cache size is given by this formula:
+# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0,
+# corresponding to a cache size of 2^16 = 65536 symbols
+
+SYMBOL_CACHE_SIZE = 0
+
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+
+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
+# documentation are documented, even if no documentation was available.
+# Private class members and static file members will be hidden unless
+# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
+
+EXTRACT_ALL = NO
+
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
+# will be included in the documentation.
+
+EXTRACT_PRIVATE = NO
+
+# If the EXTRACT_STATIC tag is set to YES all static members of a file
+# will be included in the documentation.
+
+EXTRACT_STATIC = NO
+
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
+# defined locally in source files will be included in the documentation.
+# If set to NO only classes defined in header files are included.
+
+EXTRACT_LOCAL_CLASSES = YES
+
+# This flag is only useful for Objective-C code. When set to YES local
+# methods, which are defined in the implementation section but not in
+# the interface are included in the documentation.
+# If set to NO (the default) only methods in the interface are included.
+
+EXTRACT_LOCAL_METHODS = NO
+
+# If this flag is set to YES, the members of anonymous namespaces will be
+# extracted and appear in the documentation as a namespace called
+# 'anonymous_namespace{file}', where file will be replaced with the base
+# name of the file that contains the anonymous namespace. By default
+# anonymous namespace are hidden.
+
+EXTRACT_ANON_NSPACES = NO
+
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
+# undocumented members of documented classes, files or namespaces.
+# If set to NO (the default) these members will be included in the
+# various overviews, but no documentation section is generated.
+# This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_MEMBERS = NO
+
+# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
+# undocumented classes that are normally visible in the class hierarchy.
+# If set to NO (the default) these classes will be included in the various
+# overviews. This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_CLASSES = NO
+
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
+# friend (class|struct|union) declarations.
+# If set to NO (the default) these declarations will be included in the
+# documentation.
+
+HIDE_FRIEND_COMPOUNDS = NO
+
+# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
+# documentation blocks found inside the body of a function.
+# If set to NO (the default) these blocks will be appended to the
+# function's detailed documentation block.
+
+HIDE_IN_BODY_DOCS = NO
+
+# The INTERNAL_DOCS tag determines if documentation
+# that is typed after a \internal command is included. If the tag is set
+# to NO (the default) then the documentation will be excluded.
+# Set it to YES to include the internal documentation.
+
+INTERNAL_DOCS = NO
+
+# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
+# file names in lower-case letters. If set to YES upper-case letters are also
+# allowed. This is useful if you have classes or files whose names only differ
+# in case and if your file system supports case sensitive file names. Windows
+# and Mac users are advised to set this option to NO.
+
+CASE_SENSE_NAMES = YES
+
+# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
+# will show members with their full class and namespace scopes in the
+# documentation. If set to YES the scope will be hidden.
+
+HIDE_SCOPE_NAMES = NO
+
+# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
+# will put a list of the files that are included by a file in the documentation
+# of that file.
+
+SHOW_INCLUDE_FILES = YES
+
+# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen
+# will list include files with double quotes in the documentation
+# rather than with sharp brackets.
+
+FORCE_LOCAL_INCLUDES = NO
+
+# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
+# is inserted in the documentation for inline members.
+
+INLINE_INFO = YES
+
+# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
+# will sort the (detailed) documentation of file and class members
+# alphabetically by member name. If set to NO the members will appear in
+# declaration order.
+
+SORT_MEMBER_DOCS = YES
+
+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
+# brief documentation of file, namespace and class members alphabetically
+# by member name. If set to NO (the default) the members will appear in
+# declaration order.
+
+SORT_BRIEF_DOCS = NO
+
+# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen
+# will sort the (brief and detailed) documentation of class members so that
+# constructors and destructors are listed first. If set to NO (the default)
+# the constructors will appear in the respective orders defined by
+# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS.
+# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO
+# and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO.
+
+SORT_MEMBERS_CTORS_1ST = NO
+
+# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the
+# hierarchy of group names into alphabetical order. If set to NO (the default)
+# the group names will appear in their defined order.
+
+SORT_GROUP_NAMES = NO
+
+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
+# sorted by fully-qualified names, including namespaces. If set to
+# NO (the default), the class list will be sorted only by class name,
+# not including the namespace part.
+# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
+# Note: This option applies only to the class list, not to the
+# alphabetical list.
+
+SORT_BY_SCOPE_NAME = NO
+
+# The GENERATE_TODOLIST tag can be used to enable (YES) or
+# disable (NO) the todo list. This list is created by putting \todo
+# commands in the documentation.
+
+GENERATE_TODOLIST = YES
+
+# The GENERATE_TESTLIST tag can be used to enable (YES) or
+# disable (NO) the test list. This list is created by putting \test
+# commands in the documentation.
+
+GENERATE_TESTLIST = YES
+
+# The GENERATE_BUGLIST tag can be used to enable (YES) or
+# disable (NO) the bug list. This list is created by putting \bug
+# commands in the documentation.
+
+GENERATE_BUGLIST = YES
+
+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
+# disable (NO) the deprecated list. This list is created by putting
+# \deprecated commands in the documentation.
+
+GENERATE_DEPRECATEDLIST= YES
+
+# The ENABLED_SECTIONS tag can be used to enable conditional
+# documentation sections, marked by \if sectionname ... \endif.
+
+ENABLED_SECTIONS =
+
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
+# the initial value of a variable or define consists of for it to appear in
+# the documentation. If the initializer consists of more lines than specified
+# here it will be hidden. Use a value of 0 to hide initializers completely.
+# The appearance of the initializer of individual variables and defines in the
+# documentation can be controlled using \showinitializer or \hideinitializer
+# command in the documentation regardless of this setting.
+
+MAX_INITIALIZER_LINES = 30
+
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
+# at the bottom of the documentation of classes and structs. If set to YES the
+# list will mention the files that were used to generate the documentation.
+
+SHOW_USED_FILES = YES
+
+# If the sources in your project are distributed over multiple directories
+# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy
+# in the documentation. The default is NO.
+
+SHOW_DIRECTORIES = NO
+
+# Set the SHOW_FILES tag to NO to disable the generation of the Files page.
+# This will remove the Files entry from the Quick Index and from the
+# Folder Tree View (if specified). The default is YES.
+
+SHOW_FILES = YES
+
+# Set the SHOW_NAMESPACES tag to NO to disable the generation of the
+# Namespaces page.
+# This will remove the Namespaces entry from the Quick Index
+# and from the Folder Tree View (if specified). The default is YES.
+
+SHOW_NAMESPACES = YES
+
+# The FILE_VERSION_FILTER tag can be used to specify a program or script that
+# doxygen should invoke to get the current version for each file (typically from
+# the version control system). Doxygen will invoke the program by executing (via
+# popen()) the command <command> <input-file>, where <command> is the value of
+# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
+# provided by doxygen. Whatever the program writes to standard output
+# is used as the file version. See the manual for examples.
+
+FILE_VERSION_FILTER =
+
+# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
+# by doxygen. The layout file controls the global structure of the generated
+# output files in an output format independent way. The create the layout file
+# that represents doxygen's defaults, run doxygen with the -l option.
+# You can optionally specify a file name after the option, if omitted
+# DoxygenLayout.xml will be used as the name of the layout file.
+
+LAYOUT_FILE =
+
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated
+# by doxygen. Possible values are YES and NO. If left blank NO is used.
+
+QUIET = NO
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are
+# generated by doxygen. Possible values are YES and NO. If left blank
+# NO is used.
+
+WARNINGS = YES
+
+# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
+# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
+# automatically be disabled.
+
+WARN_IF_UNDOCUMENTED = YES
+
+# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
+# potential errors in the documentation, such as not documenting some
+# parameters in a documented function, or documenting parameters that
+# don't exist or using markup commands wrongly.
+
+WARN_IF_DOC_ERROR = YES
+
+# This WARN_NO_PARAMDOC option can be abled to get warnings for
+# functions that are documented, but have no documentation for their parameters
+# or return value. If set to NO (the default) doxygen will only warn about
+# wrong or incomplete parameter documentation, but not about the absence of
+# documentation.
+
+WARN_NO_PARAMDOC = NO
+
+# The WARN_FORMAT tag determines the format of the warning messages that
+# doxygen can produce. The string should contain the $file, $line, and $text
+# tags, which will be replaced by the file and line number from which the
+# warning originated and the warning text. Optionally the format may contain
+# $version, which will be replaced by the version of the file (if it could
+# be obtained via FILE_VERSION_FILTER)
+
+WARN_FORMAT = "$file:$line: $text"
+
+# The WARN_LOGFILE tag can be used to specify a file to which warning
+# and error messages should be written. If left blank the output is written
+# to stderr.
+
+WARN_LOGFILE =
+
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag can be used to specify the files and/or directories that contain
+# documented source files. You may enter file names like "myfile.cpp" or
+# directories like "/usr/src/myproject". Separate the files or directories
+# with spaces.
+
+INPUT = src
+
+# This tag can be used to specify the character encoding of the source files
+# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
+# also the default input encoding. Doxygen uses libiconv (or the iconv built
+# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for
+# the list of possible encodings.
+
+INPUT_ENCODING = UTF-8
+
+# If the value of the INPUT tag contains directories, you can use the
+# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank the following patterns are tested:
+# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx
+# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90
+
+FILE_PATTERNS = yahoo2.h yahoo2_callbacks.h yahoo2_types.h yahoo_httplib.h yahoo_list.h
+
+# The RECURSIVE tag can be used to turn specify whether or not subdirectories
+# should be searched for input files as well. Possible values are YES and NO.
+# If left blank NO is used.
+
+RECURSIVE = NO
+
+# The EXCLUDE tag can be used to specify files and/or directories that should
+# excluded from the INPUT source files. This way you can easily exclude a
+# subdirectory from a directory tree whose root is specified with the INPUT tag.
+
+EXCLUDE =
+
+# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
+# directories that are symbolic links (a Unix filesystem feature) are excluded
+# from the input.
+
+EXCLUDE_SYMLINKS = NO
+
+# If the value of the INPUT tag contains directories, you can use the
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
+# certain files from those directories. Note that the wildcards are matched
+# against the file with absolute path, so to exclude all test directories
+# for example use the pattern */test/*
+
+EXCLUDE_PATTERNS =
+
+# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
+# (namespaces, classes, functions, etc.) that should be excluded from the
+# output. The symbol name can be a fully qualified name, a word, or if the
+# wildcard * is used, a substring. Examples: ANamespace, AClass,
+# AClass::ANamespace, ANamespace::*Test
+
+EXCLUDE_SYMBOLS =
+
+# The EXAMPLE_PATH tag can be used to specify one or more files or
+# directories that contain example code fragments that are included (see
+# the \include command).
+
+EXAMPLE_PATH =
+
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank all files are included.
+
+EXAMPLE_PATTERNS =
+
+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
+# searched for input files to be used with the \include or \dontinclude
+# commands irrespective of the value of the RECURSIVE tag.
+# Possible values are YES and NO. If left blank NO is used.
+
+EXAMPLE_RECURSIVE = NO
+
+# The IMAGE_PATH tag can be used to specify one or more files or
+# directories that contain image that are included in the documentation (see
+# the \image command).
+
+IMAGE_PATH =
+
+# The INPUT_FILTER tag can be used to specify a program that doxygen should
+# invoke to filter for each input file. Doxygen will invoke the filter program
+# by executing (via popen()) the command <filter> <input-file>, where <filter>
+# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
+# input file. Doxygen will then use the output that the filter program writes
+# to standard output.
+# If FILTER_PATTERNS is specified, this tag will be
+# ignored.
+
+INPUT_FILTER =
+
+# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
+# basis.
+# Doxygen will compare the file name with each pattern and apply the
+# filter if there is a match.
+# The filters are a list of the form:
+# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
+# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER
+# is applied to all files.
+
+FILTER_PATTERNS =
+
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
+# INPUT_FILTER) will be used to filter the input files when producing source
+# files to browse (i.e. when SOURCE_BROWSER is set to YES).
+
+FILTER_SOURCE_FILES = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will
+# be generated. Documented entities will be cross-referenced with these sources.
+# Note: To get rid of all source code in the generated output, make sure also
+# VERBATIM_HEADERS is set to NO.
+
+SOURCE_BROWSER = NO
+
+# Setting the INLINE_SOURCES tag to YES will include the body
+# of functions and classes directly in the documentation.
+
+INLINE_SOURCES = NO
+
+# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
+# doxygen to hide any special comment blocks from generated source code
+# fragments. Normal C and C++ comments will always remain visible.
+
+STRIP_CODE_COMMENTS = YES
+
+# If the REFERENCED_BY_RELATION tag is set to YES
+# then for each documented function all documented
+# functions referencing it will be listed.
+
+REFERENCED_BY_RELATION = NO
+
+# If the REFERENCES_RELATION tag is set to YES
+# then for each documented function all documented entities
+# called/used by that function will be listed.
+
+REFERENCES_RELATION = NO
+
+# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
+# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
+# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
+# link to the source code.
+# Otherwise they will link to the documentation.
+
+REFERENCES_LINK_SOURCE = YES
+
+# If the USE_HTAGS tag is set to YES then the references to source code
+# will point to the HTML generated by the htags(1) tool instead of doxygen
+# built-in source browser. The htags tool is part of GNU's global source
+# tagging system (see http://www.gnu.org/software/global/global.html). You
+# will need version 4.8.6 or higher.
+
+USE_HTAGS = NO
+
+# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
+# will generate a verbatim copy of the header file for each class for
+# which an include is specified. Set to NO to disable this.
+
+VERBATIM_HEADERS = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
+# of all compounds will be generated. Enable this if the project
+# contains a lot of classes, structs, unions or interfaces.
+
+ALPHABETICAL_INDEX = YES
+
+# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
+# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
+# in which this list will be split (can be a number in the range [1..20])
+
+COLS_IN_ALPHA_INDEX = 5
+
+# In case all classes in a project start with a common prefix, all
+# classes will be put under the same header in the alphabetical index.
+# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
+# should be ignored while generating the index headers.
+
+IGNORE_PREFIX =
+
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
+# generate HTML output.
+
+GENERATE_HTML = YES
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `html' will be used as the default path.
+
+HTML_OUTPUT = html
+
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
+# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
+# doxygen will generate files with .html extension.
+
+HTML_FILE_EXTENSION = .html
+
+# The HTML_HEADER tag can be used to specify a personal HTML header for
+# each generated HTML page. If it is left blank doxygen will generate a
+# standard header.
+
+HTML_HEADER =
+
+# The HTML_FOOTER tag can be used to specify a personal HTML footer for
+# each generated HTML page. If it is left blank doxygen will generate a
+# standard footer.
+
+HTML_FOOTER =
+
+# If the HTML_TIMESTAMP tag is set to YES then the generated HTML
+# documentation will contain the timesstamp.
+
+HTML_TIMESTAMP = NO
+
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
+# style sheet that is used by each HTML page. It can be used to
+# fine-tune the look of the HTML output. If the tag is left blank doxygen
+# will generate a default style sheet. Note that doxygen will try to copy
+# the style sheet file to the HTML output directory, so don't put your own
+# stylesheet in the HTML output directory as well, or it will be erased!
+
+HTML_STYLESHEET =
+
+# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output.
+# Doxygen will adjust the colors in the stylesheet and background images
+# according to this color. Hue is specified as an angle on a colorwheel,
+# see http://en.wikipedia.org/wiki/Hue for more information.
+# For instance the value 0 represents red, 60 is yellow, 120 is green,
+# 180 is cyan, 240 is blue, 300 purple, and 360 is red again.
+# The allowed range is 0 to 359.
+
+HTML_COLORSTYLE_HUE = 220
+
+# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of
+# the colors in the HTML output. For a value of 0 the output will use
+# grayscales only. A value of 255 will produce the most vivid colors.
+
+HTML_COLORSTYLE_SAT = 100
+
+# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to
+# the luminance component of the colors in the HTML output. Values below
+# 100 gradually make the output lighter, whereas values above 100 make
+# the output darker. The value divided by 100 is the actual gamma applied,
+# so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2,
+# and 100 does not change the gamma.
+
+HTML_COLORSTYLE_GAMMA = 80
+
+# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
+# page will contain the date and time when the page was generated. Setting
+# this to NO can help when comparing the output of multiple runs.
+
+HTML_TIMESTAMP = YES
+
+# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
+# files or namespaces will be aligned in HTML using tables. If set to
+# NO a bullet list will be used.
+
+HTML_ALIGN_MEMBERS = YES
+
+# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
+# documentation will contain sections that can be hidden and shown after the
+# page has loaded. For this to work a browser that supports
+# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox
+# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari).
+
+HTML_DYNAMIC_SECTIONS = NO
+
+# If the GENERATE_DOCSET tag is set to YES, additional index files
+# will be generated that can be used as input for Apple's Xcode 3
+# integrated development environment, introduced with OSX 10.5 (Leopard).
+# To create a documentation set, doxygen will generate a Makefile in the
+# HTML output directory. Running make will produce the docset in that
+# directory and running "make install" will install the docset in
+# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find
+# it at startup.
+# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
+# for more information.
+
+GENERATE_DOCSET = NO
+
+# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the
+# feed. A documentation feed provides an umbrella under which multiple
+# documentation sets from a single provider (such as a company or product suite)
+# can be grouped.
+
+DOCSET_FEEDNAME = "Doxygen generated docs"
+
+# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that
+# should uniquely identify the documentation set bundle. This should be a
+# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen
+# will append .docset to the name.
+
+DOCSET_BUNDLE_ID = org.doxygen.Project
+
+# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely identify
+# the documentation publisher. This should be a reverse domain-name style
+# string, e.g. com.mycompany.MyDocSet.documentation.
+
+DOCSET_PUBLISHER_ID = org.doxygen.Publisher
+
+# The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher.
+
+DOCSET_PUBLISHER_NAME = Publisher
+
+# If the GENERATE_HTMLHELP tag is set to YES, additional index files
+# will be generated that can be used as input for tools like the
+# Microsoft HTML help workshop to generate a compiled HTML help file (.chm)
+# of the generated HTML documentation.
+
+GENERATE_HTMLHELP = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
+# be used to specify the file name of the resulting .chm file. You
+# can add a path in front of the file if the result should not be
+# written to the html output directory.
+
+CHM_FILE =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
+# be used to specify the location (absolute path including file name) of
+# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
+# the HTML help compiler on the generated index.hhp.
+
+HHC_LOCATION =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
+# controls if a separate .chi index file is generated (YES) or that
+# it should be included in the master .chm file (NO).
+
+GENERATE_CHI = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING
+# is used to encode HtmlHelp index (hhk), content (hhc) and project file
+# content.
+
+CHM_INDEX_ENCODING =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
+# controls whether a binary table of contents is generated (YES) or a
+# normal table of contents (NO) in the .chm file.
+
+BINARY_TOC = NO
+
+# The TOC_EXPAND flag can be set to YES to add extra items for group members
+# to the contents of the HTML help documentation and to the tree view.
+
+TOC_EXPAND = NO
+
+# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
+# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated
+# that can be used as input for Qt's qhelpgenerator to generate a
+# Qt Compressed Help (.qch) of the generated HTML documentation.
+
+GENERATE_QHP = NO
+
+# If the QHG_LOCATION tag is specified, the QCH_FILE tag can
+# be used to specify the file name of the resulting .qch file.
+# The path specified is relative to the HTML output folder.
+
+QCH_FILE =
+
+# The QHP_NAMESPACE tag specifies the namespace to use when generating
+# Qt Help Project output. For more information please see
+# http://doc.trolltech.com/qthelpproject.html#namespace
+
+QHP_NAMESPACE = org.doxygen.Project
+
+# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating
+# Qt Help Project output. For more information please see
+# http://doc.trolltech.com/qthelpproject.html#virtual-folders
+
+QHP_VIRTUAL_FOLDER = doc
+
+# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to
+# add. For more information please see
+# http://doc.trolltech.com/qthelpproject.html#custom-filters
+
+QHP_CUST_FILTER_NAME =
+
+# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the
+# custom filter to add. For more information please see
+# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">
+# Qt Help Project / Custom Filters</a>.
+
+QHP_CUST_FILTER_ATTRS =
+
+# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
+# project's
+# filter section matches.
+# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">
+# Qt Help Project / Filter Attributes</a>.
+
+QHP_SECT_FILTER_ATTRS =
+
+# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can
+# be used to specify the location of Qt's qhelpgenerator.
+# If non-empty doxygen will try to run qhelpgenerator on the generated
+# .qhp file.
+
+QHG_LOCATION =
+
+# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files
+# will be generated, which together with the HTML files, form an Eclipse help
+# plugin. To install this plugin and make it available under the help contents
+# menu in Eclipse, the contents of the directory containing the HTML and XML
+# files needs to be copied into the plugins directory of eclipse. The name of
+# the directory within the plugins directory should be the same as
+# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before
+# the help appears.
+
+GENERATE_ECLIPSEHELP = NO
+
+# A unique identifier for the eclipse help plugin. When installing the plugin
+# the directory name containing the HTML and XML files should also have
+# this name.
+
+ECLIPSE_DOC_ID = org.doxygen.Project
+
+# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
+# top of each HTML page. The value NO (the default) enables the index and
+# the value YES disables it.
+
+DISABLE_INDEX = NO
+
+# This tag can be used to set the number of enum values (range [1..20])
+# that doxygen will group on one line in the generated HTML documentation.
+
+ENUM_VALUES_PER_LINE = 4
+
+# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
+# structure should be generated to display hierarchical information.
+# If the tag value is set to YES, a side panel will be generated
+# containing a tree-like index structure (just like the one that
+# is generated for HTML Help). For this to work a browser that supports
+# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser).
+# Windows users are probably better off using the HTML help feature.
+
+GENERATE_TREEVIEW = NO
+
+# By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories,
+# and Class Hierarchy pages using a tree view instead of an ordered list.
+
+USE_INLINE_TREES = NO
+
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
+# used to set the initial width (in pixels) of the frame in which the tree
+# is shown.
+
+TREEVIEW_WIDTH = 250
+
+# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open
+# links to external symbols imported via tag files in a separate window.
+
+EXT_LINKS_IN_WINDOW = NO
+
+# Use this tag to change the font size of Latex formulas included
+# as images in the HTML documentation. The default is 10. Note that
+# when you change the font size after a successful doxygen run you need
+# to manually remove any form_*.png images from the HTML output directory
+# to force them to be regenerated.
+
+FORMULA_FONTSIZE = 10
+
+# Use the FORMULA_TRANPARENT tag to determine whether or not the images
+# generated for formulas are transparent PNGs. Transparent PNGs are
+# not supported properly for IE 6.0, but are supported on all modern browsers.
+# Note that when changing this option you need to delete any form_*.png files
+# in the HTML output before the changes have effect.
+
+FORMULA_TRANSPARENT = YES
+
+# When the SEARCHENGINE tag is enabled doxygen will generate a search box
+# for the HTML output. The underlying search engine uses javascript
+# and DHTML and should work on any modern browser. Note that when using
+# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets
+# (GENERATE_DOCSET) there is already a search function so this one should
+# typically be disabled. For large projects the javascript based search engine
+# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution.
+
+SEARCHENGINE = YES
+
+# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
+# implemented using a PHP enabled web server instead of at the web client
+# using Javascript. Doxygen will generate the search PHP script and index
+# file to put on the web server. The advantage of the server
+# based approach is that it scales better to large projects and allows
+# full text search. The disadvances is that it is more difficult to setup
+# and does not have live searching capabilities.
+
+SERVER_BASED_SEARCH = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
+# generate Latex output.
+
+GENERATE_LATEX = YES
+
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `latex' will be used as the default path.
+
+LATEX_OUTPUT = latex
+
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
+# invoked. If left blank `latex' will be used as the default command name.
+# Note that when enabling USE_PDFLATEX this option is only used for
+# generating bitmaps for formulas in the HTML output, but not in the
+# Makefile that is written to the output directory.
+
+LATEX_CMD_NAME = latex
+
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
+# generate index for LaTeX. If left blank `makeindex' will be used as the
+# default command name.
+
+MAKEINDEX_CMD_NAME = makeindex
+
+# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
+# LaTeX documents. This may be useful for small projects and may help to
+# save some trees in general.
+
+COMPACT_LATEX = NO
+
+# The PAPER_TYPE tag can be used to set the paper type that is used
+# by the printer. Possible values are: a4, a4wide, letter, legal and
+# executive. If left blank a4wide will be used.
+
+PAPER_TYPE = a4wide
+
+# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
+# packages that should be included in the LaTeX output.
+
+EXTRA_PACKAGES =
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
+# the generated latex document. The header should contain everything until
+# the first chapter. If it is left blank doxygen will generate a
+# standard header. Notice: only use this tag if you know what you are doing!
+
+LATEX_HEADER =
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
+# is prepared for conversion to pdf (using ps2pdf). The pdf file will
+# contain links (just like the HTML output) instead of page references
+# This makes the output suitable for online browsing using a pdf viewer.
+
+PDF_HYPERLINKS = YES
+
+# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
+# plain latex in the generated Makefile. Set this option to YES to get a
+# higher quality PDF documentation.
+
+USE_PDFLATEX = YES
+
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
+# command to the generated LaTeX files. This will instruct LaTeX to keep
+# running if errors occur, instead of asking the user for help.
+# This option is also used when generating formulas in HTML.
+
+LATEX_BATCHMODE = NO
+
+# If LATEX_HIDE_INDICES is set to YES then doxygen will not
+# include the index chapters (such as File Index, Compound Index, etc.)
+# in the output.
+
+LATEX_HIDE_INDICES = NO
+
+# If LATEX_SOURCE_CODE is set to YES then doxygen will include
+# source code with syntax highlighting in the LaTeX output.
+# Note that which sources are shown also depends on other settings
+# such as SOURCE_BROWSER.
+
+LATEX_SOURCE_CODE = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
+# The RTF output is optimized for Word 97 and may not look very pretty with
+# other RTF readers or editors.
+
+GENERATE_RTF = NO
+
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `rtf' will be used as the default path.
+
+RTF_OUTPUT = rtf
+
+# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
+# RTF documents. This may be useful for small projects and may help to
+# save some trees in general.
+
+COMPACT_RTF = NO
+
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
+# will contain hyperlink fields. The RTF file will
+# contain links (just like the HTML output) instead of page references.
+# This makes the output suitable for online browsing using WORD or other
+# programs which support those fields.
+# Note: wordpad (write) and others do not support links.
+
+RTF_HYPERLINKS = NO
+
+# Load stylesheet definitions from file. Syntax is similar to doxygen's
+# config file, i.e. a series of assignments. You only have to provide
+# replacements, missing definitions are set to their default value.
+
+RTF_STYLESHEET_FILE =
+
+# Set optional variables used in the generation of an rtf document.
+# Syntax is similar to doxygen's config file.
+
+RTF_EXTENSIONS_FILE =
+
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
+# generate man pages
+
+GENERATE_MAN = YES
+
+# The MAN_OUTPUT tag is used to specify where the man pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `man' will be used as the default path.
+
+MAN_OUTPUT = man
+
+# The MAN_EXTENSION tag determines the extension that is added to
+# the generated man pages (default is the subroutine's section .3)
+
+MAN_EXTENSION = .3
+
+# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
+# then it will generate one additional man file for each entity
+# documented in the real man page(s). These additional files
+# only source the real man page, but without them the man command
+# would be unable to find the correct page. The default is NO.
+
+MAN_LINKS = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_XML tag is set to YES Doxygen will
+# generate an XML file that captures the structure of
+# the code including all documentation.
+
+GENERATE_XML = NO
+
+# The XML_OUTPUT tag is used to specify where the XML pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `xml' will be used as the default path.
+
+XML_OUTPUT = xml
+
+# The XML_SCHEMA tag can be used to specify an XML schema,
+# which can be used by a validating XML parser to check the
+# syntax of the XML files.
+
+XML_SCHEMA =
+
+# The XML_DTD tag can be used to specify an XML DTD,
+# which can be used by a validating XML parser to check the
+# syntax of the XML files.
+
+XML_DTD =
+
+# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
+# dump the program listings (including syntax highlighting
+# and cross-referencing information) to the XML output. Note that
+# enabling this will significantly increase the size of the XML output.
+
+XML_PROGRAMLISTING = YES
+
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
+# generate an AutoGen Definitions (see autogen.sf.net) file
+# that captures the structure of the code including all
+# documentation. Note that this feature is still experimental
+# and incomplete at the moment.
+
+GENERATE_AUTOGEN_DEF = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_PERLMOD tag is set to YES Doxygen will
+# generate a Perl module file that captures the structure of
+# the code including all documentation. Note that this
+# feature is still experimental and incomplete at the
+# moment.
+
+GENERATE_PERLMOD = NO
+
+# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
+# the necessary Makefile rules, Perl scripts and LaTeX code to be able
+# to generate PDF and DVI output from the Perl module output.
+
+PERLMOD_LATEX = NO
+
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
+# nicely formatted so it can be parsed by a human reader.
+# This is useful
+# if you want to understand what is going on.
+# On the other hand, if this
+# tag is set to NO the size of the Perl module output will be much smaller
+# and Perl will parse it just the same.
+
+PERLMOD_PRETTY = YES
+
+# The names of the make variables in the generated doxyrules.make file
+# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
+# This is useful so different doxyrules.make files included by the same
+# Makefile don't overwrite each other's variables.
+
+PERLMOD_MAKEVAR_PREFIX =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor
+#---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
+# evaluate all C-preprocessor directives found in the sources and include
+# files.
+
+ENABLE_PREPROCESSING = NO
+
+# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
+# names in the source code. If set to NO (the default) only conditional
+# compilation will be performed. Macro expansion can be done in a controlled
+# way by setting EXPAND_ONLY_PREDEF to YES.
+
+MACRO_EXPANSION = NO
+
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
+# then the macro expansion is limited to the macros specified with the
+# PREDEFINED and EXPAND_AS_DEFINED tags.
+
+EXPAND_ONLY_PREDEF = NO
+
+# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
+# in the INCLUDE_PATH (see below) will be search if a #include is found.
+
+SEARCH_INCLUDES = YES
+
+# The INCLUDE_PATH tag can be used to specify one or more directories that
+# contain include files that are not input files but should be processed by
+# the preprocessor.
+
+INCLUDE_PATH =
+
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
+# patterns (like *.h and *.hpp) to filter out the header-files in the
+# directories. If left blank, the patterns specified with FILE_PATTERNS will
+# be used.
+
+INCLUDE_FILE_PATTERNS =
+
+# The PREDEFINED tag can be used to specify one or more macro names that
+# are defined before the preprocessor is started (similar to the -D option of
+# gcc). The argument of the tag is a list of macros of the form: name
+# or name=definition (no spaces). If the definition and the = are
+# omitted =1 is assumed. To prevent a macro definition from being
+# undefined via #undef or recursively expanded use the := operator
+# instead of the = operator.
+
+PREDEFINED =
+
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
+# this tag can be used to specify a list of macro names that should be expanded.
+# The macro definition that is found in the sources will be used.
+# Use the PREDEFINED tag if you want to use a different macro definition.
+
+EXPAND_AS_DEFINED =
+
+# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
+# doxygen's preprocessor will remove all function-like macros that are alone
+# on a line, have an all uppercase name, and do not end with a semicolon. Such
+# function macros are typically used for boiler-plate code, and will confuse
+# the parser if not removed.
+
+SKIP_FUNCTION_MACROS = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references
+#---------------------------------------------------------------------------
+
+# The TAGFILES option can be used to specify one or more tagfiles.
+# Optionally an initial location of the external documentation
+# can be added for each tagfile. The format of a tag file without
+# this location is as follows:
+#
+# TAGFILES = file1 file2 ...
+# Adding location for the tag files is done as follows...
[truncated message content] |
|
From: <sid...@us...> - 2010-09-11 17:28:18
|
Revision: 385
http://libyahoo2.svn.sourceforge.net/libyahoo2/?rev=385&view=rev
Author: siddheshp
Date: 2010-09-11 17:28:12 +0000 (Sat, 11 Sep 2010)
Log Message:
-----------
Fix gen warnings
Modified Paths:
--------------
trunk/libyahoo2/acinclude.m4
Modified: trunk/libyahoo2/acinclude.m4
===================================================================
--- trunk/libyahoo2/acinclude.m4 2010-08-30 20:06:00 UTC (rev 384)
+++ trunk/libyahoo2/acinclude.m4 2010-09-11 17:28:12 UTC (rev 385)
@@ -5,7 +5,7 @@
dnl Test for GLIB, and define GLIB_CFLAGS and GLIB_LIBS, if gmodule, gobject or
dnl gthread is specified in MODULES, pass to pkg-config
dnl
-AC_DEFUN(AM_PATH_GLIB_2_0,
+AC_DEFUN([AM_PATH_GLIB_2_0],
[dnl
dnl Get the cflags and libraries from pkg-config
dnl
@@ -217,7 +217,7 @@
dnl Test for GLIB, and define GLIB_CFLAGS and GLIB_LIBS, if "gmodule" or
dnl gthread is specified in MODULES, pass to glib-config
dnl
-AC_DEFUN(AM_PATH_GLIB,
+AC_DEFUN([AM_PATH_GLIB],
[dnl
dnl Get the cflags and libraries from the glib-config script
dnl
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <sid...@us...> - 2010-08-30 20:06:06
|
Revision: 384
http://libyahoo2.svn.sourceforge.net/libyahoo2/?rev=384&view=rev
Author: siddheshp
Date: 2010-08-30 20:06:00 +0000 (Mon, 30 Aug 2010)
Log Message:
-----------
Buddy add fixes by Wilmer van der Gaast
It seems to me like yahoo_process_buddyadd() makes wrong assumptions
about the status field.
I had issues with BitlBee seeing "ghosts" online. It looks like the
cause is in the handling of this status field. My comments:
/* BitlBee: This seems to be wrong in my experience. I think:
status = 0: Success
status = 2: Already on list
status = 3: Doesn't exist
status = 42: Invalid handle (possibly banned/reserved, I get it for
handles like joe or jjjjjj)
Haven't seen others yet. But whenever the add is successful, there
will be a separate "went online" packet when the auth. request is
accepted. Couldn't find any test account that doesn't require auth.
unfortunately (if there is even such a thing?) */
I just took out that code, but may be missing the case of people who
don't require auth requests (gain, no clue of that even exists on YMSG).
I also added a call to got_buddies since I let my IM modules ACK if an
add was successful as some layer of "error checking".
The full change is here:
http://bugs.bitlbee.org/bitlbee/changeset/devel%2C670
Modified Paths:
--------------
trunk/libyahoo2/src/libyahoo2.c
Modified: trunk/libyahoo2/src/libyahoo2.c
===================================================================
--- trunk/libyahoo2/src/libyahoo2.c 2010-08-16 13:23:19 UTC (rev 383)
+++ trunk/libyahoo2/src/libyahoo2.c 2010-08-30 20:06:00 UTC (rev 384)
@@ -2135,14 +2135,24 @@
yd->buddies = y_list_append(yd->buddies, bud);
- /* A non-zero status (i've seen 2) seems to mean the buddy is already
- * added and is online */
- if (status) {
- LOG(("Setting online see packet for info"));
- yahoo_dump_unhandled(pkt);
- YAHOO_CALLBACK(ext_yahoo_status_changed) (yd->client_id, who,
- YAHOO_STATUS_AVAILABLE, NULL, 0, 0, 0);
+ /* Wilmer van der Gaast:
+ * BitlBee: This seems to be wrong in my experience. I think:
+ * status = 0: Success
+ * status = 2: Already on list
+ * status = 3: Doesn't exist
+ * status = 42: Invalid handle (possibly banned/reserved, I get it for
+ * handles like joe or jjjjjj)
+ * Haven't seen others yet. But whenever the add is successful, there
+ * will be a separate "went online" packet when the auth. request is
+ * accepted. Couldn't find any test account that doesn't require auth.
+ * unfortunately (if there is even such a thing?) */
+
+ if (status == 0) {
+ YList *tmp = y_list_append(NULL, bud);
+ YAHOO_CALLBACK(ext_yahoo_got_buddies) (yd->client_id, tmp);
+ y_list_free(tmp);
}
+
}
static void yahoo_process_buddydel(struct yahoo_input_data *yid,
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ka...@us...> - 2010-08-16 13:23:30
|
Revision: 383
http://libyahoo2.svn.sourceforge.net/libyahoo2/?rev=383&view=rev
Author: kay21s
Date: 2010-08-16 13:23:19 +0000 (Mon, 16 Aug 2010)
Log Message:
-----------
Fix up warnings
Modified Paths:
--------------
trunk/libyahoo2/src/autoresponder.c
trunk/libyahoo2/src/libyahoo2.c
trunk/libyahoo2/src/sample_client.c
trunk/libyahoo2/src/yahoo2.h
trunk/libyahoo2/src/yahoo_httplib.h
Modified: trunk/libyahoo2/src/autoresponder.c
===================================================================
--- trunk/libyahoo2/src/autoresponder.c 2010-08-16 01:14:42 UTC (rev 382)
+++ trunk/libyahoo2/src/autoresponder.c 2010-08-16 13:23:19 UTC (rev 383)
@@ -745,7 +745,7 @@
}
if(buff[0])
- print_message((buff));
+ print_message(("%s", buff));
}
static void ext_yahoo_got_webcam_image(int id, const char *who,
@@ -970,7 +970,7 @@
}
ylad->status = YAHOO_STATUS_OFFLINE;
- print_message((buff));
+ print_message(("%s", buff));
yahoo_logout();
/* poll_loop=0; */
}
@@ -1155,7 +1155,7 @@
"Yahoo read error: Server closed socket");
if(buff[0])
- print_message((buff));
+ print_message(("%s", buff));
}
}
Modified: trunk/libyahoo2/src/libyahoo2.c
===================================================================
--- trunk/libyahoo2/src/libyahoo2.c 2010-08-16 01:14:42 UTC (rev 382)
+++ trunk/libyahoo2/src/libyahoo2.c 2010-08-16 13:23:19 UTC (rev 383)
@@ -3050,6 +3050,8 @@
}
}
+/* DEFINED FOR TEST
+
static void traverse_cat_list(YList *list, int level)
{
int i;
@@ -3078,6 +3080,7 @@
list = list->next;
}
}
+*/
static YList *find_room_category(YList *list, int cat_id)
{
@@ -3245,9 +3248,6 @@
int length;
struct yahoo_post_data *yad;
struct yahoo_input_data *new_yid;
- struct yahoo_packet *pkt;
- struct yahoo_data *yd = yid->yd;
- int id = yd->client_id;
char *judge;
http_data data;
Modified: trunk/libyahoo2/src/sample_client.c
===================================================================
--- trunk/libyahoo2/src/sample_client.c 2010-08-16 01:14:42 UTC (rev 382)
+++ trunk/libyahoo2/src/sample_client.c 2010-08-16 13:23:19 UTC (rev 383)
@@ -878,7 +878,7 @@
}
if(buff[0])
- print_message((buff));
+ print_message(("%s", buff));
}
static void ext_yahoo_got_webcam_image(int id, const char *who,
@@ -1087,7 +1087,7 @@
}
ylad->status = YAHOO_STATUS_OFFLINE;
- print_message((buff));
+ print_message(("%s", buff));
yahoo_logout();
poll_loop=0;
}
@@ -1291,7 +1291,7 @@
"Yahoo read error: Server closed socket");
if(buff[0])
- print_message((buff));
+ print_message(("%s", buff));
}
}
@@ -1611,9 +1611,11 @@
yahoo_get_chatrooms(ylad->id, roomid);
} else if(!strncasecmp(cmd, "CHR", strlen("CHR"))) {
int roomid;
- void *ext_data;
+ void *ext_data = NULL;
+ YList *list;
+
roomid = atoi(copy);
- YList *list = yahoo_get_chat_room_list(ylad->id, roomid, ext_data);
+ list = yahoo_get_chat_room_list(ylad->id, roomid, ext_data);
if(list) {
if(roomid == 0)
traverse_cat_list(list, 0);
Modified: trunk/libyahoo2/src/yahoo2.h
===================================================================
--- trunk/libyahoo2/src/yahoo2.h 2010-08-16 01:14:42 UTC (rev 382)
+++ trunk/libyahoo2/src/yahoo2.h 2010-08-16 13:23:19 UTC (rev 383)
@@ -136,8 +136,10 @@
void yahoo_conference_logoff(int id, const char *from, YList *who,
const char *room);
-/* Get a list of chatrooms */
+/* Get list of chat rooms or categories from the server */
void yahoo_get_chatrooms(int id, int chatroomid);
+/* Get cached chat room list or category list */
+ const YList *yahoo_get_chat_room_list(int id, int roomid, void *extra_data);
/* join room with specified roomname and roomid */
void yahoo_chat_logon(int id, const char *from, const char *room,
const char *roomid, const char *country, const char *language);
Modified: trunk/libyahoo2/src/yahoo_httplib.h
===================================================================
--- trunk/libyahoo2/src/yahoo_httplib.h 2010-08-16 01:14:42 UTC (rev 382)
+++ trunk/libyahoo2/src/yahoo_httplib.h 2010-08-16 13:23:19 UTC (rev 383)
@@ -41,6 +41,10 @@
void yahoo_http_head(int id, const char *url, const char *cookies,
int size, char *payload, yahoo_get_fd_callback callback,
void *data);
+ char *yahoo_http_get_header_value(http_data, char *);
+ void yahoo_get_http_data(http_data);
+ void yahoo_set_http_data(char *, int, http_data *);
+ void yahoo_free_http_data(http_data *);
#ifdef __cplusplus
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ka...@us...> - 2010-08-16 01:14:49
|
Revision: 382
http://libyahoo2.svn.sourceforge.net/libyahoo2/?rev=382&view=rev
Author: kay21s
Date: 2010-08-16 01:14:42 +0000 (Mon, 16 Aug 2010)
Log Message:
-----------
Added my copyright notice in relevant files for chat room support
Modified Paths:
--------------
trunk/libyahoo2/src/libyahoo2.c
trunk/libyahoo2/src/sample_client.c
trunk/libyahoo2/src/yahoo2.h
trunk/libyahoo2/src/yahoo2_callbacks.h
trunk/libyahoo2/src/yahoo2_types.h
trunk/libyahoo2/src/yahoo_httplib.c
Modified: trunk/libyahoo2/src/libyahoo2.c
===================================================================
--- trunk/libyahoo2/src/libyahoo2.c 2010-08-13 20:15:45 UTC (rev 381)
+++ trunk/libyahoo2/src/libyahoo2.c 2010-08-16 01:14:42 UTC (rev 382)
@@ -4,6 +4,7 @@
* Some code copyright (C) 2002-2004, Philip S Tellis <philip.tellis AT gmx.net>
* YMSG16 code copyright (C) 2009,
* Siddhesh Poyarekar <siddhesh dot poyarekar at gmail dot com>
+ * Chat room code copyright (C) 2010, Kai Zhang <kay21s AT gmail dot com>
*
* Yahoo Search copyright (C) 2003, Konstantin Klyagin <konst AT konst.org.ua>
*
Modified: trunk/libyahoo2/src/sample_client.c
===================================================================
--- trunk/libyahoo2/src/sample_client.c 2010-08-13 20:15:45 UTC (rev 381)
+++ trunk/libyahoo2/src/sample_client.c 2010-08-16 01:14:42 UTC (rev 382)
@@ -8,6 +8,7 @@
*
* Copyright (C) 2002-2004, Philip S Tellis <philip.tellis AT gmx.net>
* Copyright (C) 2009, Siddhesh Poyarekar <sid...@gm...>
+ * Chat room code Copyright (C) 2010, Kai Zhang <kay21s AT gmail dot com>
*
* 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
Modified: trunk/libyahoo2/src/yahoo2.h
===================================================================
--- trunk/libyahoo2/src/yahoo2.h 2010-08-13 20:15:45 UTC (rev 381)
+++ trunk/libyahoo2/src/yahoo2.h 2010-08-16 01:14:42 UTC (rev 382)
@@ -2,6 +2,7 @@
* libyahoo2: yahoo2.h
*
* Copyright (C) 2002-2004, Philip S Tellis <philip.tellis AT gmx.net>
+ * Chat room code copyright (C) 2010, Kai Zhang <kay21s AT gmail dot com>
*
* 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
Modified: trunk/libyahoo2/src/yahoo2_callbacks.h
===================================================================
--- trunk/libyahoo2/src/yahoo2_callbacks.h 2010-08-13 20:15:45 UTC (rev 381)
+++ trunk/libyahoo2/src/yahoo2_callbacks.h 2010-08-16 01:14:42 UTC (rev 382)
@@ -2,6 +2,7 @@
* libyahoo2: yahoo2_callbacks.h
*
* Copyright (C) 2002-2004, Philip S Tellis <philip.tellis AT gmx.net>
+ * Chat room code copyright (C) 2010, Kai Zhang <kay21s AT gmail dot com>
*
* 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
Modified: trunk/libyahoo2/src/yahoo2_types.h
===================================================================
--- trunk/libyahoo2/src/yahoo2_types.h 2010-08-13 20:15:45 UTC (rev 381)
+++ trunk/libyahoo2/src/yahoo2_types.h 2010-08-16 01:14:42 UTC (rev 382)
@@ -2,6 +2,7 @@
* libyahoo2: yahoo2_types.h
*
* Copyright (C) 2002-2004, Philip S Tellis <philip.tellis AT gmx.net>
+ * Chat room code copyright (C) 2010, Kai Zhang <kay21s AT gmail dot com>
*
* 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
Modified: trunk/libyahoo2/src/yahoo_httplib.c
===================================================================
--- trunk/libyahoo2/src/yahoo_httplib.c 2010-08-13 20:15:45 UTC (rev 381)
+++ trunk/libyahoo2/src/yahoo_httplib.c 2010-08-16 01:14:42 UTC (rev 382)
@@ -2,6 +2,7 @@
* libyahoo2: yahoo_httplib.c
*
* Copyright (C) 2002-2004, Philip S Tellis <philip.tellis AT gmx.net>
+ * Chat room code copyright (C) 2010, Kai Zhang <kay21s AT gmail dot com>
*
* 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
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <sid...@us...> - 2010-08-13 20:15:52
|
Revision: 381
http://libyahoo2.svn.sourceforge.net/libyahoo2/?rev=381&view=rev
Author: siddheshp
Date: 2010-08-13 20:15:45 +0000 (Fri, 13 Aug 2010)
Log Message:
-----------
Merge libyahoo2 chatroom code
Conflicts:
libyahoo2/src/libyahoo2.c
libyahoo2/src/sample_client.c
libyahoo2/src/yahoo2.h
libyahoo2/src/yahoo2_callbacks.h
libyahoo2/src/yahoo2_types.h
libyahoo2/src/yahoo_httplib.c
Modified Paths:
--------------
trunk/libyahoo2/src/libyahoo2.c
trunk/libyahoo2/src/sample_client.c
trunk/libyahoo2/src/yahoo2.h
trunk/libyahoo2/src/yahoo2_callbacks.h
trunk/libyahoo2/src/yahoo2_types.h
trunk/libyahoo2/src/yahoo_httplib.c
Added Paths:
-----------
trunk/libyahoo2/doc/ymsg-chatroom.txt
Added: trunk/libyahoo2/doc/ymsg-chatroom.txt
===================================================================
--- trunk/libyahoo2/doc/ymsg-chatroom.txt (rev 0)
+++ trunk/libyahoo2/doc/ymsg-chatroom.txt 2010-08-13 20:15:45 UTC (rev 381)
@@ -0,0 +1,169 @@
+Yahoo Messenger Protocol -- Chat Room
+----------------------------------------
+
+The YMSG protocol used in chat room.
+Seven types of messages used here:
+1) Chat Online
+2) Chat Join : Messages send when joining the chat room.
+3) Chat Comment : Send comment to server or Receive comments from others from server
+4) Chat Join : When a user joined the chat room, will receive a message from the server
+5) Chat Logout : When a user left the chat room, will receive a message from the server
+6) Chat Exit : Left the chat room, send a message to tell the server
+7) Ignore User : Ignore/Unignore a specified user, and the server will not send the user's comments any more
+
+
+1.Chat Online
+
+Service: Chat Online (150 0×96)
+
+Client –> Server :
+
+109 : username
+1 : username
+6 : abcde
+98 : us
+445 : en-us
+135 : ym10.0.0.1258
+
+Server –> Client :
+
+1 : username
+6 : abcde
+98 : us
+109 : username
+135 : ym10.0.0.1258
+445 : en-us
+302 : 10019
+10019 : username
+303 : 10019
+
+2. Chat Join
+
+Service: Chat Join (152 0×98)
+
+Client –> Server :
+
+1 : username
+104 : #ChatRoom(China : 1)
+129 : (Chat Room ID)
+62 : 2
+
+Server –> Client :
+
+13 : 1
+104 : #ChatRoom(China : 1)
+105 : To help preven spam … …
+109 : username
+302 : 10019
+10019 : username
+303 : 10019
+109 : Yahoo
+141 : Messenger Chat Admin
+
+Now client receives the URL of the image for verification. Libyahoo2 will be in charge of extracting the URL and handle it to client to display the image.
+
+Server –> Client
+
+13 : 1
+104 : #ChatRoom(China : 1)
+105 : (Information from the chat room)
+108 : (Number of members in this package)
+126 : 328704
+128 : 1032
+129 : (Chat Room ID)
+130 : (Some Unrecognizable characters to show the first join)
+302 : 10019
+10019 : username
+303 : 10019
+#For all the users in the chat room:
+109 : user name
+110 : 0
+111 : (sex) neuter/male/female
+113 : (number)
+141 : (nick name ?) james
+142 : (country) New Zealand
+
+Special Situation : Disconnect. Maybe the chat room is full
+
+Server –> Client :
+Status : Disconnected(4294967295)
+114 : -35
+
+3. Chat Comment
+
+Service : Comment(168 0xa8)
+
+Client –> Server
+
+1 : username
+104: #ChatRoom(China:1)
+124 : (Message Type)
+117 : (Content)
+
+Server –> Client
+
+104 : #ChatRoom(China:1)
+109 : (From) Yahoo/username
+117 : (Content)
+124 : (Message Type)
+
+4. Chat Join
+
+Service : Chat Join (152 0×98)
+
+Server –> Client :
+
+104 : #ChatRoom(China : 1)
+105 : (Information from the chat room)
+108 : 1
+109 : username(who is joining)
+113 : (number)
+
+5. Chat Exit
+
+Service : Chat Exit(155 0×9b)
+
+Server –> Client
+
+104 : #ChatRoom(China:1)
+108 : 1
+109 : username(who is leaving)
+113 : (number)
+
+6. Chat Logout
+
+Service : Chat Logout (160 0xa0)
+
+Client –> Server
+
+1 : username
+1005 : (number)
+
+Server –> Client
+
+1 : username
+1005 : (number) <same with the number sent to server>
+302 : 10019
+10019 : username
+303 : 10019
+
+7. Ignore user
+
+Service : Ignore Contact (133 0x85)
+
+Client -->Server
+
+1 : my username
+13 : 1 if ignore a user / 2 if unignore a user
+302 : 319
+300 : 319
+7 : user to be ignored
+301 : 319
+303 : 319
+
+Server --> Client
+
+0 : user to be ignored
+1 : my username
+13 : 1 if ignore a user / 2 if unignore a user
+66 : 0
Modified: trunk/libyahoo2/src/libyahoo2.c
===================================================================
--- trunk/libyahoo2/src/libyahoo2.c 2010-08-05 03:36:23 UTC (rev 380)
+++ trunk/libyahoo2/src/libyahoo2.c 2010-08-13 20:15:45 UTC (rev 381)
@@ -93,6 +93,11 @@
struct yahoo_callbacks *yc = NULL;
+struct yahoo_post_data {
+ struct yahoo_input_data *yid;
+ char *data;
+};
+
void yahoo_register_callbacks(struct yahoo_callbacks *tyc)
{
yc = tyc;
@@ -103,6 +108,7 @@
static int yahoo_send_data(void *fd, void *data, int len);
static void _yahoo_http_connected(int id, void *fd, int error, void *data);
static void yahoo_connected(void *fd, int error, void *data);
+static void _yahoo_http_post_connected(int id, void *fd, int error, void *data);
int yahoo_log_message(char *fmt, ...)
{
@@ -204,6 +210,7 @@
YList *txqueues;
int write_tag;
+ int chat_room_id;
};
struct yahoo_server_settings {
@@ -465,6 +472,51 @@
}
}
+/* Free chat room list */
+static void yahoo_free_chat_room_list(YList *list)
+{
+ YList *lobby, *templ;
+ while(list != NULL) {
+ FREE(((yahoo_chatroom_info *)list->data)->type);
+ FREE(((yahoo_chatroom_info *)list->data)->topic);
+ FREE(((yahoo_chatroom_info *)list->data)->name);
+ lobby = list->prev;
+ while(lobby != NULL) {
+ templ = lobby->prev;
+ FREE(lobby->data);
+ FREE(lobby);
+ lobby = templ;
+ }
+ list = list->next;
+ }
+ y_list_free(list);
+}
+/*
+static void yahoo_free_chat_cat_list(YList *list)
+{
+ YList *ptr = list->next;
+ free_chat_cat_list(list->next);
+ FREE(list);
+}
+*/
+static void yahoo_free_chat_cat_list(YList *list)
+{
+ FREE(((yahoo_chatroom_category *)list->data)->name);
+
+ if(((yahoo_chatroom_category *)(list->data))->room_list)
+ yahoo_free_chat_room_list(((yahoo_chatroom_category *)list->data)->room_list);
+
+ if (list->prev) {
+ yahoo_free_chat_cat_list(list->prev);
+ }
+ if (list->next) {
+ yahoo_free_chat_cat_list(list->next);
+ }
+
+ FREE(list->data);
+ FREE(list);
+}
+
/* Free webcam data */
static void yahoo_free_webcam(struct yahoo_webcam *wcm)
{
@@ -1052,6 +1104,12 @@
int membercount = 0;
int chaterr = 0;
YList *l;
+ char *end, *head;
+ char content[256], vcode[8];
+ int length;
+ struct yahoo_post_data *yad;
+ struct yahoo_input_data *new_yid;
+ static int verify_image = 1;
yahoo_dump_unhandled(pkt);
for (l = pkt->hash; l; l = l->next) {
@@ -1163,6 +1221,42 @@
WARNING(("Got more than 1 member on a normal join"));
}
/* this should only ever have one, but just in case */
+
+ /* skip the message "To help prevent spam ..." to the url of the image for verification
+ the URL is in the first message server send to client
+ if what user input is wrong, new image URL will be send in form of HTTP*/
+ if (verify_image == 1) {
+ verify_image = 0;
+ end = strstr(topic, ".jpg");
+ end[4] = '\0';
+
+ /* find the URL of the image, the SECOND "http://" in the string */
+ head = strstr(topic, "http://");
+ topic = head + 7; /*skip the first "http://" */
+ head = strstr(topic, "http://");
+
+ /* handle the URL to client to show the image and get the code in the image*/
+ YAHOO_CALLBACK(ext_yahoo_chat_verify)(head, vcode);
+
+ /* construct a HTTP post message to send the verification code to the server*/
+ length = snprintf(content, sizeof(content), "question=%s"
+ "&answer=%s"
+ "&.intl=us&.lang=en-US",
+ head, vcode);
+
+ new_yid = y_new0(struct yahoo_input_data, 1);
+ new_yid->type = YAHOO_CONNECTION_CAPTCHA;
+ new_yid->yd = yid->yd;
+
+ yad = y_new0(struct yahoo_post_data, 1);
+ yad->yid = new_yid;
+ yad->data = strdup(content);
+ yahoo_http_post(yid->yd->client_id, "http://captcha.chat.yahoo.com/captcha1",
+ NULL, length, _yahoo_http_post_connected, yad);
+ break;
+ }
+
+ /* The second time receive the message of this type, it will contain all the members in the chat room*/
while (members) {
YList *n = members->next;
currentmember = members->data;
@@ -1850,7 +1944,7 @@
yahoo_packet_hash(packet, 2, "1");
yahoo_packet_hash(packet, 59, yd->cookie_b);
yahoo_packet_hash(packet, 98, "us"); /* TODO Put country code */
- yahoo_packet_hash(packet, 135, "9.0.0.2152");
+ yahoo_packet_hash(packet, 135, YMSG_VERSION);
yahoo_send_packet(yid, packet, 0);
@@ -2955,18 +3049,261 @@
}
}
-static void yahoo_process_chatcat_connection(struct yahoo_input_data *yid,
- int over)
+static void traverse_cat_list(YList *list, int level)
{
+ int i;
+ for(i=0; i<level; i++)
+ putchar('\t');
+ printf("%d - %s\n", ((yahoo_chatroom_category *)list->data)->id, ((yahoo_chatroom_category *)list->data)->name);
+ if(list->prev)
+ traverse_cat_list(list->prev, level+1);
+ if(list->next)
+ traverse_cat_list(list->next, level);
+}
+
+static void traverse_room_list(YList *list)
+{
+ YList *lobby;
+
+ while(list != NULL) {
+ lobby = list->prev;
+ while(lobby != NULL) {
+ printf("%d - %s %d [%d] [w%d]\n",
+ ((yahoo_chatroom_info *)list->data)->id, ((yahoo_chatroom_info *)list->data)->name,
+ ((yahoo_lobby_info *)lobby->data)->count, ((yahoo_lobby_info *)lobby->data)->users,
+ ((yahoo_lobby_info *)lobby->data)->webcams);
+ lobby = lobby->prev;
+ }
+ list = list->next;
+ }
+}
+
+static YList *find_room_category(YList *list, int cat_id)
+{
+ YList *cat_pos = NULL;
+ if (((yahoo_chatroom_category *)(list->data))->id == cat_id) {
+ return list;
+ }
+
+ if(list->prev)
+ cat_pos = find_room_category(list->prev, cat_id);
+ if(list->next && !cat_pos)
+ cat_pos = find_room_category(list->next, cat_id);
+
+ return cat_pos;
+}
+
+static char *get_xml_chatroom_info(char *content, char *pattern)
+{
+ char *header, *tailer, *info;
+ header = strstr(content, pattern);
+ header += strlen(pattern);
+ tailer = strchr(header, '"');
+ *tailer = '\0';
+ info = y_new0(char, tailer - header + 1);
+ strcpy(info, header);
+ *tailer = '"';
+ return info;
+}
+
+static void parse_chat_cat_xml(int id, const char *xml)
+{
+ struct yahoo_data *yd = find_conn_by_id(id);
+ struct yahoo_input_data *yid = find_input_by_id_and_type(id, YAHOO_CONNECTION_CHATCAT);
+ char *content = strdup(xml), *header, *tailer;
+ int child_mode = 0;
+ YList *room_list;
+ YList *list_ptr;
+ YList *cat_stack[5];
+ int stack_ptr = 0;
+ YList *temp, *child, *tail, *category;
+
+ room_list = y_new0(struct _YList, 1);
+ list_ptr = room_list;
+ content = strstr(content, "<category"); /* Find the first category */
+
+ if (content == NULL) {
+ category = find_room_category(yd->chat_room_list, yid->chat_room_id);
+
+ content = strdup(xml);
+ content = strstr(content, "<chatRooms>");
+ if (content == NULL) {
+ printf("Error : Cannot find anything!\n");
+ return ;
+ }
+
+ content += strlen("<chatRooms>");
+
+ content = strchr(content, '<');
+ while(*(content + 1) != '/') {
+ /* find all the fields of a chat room */
+ temp = y_new0(struct _YList, 1);
+ temp->data = y_new0(struct yahoo_chatroom, 1);
+ tail = temp;
+
+ ((yahoo_chatroom_info *)(temp->data))->type = get_xml_chatroom_info(content, "type=\"");
+ ((yahoo_chatroom_info *)(temp->data))->id = atoi(get_xml_chatroom_info(content, "id=\""));
+ ((yahoo_chatroom_info *)(temp->data))->name = get_xml_chatroom_info(content, "name=\"");
+ ((yahoo_chatroom_info *)(temp->data))->topic = get_xml_chatroom_info(content, "topic=\"");
+
+ /* find all lobbys of a chat room */
+
+ content = strchr(content+1, '<');
+ while(*(content + 1) != '/') {
+ child = y_new0(struct _YList, 1);
+ child->data = y_new0(struct yahoo_lobby, 1);
+
+ ((yahoo_lobby_info *)(child->data))->count = atoi(get_xml_chatroom_info(content, "count=\""));
+ ((yahoo_lobby_info *)(child->data))->users = atoi(get_xml_chatroom_info(content, "users=\""));
+ ((yahoo_lobby_info *)(child->data))->voices = atoi(get_xml_chatroom_info(content, "voices=\""));
+ ((yahoo_lobby_info *)(child->data))->webcams = atoi(get_xml_chatroom_info(content, "webcams=\""));
+
+ /* prev is used as a pointer to the the lobby*/
+ tail->prev = child;
+ tail = child;
+
+ content = strchr(content+1, '<');
+ }
+
+ list_ptr->next = temp;
+ list_ptr = temp;
+
+ content = strchr(content+1, '<');
+ }
+
+ ((yahoo_chatroom_category *)(category->data))->room_list = room_list->next;
+
+ } else {
+ while(stack_ptr >= 0) {
+ /* prev is used as a pointer linked with its child categories */
+
+ /* Find the id */
+ temp = y_new0(struct _YList, 1);
+ temp->data = y_new0(struct yahoo_chatroom_category, 1);
+ header = strchr(content, '"');
+ tailer = strchr(header+1, '"');
+ *tailer = '\0';
+ ((yahoo_chatroom_category *)(temp->data))->id = atoi(strdup(header + 1));
+
+ /* Find the name*/
+ header = strchr(tailer+1, '"');
+ tailer = strchr(header+1, '"');
+ *tailer = '\0';
+ ((yahoo_chatroom_category *)(temp->data))->name = strdup(header + 1);
+ ((yahoo_chatroom_category *)(temp->data))->room_list = NULL;
+
+ content = strchr(tailer+1, '>');
+ if(child_mode == 1) {
+ list_ptr->prev = temp;
+ list_ptr = temp;
+ cat_stack[stack_ptr] = temp;
+ child_mode = 0;
+ } else {
+ list_ptr->next = temp;
+ list_ptr = temp;
+ cat_stack[stack_ptr] = temp;
+ }
+
+ if (*(content-1) != '/') {
+ stack_ptr ++;
+ child_mode = 1;
+ }
+
+ /* find the next category */
+ content = strchr(content, '<');
+ while (*(content+1) == '/' && stack_ptr >= 0) {
+ stack_ptr --;
+ list_ptr = cat_stack[stack_ptr];
+ content = strchr(content + 1, '<');
+ }
+ }
+
+ yd->chat_room_list = room_list->next;
+ }
+ FREE(room_list); /* free the head node */
+}
+
+static void yahoo_process_chatcat_connection(struct yahoo_input_data *yid, int over)
+{
if (over)
return;
- if (strstr((char *)yid->rxqueue + (yid->rxlen - 20), "</content>")) {
+ if (strstr((char *)yid->rxqueue, "</content>")) {
+ parse_chat_cat_xml(yid->yd->client_id, (char *)yid->rxqueue);
+
+ /* ext_yahoo_chat_cat_xml() needs to be deprecated in future releases */
YAHOO_CALLBACK(ext_yahoo_chat_cat_xml) (yid->yd->client_id,
(char *)yid->rxqueue);
}
}
+static void yahoo_process_captcha_connection(struct yahoo_input_data *yid, int over)
+{
+ char content[256], vcode[8];
+ char *url, *location;
+ int length;
+ struct yahoo_post_data *yad;
+ struct yahoo_input_data *new_yid;
+ struct yahoo_packet *pkt;
+ struct yahoo_data *yd = yid->yd;
+ int id = yd->client_id;
+ char *judge;
+ http_data data;
+
+ if (over)
+ return;
+
+ yahoo_set_http_data((char *)yid->rxqueue, yid->rxlen, &data);
+ location = yahoo_http_get_header_value(data, "Location");
+
+ /*location = strstr((char *)yid->rxqueue, "Location:");*/
+ if (location == NULL) {
+ return ; /* Do not found the content, must have error*/
+ }
+
+ judge = strstr(location, "tryagain=1");
+ if (judge == NULL) {
+ judge = strstr(location, "close");
+ if (judge != NULL) {
+ /* Successfully logged in*/
+ printf("Successfully Logged in\n");
+ } else {
+ printf("Error in captcha process\n");
+ }
+ yahoo_input_close(yid);
+ return ;
+ } else {
+ location = judge;
+ /* Find the end of the URL*/
+ url = strstr(location, ".jpg");
+ url[4] = '\0';
+
+ /* Find the head of the URL*/
+ url = strstr(location, "http://");
+
+ /* handle the URL to client to show the image and get the code in the image*/
+ YAHOO_CALLBACK(ext_yahoo_chat_verify)(url, vcode);
+
+ /* construct a HTTP post message to send the verification code to the server*/
+ length = snprintf(content, sizeof(content), "question=%s"
+ "&answer=%s"
+ "&.intl=us&.lang=en-US",
+ url, vcode);
+
+ new_yid = y_new0(struct yahoo_input_data, 1);
+ new_yid->type = YAHOO_CONNECTION_CAPTCHA;
+ new_yid->yd = yid->yd;
+
+ yad = y_new0(struct yahoo_post_data, 1);
+ yad->yid = new_yid;
+ yad->data = strdup(content);
+ yahoo_input_close(yid);
+ yahoo_http_post(new_yid->yd->client_id, "http://captcha.chat.yahoo.com/captcha1",
+ NULL, length, _yahoo_http_post_connected, yad);
+ }
+ yahoo_free_http_data(&data);
+}
+
static void yahoo_process_yab_connection(struct yahoo_input_data *yid, int over)
{
struct yahoo_data *yd = yid->yd;
@@ -3508,12 +3845,15 @@
static void (*yahoo_process_connection[]) (struct yahoo_input_data *,
int over) = {
-yahoo_process_pager_connection, yahoo_process_ft_connection,
+ yahoo_process_pager_connection,
+ yahoo_process_ft_connection,
yahoo_process_yab_connection,
yahoo_process_webcam_master_connection,
yahoo_process_webcam_connection,
yahoo_process_chatcat_connection,
- yahoo_process_search_connection, yahoo_process_auth_connection};
+ yahoo_process_search_connection,
+ yahoo_process_auth_connection,
+ yahoo_process_captcha_connection};
int yahoo_read_ready(int id, void *fd, void *data)
{
@@ -3581,6 +3921,8 @@
yd->current_status = -1;
yd->client_id = ++last_id;
+
+ yd->chat_room_list = NULL;
add_to_list(yd);
@@ -3891,11 +4233,6 @@
_yahoo_http_connected, yid);
}
-struct yahoo_post_data {
- struct yahoo_input_data *yid;
- char *data;
-};
-
static void _yahoo_http_post_connected(int id, void *fd, int error, void *data)
{
struct yahoo_post_data *yad = data;
@@ -4400,6 +4737,7 @@
struct yahoo_input_data *yid;
char url[1024];
char buff[1024];
+ YList *category;
if (!yd)
return;
@@ -4407,11 +4745,22 @@
yid = y_new0(struct yahoo_input_data, 1);
yid->yd = yd;
yid->type = YAHOO_CONNECTION_CHATCAT;
+ yid->chat_room_id = chatroomid;
if (chatroomid == 0) {
+ if (yd->chat_room_list) {
+ yahoo_free_chat_cat_list(yd->chat_room_list);
+ yd->chat_room_list = NULL;
+ }
snprintf(url, 1024,
"http://insider.msg.yahoo.com/ycontent/?chatcat=0");
} else {
+ if (!(yd->chat_room_list)) {
+ return;
+ }
+ category = find_room_category(yd->chat_room_list, chatroomid);
+ if(((yahoo_chatroom_category *)(category->data))->room_list)
+ yahoo_free_chat_room_list(((yahoo_chatroom_category *)(category->data))->room_list);
snprintf(url, 1024,
"http://insider.msg.yahoo.com/ycontent/?chatroom_%d=0",
chatroomid);
@@ -4421,12 +4770,12 @@
inputs = y_list_prepend(inputs, yid);
- yahoo_http_get(yid->yd->client_id, url, buff, 0, 0,
+ yahoo_http_get(yid->yd->client_id, url, buff, 1, 0,
_yahoo_http_connected, yid);
}
void yahoo_chat_logon(int id, const char *from, const char *room,
- const char *roomid)
+ const char *roomid, const char *country, const char *language)
{
struct yahoo_input_data *yid =
find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER);
@@ -4438,17 +4787,27 @@
yd = yid->yd;
+ /* First, send a CHAT ONLINE message*/
pkt = yahoo_packet_new(YAHOO_SERVICE_CHATONLINE, YPACKET_STATUS_DEFAULT,
yd->session_id);
yahoo_packet_hash(pkt, 1, (from ? from : yd->user));
yahoo_packet_hash(pkt, 109, yd->user);
yahoo_packet_hash(pkt, 6, "abcde");
+ if(country && language) {
+ yahoo_packet_hash(pkt, 98, country);
+ yahoo_packet_hash(pkt, 445, language);
+ } else {
+ yahoo_packet_hash(pkt, 98, "us");
+ yahoo_packet_hash(pkt, 445, "en-us");
+ }
+ yahoo_packet_hash(pkt, 135, YMSG_VERSION);
yahoo_send_packet(yid, pkt, 0);
yahoo_packet_free(pkt);
-
+
+ /* Second, Send a CHAT JOIN message*/
pkt = yahoo_packet_new(YAHOO_SERVICE_CHATJOIN, YPACKET_STATUS_DEFAULT,
yd->session_id);
@@ -4494,12 +4853,44 @@
yahoo_packet_free(pkt);
}
+void yahoo_chat_ignore(int id, const char *from, const char *user, int ignore)
+/*ignore = 1 means we are trying to ignore the user
+ ignore = 0 means we have already ignored the user and don't want to ignore him any more*/
+{
+ struct yahoo_input_data *yid =
+ find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER);
+ struct yahoo_data *yd;
+ struct yahoo_packet *pkt;
+
+ yd = yid->yd;
+
+ pkt = yahoo_packet_new(YAHOO_SERVICE_IGNORECONTACT, YPACKET_STATUS_DEFAULT,
+ yd->session_id);
+
+ yahoo_packet_hash(pkt, 1, (from ? from : yd->user));
+ if(ignore)
+ yahoo_packet_hash(pkt, 13, "1");
+ else
+ yahoo_packet_hash(pkt, 13, "2");
+ yahoo_packet_hash(pkt, 302, "319");
+ yahoo_packet_hash(pkt, 300, "319");
+ yahoo_packet_hash(pkt, 7, user);
+ yahoo_packet_hash(pkt, 301, "319");
+ yahoo_packet_hash(pkt, 303, "319");
+
+ yahoo_send_packet(yid, pkt, 0);
+
+ yahoo_packet_free(pkt);
+}
+
void yahoo_chat_logoff(int id, const char *from)
{
struct yahoo_input_data *yid =
find_input_by_id_and_type(id, YAHOO_CONNECTION_PAGER);
struct yahoo_data *yd;
struct yahoo_packet *pkt;
+ char c1005[8] = "12345678";
+ /* Any value of the field 1005 will cause not much difference, just use a hard-coding value */
if (!yid)
return;
@@ -4510,6 +4901,7 @@
yd->session_id);
yahoo_packet_hash(pkt, 1, (from ? from : yd->user));
+ yahoo_packet_hash(pkt, 1005, c1005);
yahoo_send_packet(yid, pkt, 0);
@@ -5483,6 +5875,25 @@
return yd->buddies;
}
+const YList *yahoo_get_chat_room_list(int id, int roomid, void *ext_data)
+{
+ struct yahoo_data *yd = find_conn_by_id(id);
+ YList *category;
+
+ if (!yd)
+ return NULL;
+ if(roomid == 0)
+ return yd->chat_room_list;
+ else {
+ if(yd->chat_room_list) {
+ category = find_room_category(yd->chat_room_list, roomid);
+ return ((yahoo_chatroom_category *)(category->data))->room_list;
+ } else {
+ return NULL;
+ }
+ }
+}
+
const YList *yahoo_get_ignorelist(int id)
{
struct yahoo_data *yd = find_conn_by_id(id);
Modified: trunk/libyahoo2/src/sample_client.c
===================================================================
--- trunk/libyahoo2/src/sample_client.c 2010-08-05 03:36:23 UTC (rev 380)
+++ trunk/libyahoo2/src/sample_client.c 2010-08-13 20:15:45 UTC (rev 381)
@@ -463,9 +463,173 @@
printf(" Location: %s", ycm->location);
}
+static void ext_yahoo_chat_verify(const char *url, char *vcode)
+{
+ printf("%s\n", url);
+ printf("Please input the verification code:");
+ scanf("%s", vcode);
+}
+
+static void traverse_cat_list(YList *list, int level)
+{
+ int i;
+ for(i=0; i<level; i++)
+ putchar('\t');
+ printf("%d - %s\n", ((yahoo_chatroom_category *)list->data)->id, ((yahoo_chatroom_category *)list->data)->name);
+ if(list->prev)
+ traverse_cat_list(list->prev, level+1);
+ if(list->next)
+ traverse_cat_list(list->next, level);
+}
+
+static void traverse_room_list(YList *list)
+{
+ YList *lobby;
+
+ while(list != NULL) {
+ lobby = list->prev;
+ while(lobby != NULL) {
+ printf("%d - %s %d [%d] [w%d]\n",
+ ((yahoo_chatroom_info *)list->data)->id, ((yahoo_chatroom_info *)list->data)->name,
+ ((yahoo_lobby_info *)lobby->data)->count, ((yahoo_lobby_info *)lobby->data)->users,
+ ((yahoo_lobby_info *)lobby->data)->webcams);
+ lobby = lobby->prev;
+ }
+ list = list->next;
+ }
+}
+
+static char *get_xml_chatroom_info(char *content, char *pattern)
+{
+ char *header, *tailer, *info;
+ header = strstr(content, pattern);
+ header += strlen(pattern);
+ tailer = strchr(header, '"');
+ *tailer = '\0';
+ info = malloc(tailer - header + 1);
+ strcpy(info, header);
+ *tailer = '"';
+ return info;
+}
+
static void ext_yahoo_chat_cat_xml(int id, const char *xml)
{
- print_message(("%s", xml));
+ char *content = strdup(xml), *header, *tailer;
+ int child_mode = 0;
+ YList *room_list;
+ YList *list_ptr;
+ YList *cat_stack[5];
+ int stack_ptr = 0;
+ YList *temp, *child, *tail;
+
+ content = strstr(content, "<category"); /* Find the first category*/
+
+ if (content == NULL) {
+ room_list = calloc(1, sizeof(YList));
+ list_ptr = room_list;
+
+ content = strdup(xml);
+ content = strstr(content, "<chatRooms>");
+ if (content == NULL) {
+ printf("Error : Cannot find anything!\n");
+ return ;
+ }
+
+ content += strlen("<chatRooms>");
+
+ content = strchr(content, '<');
+ while(*(content + 1) != '/') {
+
+ /* find all the fields of a chat room */
+ temp = calloc(1, sizeof(YList));
+ temp->data = calloc(1, sizeof(yahoo_chatroom_info));
+ tail = temp;
+
+ ((yahoo_chatroom_info *)(temp->data))->type = get_xml_chatroom_info(content, "type=\"");
+ ((yahoo_chatroom_info *)(temp->data))->id = atoi(get_xml_chatroom_info(content, "id=\""));
+ ((yahoo_chatroom_info *)(temp->data))->name = get_xml_chatroom_info(content, "name=\"");
+ ((yahoo_chatroom_info *)(temp->data))->topic = get_xml_chatroom_info(content, "topic=\"");
+
+ /* find all lobbys of a chat room */
+
+ content = strchr(content+1, '<');
+ while(*(content + 1) != '/') {
+ child = calloc(1, sizeof(YList));
+ child->data = calloc(1, sizeof(yahoo_lobby_info));
+
+ ((yahoo_lobby_info *)child->data)->count = atoi(get_xml_chatroom_info(content, "count=\""));
+ ((yahoo_lobby_info *)child->data)->users = atoi(get_xml_chatroom_info(content, "users=\""));
+ ((yahoo_lobby_info *)child->data)->voices = atoi(get_xml_chatroom_info(content, "voices=\""));
+ ((yahoo_lobby_info *)child->data)->webcams = atoi(get_xml_chatroom_info(content, "webcams=\""));
+
+ /* prev is used as a pointer to the the lobby*/
+ tail->prev = child;
+ tail = child;
+
+ content = strchr(content+1, '<');
+ }
+
+ list_ptr->next = temp;
+ list_ptr = temp;
+
+ content = strchr(content+1, '<');
+ }
+
+ /* Traverse the structure and print them out */
+ traverse_room_list(room_list->next);
+
+ } else {
+ /* Create a head node */
+ room_list = calloc(1, sizeof(YList));
+ list_ptr = room_list;
+
+ while(stack_ptr >= 0) {
+ /* prev is used as a pointer linked with its child categories */
+
+ /* Find the id */
+ temp = calloc(1, sizeof(YList));
+ temp->data = calloc(1, sizeof(yahoo_chatroom_category));
+ header = strchr(content, '"');
+ tailer = strchr(header+1, '"');
+ *tailer = '\0';
+ ((yahoo_chatroom_category *)temp->data)->id = atoi(strdup(header + 1));
+
+ /* Find the name*/
+ header = strchr(tailer+1, '"');
+ tailer = strchr(header+1, '"');
+ *tailer = '\0';
+ ((yahoo_chatroom_category *)temp->data)->name = strdup(header + 1);
+ ((yahoo_chatroom_category *)temp->data)->room_list = NULL;
+
+ content = strchr(tailer+1, '>');
+ if(child_mode == 1) {
+ list_ptr->prev = temp;
+ list_ptr = temp;
+ cat_stack[stack_ptr] = temp;
+ child_mode = 0;
+ } else {
+ list_ptr->next = temp;
+ list_ptr = temp;
+ cat_stack[stack_ptr] = temp;
+ }
+
+ if (*(content-1) != '/') {
+ stack_ptr ++;
+ child_mode = 1;
+ }
+
+ /* find the next category */
+ content = strchr(content, '<');
+ while (*(content+1) == '/' && stack_ptr >= 0) {
+ stack_ptr --;
+ list_ptr = cat_stack[stack_ptr];
+ content = strchr(content + 1, '<');
+ }
+ }
+
+ /* Traverse the structure and print them out */
+ traverse_cat_list(room_list->next, 0);
+ }
}
static void ext_yahoo_chat_join(int id, const char *me, const char *room, const char * topic, YList *members, void *fd)
@@ -1444,8 +1608,23 @@
int roomid;
roomid = atoi(copy);
yahoo_get_chatrooms(ylad->id, roomid);
+ } else if(!strncasecmp(cmd, "CHR", strlen("CHR"))) {
+ int roomid;
+ void *ext_data;
+ roomid = atoi(copy);
+ YList *list = yahoo_get_chat_room_list(ylad->id, roomid, ext_data);
+ if(list) {
+ if(roomid == 0)
+ traverse_cat_list(list, 0);
+ else
+ traverse_room_list(list);
+ }
+
} else if(!strncasecmp(cmd, "CHJ", strlen("CHJ"))) {
+ /* Command Format "CHJ roomid roomname" */
char *roomid, *roomname;
+ char country[] = "us";
+ char language[] = "en-us";
/* Linux, FreeBSD, Solaris:1 */
/* 1600326591 */
roomid = copy;
@@ -1456,24 +1635,38 @@
}
roomname = copy;
if(roomid && roomname) {
- yahoo_chat_logon(ylad->id, NULL, roomname, roomid);
+ yahoo_chat_logon(ylad->id, NULL, roomname, roomid, country, language);
}
} else if(!strncasecmp(cmd, "CHM", strlen("CHM"))) {
+ /* Command Format "CHM roomname msg" */
char *msg, *roomname;
roomname = copy;
- tmp = strstr(copy, " ");
+ tmp = strchr(copy, ' ');
if(tmp) {
*tmp = '\0';
- copy = tmp+2;
+ copy = tmp+1;
}
msg = copy;
if(roomname && msg) {
yahoo_chat_message(ylad->id, NULL, roomname, msg, 1, 0);
}
+ } else if(!strncasecmp(cmd, "CHI", strlen("CHI"))) {
+ /* Ignore a member in the chat room, Command Format "CHI user_to_be_ignored" */
+ char *user;
+ user = copy;
+ yahoo_chat_ignore(ylad->id, NULL, user, 1);
+
+ } else if(!strncasecmp(cmd, "CHU", strlen("CHU"))) {
+ /* Unignore a member in the chat room, Command Format "CHI user_to_be_ignored" */
+ char *user;
+ user = copy;
+ yahoo_chat_ignore(ylad->id, NULL, user, 0);
+
} else if(!strncasecmp(cmd, "CHX", strlen("CHX"))) {
yahoo_chat_logoff(ylad->id, NULL);
+
} else if(!strncasecmp(cmd, "STA", strlen("STA"))) {
if(isdigit(copy[0])) {
state = (enum yahoo_status)atoi(copy);
@@ -1853,6 +2046,7 @@
yc.ext_yahoo_conf_userjoin = ext_yahoo_conf_userjoin;
yc.ext_yahoo_conf_userleave = ext_yahoo_conf_userleave;
yc.ext_yahoo_conf_message = ext_yahoo_conf_message;
+ yc.ext_yahoo_chat_verify = ext_yahoo_chat_verify;
yc.ext_yahoo_chat_cat_xml = ext_yahoo_chat_cat_xml;
yc.ext_yahoo_chat_join = ext_yahoo_chat_join;
yc.ext_yahoo_chat_userjoin = ext_yahoo_chat_userjoin;
Modified: trunk/libyahoo2/src/yahoo2.h
===================================================================
--- trunk/libyahoo2/src/yahoo2.h 2010-08-05 03:36:23 UTC (rev 380)
+++ trunk/libyahoo2/src/yahoo2.h 2010-08-13 20:15:45 UTC (rev 381)
@@ -139,10 +139,12 @@
void yahoo_get_chatrooms(int id, int chatroomid);
/* join room with specified roomname and roomid */
void yahoo_chat_logon(int id, const char *from, const char *room,
- const char *roomid);
+ const char *roomid, const char *country, const char *language);
/* Send message "msg" to room with specified roomname, msgtype is 1-normal message or 2-/me mesage */
void yahoo_chat_message(int id, const char *from, const char *room,
const char *msg, const int msgtype, const int utf8);
+/* Ignore a contact in the chat room, ignore = 1 represents ignore and ignore = 0 represents unignore */
+ void yahoo_chat_ignore(int id, const char *from, const char *user, int ignore);
/* Log off chat */
void yahoo_chat_logoff(int id, const char *from);
Modified: trunk/libyahoo2/src/yahoo2_callbacks.h
===================================================================
--- trunk/libyahoo2/src/yahoo2_callbacks.h 2010-08-05 03:36:23 UTC (rev 380)
+++ trunk/libyahoo2/src/yahoo2_callbacks.h 2010-08-13 20:15:45 UTC (rev 381)
@@ -238,6 +238,16 @@
const char *me, const char *who, const char *room);
/*
+ * Name: ext_yahoo_chat_cat_verify
+ * Called when user log into chat room, client will receive a image
+ * while user needs to type in the characters in the image to verify
+ * Params:
+ * url - the URL of the image for verification
+ * vcode - the characters which is typed in by the user
+ */
+ void YAHOO_CALLBACK_TYPE(ext_yahoo_chat_verify) (const char *url, char *vcode);
+
+/*
* Name: ext_yahoo_chat_cat_xml
* Called when ?
* Params:
Modified: trunk/libyahoo2/src/yahoo2_types.h
===================================================================
--- trunk/libyahoo2/src/yahoo2_types.h 2010-08-05 03:36:23 UTC (rev 380)
+++ trunk/libyahoo2/src/yahoo2_types.h 2010-08-13 20:15:45 UTC (rev 381)
@@ -28,6 +28,8 @@
extern "C" {
#endif
+#define YMSG_VERSION "9.0.0.2152"
+
enum yahoo_service { /* these are easier to see in hex */
YAHOO_SERVICE_LOGON = 1,
YAHOO_SERVICE_LOGOFF,
@@ -229,7 +231,8 @@
YAHOO_CONNECTION_WEBCAM,
YAHOO_CONNECTION_CHATCAT,
YAHOO_CONNECTION_SEARCH,
- YAHOO_CONNECTION_AUTH
+ YAHOO_CONNECTION_AUTH,
+ YAHOO_CONNECTION_CAPTCHA
};
enum yahoo_webcam_direction_type {
@@ -302,6 +305,8 @@
void *server_settings;
struct yahoo_process_status_entry *half_user;
+
+ YList *chat_room_list;
};
struct yab {
@@ -324,6 +329,26 @@
struct yab *yab_entry;
};
+ typedef struct yahoo_chatroom_category{
+ int id;
+ char *name;
+ YList *room_list;
+ } yahoo_chatroom_category;
+
+ typedef struct yahoo_chatroom{
+ char *type;
+ int id;
+ char *name;
+ char *topic;
+ } yahoo_chatroom_info;
+
+ typedef struct yahoo_lobby{
+ int count;
+ int users;
+ int voices;
+ int webcams;
+ } yahoo_lobby_info;
+
enum yahoo_search_type {
YAHOO_SEARCH_KEYWORD = 0,
YAHOO_SEARCH_YID,
@@ -390,6 +415,19 @@
int f213; /* 213 state */
};
+ typedef struct pair{
+ char *name;
+ char *value;
+ }namevalue_pair;
+
+ typedef struct{
+ char *http_version;
+ char *status_code;
+ YList *headers;
+ char *content;
+ }http_data;
+
+
#ifdef __cplusplus
}
#endif
Modified: trunk/libyahoo2/src/yahoo_httplib.c
===================================================================
--- trunk/libyahoo2/src/yahoo_httplib.c 2010-08-05 03:36:23 UTC (rev 380)
+++ trunk/libyahoo2/src/yahoo_httplib.c 2010-08-13 20:15:45 UTC (rev 381)
@@ -61,6 +61,83 @@
extern enum yahoo_log_level log_level;
+char *yahoo_http_get_header_value(http_data data, char *field)
+{
+ YList *ptr = data.headers;
+ while(ptr != NULL) {
+ if(!strcmp(field, ((struct pair *)(ptr->data))->name))
+ return ((struct pair *)(ptr->data))->value;
+ ptr = ptr->next;
+ }
+ return NULL;
+}
+
+void yahoo_get_http_data(http_data data)
+{
+ YList *ptr = data.headers;
+ printf("%s, %s\n", data.http_version, data.status_code);
+ while(ptr != NULL) {
+ printf("%s : %s\n", ((struct pair *)(ptr->data))->name, ((struct pair *)(ptr->data))->value);
+ ptr = ptr->next;
+ }
+ printf("%s\n", data.content);
+}
+
+void yahoo_set_http_data(char *input, int length, http_data *struct_packet)
+{
+ char *head, *tail;
+ char *raw_packet = strdup(input);
+ namevalue_pair *temp_header;
+ YList *temp_ylist;
+
+ struct_packet->headers = NULL;
+
+ /* Get HTTP version and the status code */
+ struct_packet->http_version = y_new(char, 4);
+ struct_packet->status_code = y_new(char, 4);
+ sscanf(raw_packet, "%*[^/]/%s %s", struct_packet->http_version, struct_packet->status_code);
+
+ head = strstr(raw_packet, "\r\n");
+ head = head + 2;
+ while(*head != '\r' || *(head+1) != '\n') {
+ temp_header = y_new(struct pair, 1);
+ temp_ylist = y_new(struct _YList, 1);
+
+ tail = strchr(head, ':');
+ *tail = '\0';
+ temp_header->name = strdup(head);
+
+ head = tail+2;
+ tail = strstr(head, "\r\n");
+ *tail = '\0';
+ temp_header->value = strdup(head);
+
+ struct_packet->headers = y_list_append(struct_packet->headers, temp_header);
+
+ head = tail+2;
+ }
+ head += 2;
+ tail = raw_packet + length;
+ *tail = '\0';
+ struct_packet->content = strdup(head);
+}
+
+void yahoo_free_http_data(http_data *http_pkt)
+{
+ YList *rm;
+ FREE(http_pkt->http_version);
+ FREE(http_pkt->status_code);
+
+ while(http_pkt->headers) {
+ rm = http_pkt->headers;
+ FREE(((namevalue_pair *)(http_pkt->headers->data))->name);
+ FREE(((namevalue_pair *)(http_pkt->headers->data))->value);
+ FREE(http_pkt->headers->data);
+ http_pkt->headers = y_list_remove_link(http_pkt->headers, http_pkt->headers);
+ y_list_free_1(rm);
+ }
+}
+
int yahoo_tcp_readline(char *ptr, int maxlen, void *fd)
{
int n, rc;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <sid...@us...> - 2010-08-05 03:36:30
|
Revision: 380
http://libyahoo2.svn.sourceforge.net/libyahoo2/?rev=380&view=rev
Author: siddheshp
Date: 2010-08-05 03:36:23 +0000 (Thu, 05 Aug 2010)
Log Message:
-----------
NULL pointer dereference fixes by Wilmer van der Gaast
Modified Paths:
--------------
trunk/libyahoo2/src/libyahoo2.c
Modified: trunk/libyahoo2/src/libyahoo2.c
===================================================================
--- trunk/libyahoo2/src/libyahoo2.c 2010-07-27 02:48:56 UTC (rev 379)
+++ trunk/libyahoo2/src/libyahoo2.c 2010-08-05 03:36:23 UTC (rev 380)
@@ -4935,6 +4935,9 @@
static void yahoo_remove_active_transfer(struct send_file_data *sfd)
{
+ if (sfd == NULL)
+ return;
+
active_file_transfers = y_list_remove(active_file_transfers, sfd);
free(sfd->id);
free(sfd->who);
@@ -5095,7 +5098,7 @@
else {
YAHOO_CALLBACK(ext_yahoo_file_transfer_done)
(yid->yd->client_id, YAHOO_FILE_TRANSFER_UNKNOWN,
- sfd->data);
+ sfd ? sfd->data : NULL);
yahoo_remove_active_transfer(sfd);
}
@@ -5151,7 +5154,7 @@
else {
YAHOO_CALLBACK(ext_yahoo_file_transfer_done)
(yid->yd->client_id, YAHOO_FILE_TRANSFER_UNKNOWN,
- sfd->data);
+ sfd ? sfd->data : NULL);
yahoo_remove_active_transfer(sfd);
}
@@ -5266,7 +5269,7 @@
else if (!sfd || action == YAHOO_FILE_TRANSFER_REJECT) {
YAHOO_CALLBACK(ext_yahoo_file_transfer_done)
(yd->client_id, YAHOO_FILE_TRANSFER_REJECT,
- sfd->data);
+ sfd ? sfd->data : NULL);
yahoo_remove_active_transfer(sfd);
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ra...@us...> - 2010-07-27 02:49:03
|
Revision: 379
http://libyahoo2.svn.sourceforge.net/libyahoo2/?rev=379&view=rev
Author: rayvd
Date: 2010-07-27 02:48:56 +0000 (Tue, 27 Jul 2010)
Log Message:
-----------
Changes from 1.0.1 release.
Modified Paths:
--------------
trunk/libyahoo2-htdocs/ChangeLog
trunk/libyahoo2-htdocs/NEWS
trunk/libyahoo2-htdocs/index.shtml
Modified: trunk/libyahoo2-htdocs/ChangeLog
===================================================================
--- trunk/libyahoo2-htdocs/ChangeLog 2010-07-27 02:46:23 UTC (rev 378)
+++ trunk/libyahoo2-htdocs/ChangeLog 2010-07-27 02:48:56 UTC (rev 379)
@@ -1,7 +1,3 @@
-* Mon Jul 26 2010 Ray Van Dolson <ra...@bl...>
-- Utilizing Yahoo provided server names (siddheshp's commits 370-372)
-- Upped version number to 1.0.1
-
* Tue Apr 20 2010 Siddhesh Poyarekar <sid...@gm...>
- YMSG16 auth support. Breaks all old apps
- Make callback struct mandatory
Modified: trunk/libyahoo2-htdocs/NEWS
===================================================================
--- trunk/libyahoo2-htdocs/NEWS 2010-07-27 02:46:23 UTC (rev 378)
+++ trunk/libyahoo2-htdocs/NEWS 2010-07-27 02:48:56 UTC (rev 379)
@@ -1,9 +1,3 @@
-* 26-Jul-2010
-
-Releaseing 1.0.1 to resolve issue with Yahoo retiring or disabling
-the default server hard-coded into libyahoo2. See the ChangeLog
-for additional details.
-
* 20-Apr-2010
Releasing 1.0.0 to send out YMSG16 support into the wild. This breaks
Modified: trunk/libyahoo2-htdocs/index.shtml
===================================================================
--- trunk/libyahoo2-htdocs/index.shtml 2010-07-27 02:46:23 UTC (rev 378)
+++ trunk/libyahoo2-htdocs/index.shtml 2010-07-27 02:48:56 UTC (rev 379)
@@ -10,7 +10,7 @@
<!--#include virtual="links.shtml" -->
<div class="content">
<p>
-libyahoo2 version 1.0.1 - 26 Jul 2010
+libyahoo2 version 1.0.0 - 20 Apr 2010
</p>
<p>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ra...@us...> - 2010-07-27 02:46:29
|
Revision: 378
http://libyahoo2.svn.sourceforge.net/libyahoo2/?rev=378&view=rev
Author: rayvd
Date: 2010-07-27 02:46:23 +0000 (Tue, 27 Jul 2010)
Log Message:
-----------
Tagging for 1.0.1
Added Paths:
-----------
tags/v1_0_1/
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ra...@us...> - 2010-07-27 02:45:21
|
Revision: 377
http://libyahoo2.svn.sourceforge.net/libyahoo2/?rev=377&view=rev
Author: rayvd
Date: 2010-07-27 02:45:15 +0000 (Tue, 27 Jul 2010)
Log Message:
-----------
Botched this tag.
Removed Paths:
-------------
tags/v1_0_1/
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ra...@us...> - 2010-07-27 02:38:40
|
Revision: 376
http://libyahoo2.svn.sourceforge.net/libyahoo2/?rev=376&view=rev
Author: rayvd
Date: 2010-07-27 02:38:33 +0000 (Tue, 27 Jul 2010)
Log Message:
-----------
Tagging for 1.0.1 from branch.
Added Paths:
-----------
tags/v1_0_1/
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ra...@us...> - 2010-07-27 02:35:13
|
Revision: 375
http://libyahoo2.svn.sourceforge.net/libyahoo2/?rev=375&view=rev
Author: rayvd
Date: 2010-07-27 02:35:07 +0000 (Tue, 27 Jul 2010)
Log Message:
-----------
Updated website for 1.0.1 release.
Modified Paths:
--------------
trunk/libyahoo2-htdocs/ChangeLog
trunk/libyahoo2-htdocs/NEWS
trunk/libyahoo2-htdocs/index.shtml
Modified: trunk/libyahoo2-htdocs/ChangeLog
===================================================================
--- trunk/libyahoo2-htdocs/ChangeLog 2010-07-27 01:08:07 UTC (rev 374)
+++ trunk/libyahoo2-htdocs/ChangeLog 2010-07-27 02:35:07 UTC (rev 375)
@@ -1,3 +1,7 @@
+* Mon Jul 26 2010 Ray Van Dolson <ra...@bl...>
+- Utilizing Yahoo provided server names (siddheshp's commits 370-372)
+- Upped version number to 1.0.1
+
* Tue Apr 20 2010 Siddhesh Poyarekar <sid...@gm...>
- YMSG16 auth support. Breaks all old apps
- Make callback struct mandatory
Modified: trunk/libyahoo2-htdocs/NEWS
===================================================================
--- trunk/libyahoo2-htdocs/NEWS 2010-07-27 01:08:07 UTC (rev 374)
+++ trunk/libyahoo2-htdocs/NEWS 2010-07-27 02:35:07 UTC (rev 375)
@@ -1,3 +1,9 @@
+* 26-Jul-2010
+
+Releaseing 1.0.1 to resolve issue with Yahoo retiring or disabling
+the default server hard-coded into libyahoo2. See the ChangeLog
+for additional details.
+
* 20-Apr-2010
Releasing 1.0.0 to send out YMSG16 support into the wild. This breaks
Modified: trunk/libyahoo2-htdocs/index.shtml
===================================================================
--- trunk/libyahoo2-htdocs/index.shtml 2010-07-27 01:08:07 UTC (rev 374)
+++ trunk/libyahoo2-htdocs/index.shtml 2010-07-27 02:35:07 UTC (rev 375)
@@ -10,7 +10,7 @@
<!--#include virtual="links.shtml" -->
<div class="content">
<p>
-libyahoo2 version 1.0.0 - 20 Apr 2010
+libyahoo2 version 1.0.1 - 26 Jul 2010
</p>
<p>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ra...@us...> - 2010-07-27 01:08:13
|
Revision: 374
http://libyahoo2.svn.sourceforge.net/libyahoo2/?rev=374&view=rev
Author: rayvd
Date: 2010-07-27 01:08:07 +0000 (Tue, 27 Jul 2010)
Log Message:
-----------
Branching for 1.0.1
Added Paths:
-----------
branches/RELEASE_1_0_1_BRANCH/
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <sid...@us...> - 2010-06-02 20:55:31
|
Revision: 373
http://libyahoo2.svn.sourceforge.net/libyahoo2/?rev=373&view=rev
Author: siddheshp
Date: 2010-06-02 20:55:25 +0000 (Wed, 02 Jun 2010)
Log Message:
-----------
- Set 5050 as the default port for the sample_client
- Actually make the fallback hosts and ports work
Modified Paths:
--------------
trunk/libyahoo2/src/libyahoo2.c
trunk/libyahoo2/src/sample_client.c
Modified: trunk/libyahoo2/src/libyahoo2.c
===================================================================
--- trunk/libyahoo2/src/libyahoo2.c 2010-06-02 20:13:01 UTC (rev 372)
+++ trunk/libyahoo2/src/libyahoo2.c 2010-06-02 20:55:25 UTC (rev 373)
@@ -1726,7 +1726,6 @@
ccd = y_new0(struct connect_callback_data, 1);
ccd->yd = yd;
- ccd->server_i = -1;
host = yss->pager_host;
@@ -3610,7 +3609,7 @@
if (fallback_ports[ccd->i]) {
char *host = yss->pager_host;
- if (!host || ccd->server_i >= 0)
+ if (!host)
host = yss->pager_host_list[ccd->server_i];
yss->pager_port = fallback_ports[ccd->i++];
@@ -3620,19 +3619,17 @@
if (tag > 0)
ccd->tag = tag;
- } else if (yss->pager_host_list &&
+ } else if (yss->pager_host_list
+ && yss->pager_host_list[ccd->server_i]) {
- (ccd->server_i < 0
- || yss->pager_host_list[ccd->server_i])) {
-
- if (ccd->server_i < 0)
- ccd->server_i++;
-
/* Get back to the default port */
yss->pager_port = pager_port;
+ ccd->server_i++;
+ LOG(("Fallback: Connecting to %s:%d", yss->pager_host_list[ccd->server_i], yss->pager_port));
+
ccd->i = 0;
tag = YAHOO_CALLBACK(ext_yahoo_connect_async) (yd->client_id,
- yss->pager_host_list[ccd->server_i++], yss->pager_port,
+ yss->pager_host_list[ccd->server_i], yss->pager_port,
yahoo_connected, ccd, 0);
} else {
FREE(ccd);
Modified: trunk/libyahoo2/src/sample_client.c
===================================================================
--- trunk/libyahoo2/src/sample_client.c 2010-06-02 20:13:01 UTC (rev 372)
+++ trunk/libyahoo2/src/sample_client.c 2010-06-02 20:55:25 UTC (rev 373)
@@ -873,7 +873,7 @@
ylad->id = yahoo_init_with_attributes(ylad->yahoo_id, ylad->password,
"local_host", local_host,
- "pager_port", 23,
+ "pager_port", 5050,
NULL);
ylad->status = YAHOO_STATUS_OFFLINE;
yahoo_login(ylad->id, login_mode);
@@ -1184,7 +1184,7 @@
struct _conn *c;
- LOG(("Connecting to %s", host));
+ LOG(("Connecting to %s:%d", host, port));
if(!(server = gethostbyname(host))) {
errno=h_errno;
@@ -1240,7 +1240,7 @@
ext_yahoo_close(c);
- callback(NULL, 0, data);
+ callback(NULL, errno, data);
return -1;
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <sid...@us...> - 2010-06-02 20:13:07
|
Revision: 372
http://libyahoo2.svn.sourceforge.net/libyahoo2/?rev=372&view=rev
Author: siddheshp
Date: 2010-06-02 20:13:01 +0000 (Wed, 02 Jun 2010)
Log Message:
-----------
Allow libyahoo2 to try servers from a list rather than just one. A
future enhancement would be to move these servers into a configuration
file.
The old behaviour of trying just one server still persists, but an
implementation can have only one of the two. Effectively, if the
implementation does not provide a pager_host, then the hard-coded
host_list is used. The following pager hosts are being used:
scs.msg.yahoo.com
scsa.msg.yahoo.com
scsb.msg.yahoo.com
scsc.msg.yahoo.com
List flicked from:
http://help.yahoo.com/l/in/yahoo/messenger/messenger10/messenger/mstafireconfig.html;_ylt=AhjrK1VzeHcy30osBr_q4od143dG
Modified Paths:
--------------
trunk/libyahoo2/src/libyahoo2.c
Modified: trunk/libyahoo2/src/libyahoo2.c
===================================================================
--- trunk/libyahoo2/src/libyahoo2.c 2010-05-23 09:47:22 UTC (rev 371)
+++ trunk/libyahoo2/src/libyahoo2.c 2010-06-02 20:13:01 UTC (rev 372)
@@ -134,7 +134,12 @@
}
/* default values for servers */
-static char pager_host[] = "scs.msg.yahoo.com";
+static char *default_pager_hosts[] = { "scs.msg.yahoo.com",
+ "scsa.msg.yahoo.com",
+ "scsb.msg.yahoo.com",
+ "scsc.msg.yahoo.com",
+ NULL};
+
static int pager_port = 5050;
static int fallback_ports[] = { 23, 25, 80, 20, 119, 8001, 8002, 5050, 0 };
@@ -152,6 +157,7 @@
struct yahoo_data *yd;
int tag;
int i;
+ int server_i;
};
struct yahoo_pair {
@@ -210,6 +216,7 @@
char *webcam_description;
char *local_host;
int conn_type;
+ char **pager_host_list;
};
static void yahoo_process_ft_connection(struct yahoo_input_data *yid, int over);
@@ -226,7 +233,12 @@
struct yahoo_server_settings *yss =
y_new0(struct yahoo_server_settings, 1);
- yss->pager_host = strdup(pager_host);
+ /* Give preference to the default host list
+ * Make sure that only one of the two is set at any time
+ */
+ yss->pager_host = NULL;
+ yss->pager_host_list = default_pager_hosts;
+
yss->pager_port = pager_port;
yss->filetransfer_host = strdup(filetransfer_host);
yss->filetransfer_port = filetransfer_port;
@@ -245,6 +257,7 @@
char *key;
char *svalue;
int nvalue;
+ char **pvalue;
while (1) {
key = va_arg(ap, char *);
@@ -255,6 +268,12 @@
svalue = va_arg(ap, char *);
free(yss->pager_host);
yss->pager_host = strdup(svalue);
+ yss->pager_host_list = NULL;
+ } else if (!strcmp(key, "pager_host_list")) {
+ pvalue = va_arg(ap, char **);
+ yss->pager_host_list = pvalue;
+ free(yss->pager_host);
+ yss->pager_host = NULL;
} else if (!strcmp(key, "pager_port")) {
nvalue = va_arg(ap, int);
yss->pager_port = nvalue;
@@ -1695,6 +1714,8 @@
struct yahoo_server_settings *yss;
int tag;
+ char *host;
+
struct yahoo_input_data *yid = y_new0(struct yahoo_input_data, 1);
yid->yd = yd;
yid->type = YAHOO_CONNECTION_PAGER;
@@ -1705,9 +1726,15 @@
ccd = y_new0(struct connect_callback_data, 1);
ccd->yd = yd;
+ ccd->server_i = -1;
+ host = yss->pager_host;
+
+ if (!host)
+ host = yss->pager_host_list[0];
+
tag = YAHOO_CALLBACK(ext_yahoo_connect_async) (yd->client_id,
- yss->pager_host, yss->pager_port, yahoo_connected, ccd, 0);
+ host, yss->pager_port, yahoo_connected, ccd, 0);
/*
* if tag <= 0, then callback has already been called
@@ -3579,15 +3606,34 @@
struct yahoo_server_settings *yss = yd->server_settings;
if (error) {
+ int tag;
if (fallback_ports[ccd->i]) {
- int tag;
+ char *host = yss->pager_host;
+
+ if (!host || ccd->server_i >= 0)
+ host = yss->pager_host_list[ccd->server_i];
+
yss->pager_port = fallback_ports[ccd->i++];
tag = YAHOO_CALLBACK(ext_yahoo_connect_async) (yd->
- client_id, yss->pager_host, yss->pager_port,
+ client_id, host, yss->pager_port,
yahoo_connected, ccd, 0);
if (tag > 0)
ccd->tag = tag;
+ } else if (yss->pager_host_list &&
+
+ (ccd->server_i < 0
+ || yss->pager_host_list[ccd->server_i])) {
+
+ if (ccd->server_i < 0)
+ ccd->server_i++;
+
+ /* Get back to the default port */
+ yss->pager_port = pager_port;
+ ccd->i = 0;
+ tag = YAHOO_CALLBACK(ext_yahoo_connect_async) (yd->client_id,
+ yss->pager_host_list[ccd->server_i++], yss->pager_port,
+ yahoo_connected, ccd, 0);
} else {
FREE(ccd);
YAHOO_CALLBACK(ext_yahoo_login_response) (yd->client_id,
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <sid...@us...> - 2010-05-23 09:47:28
|
Revision: 371
http://libyahoo2.svn.sourceforge.net/libyahoo2/?rev=371&view=rev
Author: siddheshp
Date: 2010-05-23 09:47:22 +0000 (Sun, 23 May 2010)
Log Message:
-----------
Use the right server as default
Modified Paths:
--------------
trunk/libyahoo2/src/libyahoo2.c
Modified: trunk/libyahoo2/src/libyahoo2.c
===================================================================
--- trunk/libyahoo2/src/libyahoo2.c 2010-04-21 03:13:49 UTC (rev 370)
+++ trunk/libyahoo2/src/libyahoo2.c 2010-05-23 09:47:22 UTC (rev 371)
@@ -134,7 +134,7 @@
}
/* default values for servers */
-static char pager_host[] = "cs101.msg.ac4.yahoo.com";
+static char pager_host[] = "scs.msg.yahoo.com";
static int pager_port = 5050;
static int fallback_ports[] = { 23, 25, 80, 20, 119, 8001, 8002, 5050, 0 };
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <sid...@us...> - 2010-04-21 03:13:56
|
Revision: 370
http://libyahoo2.svn.sourceforge.net/libyahoo2/?rev=370&view=rev
Author: siddheshp
Date: 2010-04-21 03:13:49 +0000 (Wed, 21 Apr 2010)
Log Message:
-----------
Missed updating the version number in the footer
Modified Paths:
--------------
trunk/libyahoo2-htdocs/footer.shtml
Modified: trunk/libyahoo2-htdocs/footer.shtml
===================================================================
--- trunk/libyahoo2-htdocs/footer.shtml 2010-04-20 17:40:13 UTC (rev 369)
+++ trunk/libyahoo2-htdocs/footer.shtml 2010-04-21 03:13:49 UTC (rev 370)
@@ -6,5 +6,5 @@
alt="SourceForge Logo"></a>
Copyright (c) 2002-2008
<a href="http://staff.ncst.ernet.in/1/1/philip/">Philip S Tellis</a><br>
-libyahoo2 version 0.7.6
+libyahoo2 version 1.0.0
</div>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <sid...@us...> - 2010-04-20 17:40:20
|
Revision: 369
http://libyahoo2.svn.sourceforge.net/libyahoo2/?rev=369&view=rev
Author: siddheshp
Date: 2010-04-20 17:40:13 +0000 (Tue, 20 Apr 2010)
Log Message:
-----------
Updated website to reflect 1.0.0 release
Modified Paths:
--------------
trunk/libyahoo2-htdocs/ChangeLog
trunk/libyahoo2-htdocs/NEWS
trunk/libyahoo2-htdocs/download.shtml
trunk/libyahoo2-htdocs/index.shtml
trunk/libyahoo2-htdocs/links.shtml
Modified: trunk/libyahoo2-htdocs/ChangeLog
===================================================================
--- trunk/libyahoo2-htdocs/ChangeLog 2010-04-20 17:17:50 UTC (rev 368)
+++ trunk/libyahoo2-htdocs/ChangeLog 2010-04-20 17:40:13 UTC (rev 369)
@@ -1,3 +1,11 @@
+* Tue Apr 20 2010 Siddhesh Poyarekar <sid...@gm...>
+- YMSG16 auth support. Breaks all old apps
+- Make callback struct mandatory
+- Fixed Address book support
+- YMSG16 file transfer
+- YMSG16 buddy list and status messages
+- Upped version number to 1.0.0
+
* Sun Jun 01 2008 Ray Van Dolson <ra...@bl...>
- Up version number to 0.7.7
- Enable _GNU_SOURCE macro for builds. This makes newer libc's provide us
Modified: trunk/libyahoo2-htdocs/NEWS
===================================================================
--- trunk/libyahoo2-htdocs/NEWS 2010-04-20 17:17:50 UTC (rev 368)
+++ trunk/libyahoo2-htdocs/NEWS 2010-04-20 17:40:13 UTC (rev 369)
@@ -1,3 +1,9 @@
+* 20-Apr-2010
+
+Releasing 1.0.0 to send out YMSG16 support into the wild. This breaks
+compatibility with older messengers, so they will have to be rewritten.
+See release note on our Sourceforge.net project page for mor information
+
* 01-Jun-2008
Releasing 0.7.7 with fixes to enable compilation on Fedora 9 and newer
Modified: trunk/libyahoo2-htdocs/download.shtml
===================================================================
--- trunk/libyahoo2-htdocs/download.shtml 2010-04-20 17:17:50 UTC (rev 368)
+++ trunk/libyahoo2-htdocs/download.shtml 2010-04-20 17:40:13 UTC (rev 369)
@@ -13,7 +13,7 @@
<h2>Download Information</h2>
<p>
You can download all releases from the <a
-href="http://sourceforge.net/project/showfiles.php?group_id=48554"
+href="https://sourceforge.net/projects/libyahoo2/files/"
title="Download all releases">project download page</a>, or get
the <a
href="http://cvs.sourceforge.net/cvstarballs/html-tmpl-java-cvsroot.tar.gz"
Modified: trunk/libyahoo2-htdocs/index.shtml
===================================================================
--- trunk/libyahoo2-htdocs/index.shtml 2010-04-20 17:17:50 UTC (rev 368)
+++ trunk/libyahoo2-htdocs/index.shtml 2010-04-20 17:40:13 UTC (rev 369)
@@ -10,12 +10,12 @@
<!--#include virtual="links.shtml" -->
<div class="content">
<p>
-libyahoo2 version 0.7.7 - 1 Jun 2008
+libyahoo2 version 1.0.0 - 20 Apr 2010
</p>
<p>
libyahoo2 is a C library interface to the new Yahoo! Messenger protocol. It
-supports almost all current features of the protocol.
+supports major features of the protocol.
</p>
<h2>Feature list</h2>
@@ -37,7 +37,7 @@
<li>Reject buddy</li>
<li>Buddy status updates</li>
<li>Group renaming</li>
- <li>Buddy Search (new in 0.7.3)</li>
+ <!-- li>Buddy Search (new in 0.7.3)</li -->
</ul>
</li>
<li>Yahoo Address book support</li>
@@ -57,13 +57,13 @@
<li>Send message to conference</li>
</ul>
</li>
-<li>Yahoo Chat
+<!-- li>Yahoo Chat
<ul>
<li>List chatrooms</li>
<li>Join/leave a chatroom</li>
<li>Chat :)</li>
</ul>
-</li>
+</li -->
<li>Webcam support
<ul>
<li>Support for viewing other people's webcams</li>
@@ -110,6 +110,7 @@
<tr><td>Micha\xEBl Kamp</td> <td>miksun AT users . sourceforge . net</td> <td>Webcam Support</td></tr>
<tr><td>Wayne Parrott</td> <td>wayne_p AT pacific . net . au</td> <td>Yahoo Chat</td></tr>
<tr><td>Ray Van Dolson</td> <td>rayvd AT bludgeon . org</td> <td>Fedora Packager / Release</td></tr>
+<tr><td>Siddhesh Poyarekar</td> <td>siddhesh . poyarekar AT gmail . com</td> <td>YMSG16 Support</td></tr>
</table>
<p>
@@ -143,7 +144,7 @@
<h2>Copyright</h2>
<p>
-libyahoo2 is Copyright © 2002-2008 The libyahoo2 Project Authors and Contributors.
+libyahoo2 is Copyright © 2002-2010 The libyahoo2 Project Authors and Contributors.
Distribution is under the terms of the GNU General Public Licence.
</p>
Modified: trunk/libyahoo2-htdocs/links.shtml
===================================================================
--- trunk/libyahoo2-htdocs/links.shtml 2010-04-20 17:17:50 UTC (rev 368)
+++ trunk/libyahoo2-htdocs/links.shtml 2010-04-20 17:40:13 UTC (rev 369)
@@ -6,7 +6,7 @@
title="The libyahoo2 home page">Home</a><br>
<a href="http://sourceforge.net/projects/libyahoo2/"
title="This is the project page on sourceforge. Submit bugs and patches here.">Project Page</a><br>
-<a href="http://sourceforge.net/project/showfiles.php?group_id=58181"
+<a href="https://sourceforge.net/projects/libyahoo2/files/"
title="Download the latest release.">Download</a><br>
<a href="http://lists.sourceforge.net/lists/listinfo/libyahoo2-users/"
title="Ok, so I have a mailing list too. Why not?">Mailing List</a><br>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <sid...@us...> - 2010-04-20 17:17:56
|
Revision: 368
http://libyahoo2.svn.sourceforge.net/libyahoo2/?rev=368&view=rev
Author: siddheshp
Date: 2010-04-20 17:17:50 +0000 (Tue, 20 Apr 2010)
Log Message:
-----------
Tagging releases in svn is ugly. Here goes 1.0.0
Added Paths:
-----------
tags/v1_0_0/
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <sid...@us...> - 2010-04-20 16:59:03
|
Revision: 367
http://libyahoo2.svn.sourceforge.net/libyahoo2/?rev=367&view=rev
Author: siddheshp
Date: 2010-04-20 16:58:57 +0000 (Tue, 20 Apr 2010)
Log Message:
-----------
Update changelog
Modified Paths:
--------------
trunk/libyahoo2/ChangeLog
Modified: trunk/libyahoo2/ChangeLog
===================================================================
--- trunk/libyahoo2/ChangeLog 2010-04-20 16:26:49 UTC (rev 366)
+++ trunk/libyahoo2/ChangeLog 2010-04-20 16:58:57 UTC (rev 367)
@@ -1,3 +1,11 @@
+* Tue Apr 20 2010 Siddhesh Poyarekar <sid...@gm...>
+- YMSG16 auth support. Breaks all old apps
+- Make callback struct mandatory
+- Fixed Address book support
+- YMSG16 file transfer
+- YMSG16 buddy list and status messages
+- Upped version number to 1.0.0
+
* Sun Jun 01 2008 Ray Van Dolson <ra...@bl...>
- Up version number to 0.7.7
- Enable _GNU_SOURCE macro for builds. This makes newer libc's provide us
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <sid...@us...> - 2010-04-20 16:26:55
|
Revision: 366
http://libyahoo2.svn.sourceforge.net/libyahoo2/?rev=366&view=rev
Author: siddheshp
Date: 2010-04-20 16:26:49 +0000 (Tue, 20 Apr 2010)
Log Message:
-----------
Bump version number, libtool release number. It's release time folks!
Modified Paths:
--------------
trunk/libyahoo2/configure.ac
Modified: trunk/libyahoo2/configure.ac
===================================================================
--- trunk/libyahoo2/configure.ac 2010-04-20 16:26:05 UTC (rev 365)
+++ trunk/libyahoo2/configure.ac 2010-04-20 16:26:49 UTC (rev 366)
@@ -1,5 +1,5 @@
dnl Process this file with autoconf to produce a configure script.
-AC_INIT(libyahoo2, 0.7.7, lib...@li...)
+AC_INIT(libyahoo2, 1.0.0, lib...@li...)
AC_PREREQ(2.53)
AC_CONFIG_SRCDIR(src/libyahoo2.c)
AM_INIT_AUTOMAKE([1.6 dist-bzip2])
@@ -19,7 +19,7 @@
dnl # ? : +1 : ? == internal changes that doesn't break anything.
dnl #
dnl # CURRENT : REVISION : AGE
-YAHOO2_CURRENT=10 # 1 - < 0.6
+YAHOO2_CURRENT=11 # 1 - < 0.6
# 2 - pre utf8 (0.6.2)
# 3 - pre webcam/chat support (0.6.3)
# 4 - 0.7.0
@@ -29,7 +29,8 @@
# 8 - remove_handler takes client id (0.7.4)
# 9 - add_buddy takes buddy add message (0.7.5)
# 10 - Windows support (0.7.6)
-YAHOO2_REVISION=1
+ # 11 - YMSG16 support (1.0.0)
+YAHOO2_REVISION=0
YAHOO2_AGE=0
YAHOO2_VERSION="$YAHOO2_CURRENT:$YAHOO2_REVISION:$YAHOO2_AGE"
AC_SUBST(YAHOO2_VERSION)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|