Skip to content

Commit ec008a4

Browse files
committed
Merge pull request #116 from SuperBFG7/comma
fix handling of commas in library item names
2 parents 0059a6d + 97bdc9a commit ec008a4

File tree

1 file changed

+26
-6
lines changed

1 file changed

+26
-6
lines changed

src/mpd_client.c

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
3745
static 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);
147157
out_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));
159171
out_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);
173187
out_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));
185201
out_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));
197215
out_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));
209229
out_search:
210230
free(p_charbuf);
211231
break;

0 commit comments

Comments
 (0)