void sort_by_field(char *name) { int field; select_none(); name = (name == NULL) ? opt_get_str(STR_SORT_FIELD) : name; find_field_number(name, &field); if(field < 0) { if(name == opt_get_str(STR_SORT_FIELD)) statusline_msg(_("Invalid field value defined " "in configuration")); else statusline_msg(_("Invalid field value for sorting")); return; } sort_field = field; qsort((void *)database, items, sizeof(list_item), namecmp); refresh_screen(); }
static int check_options() { char *str; int err = 0; str = opt_get_str(STR_PRESERVE_FIELDS); if(strcasecmp(str, "all") && strcasecmp(str, "none") && strcasecmp(str, "standard")) { fprintf(stderr, _("valid values for the 'preserve_fields' " "option are 'all', 'standard' " "(default), and 'none'\n")); restore_default(&abook_vars[STR_PRESERVE_FIELDS]); err++; } str = opt_get_str(STR_ADDRESS_STYLE); if(strcasecmp(str, "eu") && strcasecmp(str, "uk") && strcasecmp(str, "us")) { fprintf(stderr, _("valid values for the 'address_style' " "option are 'eu' (default), 'uk', " "and 'us'\n")); restore_default(&abook_vars[STR_ADDRESS_STYLE]); err++; } return err; }
void ui_print_database() { FILE *handle; char *command = opt_get_str(STR_PRINT_COMMAND); int mode; if(list_is_empty()) return; switch(statusline_askchoice(_("Print <a>ll, print <s>elected, or <c>ancel?"), S_("keybindings:all/selected/cancel|asc"), 3)) { case 1: mode = ENUM_ALL; break; case 2: if( !selected_items() ) { statusline_msg(_("No selected items")); return; } mode = ENUM_SELECTED; break; default: refresh_screen(); return; } clear_statusline(); if( ! *command || (handle = popen(command, "w")) == NULL) return; fexport("text", handle, mode); pclose(handle); }
void wopt_init(struct imwindow *imwindow, const char *target) { char nnick[NUSER_LEN]; char buf[NUSER_LEN + 256]; char *pork_dir; char *p; pref_val_t *wopt = imwindow->opts; memset(wopt, 0, sizeof(pref_val_t) * WOPT_NUM_OPTS); wopt[WOPT_ACTIVITY_TYPES].i = opt_get_int(OPT_ACTIVITY_TYPES); wopt[WOPT_BEEP_ON_OUTPUT].b = opt_get_bool(OPT_BEEP_ON_OUTPUT); wopt[WOPT_HISTORY_LEN].i = opt_get_int(OPT_HISTORY_LEN); wopt[WOPT_LOG].b = opt_get_bool(OPT_LOG); wopt[WOPT_LOG_TYPES].i = opt_get_int(OPT_LOG_TYPES); wopt[WOPT_PRIVATE_INPUT].b = opt_get_bool(OPT_PRIVATE_INPUT); wopt[WOPT_SCROLL_ON_INPUT].b = opt_get_bool(OPT_SCROLL_ON_INPUT); wopt[WOPT_SCROLL_ON_OUTPUT].b = opt_get_bool(OPT_SCROLL_ON_OUTPUT); wopt[WOPT_SCROLLBUF_LEN].i = opt_get_int(OPT_SCROLLBUF_LEN); wopt[WOPT_TIMESTAMP].b = opt_get_bool(OPT_TIMESTAMP); wopt[WOPT_WORDWRAP].b = opt_get_bool(OPT_WORDWRAP); wopt[WOPT_WORDWRAP_CHAR].c = opt_get_char(OPT_WORDWRAP_CHAR); normalize(nnick, target, sizeof(nnick)); while ((p = strchr(nnick, '/')) != NULL) *p = '_'; pork_dir = opt_get_str(OPT_NCIC_DIR); snprintf(buf, sizeof(buf), "%s/%s/logs/%s.log", pork_dir, imwindow->owner->username, nnick); wopt[WOPT_LOGFILE].s = xstrdup(buf); }
static void set_work_lib(void) { const char *work_name = opt_get_str("work-name"); lib_t work = lib_find(work_name, false, false); if (work == NULL) work = lib_new(work_name); lib_set_work(work); }
int parse_database(FILE *in) { char *line = NULL; char *tmp; int sec=0, field; list_item item; item = item_create(); for(;;) { line = getaline(in); if(feof(in)) { if(item[field_id(NAME)] && sec) { add_item2database(item); } else { item_empty(item); } break; } if(!*line || *line == '\n' || *line == '#') { goto next; } else if(*line == '[') { if(item[field_id(NAME)] && sec ) { add_item2database(item); } else { item_empty(item); } sec = 1; memset(item, 0, ITEM_SIZE); if(!(tmp = strchr(line, ']'))) sec = 0; /*incorrect section lines are skipped*/ } else if((tmp = strchr(line, '=') ) && sec) { *tmp++ = '\0'; find_field_number(line, &field); if(field != -1) { item[field] = xstrdup(tmp); goto next; } else if(!strcasecmp(opt_get_str(STR_PRESERVE_FIELDS), "all")){ declare_unknown_field(line); item = xrealloc(item, ITEM_SIZE); item[fields_count - 1] = xstrdup(tmp); goto next; } } next: xfree(line); } xfree(line); item_free(&item); return 0; }
void input_init(struct input *input, u_int32_t width) { char *prompt; memset(input, 0, sizeof(*input)); input->width = width; input->max_history_len = MAX_HISTORY_LEN; input->dirty = 1; prompt = opt_get_str(OPT_PROMPT); if (prompt != NULL) input_set_prompt(input, prompt); }
void init_default_views() { char *str; int i, j, add_custom_fields, add_custom_view = 0; add_custom_fields = !strcasecmp(opt_get_str(STR_PRESERVE_FIELDS), "standard"); /* if the user has configured views, no need to provide defaults */ if(abook_views) goto out; add_custom_view = 1; struct { char *name; int fields[MAX_DEFAULT_FIELDS_PER_VIEW + 1]; } default_views[] = { { N_("CONTACT"), {NAME, EMAIL, -1} }, { N_("ADDRESS"), { ADDRESS, ADDRESS2, CITY, STATE, ZIP, COUNTRY, -1 } }, { N_("PHONE"), { PHONE, WORKPHONE, FAX, MOBILEPHONE, -1 } }, { N_("OTHER"), { NICK, URL, NOTES, ANNIVERSARY, -1 } }, { 0 } }; for(i = 0; default_views[i].name; i++) { for(j = 0; j < MAX_DEFAULT_FIELDS_PER_VIEW; j++) { if(default_views[i].fields[j] == -1) break; str = standard_fields[default_views[i].fields[j]].key; add_field_to_view(gettext(default_views[i].name), str); } } out: #define init_view(view, key, name) do { \ if(add_custom_fields || add_custom_view) \ declare_new_field(key, name, "string", \ 0 /*"standard" field already declared above*/);\ if(add_custom_view) \ add_field_to_view(view, key); \ } while(0); init_view(_("CUSTOM"), "custom1", _("Custom1")); init_view(_("CUSTOM"), "custom2", _("Custom2")); init_view(_("CUSTOM"), "custom3", _("Custom3")); init_view(_("CUSTOM"), "custom4", _("Custom4")); init_view(_("CUSTOM"), "custom5", _("Custom5")); }
static void append_room(struct aim_chat *chat, char *sn) { char filename[65536]; char *pork_dir = opt_get_str(OPT_PORK_DIR); FILE *file; if (pork_dir == NULL) { sprintf(filename, "."); opt_set(OPT_PORK_DIR, filename); } snprintf(filename, 65535, "%s/%s", pork_dir, chat->title); file = fopen(filename, "ab"); if (file == NULL) { screen_err_msg("Unable to append %s to list for room %s.", sn, chat->title); return; } fputs(sn, file); fclose(file); return; }
int load_opts(char *filename) { FILE *in; char *line = NULL; int n; int err = 0; if((in = fopen(filename, "r")) == NULL) return -1; for(n = 1;!feof(in); n++) { line = getaline(in); if(feof(in)) break; if(line && *line) { opt_line_remove_comments(line); if(*line) err += opt_parse_line(line, n, filename) ? 1:0; } free(line); line = NULL; } free(line); /* post-initialization */ err += check_options(); if(!strcasecmp(opt_get_str(STR_PRESERVE_FIELDS), "standard")) init_standard_fields(); return err; }
char *text_to_html(const char *src) { static char buf[8192]; u_int32_t i = 0; char *font_face; char *font_size; char *font_bgcolor; char *font_fgcolor; int ret; /* ** Message is already formatted as HTML -- leave it alone. */ if (!strncasecmp(src, "<html>", 6)) { xstrncpy(buf, src, sizeof(buf)); return (buf); } buf[0] = '\0'; font_face = opt_get_str(OPT_OUTGOING_MSG_FONT); font_size = opt_get_str(OPT_OUTGOING_MSG_FONT_SIZE); font_bgcolor = opt_get_str(OPT_OUTGOING_MSG_FONT_BGCOLOR); font_fgcolor = opt_get_str(OPT_OUTGOING_MSG_FONT_FGCOLOR); ret = snprintf(buf, sizeof(buf), "<FONT LANG=\"0\""); if (ret < 0 || (size_t) ret >= sizeof(buf)) return (NULL); i += ret; if (font_face != NULL && *font_face != '\0') { ret = snprintf(&buf[i], sizeof(buf) - i, " FACE=\"%s\"", font_face); if (ret < 0 || (size_t) ret >= sizeof(buf) - i) return (NULL); i += ret; } if (font_size != NULL && *font_size != '\0') { ret = snprintf(&buf[i], sizeof(buf) - i, " SIZE=\"%s\"", font_size); if (ret < 0 || (size_t) ret >= sizeof(buf) - i) return (NULL); i += ret; } if (font_bgcolor != NULL && *font_bgcolor != '\0') { ret = snprintf(&buf[i], sizeof(buf) - i, " BACK=\"%s\"", font_bgcolor); if (ret < 0 || (size_t) ret >= sizeof(buf) - i) return (NULL); i += ret; } if (font_fgcolor != NULL && *font_fgcolor != '\0') { ret = snprintf(&buf[i], sizeof(buf) - i, " COLOR=\"%s\"", font_fgcolor); if (ret < 0 || (size_t) ret >= sizeof(buf) - i) return (NULL); i += ret; } if (i < sizeof(buf) - 1) buf[i++] = '>'; while (*src != '\0' && i < sizeof(buf) - 1) { switch (*src) { int ret; case '<': ret = xstrncpy(&buf[i], "<", sizeof(buf) - i); if (ret == -1) return (buf); i += ret; break; case '>': ret = xstrncpy(&buf[i], ">", sizeof(buf) - i); if (ret == -1) return (buf); i += ret; break; case '&': ret = xstrncpy(&buf[i], "&", sizeof(buf) - i); if (ret == -1) return (buf); i += ret; break; default: buf[i++] = *src; break; } src++; } buf[i] = '\0'; return (buf); }
void init_index() { assert(!index_elements); parse_index_format(opt_get_str(STR_INDEX_FORMAT)); }
static void opt_changed_prompt(void) { input_set_prompt(&screen.input, opt_get_str(OPT_PROMPT)); }
static int write_room(struct aim_chat *chat) { char filename[65536]; char buf[MAXSNLEN+1024]; char *pork_dir = opt_get_str(OPT_PORK_DIR); FILE *file; dlist_t *cur; if (pork_dir == NULL) { sprintf(filename, "."); opt_set(OPT_PORK_DIR, filename); } snprintf(filename, 65535, "%s/%s", pork_dir, chat->title); file = fopen(filename, "wb"); if (file == NULL) return 0; cur = chat->downers; while (cur != NULL) { snprintf(buf, MAXSNLEN+3, "d:%s\n", (char*)cur->data); fputs(buf, file); buf[strcspn(buf, "\n")] = '\0'; screen_err_msg("%s", buf); cur = cur->next; } cur = chat->fullops; while (cur != NULL) { snprintf(buf, MAXSNLEN+3, "f:%s\n", (char*)cur->data); fputs(buf, file); buf[strcspn(buf, "\n")] = '\0'; screen_err_msg("%s", buf); cur = cur->next; } cur = chat->oparray; while (cur != NULL) { snprintf(buf, MAXSNLEN+3, "o:%s\n", (char*)cur->data); fputs(buf, file); buf[strcspn(buf, "\n")] = '\0'; screen_err_msg("%s", buf); cur = cur->next; } cur = chat->halfops; while (cur != NULL) { snprintf(buf, MAXSNLEN+3, "h:%s\n", (char*)cur->data); fputs(buf, file); buf[strcspn(buf, "\n")] = '\0'; screen_err_msg("%s", buf); cur = cur->next; } cur = chat->immlist; while (cur != NULL) { snprintf(buf, MAXSNLEN+3, "i:%s\n", (char*)cur->data); fputs(buf, file); buf[strcspn(buf, "\n")] = '\0'; screen_err_msg("%s", buf); cur = cur->next; } cur = chat->abarray; while (cur != NULL) { snprintf(buf, MAXSNLEN+3, "b:%s\n", (char*)cur->data); fputs(buf, file); buf[strcspn(buf, "\n")] = '\0'; screen_err_msg("%s", buf); cur = cur->next; } cur = chat->akarray; while (cur != NULL) { snprintf(buf, MAXSNLEN+3, "k:%s\n", (char*)cur->data); fputs(buf, file); buf[strcspn(buf, "\n")] = '\0'; screen_err_msg("%s", buf); cur = cur->next; } cur = chat->awarray; while (cur != NULL) { snprintf(buf, MAXSNLEN+3, "w:%s\n", (char*)cur->data); fputs(buf, file); buf[strcspn(buf, "\n")] = '\0'; screen_err_msg("%s", buf); cur = cur->next; } fclose(file); return 1; }