Frameworks/libpurple.framework/Versions/0.6.2/Headers/libymsg.h
author Zachary West <zacw@adium.im>
Fri Aug 21 13:25:11 2009 -0700 (2009-08-21)
changeset 2592 e8d15275025e
parent 2571 Frameworks/libpurple.framework/Versions/0.6.0/Headers/libymsg.h@75fb8ee8f2e6
permissions -rw-r--r--
im.pidgin.adium.1-4 at 267c6165e02e34318a1823960bd04c0639952f73
zacw@2535
     1
/**
zacw@2535
     2
 * @file libymsg.h The Yahoo! and Yahoo! JAPAN Protocol Plugins
zacw@2535
     3
 *
zacw@2535
     4
 * purple
zacw@2535
     5
 *
zacw@2535
     6
 * Purple is the legal property of its developers, whose names are too numerous
zacw@2535
     7
 * to list here.  Please refer to the COPYRIGHT file distributed with this
zacw@2535
     8
 * source distribution.
zacw@2535
     9
 *
zacw@2535
    10
 * This program is free software; you can redistribute it and/or modify
zacw@2535
    11
 * it under the terms of the GNU General Public License as published by
zacw@2535
    12
 * the Free Software Foundation; either version 2 of the License, or
zacw@2535
    13
 * (at your option) any later version.
zacw@2535
    14
 *
zacw@2535
    15
 * This program is distributed in the hope that it will be useful,
zacw@2535
    16
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
zacw@2535
    17
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
zacw@2535
    18
 * GNU General Public License for more details.
zacw@2535
    19
 *
zacw@2535
    20
 * You should have received a copy of the GNU General Public License
zacw@2535
    21
 * along with this program; if not, write to the Free Software
zacw@2535
    22
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
zacw@2535
    23
 */
zacw@2535
    24
zacw@2535
    25
#ifndef _LIBYMSG_H_
zacw@2535
    26
#define _LIBYMSG_H_
zacw@2535
    27
zacw@2535
    28
#include "circbuffer.h"
zacw@2535
    29
#include "cmds.h"
zacw@2535
    30
#include "prpl.h"
zacw@2535
    31
zacw@2535
    32
#define YAHOO_PAGER_HOST "scsa.msg.yahoo.com"
zacw@2535
    33
#define YAHOO_PAGER_PORT 5050
zacw@2535
    34
#define YAHOO_PAGER_PORT_P2P 5101
zacw@2535
    35
#define YAHOO_LOGIN_URL "https://login.yahoo.com/config/pwtoken_login?src=ymsgr&ts=&token=%s"
zacw@2535
    36
#define YAHOO_TOKEN_URL "https://login.yahoo.com/config/pwtoken_get?src=ymsgr&ts=&login=%s&passwd=%s&chal=%s"
zacw@2535
    37
#define YAHOO_P2P_KEEPALIVE_SECS 300
zacw@2535
    38
#define YAHOO_P2P_SERVER_TIMEOUT 10
zacw@2535
    39
#define YAHOO_PROFILE_URL "http://profiles.yahoo.com/"
zacw@2535
    40
#define YAHOO_MAIL_URL "http://rd.yahoo.com/messenger/client/?http://mail.yahoo.com/"
zacw@2535
    41
#define YAHOO_XFER_HOST "filetransfer.msg.yahoo.com"
zacw@2535
    42
#define YAHOO_XFER_PORT 80
zacw@2535
    43
#define YAHOO_XFER_RELAY_HOST "relay.msg.yahoo.com"
zacw@2535
    44
#define YAHOO_XFER_RELAY_PORT 80
zacw@2535
    45
#define YAHOO_ROOMLIST_URL "http://insider.msg.yahoo.com/ycontent/"
zacw@2535
    46
#define YAHOO_ROOMLIST_LOCALE "us"
zacw@2535
    47
/* really we should get the list of servers from
zacw@2535
    48
 http://update.messenger.yahoo.co.jp/servers.html */
zacw@2535
    49
#define YAHOOJP_PAGER_HOST "cs.yahoo.co.jp"
zacw@2535
    50
#define YAHOOJP_TOKEN_URL "https://login.yahoo.co.jp/config/pwtoken_get?src=ymsgr&ts=&login=%s&passwd=%s&chal=%s"
zacw@2535
    51
