tools

various tools I have been using throughout the years
Log | Files | Refs | README | LICENSE

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