static AUTOIGNORE_REC *autoignore_find(IRC_SERVER_REC *server, const char *mask) { MODULE_SERVER_REC *mserver; GSList *tmp; g_return_val_if_fail(server != NULL, NULL); g_return_val_if_fail(mask != NULL, NULL); mserver = MODULE_DATA(server); for (tmp = mserver->ignorelist; tmp != NULL; tmp = tmp->next) { AUTOIGNORE_REC *rec = tmp->data; if (g_strcasecmp(rec->nick, mask) == 0) return rec; } return NULL; }
/* SYNTAX: FORMAT [-delete | -reset] [<module>] [<key> [<value>]] */ static void cmd_format(const char *data) { GHashTable *optlist; GSList *tmp, *modules; char *module, *key, *value; void *free_arg; int reset; if (!cmd_get_params(data, &free_arg, 3 | PARAM_FLAG_GETREST | PARAM_FLAG_OPTIONS, "format", &optlist, &module, &key, &value)) return; modules = get_sorted_modules(); if (*module == '\0') module = NULL; else if (theme_search(modules, module) == NULL) { /* first argument isn't module.. */ cmd_params_free(free_arg); if (!cmd_get_params(data, &free_arg, 2 | PARAM_FLAG_GETREST | PARAM_FLAG_OPTIONS, "format", &optlist, &key, &value)) return; module = NULL; } reset = FALSE; if (*key == '\0') key = NULL; if (g_hash_table_lookup(optlist, "reset")) reset = TRUE; else if (g_hash_table_lookup(optlist, "delete")) value = ""; else if (*value == '\0') value = NULL; for (tmp = modules; tmp != NULL; tmp = tmp->next) { THEME_SEARCH_REC *rec = tmp->data; if (module == NULL || g_strcasecmp(rec->short_name, module) == 0) theme_show(rec, key, value, reset); } g_slist_foreach(modules, (GFunc) g_free, NULL); g_slist_free(modules); cmd_params_free(free_arg); }
int msn_buddy_list_remove( struct im_connection *ic, msn_buddy_flags_t list, const char *who, const char *group ) { struct msn_data *md = ic->proto_data; char groupid[8]; bee_user_t *bu; struct msn_buddy_data *bd; char *adl; *groupid = '\0'; #if 0 if( group ) { int i; for( i = 0; i < md->groupcount; i ++ ) if( g_strcasecmp( md->grouplist[i], group ) == 0 ) { g_snprintf( groupid, sizeof( groupid ), " %d", i ); break; } } #endif if( !( bu = bee_user_by_handle( ic->bee, ic, who ) ) || !( bd = bu->data ) || !( bd->flags & list ) ) return 1; bd->flags &= ~list; if( list == MSN_BUDDY_FL ) msn_soap_ab_contact_del( ic, bu ); else msn_soap_memlist_edit( ic, who, FALSE, list ); if( ( adl = adlrml_entry( who, list ) ) ) { int st = msn_ns_write( ic, -1, "RML %d %zd\r\n%s", ++md->trId, strlen( adl ), adl ); g_free( adl ); return st; } return 1; }
/*--------------------------------------------------------------------------*/ static GList * prune_list_from_dir( GList *remote_list, gint *n, const gchar *dirname ) { GnomeVFSFileInfo *local_info, *remote_info; GList *local_list; GList *p_remote, *p_local; gchar *local_text_uri; GnomeVFSResult ret; gb_debug (DEBUG_UPDATE, "START"); if ( dirname == NULL ) return remote_list; local_text_uri = gnome_vfs_get_uri_from_local_path( dirname ); if ( (ret = gnome_vfs_directory_list_load (&local_list, local_text_uri, GNOME_VFS_FILE_INFO_DEFAULT)) != GNOME_VFS_OK ) { return remote_list; } for ( p_local=local_list; p_local != NULL; p_local=p_local->next ) { local_info = (GnomeVFSFileInfo *)p_local->data; for ( p_remote=remote_list; p_remote != NULL; p_remote=p_remote->next ) { remote_info = (GnomeVFSFileInfo *)p_remote->data; if ( g_strcasecmp( local_info->name, remote_info->name ) == 0 ) { remote_list = g_list_remove_link( remote_list, p_remote ); gnome_vfs_file_info_unref( remote_info ); p_remote->data = remote_info = NULL; g_list_free_1( p_remote ); p_remote = NULL; *n -= 1; break; } } } g_free( local_text_uri ); gb_debug (DEBUG_UPDATE, "END"); return remote_list; }
/** * Setup labels and indexes from metadata. * \param pilotFile JPilot control data. * \return <i>TRUE</i> is setup successfully. */ static gboolean jpilot_setup_labels( JPilotFile *pilotFile ) { gboolean retVal = FALSE; struct AddressAppInfo *ai; GList *node; g_return_val_if_fail( pilotFile != NULL, -1 ); /* Release indexes */ node = pilotFile->labelInd; while( node ) { node->data = NULL; node = g_list_next( node ); } pilotFile->labelInd = NULL; if( pilotFile->readMetadata ) { ai = & pilotFile->addrInfo; node = pilotFile->customLabels; while( node ) { gchar *lbl = node->data; gint ind = -1; gint i; for( i = 0; i < JPILOT_NUM_LABELS; i++ ) { gchar *labelName = ai->labels[i]; gchar convertBuff[ JPILOT_LEN_LABEL ]; if( convert_charcode ) { conv_sjistoeuc( convertBuff, JPILOT_LEN_LABEL, labelName ); labelName = convertBuff; } if( g_strcasecmp( labelName, lbl ) == 0 ) { ind = i; break; } } pilotFile->labelInd = g_list_append( pilotFile->labelInd, GINT_TO_POINTER(ind) ); node = g_list_next( node ); } retVal = TRUE; } return retVal; }
static void event_join(IRC_SERVER_REC *server, const char *data, const char *nick, const char *address) { NETSPLIT_REC *rec; /* check if split is over */ rec = g_hash_table_lookup(server->splits, nick); if (rec != NULL && g_strcasecmp(rec->address, address) == 0) { /* yep, looks like it is. for same people that had the same splitted servers set the timeout to one minute. .. if the user just changed server, she can't use the same nick (unless the server is broken) so don't bother checking that the nick's server matches the split. */ g_hash_table_foreach(server->splits, (GHFunc) split_set_timeout, rec); } }
gchar * gb_util_add_extension (const gchar * orig_filename) { gchar *new_filename, *extension; extension = strrchr (orig_filename, '.'); if (extension == NULL) { new_filename = g_strconcat (orig_filename, ".gbonds", NULL); } else { if (g_strcasecmp (extension, ".gbonds") != 0) { new_filename = g_strconcat (orig_filename, ".gbonds", NULL); } else { new_filename = g_strdup (orig_filename); } } return new_filename; }
/* SYNTAX: WINDOW GOTO active|<number>|<name> */ static void cmd_window_goto(const char *data) { WINDOW_REC *window; g_return_if_fail(data != NULL); if (is_numeric(data, 0)) { cmd_window_refnum(data); return; } if (g_strcasecmp(data, "active") == 0) window = window_highest_activity(active_win); else window = window_find_item(active_win, data); if (window != NULL) window_set_active(window); }
/** * Check whether label is in list of custom labels. * \param pilotFile JPilot control data. * \param labelName to test. * \return <i>TRUE</i> if found. */ gboolean jpilot_test_custom_label( JPilotFile *pilotFile, const gchar *labelName ) { gboolean retVal; GList *node; g_return_val_if_fail( pilotFile != NULL, FALSE ); retVal = FALSE; if( labelName ) { node = pilotFile->customLabels; while( node ) { if( g_strcasecmp( labelName, ( gchar * ) node->data ) == 0 ) { retVal = TRUE; break; } node = g_list_next( node ); } } return retVal; }
/* SYNTAX: DCC CLOSE <type> <nick> [<file>] */ static void cmd_dcc_close(char *data, IRC_SERVER_REC *server) { DCC_REC *dcc; GSList *tmp, *next; char *type, *nick, *arg; void *free_arg; gboolean found; int itype; g_return_if_fail(data != NULL); if (!cmd_get_params(data, &free_arg, 3, &type, &nick, &arg)) return; if (*nick == '\0') cmd_param_error(CMDERR_NOT_ENOUGH_PARAMS); g_strup(type); itype = dcc_str2type(type); if (itype == 0) { signal_emit("dcc error unknown type", 1, type); cmd_params_free(free_arg); return; } dcc = NULL; found = FALSE; for (tmp = dcc_conns; tmp != NULL; tmp = next) { dcc = tmp->data; next = tmp->next; if (dcc->type == itype && g_strcasecmp(nick, dcc->nick) == 0) { dcc_reject(dcc, server); found = TRUE; } } if (!found) signal_emit("dcc error close not found", 3, type, nick, arg); cmd_params_free(free_arg); }
int player_filter_add_player (char *name, unsigned mask) { GSList *list; struct player_pattern *pp; char *pattern; int changed = FALSE; pattern = strdup_strip (name); if (!pattern) return FALSE; for (list = players; list; list = list->next) { pp = (struct player_pattern *) list->data; if (pp->mode == PATTERN_MODE_STRING && pp->pattern && g_strcasecmp (pattern, pp->pattern) == 0) { break; } } if (!list) { pp = player_pattern_new (NULL); pp->pattern = pattern; pp->groups = 0; player_pattern_compile (pp); players = g_slist_append (players, pp); changed = TRUE; } mask &= PLAYER_GROUP_MASK; if ((pp->groups & mask) != mask) { pp->groups |= mask; filters[FILTER_PLAYER].last_changed = filter_time_inc(); player_filter_save_patterns (); changed = TRUE; } return changed; }
QUERY_REC *query_find(SERVER_REC *server, const char *nick) { GSList *tmp; g_return_val_if_fail(server == NULL || IS_SERVER(server), NULL); g_return_val_if_fail(nick != NULL, NULL); if (server != NULL) return query_find_server(server, nick); for (tmp = queries; tmp != NULL; tmp = tmp->next) { QUERY_REC *rec = tmp->data; if (g_strcasecmp(rec->name, nick) == 0) return rec; } return NULL; }
/* * Search (case insensitive) for header entry with specified name. * Enter: harvester Harvester. * name Header name. * Return: Header, or NULL if not found. */ static HeaderEntry *addrharvest_find( AddressHarvester* harvester, const gchar *name ) { HeaderEntry *retVal; GList *node; retVal = NULL; node = harvester->headerTable; while( node ) { HeaderEntry *entry; entry = node->data; if( g_strcasecmp( entry->header, name ) == 0 ) { retVal = entry; break; } node = g_list_next( node ); } return retVal; }
static void signal_query_nick_changed(QUERY_REC *query, const char *oldnick) { TEXT_DEST_REC dest; g_return_if_fail(query != NULL); format_create_dest_tag(&dest, query->server, query->server_tag, query->name, MSGLEVEL_NICKS, NULL); /* don't print the nick change message if only the case was changed */ if (g_strcasecmp(query->name, oldnick) != 0) { printformat_dest(&dest, TXT_NICK_CHANGED, oldnick, query->name, query->name, query->address == NULL ? "" : query->address); } signal_emit("window item changed", 2, window_item_window((WI_ITEM_REC *) query), query); }
static void sig_server_connected(SERVER_REC *server) { GSList *tmp; if (!IS_SERVER(server)) return; /* check if there's any queries without server */ for (tmp = queries; tmp != NULL; tmp = tmp->next) { QUERY_REC *rec = tmp->data; if (rec->server == NULL && (rec->server_tag == NULL || g_strcasecmp(rec->server_tag, server->tag) == 0)) { window_item_change_server((WI_ITEM_REC *) rec, server); server->queries = g_slist_append(server->queries, rec); } } }
static void event_nick(const char *data, IRC_SERVER_REC *server, const char *orignick) { char *params, *nick; GSList *tmp; params = event_get_params(data, 1, &nick); for (tmp = server->queries; tmp != NULL; tmp = tmp->next) { QUERY_REC *rec = tmp->data; if (g_strcasecmp(rec->nick, orignick) == 0) { g_free(rec->nick); rec->nick = g_strdup(nick); signal_emit("query nick changed", 1, rec); } } g_free(params); }
static void flood_privmsg(const char *data, IRC_SERVER_REC *server, const char *nick, const char *addr) { char *params, *target, *text; int level; g_return_if_fail(data != NULL); g_return_if_fail(server != NULL); if (addr == NULL || g_strcasecmp(nick, server->nick) == 0) return; params = event_get_params(data, 2, &target, &text); level = ischannel(*target) ? MSGLEVEL_PUBLIC : MSGLEVEL_MSGS; if (addr != NULL && !ignore_check(server, nick, addr, target, text, level)) flood_newmsg(server, level, nick, addr, target); g_free(params); }
static char *get_nicks(IRC_CHANNEL_REC *channel, const char *data, int op, int voice) { GString *str; GSList *nicks, *tmp; char **matches, **match, *ret; g_return_val_if_fail(channel != NULL, NULL); g_return_val_if_fail(data != NULL, NULL); if (*data == '\0') return NULL; str = g_string_new(NULL); matches = g_strsplit(data, " ", -1); for (match = matches; *match != NULL; match++) { if (strchr(*match, '*') == NULL && strchr(*match, '?') == NULL) { /* no wildcards */ g_string_sprintfa(str, "%s ", *match); continue; } /* wildcards */ nicks = nicklist_find_multiple(CHANNEL(channel), data); for (tmp = nicks; tmp != NULL; tmp = tmp->next) { NICK_REC *rec = tmp->data; if ((op == 1 && !rec->op) || (op == 0 && rec->op) || (voice == 1 && !rec->voice) || (voice == 0 && rec->voice)) continue; if (g_strcasecmp(rec->nick, channel->server->nick) == 0) continue; g_string_sprintfa(str, "%s ", rec->nick); } g_slist_free(nicks); } if (str->len > 0) g_string_truncate(str, str->len-1); ret = str->str; g_string_free(str, FALSE); return ret; }
/* SYNTAX: DCC CLOSE <type> <nick> [<file>] */ static void cmd_dcc_close(char *data, IRC_SERVER_REC *server) { GSList *tmp, *next; char *typestr, *nick, *arg; void *free_arg; int found, type; g_return_if_fail(data != NULL); if (!cmd_get_params(data, &free_arg, 3 | PARAM_FLAG_GETREST, &typestr, &nick, &arg)) return; if (*nick == '\0') cmd_param_error(CMDERR_NOT_ENOUGH_PARAMS); ascii_strup(typestr); type = dcc_str2type(typestr); if (type == -1) { signal_emit("dcc error unknown type", 1, typestr); cmd_params_free(free_arg); return; } found = FALSE; for (tmp = dcc_conns; tmp != NULL; tmp = next) { DCC_REC *dcc = tmp->data; next = tmp->next; if (dcc->type == type && g_strcasecmp(dcc->nick, nick) == 0 && (*arg == '\0' || strcmp(dcc->arg, arg) == 0)) { dcc_reject(dcc, server); found = TRUE; } } if (!found) { signal_emit("dcc error close not found", 3, typestr, nick, arg); } cmd_params_free(free_arg); }
static QUERY_REC *query_find_server(SERVER_REC *server, const char *nick) { GSList *tmp; g_return_val_if_fail(IS_SERVER(server), NULL); if (server->query_find_func != NULL) { /* use the server specific query find function */ return server->query_find_func(server, nick); } for (tmp = server->queries; tmp != NULL; tmp = tmp->next) { QUERY_REC *rec = tmp->data; if (g_strcasecmp(rec->name, nick) == 0) return rec; } return NULL; }
static void ipc_master_cmd_client( irc_t *data, char **cmd ) { /* Normally data points at an irc_t block, but for the IPC master this is different. We think this scary cast is better than creating a new command_t structure, just to make the compiler happy. */ struct bitlbee_child *child = (void*) data; if( child && cmd[1] ) { child->host = g_strdup( cmd[1] ); child->nick = g_strdup( cmd[2] ); child->realname = g_strdup( cmd[3] ); } /* CLIENT == On initial connects, HELLO is after /RESTARTs. */ if( g_strcasecmp( cmd[0], "CLIENT" ) == 0 ) ipc_to_children_str( "OPERMSG :Client connecting (PID=%d): %s@%s (%s)\r\n", (int) ( child ? child->pid : -1 ), cmd[2], cmd[1], cmd[3] ); }
/* Server connected, check if there's any open dcc sessions for this ircnet.. */ static void dcc_server_connected(IRC_SERVER_REC *server) { GSList *tmp; g_return_if_fail(server != NULL); if (server->connrec->ircnet == NULL) return; for (tmp = dcc_conns; tmp != NULL; tmp = tmp->next) { DCC_REC *dcc = tmp->data; if (dcc->server == NULL && dcc->ircnet != NULL && g_strcasecmp(dcc->ircnet, server->connrec->ircnet) == 0) { dcc->server = server; g_free(dcc->mynick); dcc->mynick = g_strdup(server->nick); } } }
static void sig_server_disconnected(SERVER_REC *server) { LOG_ITEM_REC *logitem; GSList *tmp, *next; for (tmp = logs; tmp != NULL; tmp = next) { LOG_REC *log = tmp->data; next = tmp->next; if (!log->temp || log->items == NULL) continue; logitem = log->items->data; if (logitem->type == LOG_ITEM_TARGET && logitem->servertag != NULL && g_strcasecmp(logitem->servertag, server->tag) == 0 && server_ischannel(server, logitem->name)) /* kludge again.. so we won't close dcc chats */ log_close(log); } }
void globalSetCurrentIndexCombo(GtkWidget* combo, gchar* textFind){ GtkTreeIter iter; gboolean valid; gint row_count = 0; GtkTreeModel * list_store = gtk_combo_box_get_model (combo); valid = gtk_tree_model_get_iter_first (list_store, &iter); while (valid){ gchar *str_data; gint int_data; gtk_tree_model_get (list_store, &iter,0,&str_data,-1); if( g_strcasecmp( str_data , textFind) == 0 ){ g_free (str_data); break; } g_free (str_data); row_count ++; valid = gtk_tree_model_iter_next (list_store, &iter); } gtk_combo_box_set_active (combo, row_count); }
Group * group_get(const gchar *name) { GSList *l; Group *gi; gchar *id; if(name == NULL) id = "Kontakty"; else id = (gchar *)name; for(l = group_list; l != NULL; l = l->next) { gi = (Group *)l->data; if(g_strcasecmp(id, gi->name) == 0) { return gi; } } return NULL; }
gint config_list_find(proplist_t prop, gchar *key, gchar *value) { proplist_t item; gint num, max; gchar *ret; if (prop == NULL) return -1; max = PLGetNumberOfElements(prop); for (num = 0; num < max; num++) { item = PLGetArrayElement(prop, num); ret = config_get_str(item, key, NULL); if (ret != NULL && g_strcasecmp(ret, value) == 0) return num; } return -1; }
/*! \brief Test the version of gattrib and gEDA/gaf * * \param version Version being tested * \returns false if incorrect version, true if OK */ SCM g_rc_gattrib_version(SCM scm_version) { char *version; SCM ret = SCM_BOOL_T; SCM_ASSERT (scm_is_string (scm_version), scm_version, SCM_ARG1, "gattrib-version"); version = scm_to_utf8_string (scm_version); if (g_strcasecmp (version, PACKAGE_DATE_VERSION) != 0) { fprintf(stderr, _("You are running gEDA/gaf version [%s%s.%s],\nbut you have a version [%s] gattribrc file.\nPlease be sure that you have the latest rc file.\n"), PREPEND_VERSION_STRING, PACKAGE_DOTTED_VERSION, PACKAGE_DATE_VERSION, version); ret = SCM_BOOL_F; } free (version); return ret; }
static NETJOIN_REC *netjoin_find(IRC_SERVER_REC *server, const char *nick) { NETJOIN_SERVER_REC *srec; GSList *tmp; g_return_val_if_fail(server != NULL, NULL); g_return_val_if_fail(nick != NULL, NULL); srec = netjoin_find_server(server); if (srec == NULL) return NULL; for (tmp = srec->netjoins; tmp != NULL; tmp = tmp->next) { NETJOIN_REC *rec = tmp->data; if (g_strcasecmp(rec->nick, nick) == 0) return rec; } return NULL; }
/* SYNTAX: NAMES [-yes] [<channels>] */ static void cmd_names(const char *data, IRC_SERVER_REC *server, WI_ITEM_REC *item) { g_return_if_fail(data != NULL); if (!IS_IRC_SERVER(server) || !server->connected) cmd_return_error(CMDERR_NOT_CONNECTED); if (*data == '\0') cmd_return_error(CMDERR_NOT_GOOD_IDEA); if (strcmp(data, "*") == 0) { if (!IS_IRC_CHANNEL(item)) cmd_return_error(CMDERR_NOT_JOINED); data = item->name; } if (g_strcasecmp(data, "-YES") == 0) irc_send_cmd(server, "NAMES"); else irc_send_cmdv(server, "NAMES %s", data); }
static void event_names_list(const char *data, SERVER_REC *server) { CHANNEL_REC *chanrec; char *params, *type, *channel, *names, *ptr; g_return_if_fail(data != NULL); params = event_get_params(data, 4, NULL, &type, &channel, &names); chanrec = channel_find(server, channel); if (chanrec == NULL || chanrec->names_got) { /* unknown channel / names list already read */ g_free(params); return; } /* type = '=' = public, '*' = private, '@' = secret. This is actually pretty useless to check here, but at least we get to know if the channel is +p or +s a few seconds before we receive the MODE reply... */ if (*type == '*') parse_channel_modes(IRC_CHANNEL(chanrec), NULL, "+p"); else if (*type == '@') parse_channel_modes(IRC_CHANNEL(chanrec), NULL, "+s"); while (*names != '\0') { while (*names == ' ') names++; ptr = names; while (*names != '\0' && *names != ' ') names++; if (*names != '\0') *names++ = '\0'; if (*ptr == '@' && g_strcasecmp(server->nick, ptr+1) == 0) chanrec->chanop = TRUE; nicklist_insert(chanrec, ptr+isnickflag(*ptr), *ptr == '@', *ptr == '+', FALSE); } g_free(params); }