#define YAHOOJP_LOGIN_URL "https://login.yahoo.co.jp/config/pwtoken_login?src=ymsgr&ts=&token=%s"
zacw@2535
    52
#define YAHOOJP_PROFILE_URL "http://profiles.yahoo.co.jp/"
zacw@2535
    53
#define YAHOOJP_MAIL_URL "http://mail.yahoo.co.jp/"
zacw@2535
    54
#define YAHOOJP_XFER_HOST "filetransfer.msg.yahoo.co.jp"
zacw@2535
    55
#define YAHOOJP_WEBCAM_HOST "wc.yahoo.co.jp"
zacw@2535
    56
/* not sure, must test: */
zacw@2535
    57
#define YAHOOJP_XFER_RELAY_HOST "relay.msg.yahoo.co.jp"
zacw@2535
    58
#define YAHOOJP_XFER_RELAY_PORT 80
zacw@2535
    59
#define YAHOOJP_ROOMLIST_URL "http://insider.msg.yahoo.co.jp/ycontent/"
zacw@2535
    60
#define YAHOOJP_ROOMLIST_LOCALE "ja"
zacw@2535
    61
zacw@2535
    62
#define YAHOO_AUDIBLE_URL "http://us.dl1.yimg.com/download.yahoo.com/dl/aud"
zacw@2535
    63
zacw@2535
    64
#define WEBMESSENGER_URL "http://login.yahoo.com/config/login?.src=pg"
zacw@2535
    65
zacw@2535
    66
#define YAHOO_SMS_CARRIER_URL "http://lookup.msg.vip.mud.yahoo.com"
zacw@2535
    67
zacw@2535
    68
#define YAHOO_USERINFO_URL "http://address.yahoo.com/yab/us?v=XM&sync=1&tags=short&useutf8=1&noclear=1&legenc=codepage-1252"
zacw@2535
    69
#define YAHOOJP_USERINFO_URL "http://address.yahoo.co.jp/yab/jp?v=XM&sync=1&tags=short&useutf8=1&noclear=1&legenc=codepage-1252"
zacw@2535
    70
zacw@2535
    71
#define YAHOO_PICURL_SETTING "picture_url"
zacw@2535
    72
#define YAHOO_PICCKSUM_SETTING "picture_checksum"
zacw@2535
    73
#define YAHOO_PICEXPIRE_SETTING "picture_expire"
zacw@2535
    74
zacw@2535
    75
#define YAHOO_STATUS_TYPE_OFFLINE "offline"
zacw@2535
    76
#define YAHOO_STATUS_TYPE_AVAILABLE "available"
zacw@2535
    77
#define YAHOO_STATUS_TYPE_BRB "brb"
zacw@2535
    78
#define YAHOO_STATUS_TYPE_BUSY "busy"
zacw@2535
    79
#define YAHOO_STATUS_TYPE_NOTATHOME "notathome"
zacw@2535
    80
#define YAHOO_STATUS_TYPE_NOTATDESK "notatdesk"
zacw@2535
    81
#define YAHOO_STATUS_TYPE_NOTINOFFICE "notinoffice"
zacw@2535
    82
#define YAHOO_STATUS_TYPE_ONPHONE "onphone"
zacw@2535
    83
#define YAHOO_STATUS_TYPE_ONVACATION "onvacation"
zacw@2535
    84
#define YAHOO_STATUS_TYPE_OUTTOLUNCH "outtolunch"
zacw@2535
    85
#define YAHOO_STATUS_TYPE_STEPPEDOUT "steppedout"
zacw@2535
    86
#define YAHOO_STATUS_TYPE_AWAY "away"
zacw@2535
    87
#define YAHOO_STATUS_TYPE_INVISIBLE "invisible"
zacw@2535
    88
#define YAHOO_STATUS_TYPE_MOBILE "mobile"
zacw@2535
    89
zacw@2535
    90
#define YAHOO_CLIENT_VERSION_ID "4194239"
Evan@2571
    91
#define YAHOO_CLIENT_VERSION "9.0.0.2162"
zacw@2535
    92
zacw@2535
    93
#define YAHOOJP_CLIENT_VERSION_ID "4194239"
Evan@2571
    94
#define YAHOOJP_CLIENT_VERSION "9.0.0.2162"
zacw@2535
    95
zacw@2535
    96
#define YAHOO_CLIENT_USERAGENT "Mozilla/5.0"
zacw@2535
    97
