int show_bmarks_menu(FileView *view, const char tags[], int go_on_single_match) { static menu_info m; init_menu_info(&m, strdup("Bookmarks"), strdup("No bookmarks found")); m.execute_handler = &execute_bmarks_cb; m.key_handler = &bmarks_khandler; if(is_null_or_empty(tags)) { bmarks_list(&bmarks_cb, &m); } else { bmarks_find(tags, &bmarks_cb, &m); } if(go_on_single_match && m.len == 1) { goto_selected_file(view, m.items[m.pos], 0); reset_popup_menu(&m); return curr_stats.save_msg; } return display_menu(&m, view); }
const char * get_tags(const char path[]) { result_tags = NULL; bmarks_list(&bmarks_cb, (void *)path); return result_tags; }
static int count_bmarks(void) { cb_called = 0; bmarks_list(&bmarks_cb, NULL); return cb_called; }
/* Writes bookmarks to vifminfo file. bmarks is a list of length nbmarks marks * read from vifminfo. */ static void write_bmarks(FILE *const fp, char *bmarks[], const int timestamps[], int nbmarks) { int i; fputs("\n# Bookmarks:\n", fp); bmarks_list(&write_bmark, fp); for(i = 0; i < nbmarks; i += 2) { fprintf(fp, "%c%s\n", LINE_TYPE_BOOKMARK, bmarks[i]); fprintf(fp, "\t%s\n", bmarks[i + 1]); fprintf(fp, "\t%d\n", timestamps[i/2]); } }