335 lines
11 KiB
C
335 lines
11 KiB
C
/* -*- C -*-
|
|
* Copyright (c) 1997-2006 Motoyuki Kasahara
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions
|
|
* are met:
|
|
* 1. Redistributions of source code must retain the above copyright
|
|
* notice, this list of conditions and the following disclaimer.
|
|
* 2. Redistributions in binary form must reproduce the above copyright
|
|
* notice, this list of conditions and the following disclaimer in the
|
|
* documentation and/or other materials provided with the distribution.
|
|
* 3. Neither the name of the project nor the names of its contributors
|
|
* may be used to endorse or promote products derived from this software
|
|
* without specific prior written permission.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
|
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
|
|
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
* SUCH DAMAGE.
|
|
*/
|
|
|
|
#ifndef EB_BUILD_POST_H
|
|
#define EB_BUILD_POST_H
|
|
|
|
#include "defs.h"
|
|
|
|
/*
|
|
* Text domain name.
|
|
*/
|
|
#define EB_TEXT_DOMAIN_NAME "eb"
|
|
|
|
/*
|
|
* Data size of a book entry in a catalog file.
|
|
*/
|
|
#define EB_SIZE_EB_CATALOG 40
|
|
#define EB_SIZE_EPWING_CATALOG 164
|
|
|
|
/*
|
|
* Maximum number of search titles.
|
|
*/
|
|
#define EB_MAX_SEARCH_TITLES 14
|
|
|
|
/*
|
|
* File names.
|
|
*/
|
|
#define EB_FILE_NAME_START "start"
|
|
#define EB_FILE_NAME_HONMON "honmon"
|
|
#define EB_FILE_NAME_FUROKU "furoku"
|
|
#define EB_FILE_NAME_APPENDIX "appendix"
|
|
|
|
/*
|
|
* Directory names.
|
|
*/
|
|
#define EB_DIRECTORY_NAME_DATA "data"
|
|
#define EB_DIRECTORY_NAME_GAIJI "gaiji"
|
|
#define EB_DIRECTORY_NAME_STREAM "stream"
|
|
#define EB_DIRECTORY_NAME_MOVIE "movie"
|
|
|
|
/*
|
|
* Search word types.
|
|
*/
|
|
#define EB_WORD_ALPHABET 0
|
|
#define EB_WORD_KANA 1
|
|
#define EB_WORD_OTHER 2
|
|
#define EB_WORD_INVALID -1
|
|
|
|
/*
|
|
* Index Style flags.
|
|
*/
|
|
#define EB_INDEX_STYLE_CONVERT 0
|
|
#define EB_INDEX_STYLE_ASIS 1
|
|
#define EB_INDEX_STYLE_REVERSED_CONVERT 2
|
|
#define EB_INDEX_STYLE_DELETE 2
|
|
|
|
/*
|
|
* Text content currently read.
|
|
*/
|
|
#define EB_TEXT_MAIN_TEXT 1
|
|
#define EB_TEXT_HEADING 2
|
|
#define EB_TEXT_RAWTEXT 3
|
|
#define EB_TEXT_OPTIONAL_TEXT 4
|
|
#define EB_TEXT_SEEKED 0
|
|
#define EB_TEXT_INVALID -1
|
|
|
|
/*
|
|
* Search method currently processed.
|
|
*/
|
|
#define EB_SEARCH_EXACTWORD 0
|
|
#define EB_SEARCH_WORD 1
|
|
#define EB_SEARCH_ENDWORD 2
|
|
#define EB_SEARCH_KEYWORD 3
|
|
#define EB_SEARCH_MULTI 4
|
|
#define EB_SEARCH_CROSS 5
|
|
#define EB_SEARCH_ALL 6
|
|
#define EB_SEARCH_NONE -1
|
|
|
|
/*
|
|
* Arrangement style of entries in a search index page.
|
|
*/
|
|
#define EB_ARRANGE_FIXED 0
|
|
#define EB_ARRANGE_VARIABLE 1
|
|
#define EB_ARRANGE_INVALID -1
|
|
|
|
/*
|
|
* Binary data types.
|
|
*/
|
|
#define EB_BINARY_MONO_GRAPHIC 0
|
|
#define EB_BINARY_COLOR_GRAPHIC 1
|
|
#define EB_BINARY_WAVE 2
|
|
#define EB_BINARY_MPEG 3
|
|
#define EB_BINARY_GRAY_GRAPHIC 4
|
|
#define EB_BINARY_INVALID -1
|
|
|
|
/*
|
|
* Text-stop status.
|
|
*/
|
|
#define EB_TEXT_STATUS_CONTINUED 0
|
|
#define EB_TEXT_STATUS_SOFT_STOP 1
|
|
#define EB_TEXT_STATUS_HARD_STOP 2
|
|
|
|
/*
|
|
* The maximum index depth of search indexes.
|
|
*/
|
|
#define EB_MAX_INDEX_DEPTH 6
|
|
|
|
/*
|
|
* The maximum length of path name relative to top directory of a CD-ROM
|
|
* book. An example of the longest relative path is:
|
|
*
|
|
* "subdir01/subdir02/filename.ebz;1"
|
|
*/
|
|
#define EB_MAX_RELATIVE_PATH_LENGTH \
|
|
(EB_MAX_DIRECTORY_NAME_LENGTH + 1 \
|
|
+ EB_MAX_DIRECTORY_NAME_LENGTH + 1 \
|
|
+ EB_MAX_FILE_NAME_LENGTH)
|
|
|
|
/*
|
|
* The environment variable name to enable/disable debug messages.
|
|
*/
|
|
#define EB_DEBUG_ENVIRONMENT_VARIABLE "EB_DEBUG"
|
|
|
|
/*
|
|
* Trace log macro.
|
|
*/
|
|
#define LOG(x) do {if (eb_log_flag) eb_log x;} while (0)
|
|
|
|
/*
|
|
* Get an unsigned value from an octet stream buffer.
|
|
*/
|
|
#define eb_uint1(p) (*(const unsigned char *)(p))
|
|
|
|
#define eb_uint2(p) ((*(const unsigned char *)(p) << 8) \
|
|
+ (*(const unsigned char *)((p) + 1)))
|
|
|
|
#define eb_uint3(p) ((*(const unsigned char *)(p) << 16) \
|
|
+ (*(const unsigned char *)((p) + 1) << 8) \
|
|
+ (*(const unsigned char *)((p) + 2)))
|
|
|
|
#define eb_uint4(p) ((*(const unsigned char *)(p) << 24) \
|
|
+ (*(const unsigned char *)((p) + 1) << 16) \
|
|
+ (*(const unsigned char *)((p) + 2) << 8) \
|
|
+ (*(const unsigned char *)((p) + 3)))
|
|
|
|
#define eb_uint4_le(p) ((*(const unsigned char *)(p)) \
|
|
+ (*(const unsigned char *)((p) + 1) << 8) \
|
|
+ (*(const unsigned char *)((p) + 2) << 16) \
|
|
+ (*(const unsigned char *)((p) + 3) << 24))
|
|
|
|
/*
|
|
* Test whether `off_t' represents a large integer.
|
|
*/
|
|
#define off_t_is_large \
|
|
((((off_t) 1 << 41) + ((off_t) 1 << 40) + 1) % 9999991 == 7852006)
|
|
|
|
/*
|
|
* External variable declarations.
|
|
*/
|
|
/* log.c */
|
|
extern int eb_log_flag;
|
|
|
|
/* hook.c */
|
|
extern EB_Hookset eb_default_hookset;
|
|
|
|
/*
|
|
* Function declarations.
|
|
*/
|
|
/* appendix.c */
|
|
void eb_initialize_alt_caches(EB_Appendix *appendix);
|
|
void eb_finalize_alt_caches(EB_Appendix *appendix);
|
|
|
|
/* appsub.c */
|
|
void eb_initialize_appendix_subbooks(EB_Appendix *appendix);
|
|
void eb_finalize_appendix_subbooks(EB_Appendix *appendix);
|
|
|
|
/* bcd.c */
|
|
unsigned eb_bcd2(const char *stream);
|
|
unsigned eb_bcd4(const char *stream);
|
|
unsigned eb_bcd6(const char *stream);
|
|
|
|
/* binary.c */
|
|
void eb_initialize_binary_context(EB_Book *book);
|
|
void eb_reset_binary_context(EB_Book *book);
|
|
void eb_finalize_binary_context(EB_Book *book);
|
|
|
|
/* booklist.c */
|
|
EB_Error_Code eb_booklist_add_book(EB_BookList *booklist, const char *name,
|
|
const char *title);
|
|
|
|
/* filename.c */
|
|
EB_Error_Code eb_canonicalize_path_name(char *path_name);
|
|
void eb_canonicalize_file_name(char *file_name);
|
|
EB_Error_Code eb_fix_directory_name(const char *path, char *directory_name);
|
|
EB_Error_Code eb_fix_directory_name2(const char *path,
|
|
const char *directory_name, char *sub_directory_name);
|
|
void eb_fix_path_name_suffix(char *path_name, const char *suffix);
|
|
EB_Error_Code eb_find_file_name(const char *path_name,
|
|
const char *target_file_name, char *found_file_name);
|
|
EB_Error_Code eb_find_file_name2(const char *path_name,
|
|
const char *sub_directory_name, const char *target_file_name,
|
|
char *found_file_name);
|
|
EB_Error_Code eb_find_file_name3(const char *path_name,
|
|
const char *sub_directory_name, const char *sub2_directory_name,
|
|
const char *target_file_name, char *found_file_name);
|
|
void eb_compose_path_name(const char *path_name, const char *file_name,
|
|
char *composed_path_name);
|
|
void eb_compose_path_name2(const char *path_name,
|
|
const char *sub_directory_name, const char *file_name,
|
|
char *composed_path_name);
|
|
void eb_compose_path_name3(const char *path_name,
|
|
const char *sub_directory_name, const char *sub2_directory_name,
|
|
const char *file_name, char *composed_path_name);
|
|
void eb_path_name_zio_code(const char *path_name, Zio_Code default_zio_code,
|
|
Zio_Code *zio_code);
|
|
|
|
/* font.c */
|
|
void eb_initialize_fonts(EB_Book *book);
|
|
void eb_load_font_headers(EB_Book *book);
|
|
void eb_finalize_fonts(EB_Book *book);
|
|
|
|
/* hook.c */
|
|
void eb_initialize_default_hookset(void);
|
|
|
|
/* jacode.c */
|
|
void eb_jisx0208_to_euc(char *out_string, const char *in_string);
|
|
void eb_sjis_to_euc(char *out_string, const char *in_string);
|
|
|
|
/* log.c */
|
|
void eb_initialize_log(void);
|
|
const char *eb_quoted_stream(const char *stream, size_t stream_length);
|
|
const char *eb_quoted_string(const char *string);
|
|
|
|
/* match.c */
|
|
int eb_match_word(const char *word, const char *pattern, size_t length);
|
|
int eb_pre_match_word(const char *word, const char *pattern, size_t length);
|
|
int eb_exact_match_word_jis(const char *word, const char *pattern,
|
|
size_t length);
|
|
int eb_exact_pre_match_word_jis(const char *word, const char *pattern,
|
|
size_t length);
|
|
int eb_exact_match_word_latin(const char *word, const char *pattern,
|
|
size_t length);
|
|
int eb_exact_pre_match_word_latin(const char *word, const char *pattern,
|
|
size_t);
|
|
int eb_match_word_kana_single(const char *word, const char *pattern,
|
|
size_t length);
|
|
int eb_match_word_kana_group(const char *word, const char *pattern,
|
|
size_t length);
|
|
int eb_exact_match_word_kana_single(const char *word, const char *pattern,
|
|
size_t length);
|
|
int eb_exact_match_word_kana_group(const char *word, const char *pattern,
|
|
size_t length);
|
|
|
|
/* message.c */
|
|
EB_Error_Code eb_initialize_messages(EB_Book *book);
|
|
|
|
/* multi.c */
|
|
EB_Error_Code eb_load_multi_searches(EB_Book *book);
|
|
EB_Error_Code eb_load_multi_titles(EB_Book *book);
|
|
|
|
/* narwfont.c */
|
|
EB_Error_Code eb_open_narrow_font_file(EB_Book *book, EB_Font_Code font_code);
|
|
EB_Error_Code eb_load_narrow_font_header(EB_Book *book,
|
|
EB_Font_Code font_code);
|
|
EB_Error_Code eb_load_narrow_font_glyphs(EB_Book *book,
|
|
EB_Font_Code font_code);
|
|
|
|
/* search.c */
|
|
void eb_initialize_search_contexts(EB_Book *book);
|
|
void eb_finalize_search_contexts(EB_Book *book);
|
|
void eb_reset_search_contexts(EB_Book *book);
|
|
void eb_initialize_search(EB_Search *search);
|
|
void eb_finalize_search(EB_Search *search);
|
|
void eb_initialize_searches(EB_Book *book);
|
|
void eb_finalize_searches(EB_Book *book);
|
|
EB_Error_Code eb_presearch_word(EB_Book *book, EB_Search_Context *context);
|
|
|
|
/* setword.c */
|
|
EB_Error_Code eb_set_word(EB_Book *book, const char *input_word, char *word,
|
|
char *canonicalized_word, EB_Word_Code *word_code);
|
|
EB_Error_Code eb_set_endword(EB_Book *book, const char *input_word, char *word,
|
|
char *canonicalized_word, EB_Word_Code *word_code);
|
|
EB_Error_Code eb_set_keyword(EB_Book *book, const char *input_word, char *word,
|
|
char *canonicalized_word, EB_Word_Code *word_code);
|
|
EB_Error_Code eb_set_multiword(EB_Book *book, EB_Multi_Search_Code multi_id,
|
|
EB_Multi_Entry_Code entry_id, const char *input_word, char *word,
|
|
char *canonicalized_word, EB_Word_Code *word_code);
|
|
|
|
/* subbook.c */
|
|
void eb_initialize_subbooks(EB_Book *book);
|
|
void eb_finalize_subbooks(EB_Book *book);
|
|
|
|
/* text.c */
|
|
void eb_initialize_text_context(EB_Book *book);
|
|
void eb_finalize_text_context(EB_Book *book);
|
|
void eb_reset_text_context(EB_Book *book);
|
|
void eb_invalidate_text_context(EB_Book *book);
|
|
EB_Error_Code eb_forward_heading(EB_Book *book);
|
|
|
|
/* widefont.c */
|
|
EB_Error_Code eb_open_wide_font_file(EB_Book *book, EB_Font_Code font_code);
|
|
EB_Error_Code eb_load_wide_font_header(EB_Book *book, EB_Font_Code font_code);
|
|
EB_Error_Code eb_load_wide_font_glyphs(EB_Book *book, EB_Font_Code font_code);
|
|
|
|
/* strcasecmp.c */
|
|
int eb_strcasecmp(const char *string1, const char *string2);
|
|
int eb_strncasecmp(const char *string1, const char *string2, size_t n);
|
|
|
|
#endif /* not EB_BUILD_POST_H */
|