Mercurial > pidgin
comparison libpurple/protocols/msn/xfer.h @ 31046:b4064198e017
Add functions for reading and writing a MsnFileContext which negates
the need for any more packing.
Fixes #12856.
author | Elliott Sales de Andrade <qulogic@pidgin.im> |
---|---|
date | Fri, 17 Dec 2010 08:53:34 +0000 |
parents | 72e6fa6caecc |
children | 9ccbd0302bb2 |
comparison
equal
deleted
inserted
replaced
31045:f91501dc406e | 31046:b4064198e017 |
---|---|
23 */ | 23 */ |
24 | 24 |
25 | 25 |
26 #include "slpcall.h" | 26 #include "slpcall.h" |
27 | 27 |
28 #define MAX_FILE_NAME_LEN 260 /* MAX_PATH in Windows */ | |
29 | |
30 /** | |
31 * The context data for a file transfer request | |
32 */ | |
33 typedef struct | |
34 { | |
35 guint32 length; /*< Length of header */ | |
36 guint32 version; /*< MSN version */ | |
37 guint64 file_size; /*< Size of file */ | |
38 guint32 type; /*< Transfer type */ | |
39 gunichar2 file_name[MAX_FILE_NAME_LEN]; /*< Self-explanatory */ | |
40 gchar unknown1[30]; /*< Used somehow for background sharing */ | |
41 guint32 unknown2; /*< Possibly for background sharing as well */ | |
42 gchar *preview; /*< File preview data, 96x96 PNG */ | |
43 gsize preview_len; | |
44 } MsnFileContext; | |
45 | |
46 #define MSN_FILE_CONTEXT_SIZE (4*4 + 1*8 + 2*MAX_FILE_NAME_LEN + 30) | |
47 | |
28 void msn_xfer_init(PurpleXfer *xfer); | 48 void msn_xfer_init(PurpleXfer *xfer); |
29 void msn_xfer_cancel(PurpleXfer *xfer); | 49 void msn_xfer_cancel(PurpleXfer *xfer); |
30 | 50 |
31 gssize msn_xfer_write(const guchar *data, gsize len, PurpleXfer *xfer); | 51 gssize msn_xfer_write(const guchar *data, gsize len, PurpleXfer *xfer); |
32 gssize msn_xfer_read(guchar **data, PurpleXfer *xfer); | 52 gssize msn_xfer_read(guchar **data, PurpleXfer *xfer); |
33 | 53 |
34 void msn_xfer_completed_cb(MsnSlpCall *slpcall, | 54 void msn_xfer_completed_cb(MsnSlpCall *slpcall, |
35 const guchar *body, gsize size); | 55 const guchar *body, gsize size); |
36 void msn_xfer_end_cb(MsnSlpCall *slpcall, MsnSession *session); | 56 void msn_xfer_end_cb(MsnSlpCall *slpcall, MsnSession *session); |
57 | |
58 gchar * | |
59 msn_file_context_to_wire(MsnFileContext *header); | |
60 | |
61 MsnFileContext * | |
62 msn_file_context_from_wire(const char *buf, gsize len); | |
63 |