const char *v;
if(vec[1][0] != '_' && (v = trackdb_get(vec[0], vec[1])))
- sink_printf(ev_writer_sink(c->w), "252 %s\n", v);
+ sink_printf(ev_writer_sink(c->w), "252 %s\n", quoteutf8(v));
else
sink_writes(ev_writer_sink(c->w), "555 not found\n");
return 1;
return 1;
}
if((v = trackdb_get(track, "_length")))
- sink_printf(ev_writer_sink(c->w), "252 %s\n", v);
+ sink_printf(ev_writer_sink(c->w), "252 %s\n", quoteutf8(v));
else
sink_writes(ev_writer_sink(c->w), "550 not found\n");
return 1;
char **vec,
int attribute((unused)) nvec) {
sink_printf(ev_writer_sink(c->w), "252 %s\n",
- trackdb_getpart(vec[0], vec[1], vec[2]));
+ quoteutf8(trackdb_getpart(vec[0], vec[1], vec[2])));
return 1;
}
sink_writes(ev_writer_sink(c->w), "550 cannot resolve track\n");
return 1;
}
- sink_printf(ev_writer_sink(c->w), "252 %s\n", track);
+ sink_printf(ev_writer_sink(c->w), "252 %s\n", quoteutf8(track));
return 1;
}
const char *s = trackdb_get_global(vec[0]);
if(s)
- sink_printf(ev_writer_sink(c->w), "252 %s\n", s);
+ sink_printf(ev_writer_sink(c->w), "252 %s\n", quoteutf8(s));
else
sink_writes(ev_writer_sink(c->w), "555 not found\n");
return 1;
c->l = l;
c->rights = 0;
gcry_randomize(c->nonce, sizeof c->nonce, GCRY_STRONG_RANDOM);
- sink_printf(ev_writer_sink(c->w), "231 %s %s\n",
+ sink_printf(ev_writer_sink(c->w), "231 %d %s %s\n",
+ 2,
config->authorization_algorithm,
hex(c->nonce, sizeof c->nonce));
return 0;