static void yahoo_doodle_command_send_generic(const char *type, PurpleConnection *gc, const char *to, const char *message, int command, const char *imv, const char *sixtyfour) { YahooData *yd; struct yahoo_packet *pkt; purple_debug_info("yahoo", "doodle: Sent %s (%s)\n", type, to); yd = gc->proto_data; /* Make and send an acknowledge (ready) Doodle packet */ pkt = yahoo_packet_new(YAHOO_SERVICE_P2PFILEXFER, YAHOO_STATUS_AVAILABLE, yd->session_id); yahoo_packet_hash_str(pkt, 49, "IMVIRONMENT"); yahoo_packet_hash_str(pkt, 1, purple_account_get_username(gc->account)); yahoo_packet_hash_str(pkt, 14, message); yahoo_packet_hash_int(pkt, 13, command); yahoo_packet_hash_str(pkt, 5, to); yahoo_packet_hash_str(pkt, 63, imv ? imv : DOODLE_IMV_KEY); yahoo_packet_hash_str(pkt, 64, sixtyfour); yahoo_packet_hash_str(pkt, 1002, "1"); yahoo_packet_send_and_free(pkt, yd); }
void yahoo_packet_hash(struct yahoo_packet *pkt, const char *fmt, ...) { char *strval; int key, intval; const char *cur; va_list ap; va_start(ap, fmt); for (cur = fmt; *cur; cur++) { key = va_arg(ap, int); switch (*cur) { case 'i': intval = va_arg(ap, int); yahoo_packet_hash_int(pkt, key, intval); break; case 's': strval = va_arg(ap, char *); yahoo_packet_hash_str(pkt, key, strval); break; default: gaim_debug_error("yahoo", "Invalid format character '%c'\n", *cur); break; } } va_end(ap); }