00001 00121 #ifndef _LIGHTMEDIASCANNER_PLUGIN_H_ 00122 #define _LIGHTMEDIASCANNER_PLUGIN_H_ 1 00123 00124 #include <lightmediascanner.h> 00125 #include <lightmediascanner_charset_conv.h> 00126 #include <sqlite3.h> 00127 #include <sys/types.h> 00128 00129 #ifdef __cplusplus 00130 extern "C" { 00131 #endif 00132 00133 struct lms_file_info { 00134 const char *path; 00135 int path_len; 00136 int base; 00137 int64_t id; 00138 time_t mtime; 00139 time_t dtime; 00140 size_t size; 00141 }; 00142 00143 struct lms_context { 00144 sqlite3 *db; 00145 lms_charset_conv_t *cs_conv; 00146 }; 00147 00148 typedef void *(*lms_plugin_match_fn_t)(lms_plugin_t *p, const char *path, int len, int base); 00149 typedef int (*lms_plugin_parse_fn_t)(lms_plugin_t *p, struct lms_context *ctxt, const struct lms_file_info *finfo, void *match); 00150 typedef int (*lms_plugin_close_fn_t)(lms_plugin_t *p); 00151 typedef int (*lms_plugin_setup_fn_t)(lms_plugin_t *p, struct lms_context *ctxt); 00152 typedef int (*lms_plugin_start_fn_t)(lms_plugin_t *p, struct lms_context *ctxt); 00153 typedef int (*lms_plugin_finish_fn_t)(lms_plugin_t *p, struct lms_context *ctxt); 00154 00155 struct lms_plugin { 00156 const char *name; 00157 lms_plugin_match_fn_t match; 00158 lms_plugin_parse_fn_t parse; 00159 lms_plugin_close_fn_t close; 00160 lms_plugin_setup_fn_t setup; 00161 lms_plugin_start_fn_t start; 00162 lms_plugin_finish_fn_t finish; 00163 }; 00164 00165 #ifdef __cplusplus 00166 } 00167 #endif 00168 #endif /* _LIGHTMEDIASCANNER_PLUGIN_H_ */