1 /* libmpdclient 2 (c) 2003-2019 The Music Player Daemon Project 3 This project's homepage is: http://www.musicpd.org 4 5 Redistribution and use in source and binary forms, with or without 6 modification, are permitted provided that the following conditions 7 are met: 8 9 - Redistributions of source code must retain the above copyright 10 notice, this list of conditions and the following disclaimer. 11 12 - Redistributions in binary form must reproduce the above copyright 13 notice, this list of conditions and the following disclaimer in the 14 documentation and/or other materials provided with the distribution. 15 16 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 17 ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 18 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 19 A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR 20 CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 21 EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 22 PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 23 PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 24 LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 25 NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 26 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 */ 28 29 /*! \file 30 * \brief MPD client library 31 * 32 * Do not include this header directly. Use mpd/client.h instead. 33 */ 34 35 #ifndef MPD_MOUNT_H 36 #define MPD_MOUNT_H 37 38 #include "compiler.h" 39 40 #include <stdbool.h> 41 42 struct mpd_connection; 43 struct mpd_pair; 44 45 /** 46 * \struct mpd_mount 47 * 48 * This type represents a mount point on the MPD server. 49 */ 50 struct mpd_mount; 51 52 #ifdef __cplusplus 53 extern "C" { 54 #endif 55 56 /** 57 * Begins parsing a new #mpd_mount. 58 * 59 * @param pair the first pair in this mount point 60 * @return the new #mpd_mount object, or NULL on error (out of 61 * memory, or wrong pair name) 62 * 63 * @since libmpdclient 2.16 64 */ 65 mpd_malloc 66 struct mpd_mount * 67 mpd_mount_begin(const struct mpd_pair *pair); 68 69 /** 70 * Parses the pair, adding its information to the specified 71 * #mpd_mount object. 72 * 73 * @return true if the pair was parsed and added to the mount (or if 74 * the pair was not understood and ignored), false if this pair is the 75 * beginning of the next mount 76 * 77 * @since libmpdclient 2.16 78 */ 79 bool 80 mpd_mount_feed(struct mpd_mount *mnt, const struct mpd_pair *pair); 81 82 /** 83 * Frees a mpd_mount object returned from mpd_recv_mount() or mpd_mount_begin(). 84 * 85 * @since libmpdclient 2.16 86 */ 87 void 88 mpd_mount_free(struct mpd_mount *mount); 89 90 /** 91 * @return the mount point URI of the specified #mpd_mount object 92 * 93 * @since libmpdclient 2.16 94 */ 95 mpd_pure 96 const char * 97 mpd_mount_get_uri(const struct mpd_mount *mnt); 98 99 /** 100 * @return the mounted storage URI of the specified #mpd_mount object; 101 * may be NULL if MPD did not reveal it 102 * 103 * @since libmpdclient 2.16 104 */ 105 mpd_pure 106 const char * 107 mpd_mount_get_storage(const struct mpd_mount *mnt); 108 109 /** 110 * Sends the "listmounts" command to MPD. Call mpd_recv_mount() to 111 * read the response. 112 * 113 * @param connection a valid and connected mpd_connection. 114 * @return true on success 115 * 116 * @since libmpdclient 2.16, MPD 0.19 117 */ 118 bool 119 mpd_send_list_mounts(struct mpd_connection *connection); 120 121 /** 122 * Reads the next mpd_mount from the MPD response. Free the return 123 * value with mpd_mount_free(). 124 * 125 * @return a mpd_mount object on success, NULL on error or 126 * end-of-response 127 * 128 * @since libmpdclient 2.16, MPD 0.19 129 */ 130 mpd_malloc 131 struct mpd_mount * 132 mpd_recv_mount(struct mpd_connection *connection); 133 134 /** 135 * Sends the "mount" command to MPD. 136 * 137 * @param connection a valid and connected mpd_connection. 138 * @param uri the mount point URI 139 * @param storage the mounted storage URI 140 * @return true on success 141 * 142 * @since libmpdclient 2.16, MPD 0.19 143 */ 144 bool 145 mpd_send_mount(struct mpd_connection *connection, 146 const char *uri, const char *storage); 147 148 /** 149 * Shortcut for mpd_send_mount() and mpd_response_finish(). 150 * 151 * @param connection A valid and connected mpd_connection. 152 * @param uri the mount point URI 153 * @param storage the mounted storage URI 154 * @return true on success 155 * 156 * @since libmpdclient 2.16, MPD 0.19 157 */ 158 bool 159 mpd_run_mount(struct mpd_connection *connection, 160 const char *uri, const char *storage); 161 162 /** 163 * Sends the "unmount" command to MPD. 164 * 165 * @param connection a valid and connected mpd_connection. 166 * @param uri the mount point URI 167 * @return true on success 168 * 169 * @since libmpdclient 2.16, MPD 0.19 170 */ 171 bool 172 mpd_send_unmount(struct mpd_connection *connection, const char *uri); 173 174 /** 175 * Shortcut for mpd_send_unmount() and mpd_response_finish(). 176 * 177 * @param connection A valid and connected mpd_connection. 178 * @param uri the mount point URI 179 * @return true on success 180 * 181 * @since libmpdclient 2.16, MPD 0.19 182 */ 183 bool 184 mpd_run_unmount(struct mpd_connection *connection, const char *uri); 185 186 #ifdef __cplusplus 187 } 188 #endif 189 190 #endif 191