update: job ID must be positive
The documentation for directory_update_init() was incorrect: a job ID must be positive, not non-negative. If the update queue is full and no job was created, it makes more sense to return 0 instead of -1, because it is more consistent with the return value of isUpdatingDB().
This commit is contained in:
parent
79a28e5c72
commit
f1022bcc12
|
@ -803,31 +803,27 @@ static int handlePlaylistMove(struct client *client,
|
|||
return print_playlist_result(client, result);
|
||||
}
|
||||
|
||||
static int print_update_result(struct client *client, int ret)
|
||||
{
|
||||
if (ret >= 0) {
|
||||
client_printf(client, "updating_db: %i\n", ret);
|
||||
return 0;
|
||||
}
|
||||
if (ret == -2)
|
||||
command_error(client, ACK_ERROR_ARG, "invalid path");
|
||||
else
|
||||
command_error(client, ACK_ERROR_UPDATE_ALREADY,
|
||||
"already updating");
|
||||
return -1;
|
||||
}
|
||||
|
||||
static int handleUpdate(struct client *client,
|
||||
mpd_unused int argc, char *argv[])
|
||||
{
|
||||
char *path = NULL;
|
||||
int ret;
|
||||
|
||||
assert(argc <= 2);
|
||||
if (argc == 2 && !(path = sanitizePathDup(argv[1]))) {
|
||||
command_error(client, ACK_ERROR_ARG, "invalid path");
|
||||
return -1;
|
||||
}
|
||||
return print_update_result(client, directory_update_init(path));
|
||||
|
||||
ret = directory_update_init(path);
|
||||
if (ret > 0) {
|
||||
client_printf(client, "updating_db: %i\n", ret);
|
||||
return 0;
|
||||
} else {
|
||||
command_error(client, ACK_ERROR_UPDATE_ALREADY,
|
||||
"already updating");
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
static int handleNext(mpd_unused struct client *client,
|
||||
|
|
|
@ -46,7 +46,7 @@ db_init(void)
|
|||
music_root = directory_new("", NULL);
|
||||
|
||||
ret = directory_update_init(NULL);
|
||||
if (ret < 0)
|
||||
if (ret == 0)
|
||||
FATAL("directory update failed\n");
|
||||
|
||||
do {
|
||||
|
|
|
@ -436,9 +436,9 @@ int directory_update_init(char *path)
|
|||
int next_task_id;
|
||||
|
||||
if (!path)
|
||||
return -1;
|
||||
return 0;
|
||||
if (update_paths_nr == ARRAY_SIZE(update_paths))
|
||||
return -1;
|
||||
return 0;
|
||||
assert(update_paths_nr < ARRAY_SIZE(update_paths));
|
||||
update_paths[update_paths_nr++] = path;
|
||||
next_task_id = update_task_id + update_paths_nr;
|
||||
|
|
|
@ -23,8 +23,8 @@
|
|||
int isUpdatingDB(void);
|
||||
|
||||
/*
|
||||
* returns the non-negative update job ID on success,
|
||||
* returns -1 if busy
|
||||
* returns the positive update job ID on success,
|
||||
* returns 0 if busy
|
||||
* @path will be freed by this function and should not be reused
|
||||
*/
|
||||
int directory_update_init(char *path);
|
||||
|
|
Loading…
Reference in New Issue