From aec2d301675f4ecaac35cc2c52021fdd9d5d9f33 Mon Sep 17 00:00:00 2001 From: Martin Mares Date: Mon, 24 Mar 2003 18:24:37 +0000 Subject: [PATCH] More changes to the custom attribute mechanism: o Introduced the concept of extended attributes which consist of the custom attributes and some internally defined attributes handled in the same way. o FILETYPE and LANG are now extended attributes and they don't depend on the customization module. This is probably much cleaner as it reduces the overlap between custom parts and generic parts. o No problems with linking liblang because of LANG attribute. o idxdump got simplified. --- lib/index.h | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/lib/index.h b/lib/index.h index c5148778..f8c5e193 100644 --- a/lib/index.h +++ b/lib/index.h @@ -67,16 +67,34 @@ enum card_flag { /* * We store document type and several other properties in card_attr->type_flags. - * Here we define only the basic structure, the details and also how to match the - * types are defined in custom.h. + * Here we define only the basic structure, the details are defined in custom.h + * (the list of type names custom_file_type_names[] and also setting of the file + * types in custom_create_attrs()). * * bits 7--5 file type: (0-3: text types, 4-7: other types, defined by custom.h) * bits 4--0 type-dependent information, for text types it's document language code */ +#ifdef CONFIG_FILETYPE #define CA_GET_FILE_TYPE(a) ((a)->type_flags >> 5) #define CA_GET_FILE_INFO(a) ((a)->type_flags & 0x1f) #define CA_GET_FILE_LANG(a) ((a)->type_flags & 0x80 ? 0 : CA_GET_FILE_INFO(a)) +#define FILETYPE_ATTRS SMALL_SET_ATTR(ftype, FILETYPE, CA_GET_FILE_TYPE, ext_ft_parse) +byte *ext_ft_parse(u32 *dest, byte *value, uns intval); +extern byte *custom_file_type_names[8]; +#else +#define FILETYPE_ATTRS +#endif + +#ifdef CONFIG_LANG +/* You can use language matching without CONFIG_FILETYPE, but you have to define CA_GET_FILE_LANG yourself. */ +#define LANG_ATTRS SMALL_SET_ATTR(lang, LANG, CA_GET_FILE_LANG, ext_lang_parse) +byte *ext_lang_parse(u32 *dest, byte *value, uns intval); +#else +#define LANG_ATTRS +#endif + +#define EXTENDED_ATTRS CUSTOM_ATTRS FILETYPE_ATTRS LANG_ATTRS /* String fingerprints */ -- 2.39.2