/*
* 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 */