Yattm - unified GTK instant-messaging client logo
   [Generated for version 0.2-17 - Mon Jan 6 19:01:23 GMT+1 2003]

Home - Main Page - Data Structures - File List - Data Fields - Globals

service.h File Reference

#include "chat_room.h"
#include "input_list.h"

Include dependency graph for service.h:

Include dependency graph

This graph shows which files directly or indirectly include this file:

Included by dependency graph

Go to the source code of this file.

Data Structures

struct  service
struct  service_callbacks

Defines

#define GET_SERVICE(x)   eb_services[x->service_id]
#define RUN_SERVICE(x)   GET_SERVICE(x).sc

Functions

gint add_service (struct service *Service_Info)
gint get_service_id (gchar *servicename)
gchar * get_service_name (gint serviceid)
void load_modules ()
void add_idle_check ()
void serv_touch_idle ()
void rename_nick_log (char *oldnick, char *newnick)
GList * get_service_list ()

Variables

int NUM_SERVICES
service eb_services []


Define Documentation

#define GET_SERVICE      eb_services[x->service_id]
 

Definition at line 35 of file service.h.

Referenced by eb_update_window_title(), and eb_update_window_title_to_tab().

#define RUN_SERVICE      GET_SERVICE(x).sc
 

Definition at line 36 of file service.h.

Referenced by add_account_line(), add_account_verbose(), add_unknown(), add_unknown_with_name(), buddy_update_status(), buddy_update_status_and_log(), check_idle(), contact_update_status(), delete_event(), destroy(), eb_chat_room_show_message(), eb_chat_window_display_remote_message(), eb_join_chat_room(), eb_parse_incomming_message(), eb_sign_off_all(), eb_sign_on_all(), eb_start_chat_room(), end_conversation(), get_info(), handle_group_change(), invite_callback(), ok_callback(), process_invite(), read_contacts(), remove_account(), report_idle(), send_file_callback(), send_message(), send_typing_status(), serv_touch_idle(), and show_smileys_callback().


Function Documentation

void add_idle_check  
 

Definition at line 240 of file service.c.

References check_idle(), idle_timer, scrnsaver_ext, and serv_touch_idle().

00241 {
00242     int eventnum, errornum;
00243     idle_timer = gtk_timeout_add(5000, (GtkFunction)check_idle, NULL);
00244     serv_touch_idle();
00245 #ifdef HAVE_MIT_SAVER_EXTENSION
00246     if (XScreenSaverQueryExtension(gdk_display, &eventnum, &errornum)) {
00247         scrnsaver_ext = 1;
00248     }
00249 #endif
00250 }

gint add_service struct service   Service_Info
 

Definition at line 64 of file service.c.

References DBG_CORE, eb_debug, GetPref(), service::name, NUM_SERVICES, service::protocol_id, service_callbacks::read_prefs_config, refresh_service_contacts(), reload_service_accounts(), and service::sc.

Referenced by load_service_plugin(), and unload_module().

00065 {
00066     int i;
00067     GList *session_prefs=NULL;
00068 
00069     assert(Service_Info);
00070 
00071     eb_debug(DBG_CORE, ">Entering\n");
00072     if(Service_Info->sc->read_prefs_config) {
00073         session_prefs=GetPref(Service_Info->name);
00074         Service_Info->sc->read_prefs_config(session_prefs);
00075     }
00076 
00077     for (i=0; i < NUM_SERVICES; i++ )
00078     {
00079         /* Check to see if another service exists for the same protocol, if so, replace it */
00080         if(!strcasecmp(eb_services[i].name,Service_Info->name))
00081         {
00082                 eb_debug(DBG_CORE, "Replacing %s service\n", Service_Info->name);
00083 //              free(eb_services[i].name);
00084                 free(eb_services[i].sc);
00085                 Service_Info->protocol_id=i;
00086                 memcpy(&eb_services[i], Service_Info, sizeof(struct service));
00087                 refresh_service_contacts(i);
00088                 reload_service_accounts(i);
00089                 eb_debug(DBG_CORE, "<Replaced existing service\n");
00090                 return(i);
00091         }
00092         
00093     }
00094     Service_Info->protocol_id=NUM_SERVICES++;
00095     memcpy(&eb_services[Service_Info->protocol_id], Service_Info, sizeof(struct service));
00096     refresh_service_contacts(i);
00097     reload_service_accounts(Service_Info->protocol_id);
00098     eb_debug(DBG_CORE, "<Added new service \n");
00099     return(Service_Info->protocol_id);
00100 }

gint get_service_id gchar *    servicename
 

Definition at line 103 of file service.c.

References cSetLocalPref(), DBG_CORE, eb_debug, eb_nomodule_query_callbacks(), nomodule_SERVICE_INFO, and NUM_SERVICES.

Referenced by add_button_callback(), check_login_validity(), eb_read_prefs(), join_chat_callback(), ok_callback(), reload_service_accounts(), and yyparse().

00104 {
00105     int i;
00106     char buf[1024];
00107 
00108     for (i=0; i < NUM_SERVICES; i++ )
00109     {
00110         if(strcasecmp(eb_services[i].name,servicename)==0)
00111         {
00112             return i;   
00113         }
00114     }
00115     eb_debug(DBG_CORE, "Creating empty service for %s\n", servicename);
00116     memcpy(&eb_services[NUM_SERVICES], &nomodule_SERVICE_INFO, sizeof(struct service));
00117     eb_services[NUM_SERVICES].sc=eb_nomodule_query_callbacks();
00118     eb_services[NUM_SERVICES].name = strdup(servicename);
00119     eb_services[NUM_SERVICES].protocol_id=NUM_SERVICES;
00120     NUM_SERVICES++;
00121     sprintf(buf, "%s::path", servicename);
00122     cSetLocalPref(buf, "Empty Module");
00123     return(NUM_SERVICES-1);
00124 }

