Example #1
0
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();
}
Example #2
0
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;
}
Example #3
0
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);
}
Example #4
0
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;
}
Example #5
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;
}
Example #6
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);
}