00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef MPD_ARCHIVE_PLUGIN_H
00021 #define MPD_ARCHIVE_PLUGIN_H
00022
00023 #include <glib.h>
00024
00025 #include <stdbool.h>
00026
00027 struct input_stream;
00028 struct archive_file;
00029
00030 struct archive_plugin {
00031 const char *name;
00032
00038 bool (*init)(void);
00039
00044 void (*finish)(void);
00045
00051 struct archive_file *(*open)(const char *path_fs, GError **error_r);
00052
00058 void (*scan_reset)(struct archive_file *);
00059
00065 char *(*scan_next)(struct archive_file *);
00066
00074 struct input_stream *(*open_stream)(struct archive_file *af,
00075 const char *path,
00076 GMutex *mutex, GCond *cond,
00077 GError **error_r);
00078
00082 void (*close)(struct archive_file *);
00083
00088 const char *const*suffixes;
00089 };
00090
00091 struct archive_file *
00092 archive_file_open(const struct archive_plugin *plugin, const char *path,
00093 GError **error_r);
00094
00095 void
00096 archive_file_close(struct archive_file *file);
00097
00098 void
00099 archive_file_scan_reset(struct archive_file *file);
00100
00101 char *
00102 archive_file_scan_next(struct archive_file *file);
00103
00104 struct input_stream *
00105 archive_file_open_stream(struct archive_file *file, const char *path,
00106 GMutex *mutex, GCond *cond,
00107 GError **error_r);
00108
00109 #endif