common.c
来自「一个很有名的浏览器」· C语言 代码 · 共 99 行
C
99 行
/* Internal bookmarks support - file format backends multiplexing *//* $Id: common.c,v 1.20.4.1 2005/05/01 22:03:22 jonas Exp $ */#ifdef HAVE_CONFIG_H#include "config.h"#endif#include <stdio.h>#include <stdlib.h>#include <string.h>#include "elinks.h"#include "bfu/dialog.h"#include "bookmarks/bookmarks.h"#include "bookmarks/backend/common.h"#include "lowlevel/home.h"#include "util/memory.h"#include "util/secsave.h"#include "util/string.h"/* Backends dynamic area: */#include "bookmarks/backend/default.h"#include "bookmarks/backend/xbel.h"/* Note that the numbering is static, that means that you have to provide at * least dummy NULL handlers even when no support is compiled in. */static struct bookmarks_backend *bookmarks_backends[] = { &default_bookmarks_backend,#ifdef CONFIG_XBEL_BOOKMARKS &xbel_bookmarks_backend,#else NULL,#endif};/* Loads the bookmarks from file */voidbookmarks_read(void){ int backend = get_opt_int("bookmarks.file_format"); unsigned char *file_name; FILE *f; if (!bookmarks_backends[backend] || !bookmarks_backends[backend]->read || !bookmarks_backends[backend]->filename) return; file_name = bookmarks_backends[backend]->filename(0); if (!file_name) return; if (elinks_home) { file_name = straconcat(elinks_home, file_name, NULL); if (!file_name) return; } f = fopen(file_name, "rb"); if (elinks_home) mem_free(file_name); if (!f) return; bookmarks_backends[backend]->read(f); fclose(f); bookmarks_unset_dirty();}voidbookmarks_write(struct list_head *bookmarks_list){ int backend = get_opt_int("bookmarks.file_format"); struct secure_save_info *ssi; unsigned char *file_name; if (!bookmarks_are_dirty()) return; if (!bookmarks_backends[backend] || !bookmarks_backends[backend]->write || !elinks_home || !bookmarks_backends[backend]->filename) return; /* We do this two-passes because we want backend to possibly decide to * return NULL if it's not suitable to save the bookmarks (otherwise * they would be just truncated to zero by secure_open()). */ file_name = bookmarks_backends[backend]->filename(1); if (!file_name) return; file_name = straconcat(elinks_home, file_name, NULL); if (!file_name) return; ssi = secure_open(file_name, 0177); mem_free(file_name); if (!ssi) return; bookmarks_backends[backend]->write(ssi, bookmarks_list); if (!secure_close(ssi)) bookmarks_unset_dirty();}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?