mpd_common.h (2912B)
1 #ifndef MPD_COMMON_H 2 #define MPD_COMMON_H 3 4 #include <mpd/client.h> 5 #include <stdbool.h> 6 #include <stddef.h> 7 #include <stdio.h> 8 9 #define MPD_TOOLS_BATCH_SIZE 512U 10 11 struct mt_strvec { 12 char **items; 13 size_t len; 14 size_t cap; 15 }; 16 17 struct mt_player_state { 18 enum mpd_state state; 19 unsigned queue_version; 20 unsigned queue_length; 21 unsigned song_pos; 22 unsigned song_id; 23 char *current_uri; 24 }; 25 26 enum mt_state_match { 27 MT_STATE_ERROR, 28 MT_STATE_CHANGED, 29 MT_STATE_MATCH, 30 }; 31 32 struct mpd_connection *mt_connect(void); 33 struct mpd_connection *mt_connect_to(const char *host, unsigned port); 34 void mt_report_error(const struct mpd_connection *connection, 35 const char *context); 36 37 void mt_strvec_init(struct mt_strvec *vec); 38 void mt_strvec_clear(struct mt_strvec *vec); 39 bool mt_strvec_push(struct mt_strvec *vec, const char *value); 40 bool mt_strvec_push_n(struct mt_strvec *vec, const char *value, size_t length); 41 bool mt_read_lines(FILE *input, struct mt_strvec *lines); 42 FILE *mt_open_input(const char *path, bool *must_close); 43 44 bool mt_add_queue(struct mpd_connection *connection, 45 const struct mt_strvec *tracks, bool verbose); 46 bool mt_insert_queue(struct mpd_connection *connection, 47 const struct mt_strvec *tracks, unsigned position, 48 bool verbose); 49 bool mt_add_playlist(struct mpd_connection *connection, const char *playlist, 50 const struct mt_strvec *tracks, bool verbose); 51 bool mt_add_queue_stream(struct mpd_connection *connection, FILE *input, 52 bool verbose, size_t *count); 53 bool mt_add_playlist_stream(struct mpd_connection *connection, 54 const char *playlist, FILE *input, bool verbose, 55 size_t *count); 56 57 bool mt_get_player_state(struct mpd_connection *connection, 58 struct mt_player_state *state); 59 void mt_player_state_clear(struct mt_player_state *state); 60 bool mt_read_queue(struct mpd_connection *connection, 61 struct mt_strvec *tracks); 62 bool mt_read_playlist(struct mpd_connection *connection, const char *playlist, 63 struct mt_strvec *tracks); 64 enum mt_state_match mt_player_state_is(struct mpd_connection *connection, 65 unsigned expected_version, 66 unsigned expected_song_id); 67 bool mt_replace_queue(struct mpd_connection *connection, 68 const struct mt_strvec *tracks, 69 unsigned expected_version, bool force); 70 bool mt_replace_playlist(struct mpd_connection *connection, 71 const char *playlist, 72 const struct mt_strvec *tracks, 73 const struct mt_strvec *expected, bool force); 74 75 bool mt_edit_lines(struct mt_strvec *lines); 76 bool mt_parse_size(const char *text, size_t *value); 77 78 #endif