@@ -34,6 +34,14 @@ const char * mpd_cmd_strs[] = {
3434 MPD_CMDS (GEN_STR )
3535};
3636
37+ char * get_arg1 (char * p ) {
38+ return strchr (p , ',' ) + 1 ;
39+ }
40+
41+ char * get_arg2 (char * p ) {
42+ return get_arg1 (get_arg1 (p ));
43+ }
44+
3745static inline enum mpd_cmd_ids get_cmd_id (char * cmd )
3846{
3947 for (int i = 0 ; i < sizeof (mpd_cmd_strs )/sizeof (mpd_cmd_strs [0 ]); i ++ )
@@ -143,7 +151,9 @@ int callback_mpd(struct mg_connection *c)
143151 if ((token = strtok (NULL , "," )) == NULL )
144152 goto out_browse ;
145153
146- n = mpd_put_browse (mpd .buf , token , uint_buf );
154+ free (p_charbuf );
155+ p_charbuf = strdup (c -> content );
156+ n = mpd_put_browse (mpd .buf , get_arg2 (p_charbuf ), uint_buf );
147157out_browse :
148158 free (p_charbuf );
149159 break ;
@@ -155,7 +165,9 @@ int callback_mpd(struct mg_connection *c)
155165 if ((token = strtok (NULL , "," )) == NULL )
156166 goto out_add_track ;
157167
158- mpd_run_add (mpd .conn , token );
168+ free (p_charbuf );
169+ p_charbuf = strdup (c -> content );
170+ mpd_run_add (mpd .conn , get_arg1 (p_charbuf ));
159171out_add_track :
160172 free (p_charbuf );
161173 break ;
@@ -167,7 +179,9 @@ int callback_mpd(struct mg_connection *c)
167179 if ((token = strtok (NULL , "," )) == NULL )
168180 goto out_play_track ;
169181
170- int_buf = mpd_run_add_id (mpd .conn , token );
182+ free (p_charbuf );
183+ p_charbuf = strdup (c -> content );
184+ int_buf = mpd_run_add_id (mpd .conn , get_arg1 (p_charbuf ));
171185 if (int_buf != -1 )
172186 mpd_run_play_id (mpd .conn , int_buf );
173187out_play_track :
@@ -181,7 +195,9 @@ int callback_mpd(struct mg_connection *c)
181195 if ((token = strtok (NULL , "," )) == NULL )
182196 goto out_playlist ;
183197
184- mpd_run_load (mpd .conn , token );
198+ free (p_charbuf );
199+ p_charbuf = strdup (c -> content );
200+ mpd_run_load (mpd .conn , get_arg1 (p_charbuf ));
185201out_playlist :
186202 free (p_charbuf );
187203 break ;
@@ -193,7 +209,9 @@ int callback_mpd(struct mg_connection *c)
193209 if ((token = strtok (NULL , "," )) == NULL )
194210 goto out_save_queue ;
195211
196- mpd_run_save (mpd .conn , token );
212+ free (p_charbuf );
213+ p_charbuf = strdup (c -> content );
214+ mpd_run_save (mpd .conn , get_arg1 (p_charbuf ));
197215out_save_queue :
198216 free (p_charbuf );
199217 break ;
@@ -205,7 +223,9 @@ int callback_mpd(struct mg_connection *c)
205223 if ((token = strtok (NULL , "," )) == NULL )
206224 goto out_search ;
207225
208- n = mpd_search (mpd .buf , token );
226+ free (p_charbuf );
227+ p_charbuf = strdup (c -> content );
228+ n = mpd_search (mpd .buf , get_arg1 (p_charbuf ));
209229out_search :
210230 free (p_charbuf );
211231 break ;
0 commit comments