zacw@2535
    98
/* Index into attention types list. */
zacw@2535
    99
#define YAHOO_BUZZ 0
zacw@2535
   100
zacw@2535
   101
typedef enum {
zacw@2535
   102
	YAHOO_PKT_TYPE_SERVER = 0,
zacw@2535
   103
	YAHOO_PKT_TYPE_P2P
zacw@2535
   104
} yahoo_pkt_type;
zacw@2535
   105
zacw@2535
   106
typedef enum {
zacw@2535
   107
	YAHOO_P2P_WE_ARE_CLIENT =0,
zacw@2535
   108
	YAHOO_P2P_WE_ARE_SERVER
zacw@2535
   109
} yahoo_p2p_connection_type;
zacw@2535
   110
zacw@2535
   111
enum yahoo_status {
zacw@2535
   112
	YAHOO_STATUS_AVAILABLE = 0,
zacw@2535
   113
	YAHOO_STATUS_BRB,
zacw@2535
   114
	YAHOO_STATUS_BUSY,
zacw@2535
   115
	YAHOO_STATUS_NOTATHOME,
zacw@2535
   116
	YAHOO_STATUS_NOTATDESK,
zacw@2535
   117
	YAHOO_STATUS_NOTINOFFICE,
zacw@2535
   118
	YAHOO_STATUS_ONPHONE,
zacw@2535
   119
	YAHOO_STATUS_ONVACATION,
zacw@2535
   120
	YAHOO_STATUS_OUTTOLUNCH,
zacw@2535
   121
	YAHOO_STATUS_STEPPEDOUT,
zacw@2535
   122
	YAHOO_STATUS_INVISIBLE = 12,
zacw@2535
   123
	YAHOO_STATUS_CUSTOM = 99,
zacw@2535
   124
	YAHOO_STATUS_IDLE = 999,
zacw@2535
   125
	YAHOO_STATUS_WEBLOGIN = 0x5a55aa55,
zacw@2535
   126
	YAHOO_STATUS_OFFLINE = 0x5a55aa56, /* don't ask */
zacw@2535
   127
	YAHOO_STATUS_TYPING = 0x16,
zacw@2535
   128
	YAHOO_STATUS_DISCONNECTED = 0xffffffff /* in ymsg 15. doesnt mean the normal sense of 'disconnected' */
zacw@2535
   129
};
zacw@2535
   130
zacw@2535
   131
struct yahoo_buddy_icon_upload_data {
zacw@2535
   132
	PurpleConnection *gc;
zacw@2535
   133
	GString *str;
zacw@2535
   134
	char *filename;
zacw@2535
   135
	int pos;
zacw@2535
   136
	int fd;
zacw@2535
   137
	guint watcher;
zacw@2535
   138
};
zacw@2535
   139
zacw@2535
   140
struct yahoo_p2p_data	{
zacw@2535
   141
	PurpleConnection *gc;
zacw@2535
   142
	char *host_ip;
zacw@2535
   143
	char *host_username;
zacw@2535
   144
	int val_13;
zacw@2535
   145
	guint input_event;
zacw@2535
   146
	gint source;
zacw@2535
   147
	int session_id;
zacw@2535
   148
	yahoo_p2p_connection_type connection_type;
zacw@2535
   149
};
zacw@2535
   150
zacw@2535
   151
struct _YchtConn;
zacw@2535
   152
zacw@2535
   153
typedef struct _YahooPersonalDetails {
zacw@2535
   154
	char *id;
zacw@2535
   155
zacw@2535
   156
	struct {
zacw@2535
   157
		char *first;
zacw@2535
   158
		char *last;
zacw@2535
   159
		char *middle;
zacw@2535
   160
		char *nick;
zacw@2535
   161
	} names;
zacw@2535
   162
zacw@2535
   163
	struct {
zacw@2535
   164
		char *work;
zacw@2535
   165
		char *home;
zacw@2535
   166
		char *mobile;
zacw@2535
   167
	} phone;
zacw@2535
   168
} YahooPersonalDetails;
zacw@2535
   169
Evan@2571
   170
