comparison libpurple/protocols/jabber/jabber.c @ 23603:05d3447fb34e

disapproval of revision '3d39da6c8014095cac3a0741bf6fc26219e7aff8'
author Daniel Atallah <daniel.atallah@gmail.com>
date Thu, 17 Jul 2008 04:49:35 +0000
parents aaaff38e144f
children
comparison
equal deleted inserted replaced
23602:aaaff38e144f 23603:05d3447fb34e
59 59
60 #define JABBER_CONNECT_STEPS (js->gsc ? 9 : 5) 60 #define JABBER_CONNECT_STEPS (js->gsc ? 9 : 5)
61 61
62 static PurplePlugin *my_protocol = NULL; 62 static PurplePlugin *my_protocol = NULL;
63 GList *jabber_features = NULL; 63 GList *jabber_features = NULL;
64 static GSList *registered_commands = NULL;
65 64
66 static void jabber_unregister_account_cb(JabberStream *js); 65 static void jabber_unregister_account_cb(JabberStream *js);
67 66
68 static void jabber_stream_init(JabberStream *js) 67 static void jabber_stream_init(JabberStream *js)
69 { 68 {
1387 void jabber_idle_set(PurpleConnection *gc, int idle) 1386 void jabber_idle_set(PurpleConnection *gc, int idle)
1388 { 1387 {
1389 JabberStream *js = gc->proto_data; 1388 JabberStream *js = gc->proto_data;
1390 1389
1391 js->idle = idle ? time(NULL) - idle : idle; 1390 js->idle = idle ? time(NULL) - idle : idle;
1392 }
1393
1394 void jabber_features_uninit(void) {
1395 for(; jabber_features; jabber_features = g_list_delete_link(jabber_features, jabber_features)) {
1396 JabberFeature *feat = (JabberFeature*)jabber_features->data;
1397 g_free(feat->shortname);
1398 g_free(feat->namespace);
1399 g_free(feat);
1400 }
1401 } 1391 }
1402 1392
1403 void jabber_add_feature(const char *shortname, const char *namespace, JabberFeatureEnabled cb) { 1393 void jabber_add_feature(const char *shortname, const char *namespace, JabberFeatureEnabled cb) {
1404 JabberFeature *feat; 1394 JabberFeature *feat;
1405 1395
2346 gboolean jabber_offline_message(const PurpleBuddy *buddy) 2336 gboolean jabber_offline_message(const PurpleBuddy *buddy)
2347 { 2337 {
2348 return TRUE; 2338 return TRUE;
2349 } 2339 }
2350 2340
2351 void jabber_unregister_commands(void) {
2352 for(; registered_commands; registered_commands = g_slist_delete_link(registered_commands, registered_commands)) {
2353 purple_cmd_unregister(GPOINTER_TO_INT(registered_commands->data));
2354 }
2355 }
2356
2357 void jabber_register_commands(void) 2341 void jabber_register_commands(void)
2358 { 2342 {
2359 PurpleCmdId cid; 2343 purple_cmd_register("config", "", PURPLE_CMD_P_PRPL,
2360
2361 cid = purple_cmd_register("config", "", PURPLE_CMD_P_PRPL,
2362 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY, 2344 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY,
2363 "prpl-jabber", jabber_cmd_chat_config, 2345 "prpl-jabber", jabber_cmd_chat_config,
2364 _("config: Configure a chat room."), NULL); 2346 _("config: Configure a chat room."), NULL);
2365 if (cid > 0) 2347 purple_cmd_register("configure", "", PURPLE_CMD_P_PRPL,
2366 registered_commands = g_slist_prepend(registered_commands, GINT_TO_POINTER(cid));
2367 cid = purple_cmd_register("configure", "", PURPLE_CMD_P_PRPL,
2368 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY, 2348 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY,
2369 "prpl-jabber", jabber_cmd_chat_config, 2349 "prpl-jabber", jabber_cmd_chat_config,
2370 _("configure: Configure a chat room."), NULL); 2350 _("configure: Configure a chat room."), NULL);
2371 if (cid > 0) 2351 purple_cmd_register("nick", "s", PURPLE_CMD_P_PRPL,
2372 registered_commands = g_slist_prepend(registered_commands, GINT_TO_POINTER(cid));
2373 cid = purple_cmd_register("nick", "s", PURPLE_CMD_P_PRPL,
2374 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY, 2352 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY,
2375 "prpl-jabber", jabber_cmd_chat_nick, 2353 "prpl-jabber", jabber_cmd_chat_nick,
2376 _("nick &lt;new nickname&gt;: Change your nickname."), 2354 _("nick &lt;new nickname&gt;: Change your nickname."),
2377 NULL); 2355 NULL);
2378 if (cid > 0) 2356 purple_cmd_register("part", "s", PURPLE_CMD_P_PRPL,
2379 registered_commands = g_slist_prepend(registered_commands, GINT_TO_POINTER(cid));
2380 cid = purple_cmd_register("part", "s", PURPLE_CMD_P_PRPL,
2381 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY | 2357 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
2382 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber", 2358 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber",
2383 jabber_cmd_chat_part, _("part [room]: Leave the room."), 2359 jabber_cmd_chat_part, _("part [room]: Leave the room."),
2384 NULL); 2360 NULL);
2385 if (cid > 0) 2361 purple_cmd_register("register", "", PURPLE_CMD_P_PRPL,
2386 registered_commands = g_slist_prepend(registered_commands, GINT_TO_POINTER(cid));
2387 cid = purple_cmd_register("register", "", PURPLE_CMD_P_PRPL,
2388 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY, 2362 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY,
2389 "prpl-jabber", jabber_cmd_chat_register, 2363 "prpl-jabber", jabber_cmd_chat_register,
2390 _("register: Register with a chat room."), NULL); 2364 _("register: Register with a chat room."), NULL);
2391 if (cid > 0)
2392 registered_commands = g_slist_prepend(registered_commands, GINT_TO_POINTER(cid));
2393 /* XXX: there needs to be a core /topic cmd, methinks */ 2365 /* XXX: there needs to be a core /topic cmd, methinks */
2394 cid = purple_cmd_register("topic", "s", PURPLE_CMD_P_PRPL, 2366 purple_cmd_register("topic", "s", PURPLE_CMD_P_PRPL,
2395 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY | 2367 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
2396 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber", 2368 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber",
2397 jabber_cmd_chat_topic, 2369 jabber_cmd_chat_topic,
2398 _("topic [new topic]: View or change the topic."), 2370 _("topic [new topic]: View or change the topic."),
2399 NULL); 2371 NULL);
2400 if (cid > 0) 2372 purple_cmd_register("ban", "ws", PURPLE_CMD_P_PRPL,
2401 registered_commands = g_slist_prepend(registered_commands, GINT_TO_POINTER(cid));
2402 cid = purple_cmd_register("ban", "ws", PURPLE_CMD_P_PRPL,
2403 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY | 2373 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
2404 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber", 2374 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber",
2405 jabber_cmd_chat_ban, 2375 jabber_cmd_chat_ban,
2406 _("ban &lt;user&gt; [reason]: Ban a user from the room."), 2376 _("ban &lt;user&gt; [reason]: Ban a user from the room."),
2407 NULL); 2377 NULL);
2408 if (cid > 0) 2378 purple_cmd_register("affiliate", "ws", PURPLE_CMD_P_PRPL,
2409 registered_commands = g_slist_prepend(registered_commands, GINT_TO_POINTER(cid));
2410 cid = purple_cmd_register("affiliate", "ws", PURPLE_CMD_P_PRPL,
2411 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY | 2379 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
2412 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber", 2380 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber",
2413 jabber_cmd_chat_affiliate, 2381 jabber_cmd_chat_affiliate,
2414 _("affiliate &lt;user&gt; &lt;owner|admin|member|outcast|none&gt;: Set a user's affiliation with the room."), 2382 _("affiliate &lt;user&gt; &lt;owner|admin|member|outcast|none&gt;: Set a user's affiliation with the room."),
2415 NULL); 2383 NULL);
2416 if (cid > 0) 2384 purple_cmd_register("role", "ws", PURPLE_CMD_P_PRPL,
2417 registered_commands = g_slist_prepend(registered_commands, GINT_TO_POINTER(cid));
2418 cid = purple_cmd_register("role", "ws", PURPLE_CMD_P_PRPL,
2419 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY | 2385 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
2420 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber", 2386 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber",
2421 jabber_cmd_chat_role, 2387 jabber_cmd_chat_role,
2422 _("role &lt;user&gt; &lt;moderator|participant|visitor|none&gt;: Set a user's role in the room."), 2388 _("role &lt;user&gt; &lt;moderator|participant|visitor|none&gt;: Set a user's role in the room."),
2423 NULL); 2389 NULL);
2424 if (cid > 0) 2390 purple_cmd_register("invite", "ws", PURPLE_CMD_P_PRPL,
2425 registered_commands = g_slist_prepend(registered_commands, GINT_TO_POINTER(cid));
2426 cid = purple_cmd_register("invite", "ws", PURPLE_CMD_P_PRPL,
2427 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY | 2391 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
2428 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber", 2392 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber",
2429 jabber_cmd_chat_invite, 2393 jabber_cmd_chat_invite,
2430 _("invite &lt;user&gt; [message]: Invite a user to the room."), 2394 _("invite &lt;user&gt; [message]: Invite a user to the room."),
2431 NULL); 2395 NULL);
2432 if (cid > 0) 2396 purple_cmd_register("join", "ws", PURPLE_CMD_P_PRPL,
2433 registered_commands = g_slist_prepend(registered_commands, GINT_TO_POINTER(cid));
2434 cid = purple_cmd_register("join", "ws", PURPLE_CMD_P_PRPL,
2435 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY | 2397 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
2436 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber", 2398 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber",
2437 jabber_cmd_chat_join, 2399 jabber_cmd_chat_join,
2438 _("join: &lt;room&gt; [password]: Join a chat on this server."), 2400 _("join: &lt;room&gt; [password]: Join a chat on this server."),
2439 NULL); 2401 NULL);
2440 if (cid > 0) 2402 purple_cmd_register("kick", "ws", PURPLE_CMD_P_PRPL,
2441 registered_commands = g_slist_prepend(registered_commands, GINT_TO_POINTER(cid));
2442 cid = purple_cmd_register("kick", "ws", PURPLE_CMD_P_PRPL,
2443 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY | 2403 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
2444 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber", 2404 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber",
2445 jabber_cmd_chat_kick, 2405 jabber_cmd_chat_kick,
2446 _("kick &lt;user&gt; [reason]: Kick a user from the room."), 2406 _("kick &lt;user&gt; [reason]: Kick a user from the room."),
2447 NULL); 2407 NULL);
2448 if (cid > 0) 2408 purple_cmd_register("msg", "ws", PURPLE_CMD_P_PRPL,
2449 registered_commands = g_slist_prepend(registered_commands, GINT_TO_POINTER(cid));
2450 cid = purple_cmd_register("msg", "ws", PURPLE_CMD_P_PRPL,
2451 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY, 2409 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY,
2452 "prpl-jabber", jabber_cmd_chat_msg, 2410 "prpl-jabber", jabber_cmd_chat_msg,
2453 _("msg &lt;user&gt; &lt;message&gt;: Send a private message to another user."), 2411 _("msg &lt;user&gt; &lt;message&gt;: Send a private message to another user."),
2454 NULL); 2412 NULL);
2455 if (cid > 0) 2413 purple_cmd_register("ping", "w", PURPLE_CMD_P_PRPL,
2456 registered_commands = g_slist_prepend(registered_commands, GINT_TO_POINTER(cid));
2457 cid = purple_cmd_register("ping", "w", PURPLE_CMD_P_PRPL,
2458 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_IM | 2414 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_IM |
2459 PURPLE_CMD_FLAG_PRPL_ONLY, 2415 PURPLE_CMD_FLAG_PRPL_ONLY,
2460 "prpl-jabber", jabber_cmd_ping, 2416 "prpl-jabber", jabber_cmd_ping,
2461 _("ping &lt;jid&gt;: Ping a user/component/server."), 2417 _("ping &lt;jid&gt;: Ping a user/component/server."),
2462 NULL); 2418 NULL);
2463 if (cid > 0) 2419 purple_cmd_register("buzz", "s", PURPLE_CMD_P_PRPL,
2464 registered_commands = g_slist_prepend(registered_commands, GINT_TO_POINTER(cid));
2465 cid = purple_cmd_register("buzz", "s", PURPLE_CMD_P_PRPL,
2466 PURPLE_CMD_FLAG_IM | PURPLE_CMD_FLAG_PRPL_ONLY, 2420 PURPLE_CMD_FLAG_IM | PURPLE_CMD_FLAG_PRPL_ONLY,
2467 "prpl-jabber", jabber_cmd_buzz, 2421 "prpl-jabber", jabber_cmd_buzz,
2468 _("buzz: Buzz a user to get their attention"), NULL); 2422 _("buzz: Buzz a user to get their attention"), NULL);
2469 if (cid > 0)
2470 registered_commands = g_slist_prepend(registered_commands, GINT_TO_POINTER(cid));
2471 } 2423 }
2472 2424
2473 void 2425 void
2474 jabber_init_plugin(PurplePlugin *plugin) 2426 jabber_init_plugin(PurplePlugin *plugin)
2475 { 2427 {