static XS (XS_XChat_plugin_pref_list) { char list[4096]; char value[512]; char *token; dSP; dMARK; dAX; if (!xchat_pluginpref_list (ph, list)) XSRETURN_EMPTY; PUSHMARK (SP); token = strtok (list, ","); while (token != NULL) { xchat_pluginpref_get_str (ph, token, value); XPUSHs (sv_2mortal (newSVpv (token, 0))); XPUSHs (sv_2mortal (newSVpv (value, 0))); token = strtok (NULL, ","); } PUTBACK; }
int xchat_pluginpref_get_int (xchat_plugin *pl, const char *var) { char buffer[12]; if (xchat_pluginpref_get_str (pl, var, buffer)) { return atoi (buffer); } else { return -1; } }
static XS (XS_XChat_plugin_pref_get) { int result; char value[512]; dMARK; dAX; result = xchat_pluginpref_get_str (ph, SvPV_nolen (ST (0)), value); if (result) XSRETURN_PV (value); XSRETURN_UNDEF; }
static sasl_info* find_info (char const* network) { char buffer[512]; char* token; sasl_info* cur = (sasl_info*) malloc (sizeof (sasl_info)); if (xchat_pluginpref_get_str (ph, network, buffer)) { token = strtok (buffer, ":"); cur->login = g_strdup (token); token = strtok (NULL, ":"); cur->password = g_strdup (token); cur->network = g_strdup (network); return cur; } return NULL; }