typedef struct {
zacw@2535
   171
	PurpleConnection *gc;
zacw@2535
   172
	int fd;
zacw@2535
   173
	guchar *rxqueue;
zacw@2535
   174
	int rxlen;
zacw@2535
   175
	PurpleCircBuffer *txbuf;
zacw@2535
   176
	guint txhandler;
zacw@2535
   177
	GHashTable *friends;
zacw@2535
   178
zacw@2535
   179
	char **profiles;  /* Multiple profiles can be associated with an account */
zacw@2535
   180
	YahooPersonalDetails ypd;
zacw@2535
   181
zacw@2535
   182
	/**
zacw@2535
   183
	 * This is used to keep track of the IMVironment chosen
zacw@2535
   184
	 * by people you talk to.  We don't do very much with
zacw@2535
   185
	 * this right now... but at least now if the remote user
zacw@2535
   186
	 * selects an IMVironment we won't reset it back to the
zacw@2535
   187
	 * default of nothing.
zacw@2535
   188
	 */
zacw@2535
   189
	GHashTable *imvironments;
zacw@2535
   190
zacw@2535
   191
	int current_status;
zacw@2535
   192
	gboolean logged_in;
zacw@2535
   193
	GString *tmp_serv_blist, *tmp_serv_ilist, *tmp_serv_plist;
zacw@2535
   194
	GSList *confs;
zacw@2535
   195
	unsigned int conf_id; /* just a counter */
zacw@2535
   196
	gboolean chat_online;
zacw@2535
   197
	gboolean in_chat;
zacw@2535
   198
	char *chat_name;
zacw@2535
   199
	char *pending_chat_room;
zacw@2535
   200
	char *pending_chat_id;
zacw@2535
   201
	char *pending_chat_topic;
zacw@2535
   202
	char *pending_chat_goto;
zacw@2535
   203
	char *auth;
zacw@2535
   204
	gsize auth_written;
zacw@2535
   205
	char *cookie_y;
zacw@2535
   206
	char *cookie_t;
zacw@2535
   207
	int session_id;
zacw@2535
   208
	gboolean jp;
zacw@2535
   209
	gboolean wm; /* connected w/ web messenger method */
zacw@2535
   210
	/* picture aka buddy icon stuff */
zacw@2535
   211
	char *picture_url;
zacw@2535
   212
	int picture_checksum;
zacw@2535
   213
zacw@2535
   214
	/* ew. we have to check the icon before we connect,
zacw@2535
   215
	 * but can't upload it til we're connected. */
zacw@2535
   216
	struct yahoo_buddy_icon_upload_data *picture_upload_todo;
zacw@2535
   217
	PurpleProxyConnectData *buddy_icon_connect_data;
zacw@2535
   218
zacw@2535
   219
	struct _YchtConn *ycht;
zacw@2535
   220
zacw@2535
   221
	/**
zacw@2535
   222
	 * This linked list contains PurpleUtilFetchUrlData structs
zacw@2535
   223
	 * for when we lookup people profile or photo information.
zacw@2535
   224
	 */
zacw@2535
   225
	GSList *url_datas;
zacw@2535
   226
	GHashTable *xfer_peer_idstring_map;/* Hey, i dont know, but putting this HashTable next to friends gives a run time fault... */
zacw@2535
   227
	GSList *cookies;/* contains all cookies, including _y and _t */
zacw@2535
   228
zacw@2535
   229
	/**
zacw@2535
   230
	 * We may receive a list15 in multiple packets with no prior warning as to how many we'll be getting;
zacw@2535
   231
	 * the server expects us to keep track of the group for which it is sending us contact names.
zacw@2535
   232
	 */
zacw@2535
   233
	char *current_list15_grp;
zacw@2535
   234
	time_t last_ping;
zacw@2535
   235
	time_t last_keepalive;
zacw@2535
   236
	GHashTable *peers;	/* information about p2p data */
zacw@2535
   237
	int yahoo_p2p_timer;
zacw@2535
   238
	int yahoo_local_p2p_server_fd;
zacw@2535
   239
	int yahoo_p2p_server_watcher;
zacw@2535
   240
	GHashTable *sms_carrier;	/* sms carrier data */
zacw@2535
   241
	guint yahoo_p2p_server_timeout_handle;
Evan@2571
   242
} YahooData;
zacw@2535
   243
zacw@2535
   244
#define YAHOO_MAX_STATUS_MESSAGE_LENGTH (255)
zacw@2535
   245
zacw@2535
   246
