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(); }
void ui_open_datafile() { char *filename; filename = ask_filename(_("File to open: ")); if(!filename || ! *filename) { free(filename); refresh_screen(); return; } if(opt_get_bool(BOOL_AUTOSAVE)) save_database(); else if(statusline_ask_boolean(_("Save current database"), FALSE)) save_database(); close_database(); load_database(filename); if(list_is_empty()) { statusline_msg(_("Sorry, the specified file appears not to be a valid abook addressbook")); load_database(datafile); } else { free(datafile); datafile = xstrdup(filename); } refresh_screen(); free(filename); alternative_datafile = TRUE; }
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); }
int import_passwd() { char file[STRING_LONG], *buf, *cmd, *s, *text; int i = 0; xmlNodePtr node, root; xmlDocPtr doc; get_filename(file, 'r'); gnupg_read(file, &doc); if(!doc){ debug("import_passwd: bad data"); return -1; } root = xmlDocGetRootElement(doc); if(!root || !root->name || (strcmp((char*)root->name, "PWMan_Export") != 0) ){ statusline_msg("Badly Formed password data"); return -1; } if( buf = xmlGetProp(root, (xmlChar*)"version") ){ i = atoi( buf ); } else { i = 0; } if(i < FF_VERSION){ statusline_msg("Password Export File in older format, use convert_pwdb"); return -1; } for(node = root->children; node != NULL; node = node->next){ if(strcmp(node->name, "PwList") == 0){ read_pwlist(node, current_pw_sublist); break; } else if(strcmp(node->name, "PwItem") == 0){ read_password_node(node, current_pw_sublist); break; } } xmlFreeDoc(doc); return 0; }
int export_passwd_list(PWList *pwlist) { char vers[5]; char id[STRING_LONG], file[STRING_LONG]; xmlDocPtr doc; xmlNodePtr root; if(check_gnupg() != 0){ debug("export_passwd_list: gnupg not found"); return -1; } if(!pwlist){ debug("export_passwd_list: bad password"); statusline_msg("Bad password"); return -1; } get_gnupg_id(id); if(id[0] == 0){ debug("export_passwd_list: cancel because id is blank"); return -1; } get_filename(file, 'w'); debug("export_passwd_list: construct xml doc"); snprintf(vers, 5, "%d", FF_VERSION); doc = xmlNewDoc((xmlChar*)"1.0"); root = xmlNewDocNode(doc, NULL, (xmlChar*)"PWMan_Export", NULL); xmlSetProp(root, "version", vers); write_pwlist(root, pwlist); xmlDocSetRootElement(doc, root); gnupg_write(doc, id, file); xmlFreeDoc(doc); return 0; }
void display_help(int help) { int i; char **tbl; WINDOW *helpw; switch(help) { case HELP_MAIN: tbl = mainhelp; break; case HELP_EDITOR: tbl = editorhelp; break; default: return; } helpw = newwin(LINES - 5, COLS - 6, 2, 3); erase(); headerline(_("help")); for(i = 0; tbl[i] != NULL; i++) { waddstr(helpw, gettext(tbl[i])); if( (!((i + 1) % (LINES - 8))) || (tbl[i + 1] == NULL) ) { refresh(); wrefresh(helpw); refresh_statusline(); if(statusline_msg(_("Press any key to continue...")) == 'q') break; wclear(helpw); } } clear_statusline(); delwin(helpw); }