Hooking
This commit is contained in:
parent
07021c4a5d
commit
29164873f4
8
hooks.c
8
hooks.c
@ -207,12 +207,12 @@ static const EB_Hook s_hooks[] = {
|
|||||||
{ EB_HOOK_END_WAVE, HOOK_FUNC_NAME(end_wave) },
|
{ EB_HOOK_END_WAVE, HOOK_FUNC_NAME(end_wave) },
|
||||||
{ EB_HOOK_GB2312, HOOK_FUNC_NAME(gb2312) },
|
{ EB_HOOK_GB2312, HOOK_FUNC_NAME(gb2312) },
|
||||||
{ EB_HOOK_ISO8859_1, HOOK_FUNC_NAME(iso8859_1) },
|
{ EB_HOOK_ISO8859_1, HOOK_FUNC_NAME(iso8859_1) },
|
||||||
{ EB_HOOK_NARROW_FONT, HOOK_FUNC_NAME(narrow_font) },
|
/* { EB_HOOK_NARROW_FONT, HOOK_FUNC_NAME(narrow_font) }, */
|
||||||
{ EB_HOOK_NARROW_JISX0208, HOOK_FUNC_NAME(narrow_jisx0208) },
|
/* { EB_HOOK_NARROW_JISX0208, HOOK_FUNC_NAME(narrow_jisx0208) }, */
|
||||||
{ EB_HOOK_NEWLINE, HOOK_FUNC_NAME(newline) },
|
{ EB_HOOK_NEWLINE, HOOK_FUNC_NAME(newline) },
|
||||||
{ EB_HOOK_SET_INDENT, HOOK_FUNC_NAME(set_indent) },
|
{ EB_HOOK_SET_INDENT, HOOK_FUNC_NAME(set_indent) },
|
||||||
{ EB_HOOK_WIDE_FONT, HOOK_FUNC_NAME(wide_font) },
|
/* { EB_HOOK_WIDE_FONT, HOOK_FUNC_NAME(wide_font) }, */
|
||||||
{ EB_HOOK_WIDE_JISX0208, HOOK_FUNC_NAME(wide_jisx0208) },
|
/* { EB_HOOK_WIDE_JISX0208, HOOK_FUNC_NAME(wide_jisx0208) }, */
|
||||||
{ EB_HOOK_NULL, HOOK_FUNC_NAME(null) },
|
{ EB_HOOK_NULL, HOOK_FUNC_NAME(null) },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
18
main.c
18
main.c
@ -54,14 +54,14 @@ static void export_subbook_entries(EB_Book* eb_book, Subbook* subbook) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Entry* entry = subbook->entries + subbook->entry_count++;
|
Entry* entry = subbook->entries + subbook->entry_count++;
|
||||||
entry->heading = read_book_data(eb_book, &hit->heading, READ_MODE_HEADING);
|
entry->heading = read_book_data(eb_book, eb_hookset, &hit->heading, READ_MODE_HEADING);
|
||||||
entry->text = read_book_data(eb_book, &hit->text, READ_MODE_TEXT);
|
entry->text = read_book_data(eb_book, eb_hookset, &hit->text, READ_MODE_TEXT);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
while (hit_count > 0);
|
while (hit_count > 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void export_subbook(EB_Book* eb_book, Subbook* subbook) {
|
static void export_subbook(EB_Book* eb_book, EB_Hookset* eb_hookset, Subbook* subbook) {
|
||||||
char title[EB_MAX_TITLE_LENGTH + 1];
|
char title[EB_MAX_TITLE_LENGTH + 1];
|
||||||
if (eb_subbook_title(eb_book, title) == EB_SUCCESS) {
|
if (eb_subbook_title(eb_book, title) == EB_SUCCESS) {
|
||||||
subbook->title = eucjp_to_utf8(title);
|
subbook->title = eucjp_to_utf8(title);
|
||||||
@ -70,20 +70,20 @@ static void export_subbook(EB_Book* eb_book, Subbook* subbook) {
|
|||||||
if (eb_have_copyright(eb_book)) {
|
if (eb_have_copyright(eb_book)) {
|
||||||
EB_Position position;
|
EB_Position position;
|
||||||
if (eb_copyright(eb_book, &position) == EB_SUCCESS) {
|
if (eb_copyright(eb_book, &position) == EB_SUCCESS) {
|
||||||
subbook->copyright = read_book_data(eb_book, &position, READ_MODE_TEXT);
|
subbook->copyright = read_book_data(eb_book, eb_hookset, &position, READ_MODE_TEXT);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (eb_search_all_alphabet(eb_book) == EB_SUCCESS) {
|
if (eb_search_all_alphabet(eb_book) == EB_SUCCESS) {
|
||||||
export_subbook_entries(eb_book, subbook);
|
export_subbook_entries(eb_book, eb_hookset, subbook);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (eb_search_all_kana(eb_book) == EB_SUCCESS) {
|
if (eb_search_all_kana(eb_book) == EB_SUCCESS) {
|
||||||
export_subbook_entries(eb_book, subbook);
|
export_subbook_entries(eb_book, eb_hookset, subbook);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (eb_search_all_asis(eb_book) == EB_SUCCESS) {
|
if (eb_search_all_asis(eb_book) == EB_SUCCESS) {
|
||||||
export_subbook_entries(eb_book, subbook);
|
export_subbook_entries(eb_book, eb_hookset, subbook);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -150,7 +150,7 @@ static void export_book(const char path[], Book* book) {
|
|||||||
for (int i = 0; i < book->subbook_count; ++i) {
|
for (int i = 0; i < book->subbook_count; ++i) {
|
||||||
Subbook* subbook = book->subbooks + i;
|
Subbook* subbook = book->subbooks + i;
|
||||||
if ((error = eb_set_subbook(&eb_book, sub_codes[i])) == EB_SUCCESS) {
|
if ((error = eb_set_subbook(&eb_book, sub_codes[i])) == EB_SUCCESS) {
|
||||||
export_subbook(&eb_book, subbook);
|
export_subbook(&eb_book, &eb_hookset, subbook);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
fprintf(stderr, "Failed to set subbook: %s\n", eb_error_message(error));
|
fprintf(stderr, "Failed to set subbook: %s\n", eb_error_message(error));
|
||||||
@ -172,7 +172,7 @@ static void export_book(const char path[], Book* book) {
|
|||||||
int main(int argc, char *argv[]) {
|
int main(int argc, char *argv[]) {
|
||||||
bool pretty_print = false;
|
bool pretty_print = false;
|
||||||
|
|
||||||
char opt;
|
char opt = 0;
|
||||||
while ((opt = getopt(argc, argv, "p")) != -1) {
|
while ((opt = getopt(argc, argv, "p")) != -1) {
|
||||||
switch (opt) {
|
switch (opt) {
|
||||||
case 'p':
|
case 'p':
|
||||||
|
6
util.c
6
util.c
@ -31,7 +31,7 @@
|
|||||||
|
|
||||||
#define MAX_TEXT 1024
|
#define MAX_TEXT 1024
|
||||||
|
|
||||||
char* read_book_data(EB_Book* book, const EB_Position* position, ReadMode mode) {
|
char* read_book_data(EB_Book* book, EB_Hookset* hookset, const EB_Position* position, ReadMode mode) {
|
||||||
if (eb_seek_text(book, position) != EB_SUCCESS) {
|
if (eb_seek_text(book, position) != EB_SUCCESS) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@ -45,7 +45,7 @@ char* read_book_data(EB_Book* book, const EB_Position* position, ReadMode mode)
|
|||||||
error = eb_read_text(
|
error = eb_read_text(
|
||||||
book,
|
book,
|
||||||
NULL,
|
NULL,
|
||||||
NULL,
|
hookset,
|
||||||
NULL,
|
NULL,
|
||||||
MAX_TEXT - 1,
|
MAX_TEXT - 1,
|
||||||
data,
|
data,
|
||||||
@ -56,7 +56,7 @@ char* read_book_data(EB_Book* book, const EB_Position* position, ReadMode mode)
|
|||||||
error = eb_read_heading(
|
error = eb_read_heading(
|
||||||
book,
|
book,
|
||||||
NULL,
|
NULL,
|
||||||
NULL,
|
hookset,
|
||||||
NULL,
|
NULL,
|
||||||
MAX_TEXT - 1,
|
MAX_TEXT - 1,
|
||||||
data,
|
data,
|
||||||
|
2
util.h
2
util.h
@ -67,7 +67,7 @@ typedef enum {
|
|||||||
READ_MODE_HEADING,
|
READ_MODE_HEADING,
|
||||||
} ReadMode;
|
} ReadMode;
|
||||||
|
|
||||||
char* read_book_data(EB_Book* book, const EB_Position* position, ReadMode mode);
|
char* read_book_data(EB_Book* book, EB_Hookset* hookset, const EB_Position* position, ReadMode mode);
|
||||||
|
|
||||||
void free_book(Book* book);
|
void free_book(Book* book);
|
||||||
void dump_book(Book* book, bool pretty_print, FILE* fp);
|
void dump_book(Book* book, bool pretty_print, FILE* fp);
|
||||||
|
Loading…
Reference in New Issue
Block a user