/*
zacw@2535
   247
 * Current Maximum Length for Instant Messages
zacw@2535
   248
 *
zacw@2535
   249
 * This was found by experiment.
zacw@2535
   250
 *
zacw@2535
   251
 * The YMSG protocol allows a message of up to 948 bytes, but the official client
zacw@2535
   252
 * limits to 800 characters.  According to experiments I conducted, it seems that
zacw@2535
   253
 * the discrepancy is to allow some leeway for messages with mixed single- and
zacw@2535
   254
 * multi-byte characters, as I was able to send messages of 840 and 932 bytes
zacw@2535
   255
 * by using some multibyte characters (some random Chinese or Japanese characters,
zacw@2535
   256
 * to be precise). - rekkanoryo
zacw@2535
   257
 */
zacw@2535
   258
#define YAHOO_MAX_MESSAGE_LENGTH_BYTES 948
zacw@2535
   259
#define YAHOO_MAX_MESSAGE_LENGTH_CHARS 800
zacw@2535
   260
zacw@2535
   261
/* sometimes i wish prpls could #include things from other prpls. then i could just
zacw@2535
   262
 * use the routines from libfaim and not have to admit to knowing how they work. */
zacw@2535
   263
#define yahoo_put16(buf, data) ( \
zacw@2535
   264
		(*(buf) = (unsigned char)((data)>>8)&0xff), \
zacw@2535
   265
		(*((buf)+1) = (unsigned char)(data)&0xff),  \
zacw@2535
   266
		2)
zacw@2535
   267
#define yahoo_get16(buf) ((((*(buf))<<8)&0xff00) + ((*((buf)+1)) & 0xff))
zacw@2535
   268
#define yahoo_put32(buf, data) ( \
zacw@2535
   269
		(*((buf)) = (unsigned char)((data)>>24)&0xff), \
zacw@2535
   270
		(*((buf)+1) = (unsigned char)((data)>>16)&0xff), \
zacw@2535
   271
		(*((buf)+2) = (unsigned char)((data)>>8)&0xff), \
zacw@2535
   272
		(*((buf)+3) = (unsigned char)(data)&0xff), \
zacw@2535
   273
		4)
zacw@2535
   274
#define yahoo_get32(buf) ((((*(buf))<<24)&0xff000000) + \
zacw@2535
   275
		(((*((buf)+1))<<16)&0x00ff0000) + \
zacw@2535
   276
		(((*((buf)+2))<< 8)&0x0000ff00) + \
zacw@2535
   277
		(((*((buf)+3)    )&0x000000ff)))
zacw@2535
   278
zacw@2535
   279
/* util.c */
zacw@2535
   280
void yahoo_init_colorht(void);
zacw@2535
   281
void yahoo_dest_colorht(void);
zacw@2535
   282
char *yahoo_codes_to_html(const char *x);
zacw@2535
   283
char *yahoo_html_to_codes(const char *src);
zacw@2535
   284
zacw@2535
   285
gboolean
zacw@2535
   286
yahoo_account_use_http_proxy(PurpleConnection *conn);
zacw@2535
   287
zacw@2535
   288
/**
zacw@2535
   289
 * Encode some text to send to the yahoo server.
zacw@2535
   290
 *
zacw@2535
   291
 * @param gc The connection handle.
zacw@2535
   292
 * @param str The null terminated utf8 string to encode.
zacw@2535
   293
 * @param utf8 If not @c NULL, whether utf8 is okay or not.
zacw@2535
   294
 *             Even if it is okay, we may not use it. If we
zacw@2535
   295
 *             used it, we set this to @c TRUE, else to
zacw@2535
   296
 *             @c FALSE. If @c NULL, false is assumed, and
zacw@2535
   297
 *             it is not dereferenced.
zacw@2535
   298
 * @return The g_malloced string in the appropriate encoding.
zacw@2535
   299
 */
zacw@2535
   300
char *yahoo_string_encode(PurpleConnection *gc, const char *str, gboolean *utf8);
zacw@2535
   301
zacw@2535
   302
/**
zacw@2535
   303
 * Decode some text received from the server.
zacw@2535
   304
 *
zacw@2535
   305
 * @param gc The gc handle.
zacw@2535
   306
 * @param str The null terminated string to decode.
zacw@2535
   307
 * @param utf8 Did the server tell us it was supposed to be utf8?
zacw@2535
   308
 * @return The decoded, utf-8 string, which must be g_free()'d.
zacw@2535
   309
 */
