int owl_zephyr_loadloginsubs(const char *filename) { #ifdef HAVE_LIBZEPHYR FILE *file; ZSubscription_t *subs; int numSubs = 100; char *subsfile; char *buffer = NULL; int count; struct stat statbuff; subs = g_new(ZSubscription_t, numSubs); subsfile = owl_zephyr_dotfile(".anyone", filename); if (stat(subsfile, &statbuff) == -1) { g_free(subs); g_free(subsfile); return 0; } ZResetAuthentication(); count = 0; file = fopen(subsfile, "r"); g_free(subsfile); if (file) { while (owl_getline_chomp(&buffer, file)) { if (buffer[0] == '\0' || buffer[0] == '#') continue; if (count == numSubs) { numSubs *= 2; subs = g_renew(ZSubscription_t, subs, numSubs); } subs[count].zsub_class = g_strdup("login"); subs[count].zsub_recipient = g_strdup("*"); subs[count].zsub_classinst = long_zuser(buffer); count++; } fclose(file); } else { return 0; } g_free(buffer); return owl_zephyr_loadsubs_helper(subs, count); #else return 0; #endif }
int owl_zbuddylist_adduser(owl_zbuddylist *zb, const char *name) { int i, j; char *user; user=long_zuser(name); j=owl_list_get_size(&(zb->zusers)); for (i=0; i<j; i++) { if (!strcasecmp(user, owl_list_get_element(&(zb->zusers), i))) { owl_free(user); return(-1); } } owl_list_append_element(&(zb->zusers), user); return(0); }
int owl_zbuddylist_deluser(owl_zbuddylist *zb, const char *name) { int i, j; char *user, *ptr; user=long_zuser(name); j=owl_list_get_size(&(zb->zusers)); for (i=0; i<j; i++) { ptr=owl_list_get_element(&(zb->zusers), i); if (!strcasecmp(user, ptr)) { owl_list_remove_element(&(zb->zusers), i); owl_free(ptr); owl_free(user); return(0); } } owl_free(user); return(-1); }