static void pevent_dialog_update (GtkWidget * wid, GtkWidget * twid) { int len, m; const char *text; char *out; int sig; GtkTreeIter iter; GtkListStore *store; if (!gtkutil_treeview_get_selected (GTK_TREE_VIEW (pevent_dialog_list), &iter, COL_ROW, &sig, -1)) return; text = gtk_entry_get_text (GTK_ENTRY (wid)); len = strlen (text); if (pevt_build_string (text, &out, &m) != 0) { fe_message (_("There was an error parsing the string"), FE_MSG_ERROR); return; } if (m > (te[sig].num_args & 0x7f)) { free (out); out = malloc (4096); snprintf (out, 4096, _("This signal is only passed %d args, $%d is invalid"), te[sig].num_args & 0x7f, m); fe_message (out, FE_MSG_WARN); free (out); return; } store = (GtkListStore *)gtk_tree_view_get_model (GTK_TREE_VIEW (pevent_dialog_list)); gtk_list_store_set (store, &iter, COL_EVENT_TEXT, text, -1); if (pntevts_text[sig]) free (pntevts_text[sig]); if (pntevts[sig]) free (pntevts[sig]); pntevts_text[sig] = malloc (len + 1); memcpy (pntevts_text[sig], text, len + 1); pntevts[sig] = out; out = malloc (len + 2); memcpy (out, text, len + 1); out[len] = '\n'; out[len + 1] = 0; check_special_chars (out, TRUE); PrintTextRaw (GTK_XTEXT (twid)->buffer, out, 0, 0); free (out); /* save this when we exit */ prefs.save_pevents = 1; }
void hexchat_away(TCHAR *tszAway) { char szTemp[512]; char szAway[512]; ConvertString(tszAway, szAway, 512); _snprintf(szTemp, 512, szAway); check_special_chars(szTemp); hexchat_commandf(ph, "AWAY %s\0", szTemp); }
void hexchat_globally_away(TCHAR *tszAway) { char szTemp[512]; char szAway[512]; ConvertString(tszAway, szAway, 512); _snprintf(szTemp, 512, "ALLSERV AWAY %s\0", szAway); check_special_chars(szTemp); hexchat_exec(szTemp); }
static void ctcp_reply (session *sess, char *nick, char *word[], char *word_eol[], char *conf) { char tbuf[4096]; /* can receive 2048 from IRC, so this is enough */ conf = strdup (conf); /* process %C %B etc */ check_special_chars (conf, TRUE); auto_insert (tbuf, sizeof (tbuf), conf, word, word_eol, "", "", word_eol[5], server_get_network (sess->server, TRUE), "", "", nick); free (conf); handle_command (sess, tbuf, FALSE); }
static void inbound_make_idtext (server *serv, char *idtext, int max, int id) { idtext[0] = 0; if (serv->have_idmsg) { if (id) { safe_strcpy (idtext, prefs.hex_irc_id_ytext, max); } else { safe_strcpy (idtext, prefs.hex_irc_id_ntext, max); } /* convert codes like %C,%U to the proper ones */ check_special_chars (idtext, TRUE); } }
static void pevent_test_cb (GtkWidget * wid, GtkWidget * twid) { int len, n; char *out, *text; for (n = 0; n < NUM_XP; n++) { text = _(pntevts_text[n]); len = strlen (text); out = malloc (len + 2); memcpy (out, text, len + 1); out[len] = '\n'; out[len + 1] = 0; check_special_chars (out, TRUE); PrintTextRaw (GTK_XTEXT (twid)->buffer, out, 0, 0); free (out); } }
int pevt_build_string (const char *input, char **output, int *max_arg) { struct pevt_stage1 *s = NULL, *base = NULL, *last = NULL, *next; int clen; char o[4096], d, *obuf, *i; int oi, ii, max = -1, len, x; len = strlen (input); i = g_malloc (len + 1); memcpy (i, input, len + 1); check_special_chars (i, TRUE); len = strlen (i); clen = oi = ii = 0; for (;;) { if (ii == len) break; d = i[ii++]; if (d != '$') { o[oi++] = d; continue; } if (i[ii] == '$') { o[oi++] = '$'; continue; } if (oi > 0) { s = g_new (struct pevt_stage1, 1); if (base == NULL) base = s; if (last != NULL) last->next = s; last = s; s->next = NULL; s->data = g_malloc (oi + sizeof (int) + 1); s->len = oi + sizeof (int) + 1; clen += oi + sizeof (int) + 1; s->data[0] = 0; memcpy (&(s->data[1]), &oi, sizeof (int)); memcpy (&(s->data[1 + sizeof (int)]), o, oi); oi = 0; } if (ii == len) { fe_message ("String ends with a $", FE_MSG_WARN); goto err; } d = i[ii++]; if (d == 'a') { /* Hex value */ if (ii == len) goto a_len_error; d = i[ii++]; d -= '0'; x = d * 100; if (ii == len) goto a_len_error; d = i[ii++]; d -= '0'; x += d * 10; if (ii == len) goto a_len_error; d = i[ii++]; d -= '0'; x += d; if (x > 255) goto a_range_error; o[oi++] = x; continue; a_len_error: fe_message ("String ends in $a", FE_MSG_WARN); goto err; a_range_error: fe_message ("$a value is greater than 255", FE_MSG_WARN); goto err; } if (d == 't') { /* Tab - if tabnicks is set then write '\t' else ' ' */ s = g_new (struct pevt_stage1, 1); if (base == NULL) base = s; if (last != NULL) last->next = s; last = s; s->next = NULL; s->data = g_malloc (1); s->len = 1; clen += 1; s->data[0] = 3; continue; }