zacw@2535
   310
char *yahoo_string_decode(PurpleConnection *gc, const char *str, gboolean utf8);
zacw@2535
   311
zacw@2535
   312
char *yahoo_convert_to_numeric(const char *str);
zacw@2535
   313
zacw@2535
   314
zacw@2535
   315
/* yahoo_profile.c */
zacw@2535
   316
void yahoo_get_info(PurpleConnection *gc, const char *name);
zacw@2535
   317
zacw@2535
   318
/* libymsg.h  - these functions were formerly static but need not to be for the
zacw@2535
   319
 * new two-prpl model. */
zacw@2535
   320
const char *yahoo_list_icon(PurpleAccount *a, PurpleBuddy *b);
zacw@2535
   321
const char *yahoo_list_emblem(PurpleBuddy *b);
zacw@2535
   322
char *yahoo_status_text(PurpleBuddy *b);
zacw@2535
   323
void yahoo_tooltip_text(PurpleBuddy *b, PurpleNotifyUserInfo *user_info, gboolean full);
zacw@2535
   324
GList *yahoo_status_types(PurpleAccount *account);
zacw@2535
   325
GList *yahoo_blist_node_menu(PurpleBlistNode *node);
zacw@2535
   326
void yahoo_login(PurpleAccount *account);
zacw@2535
   327
void yahoo_close(PurpleConnection *gc);
zacw@2535
   328
int yahoo_send_im(PurpleConnection *gc, const char *who, const char *what, PurpleMessageFlags flags);
zacw@2535
   329
unsigned int yahoo_send_typing(PurpleConnection *gc, const char *who, PurpleTypingState state);
zacw@2535
   330
void yahoo_set_status(PurpleAccount *account, PurpleStatus *status);
zacw@2535
   331
void yahoo_set_idle(PurpleConnection *gc, int idle);
zacw@2535
   332
void yahoo_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *g);
zacw@2535
   333
void yahoo_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group);
zacw@2535
   334
void yahoo_add_deny(PurpleConnection *gc, const char *who);
zacw@2535
   335
void yahoo_rem_deny(PurpleConnection *gc, const char *who);
zacw@2535
   336
void yahoo_set_permit_deny(PurpleConnection *gc);
zacw@2535
   337
void yahoo_keepalive(PurpleConnection *gc);
zacw@2535
   338
void yahoo_change_buddys_group(PurpleConnection *gc, const char *who, const char *old_group, const char *new_group);
zacw@2535
   339
void yahoo_rename_group(PurpleConnection *gc, const char *old_name, PurpleGroup *group, GList *moved_buddies);
zacw@2535
   340
gboolean yahoo_offline_message(const PurpleBuddy *buddy);
zacw@2535
   341
gboolean yahoo_send_attention(PurpleConnection *gc, const char *username, guint type);
zacw@2535
   342
GList *yahoo_attention_types(PurpleAccount *account);
zacw@2535
   343
zacw@2535
   344
GList *yahoo_actions(PurplePlugin *plugin, gpointer context);
zacw@2535
   345
void yahoopurple_register_commands(void);
zacw@2535
   346
zacw@2535
   347
PurpleCmdRet yahoopurple_cmd_buzz(PurpleConversation *c, const gchar *cmd, gchar **args, gchar **error, void *data);
zacw@2535
   348
PurpleCmdRet yahoopurple_cmd_chat_join(PurpleConversation *conv, const char *cmd, char **args, char **error, void *data);
zacw@2535
   349
PurpleCmdRet yahoopurple_cmd_chat_list(PurpleConversation *conv, const char *cmd, char **args, char **error, void *data);
zacw@2535
   350
/* needed for xfer, thought theyd be useful for other enhancements later on
zacw@2535
   351
   Returns list of cookies stored in yahoo_data formatted as a single null terminated string
zacw@2535
   352
   returned value must be g_freed
zacw@2535
   353
*/
zacw@2535
   354
gchar* yahoo_get_cookies(PurpleConnection *gc);
zacw@2535
   355
zacw@2535
   356
/* send p2p pkt containing our encoded ip, asking peer to connect to us */
zacw@2535
   357
void yahoo_send_p2p_pkt(PurpleConnection *gc, const char *who, int val_13);
zacw@2535
   358
zacw@2535
   359
#endif /* _LIBYMSG_H_ */