GList* get_service_list  
 

Definition at line 137 of file service.c.

References NUM_SERVICES.

Referenced by check_login_validity(), eb_new_user(), edit_contact_window_new(), and show_add_defined_contact_window().

00138 {
00139     GList * newlist = NULL;
00140     int i;
00141     for( i = 0; i < NUM_SERVICES; i++ )
00142     {
00143         newlist = g_list_append( newlist, eb_services[i].name );
00144     }
00145     return newlist;
00146 }

gchar* get_service_name gint    serviceid
 

Definition at line 126 of file service.c.

References service::name, and NUM_SERVICES.

Referenced by eb_read_prefs(), get_local_accounts(), and reload_service_accounts().

00127 {
00128     if ((service_id >= 0) && (service_id < NUM_SERVICES))
00129     {
00130         return (eb_services[service_id].name);
00131     }
00132 
00133     fprintf(stderr, "warning: unknown service id: %d\n", service_id);
00134     return "unknown";
00135 }

void load_modules  
 

Definition at line 254 of file plugin.c.

References _, cGetLocalPref(), DBG_CORE, do_error_dialog(), eb_debug, load_module(), MODULE_DIR, and select_module_entry().

Referenced by main(), and reload_modules().

00255 {
00256     /* UNUSED struct dirent **namelist=NULL; */
00257     char buf[1024], *modules_path=NULL, *cur_path=NULL;
00258     char *tok_buf=NULL, *tok_buf_old=NULL;
00259     int n=0, success=0;
00260     struct dirent *dp;
00261     DIR *dirp;
00262 
00263     eb_debug(DBG_CORE, ">Entering\n");
00264     modules_path=g_strdup(cGetLocalPref("modules_path"));
00265     tok_buf = g_new0(char, strlen(modules_path)+1);
00266     /* Save the old pointer, because strtok_r will change it */
00267     tok_buf_old=tok_buf;
00268     lt_dlinit();
00269     lt_dlsetsearchpath(modules_path);
00270 
00271     /* Use a thread-safe strtok */
00272 #ifdef HAVE_STRTOK_R
00273     cur_path=strtok_r(modules_path, ":", &tok_buf);
00274 #else
00275     cur_path=strtok(modules_path, ":");
00276 #endif
00277     if(!cur_path)
00278         cur_path=MODULE_DIR;
00279     do {
00280         if((dirp = opendir(cur_path)) == NULL)
00281         {
00282             sprintf(buf, _("Cannot open module directory \"%s\""), cur_path);
00283             do_error_dialog(buf, _("Warning"));
00284             buf[0] = '\0';
00285             break;
00286         }
00287         n = 0;
00288         while((dp = readdir(dirp)) != NULL)
00289         {
00290             if( dp == NULL )
00291             {
00292                 sprintf(buf, _("Looking for modules in %s"), cur_path);
00293                 perror(buf);
00294                 continue;
00295             }
00296             else if( select_module_entry( dp ) )
00297             {
00298                 n++;
00299                 success = load_module(cur_path, dp->d_name);
00300             }
00301         }
00302         if( n == 0 )
00303         {
00304             eb_debug(DBG_CORE, "<No modules found in %s, returning.\n", cur_path);
00305         }
00306         else
00307         {
00308             eb_debug(DBG_CORE, "Loaded %d modules from %s.\n", n, cur_path);
00309         }
00310         closedir(dirp);
00311 #ifdef HAVE_STRTOK_R
00312     } while((cur_path=strtok_r(NULL, ":", &tok_buf)));
00313 #else
00314     } while((cur_path=strtok(NULL, ":")));
00315 #endif
00316 
00317     g_free(modules_path);
00318     g_free(tok_buf_old);
00319     eb_debug(DBG_CORE, "Adding idle_check\n");
00320     add_idle_check();
00321     eb_debug(DBG_CORE, "<End services_init\n");
00322 }

void rename_nick_log char *    oldnick,
char *    newnick
 

Definition at line 253 of file service.c.

Referenced by ok_callback().

00254 {
00255    gchar oldnicklog[255], newnicklog[255];
00256    strcpy(oldnicklog, config_dir);
00257    strcat(oldnicklog, "logs/");
00258    strcpy(newnicklog, oldnicklog);
00259    strcat(oldnicklog, oldnick);
00260    strcat(newnicklog, newnick);
00261    rename(oldnicklog, newnicklog);
00262    printf("Renamed log from %s to %s\n", oldnicklog, newnicklog);
00263 }

void serv_touch_idle  
 

Definition at line 148 of file service.c.

References is_idle, lastsent, and RUN_SERVICE.

Referenced by add_idle_check(), check_idle(), and send_message().

00149 {
00150     /* Are we idle?  If so, not anymore */
00151     if (is_idle > 0) {
00152         GList * node;
00153         is_idle = 0;
00154         for(node = accounts; node; node = node->next )
00155         {
00156             if(((eb_local_account *)(node->data))->connected)
00157             {
00158                 if(RUN_SERVICE(((eb_local_account*)(node->data)))->set_idle)
00159                 {
00160                     RUN_SERVICE(((eb_local_account*)node->data))->set_idle(
00161                                  (eb_local_account*)node->data, 0);
00162                 }
00163             }
00164         }
00165     }
00166     time(&lastsent);
00167 }


Variable Documentation

struct service eb_services[]
 

Definition at line 225 of file service.h.

int NUM_SERVICES
 

Definition at line 34 of file service.h.

Referenced by add_service(), get_service_id(), get_service_list(), and get_service_name().


Contact: Andy Maloney     [Documentation generated by doxygen]