prepare_ls_row);
if (ret < 0)
goto out;
- ret = opts->num_patterns? -E_NO_MATCH : 1;
+ ret = opts->num_patterns? -E_NO_MATCH : 0;
if (!opts->num_matching_paths) {
PARA_NOTICE_LOG("no match, ret: %d\n", ret);
goto out;
ret = 1;
out:
ls_output->data = b.buf;
+ PARA_NOTICE_LOG("ls_outoute.data: %p\n", ls_output->data);
ls_output->size = b.size;
free(opts->data);
free(opts->data_ptr);
opts.num_patterns = argc - i;
ret = send_option_arg_callback_request(&query, opts.num_patterns,
argv + i, com_ls_callback, &ls_output);
- if (ret >= 0 && ls_output.data) {
- send_buffer(fd, (char *)ls_output.data);
+ if (ret > 0) {
+ ret = send_buffer(fd, (char *)ls_output.data);
free(ls_output.data);
}
return ret;
const struct private_add_data *pad = private_data;
struct audio_format_info afhi, *afhi_ptr = NULL;
struct osl_row *pb = NULL, *hs = NULL; /* path brother/hash sister */
- struct osl_object map, obj, query, result;
+ struct osl_object map, obj = {.data = NULL}, query, result;
char *path;
HASH_TYPE hash[HASH_SIZE];
*/
if (!hs || (pad->flags & ADD_FLAG_FORCE)) {
ret = compute_afhi(path, map.data, map.size, &afhi);
- if (ret < 0) {
- ret = send_va_buffer(pad->fd,
- "audio format of %s not recognized\n", path);
+ if (ret < 0)
goto out_unmap;
- }
format_num = ret;
afhi_ptr = &afhi;
}
out_unmap:
munmap(map.data, map.size);
out_free:
+ if (ret < 0)
+ send_va_buffer(pad->fd, "failed to add %s (%s)\n", path,
+ PARA_STRERROR(-ret));
free(obj.data);
free(path);
if (afhi_ptr)
free(afhi_ptr->chunk_table);
- return ret;
+ return 1; /* it's not an error if not all files could be added */
}
int com_add(int fd, int argc, char * const * const argv)
if (S_ISDIR(statbuf.st_mode)) {
ret = for_each_file_in_dir(argv[i],
add_one_audio_file, &pad);
- if (ret < 0)
- return ret;
continue;
}
ret = add_one_audio_file(argv[i], &pad);
- if (ret < 0)
- goto out;
}
ret = 1;
-out:
return ret;
}