Skip to content

Commit

Permalink
fix handling of commas in library item names
Browse files Browse the repository at this point in the history
  • Loading branch information
SuperBFG7 committed Jan 25, 2016
1 parent 4295d15 commit 97bdc9a
Showing 1 changed file with 26 additions and 6 deletions.
32 changes: 26 additions & 6 deletions src/mpd_client.c
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,14 @@ const char * mpd_cmd_strs[] = {
MPD_CMDS(GEN_STR)
};

char * get_arg1 (char *p) {
return strchr(p, ',') + 1;
}

char * get_arg2 (char *p) {
return get_arg1(get_arg1(p));
}

static inline enum mpd_cmd_ids get_cmd_id(char *cmd)
{
for(int i = 0; i < sizeof(mpd_cmd_strs)/sizeof(mpd_cmd_strs[0]); i++)
Expand Down Expand Up @@ -143,7 +151,9 @@ int callback_mpd(struct mg_connection *c)
if((token = strtok(NULL, ",")) == NULL)
goto out_browse;

n = mpd_put_browse(mpd.buf, token, uint_buf);
free(p_charbuf);
p_charbuf = strdup(c->content);
n = mpd_put_browse(mpd.buf, get_arg2(p_charbuf), uint_buf);
out_browse:
free(p_charbuf);
break;
Expand All @@ -155,7 +165,9 @@ int callback_mpd(struct mg_connection *c)
if((token = strtok(NULL, ",")) == NULL)
goto out_add_track;

mpd_run_add(mpd.conn, token);
free(p_charbuf);
p_charbuf = strdup(c->content);
mpd_run_add(mpd.conn, get_arg1(p_charbuf));
out_add_track:
free(p_charbuf);
break;
Expand All @@ -167,7 +179,9 @@ int callback_mpd(struct mg_connection *c)
if((token = strtok(NULL, ",")) == NULL)
goto out_play_track;

int_buf = mpd_run_add_id(mpd.conn, token);
free(p_charbuf);
p_charbuf = strdup(c->content);
int_buf = mpd_run_add_id(mpd.conn, get_arg1(p_charbuf));
if(int_buf != -1)
mpd_run_play_id(mpd.conn, int_buf);
out_play_track:
Expand All @@ -181,7 +195,9 @@ int callback_mpd(struct mg_connection *c)
if((token = strtok(NULL, ",")) == NULL)
goto out_playlist;

mpd_run_load(mpd.conn, token);
free(p_charbuf);
p_charbuf = strdup(c->content);
mpd_run_load(mpd.conn, get_arg1(p_charbuf));
out_playlist:
free(p_charbuf);
break;
Expand All @@ -193,7 +209,9 @@ int callback_mpd(struct mg_connection *c)
if((token = strtok(NULL, ",")) == NULL)
goto out_save_queue;

mpd_run_save(mpd.conn, token);
free(p_charbuf);
p_charbuf = strdup(c->content);
mpd_run_save(mpd.conn, get_arg1(p_charbuf));
out_save_queue:
free(p_charbuf);
break;
Expand All @@ -205,7 +223,9 @@ int callback_mpd(struct mg_connection *c)
if((token = strtok(NULL, ",")) == NULL)
goto out_search;

n = mpd_search(mpd.buf, token);
free(p_charbuf);
p_charbuf = strdup(c->content);
n = mpd_search(mpd.buf, get_arg1(p_charbuf));
out_search:
free(p_charbuf);
break;
Expand Down

0 comments on commit 97bdc9a

Please sign in to comment.