about summary refs log tree commit diff
path: root/config.c (unfollow)
Commit message (Expand)Author
2021-01-25Add protocol coverage to non-features listJune McEnroe
2021-01-25Move mention of pledge(2) and unveil(2) to READMEJune McEnroe
2021-01-23Preserve order of filters when removingJune McEnroe
2021-01-23Fix /unignore commandJune McEnroe
2021-01-23Remove use of "%n" to appease de RaadtJune McEnroe
2021-01-23Drop filesystem access iff possibleKlemens Nanni
2021-01-23Drop exec capability iff restrictedKlemens Nanni
2021-01-23Drop network capability after ircConnect()Klemens Nanni
2021-01-23Call pledge(2) after unveil(2)Klemens Nanni
2021-01-23Separate kiosk mode from restrict modeJune McEnroe
2021-01-21Simplify windowUpdate loops and factor out windowTopJune McEnroe
2021-01-21Document that M-l shows timestampsJune McEnroe
2021-01-19Don't lose swapped window when navigating to current bufferJeremy O'Brien
2021-01-19Use Warm heat for manually inserted blank linesJune McEnroe
2021-01-18Add example tmux(1) configKlemens Nanni
2021-01-17Use Warm heat for blank lines 1.5June McEnroe
2021-01-16Add -I highlight option and /highlightJune McEnroe
2021-01-16Rename ignore code to filterJune McEnroe
2021-01-16Remove join/part/quit ignore exampleJune McEnroe
2021-01-16Save and load window visibility thresholdsJune McEnroe
2021-01-16Restore toggling ignore with M--June McEnroe
2021-01-16Generalize ignore toggling to visibility thresholdJune McEnroe
2021-01-11Save and load the URL ring in the save file 1.4June McEnroe
2021-01-11Don't pass nick to urlScan for MOTD and helpJune McEnroe
2021-01-10Check fprintf return values rather than ferrorJune McEnroe
2021-01-10Sandbox with unveil(2) on OpenBSD in restricted modeJune McEnroe
2021-01-10Print chain to stdout with -oJune McEnroe
2021-01-10Allow interspersing flags and config filesJune McEnroe
2021-01-10Move -o to a separate SYNOPSIS lineJune McEnroe
2021-01-10Exit immediately when using -oJune McEnroe
2021-01-09Make SYNOPSIS arguments consistent with option namesJune McEnroe
2021-01-09Add -o and -t options to trust self-signed certificatesJune McEnroe
2021-01-09Allow configuring the upper bound of the hash functionJune McEnroe
2021-01-09Count width of 2 for invalid multibyte with high bitJune McEnroe
2021-01-07Use execl rather than execlp for shellJune McEnroe
2021-01-06Sandbox with pledge(2) on OpenBSDJune McEnroe
2021-01-04Collapse whitespace while wrapping and discard trailing spaceJune McEnroe
2021-01-01Split ignore fields to avoid over-eager * matchingJune McEnroe
2020-12-30Factor out reply count checking and decrementingJune McEnroe
2020-12-30Add /whowasJune McEnroe
2020-12-30Show setnames like nick changesJune McEnroe
2020-12-29Add /setname commandJune McEnroe
2020-12-29Handle so-called Standard RepliesJune McEnroe
2020-12-29Alphabetize STANDARDS sectionJune McEnroe
2020-12-08Document commands which can be filteredJune McEnroe
2020-12-08Clarify the optional portions of an ignoreJune McEnroe
2020-12-08Fix manual page lintsJune McEnroe
2020-12-08Clarify configuration file usage exampleJune McEnroe
2020-12-05Handle 437 ERR_UNAVAILRESOURCE like ERR_NICKNAMEINUSEJune McEnroe
2020-11-24Split /exec lines by \r as well as \nJune McEnroe
an>->id != id) continue; if (strcmp(node->str, str)) continue; return node; } return NULL; } void completeAdd(uint id, const char *str, enum Color color) { if (!find(id, str)) append(alloc(id, str, color)); } void completeTouch(uint id, const char *str, enum Color color) { struct Node *node = find(id, str); if (node) node->color = color; prepend(node ? detach(node) : alloc(id, str, color)); } enum Color completeColor(uint id, const char *str) { struct Node *node = find(id, str); return (node ? node->color : Default); } static struct Node *match; const char *complete(uint id, const char *prefix) { for (match = (match ? match->next : head); match; match = match->next) { if (match->id && match->id != id) continue; if (strncasecmp(match->str, prefix, strlen(prefix))) continue; return match->str; } return NULL; } void completeAccept(void) { if (match) prepend(detach(match)); match = NULL; } void completeReject(void) { match = NULL; } uint completeID(const char *str) { for (match = (match ? match->next : head); match; match = match->next) { if (match->id && !strcmp(match->str, str)) return match->id; } return None; } void completeReplace(uint id, const char *old, const char *new) { struct Node *next = NULL; for (struct Node *node = head; node; node = next) { next = node->next; if (id && node->id != id) continue; if (strcmp(node->str, old)) continue; free(node->str); node->str = strdup(new); prepend(detach(node)); if (!node->str) err(EX_OSERR, "strdup"); } } void completeRemove(uint id, const char *str) { struct Node *next = NULL; for (struct Node *node = head; node; node = next) { next = node->next; if (id && node->id != id) continue; if (strcmp(node->str, str)) continue; if (match == node) match = NULL; detach(node); free(node->str); free(node); } } void completeClear(uint id) { struct Node *next = NULL; for (struct Node *node = head; node; node = next) { next = node->next; if (node->id != id) continue; if (match == node) match = NULL; detach(node); free(node->str); free(node); } }