diff options
Diffstat (limited to 'protocols/nogaim.c')
-rw-r--r-- | protocols/nogaim.c | 89 |
1 files changed, 58 insertions, 31 deletions
diff --git a/protocols/nogaim.c b/protocols/nogaim.c index 474b91b2..4966a76f 100644 --- a/protocols/nogaim.c +++ b/protocols/nogaim.c @@ -54,6 +54,7 @@ static int remove_chat_buddy_silent( struct conversation *b, char *handle ); GSList *connections; +#ifdef WITH_PLUGINS gboolean load_plugin(char *path) { void (*init_function) (void); @@ -75,6 +76,34 @@ gboolean load_plugin(char *path) return TRUE; } +void load_plugins(void) +{ + GDir *dir; + GError *error = NULL; + + dir = g_dir_open(PLUGINDIR, 0, &error); + + if (dir) { + const gchar *entry; + char *path; + + while ((entry = g_dir_read_name(dir))) { + path = g_build_filename(PLUGINDIR, entry, NULL); + if(!path) { + log_message(LOGLVL_WARNING, "Can't build path for %s\n", entry); + continue; + } + + load_plugin(path); + + g_free(path); + } + + g_dir_close(dir); + } +} +#endif + /* nogaim.c */ GList *protocols = NULL; @@ -100,49 +129,30 @@ struct prpl *find_protocol(const char *name) /* nogaim.c */ void nogaim_init() { - GDir *dir; - GError *error = NULL; + extern void msn_init(); + extern void oscar_init(); + extern void byahoo_init(); + extern void jabber_init(); #ifdef WITH_MSN - extern void msn_init(); msn_init(); #endif #ifdef WITH_OSCAR - extern void oscar_init(); oscar_init(); #endif #ifdef WITH_YAHOO - extern void byahoo_init(); byahoo_init(); #endif #ifdef WITH_JABBER - extern void jabber_init(); jabber_init(); #endif - dir = g_dir_open(PLUGINDIR, 0, &error); - - if (dir) { - const gchar *entry; - char *path; - - while ((entry = g_dir_read_name(dir))) { - path = g_build_filename(PLUGINDIR, entry, NULL); - if(!path) { - log_message(LOGLVL_WARNING, "Can't build path for %s\n", entry); - continue; - } - - load_plugin(path); - - g_free(path); - } - - g_dir_close(dir); - } +#ifdef WITH_PLUGINS + load_plugins(); +#endif } GSList *get_connections() { return connections; } @@ -441,7 +451,14 @@ void signoff( struct gaim_connection *gc ) void do_error_dialog( struct gaim_connection *gc, char *msg, char *title ) { - serv_got_crap( gc, "Error: %s", msg ); + if( msg && title ) + serv_got_crap( gc, "Error: %s: %s", title, msg ); + else if( msg ) + serv_got_crap( gc, "Error: %s", msg ); + else if( title ) + serv_got_crap( gc, "Error: %s", title ); + else + serv_got_crap( gc, "Error" ); } void do_ask_dialog( struct gaim_connection *gc, char *msg, void *data, void *doit, void *dont ) @@ -726,7 +743,7 @@ void serv_got_im( struct gaim_connection *gc, char *handle, char *msg, guint32 f /* If there's a newline/space in this string, split up there, looks a bit prettier. */ - if( ( nl = strrchr( msg, '\n' ) ) || ( nl = strchr( msg, ' ' ) ) ) + if( ( nl = strrchr( msg, '\n' ) ) || ( nl = strrchr( msg, ' ' ) ) ) { msg[425] = tmp; tmp = *nl; @@ -750,15 +767,25 @@ void serv_got_im( struct gaim_connection *gc, char *handle, char *msg, guint32 f irc_msgfrom( irc, u->nick, msg ); } -void serv_got_typing( struct gaim_connection *gc, char *handle, int timeout ) +void serv_got_typing( struct gaim_connection *gc, char *handle, int timeout, int type ) { user_t *u; if( !set_getint( gc->irc, "typing_notice" ) ) return; - if( ( u = user_findhandle( gc, handle ) ) ) - irc_msgfrom( gc->irc, u->nick, "\1TYPING 1\1" ); + if( ( u = user_findhandle( gc, handle ) ) ) { + /* If type is: + * 0: user has stopped typing + * 1: user is actively typing + * 2: user has entered text, but is not actively typing + */ + if (type == 0 || type == 1 || type == 2) { + char buf[256]; + g_snprintf(buf, 256, "\1TYPING %d\1", type); + irc_privmsg( gc->irc, u, "PRIVMSG", gc->irc->nick, NULL, buf ); + } + } } void serv_got_chat_left( struct gaim_connection *gc, int id ) |