error(0, "invalid playlist name '%s'", name);
return EINVAL;
}
WITH_TRANSACTION(trackdb_playlist_get_tid(name, who,
tracksp, ntracksp, sharep,
tid));
error(0, "invalid playlist name '%s'", name);
return EINVAL;
}
WITH_TRANSACTION(trackdb_playlist_get_tid(name, who,
tracksp, ntracksp, sharep,
tid));
* @param tracks List of tracks to set, or NULL to leave alone
* @param ntracks Length of @p tracks
* @param share Sharing status, or NULL to leave alone
* @param tracks List of tracks to set, or NULL to leave alone
* @param ntracks Length of @p tracks
* @param share Sharing status, or NULL to leave alone
if((e = trackdb_getdata(trackdb_playlistsdb, name, &k, tid))
&& e != DB_NOTFOUND)
if((e = trackdb_getdata(trackdb_playlistsdb, name, &k, tid))
&& e != DB_NOTFOUND)
}
/* Check that the modification is allowed */
if(!(s = kvp_get(k, "sharing"))) {
}
/* Check that the modification is allowed */
if(!(s = kvp_get(k, "sharing"))) {
- return trackdb_putdata(trackdb_playlistsdb, name, k, tid, 0);
+ e = trackdb_putdata(trackdb_playlistsdb, name, k, tid, 0);
+ /* Log the event */
+ if(!e)
+ eventlog(event, name, kvp_get(k, "sharing"), (char *)0);
+ return e;
while(!(e = c->c_get(c, k, prepare_data(d), DB_NEXT))) {
char *name = xstrndup(k->data, k->size), *owner;
const char *share = kvp_get(kvp_urldecode(d->data, d->size),
while(!(e = c->c_get(c, k, prepare_data(d), DB_NEXT))) {
char *name = xstrndup(k->data, k->size), *owner;
const char *share = kvp_get(kvp_urldecode(d->data, d->size),
/* Extract owner; malformed names are skipped */
if(playlist_parse_name(name, &owner, 0)) {
error(0, "invalid playlist name '%s' found in database", name);
continue;
}
/* Extract owner; malformed names are skipped */
if(playlist_parse_name(name, &owner, 0)) {
error(0, "invalid playlist name '%s' found in database", name);
continue;
}
/* Always list public and shared playlists
* Only list private ones to their owner
* Don't list anything else
/* Always list public and shared playlists
* Only list private ones to their owner
* Don't list anything else
* - @c 0 on success
* - @c EINVAL if the playlist name is invalid
* - @c EACCES if the playlist cannot be modified by @p who
* - @c 0 on success
* - @c EINVAL if the playlist name is invalid
* - @c EACCES if the playlist cannot be modified by @p who
error(0, "invalid playlist name '%s'", name);
return EINVAL;
}
/* We've checked as much as we can for now, now go and attempt the change */
WITH_TRANSACTION(trackdb_playlist_delete_tid(name, who, tid));
error(0, "invalid playlist name '%s'", name);
return EINVAL;
}
/* We've checked as much as we can for now, now go and attempt the change */
WITH_TRANSACTION(trackdb_playlist_delete_tid(name, who, tid));
if(!playlist_may_write(name, who, s))
return EACCES;
/* Delete the playlist */
if(!playlist_may_write(name, who, s))
return EACCES;
/* Delete the playlist */
- return trackdb_delkey(trackdb_playlistsdb, name, tid);
+ e = trackdb_delkey(trackdb_playlistsdb, name, tid);
+ if(!e)
+ eventlog("playlist_deleted", name, 0);
+ return e;