X-Git-Url: http://git.tuebingen.mpg.de/?a=blobdiff_plain;f=aft.c;h=dffe3a31526529b78099c3b1339710939b4309bc;hb=68cb0aef88594f3dea1f7dfdc279f125bf5bbecc;hp=f89235a484287ce2b5f5aa9081c38fd7a7a5d712;hpb=69b3a249fb8f0f4a01e26f7a414dbe79f480a78c;p=paraslash.git diff --git a/aft.c b/aft.c index f89235a4..dffe3a31 100644 --- a/aft.c +++ b/aft.c @@ -1349,9 +1349,14 @@ static void com_ls_callback(int fd, const struct osl_object *query) { struct ls_options *opts = query->data; char *p, *pattern_start = (char *)query->data + sizeof(*opts); - struct para_buffer b = {.max_size = shm_get_shmmax(), + struct para_buffer b = { + .max_size = shm_get_shmmax(), .flags = (opts->mode == LS_MODE_PARSER)? PBF_SIZE_PREFIX : 0, - .max_size_handler = pass_buffer_as_shm, .private_data = &fd}; + .max_size_handler = afs_max_size_handler, + .private_data = &(struct afs_max_size_handler_data) { + .fd = fd, + } + }; int i = 0, ret; time_t current_time; @@ -1674,8 +1679,13 @@ static void com_add_callback(int fd, const struct osl_object *query) char afsi_buf[AFSI_SIZE]; uint32_t flags = read_u32(buf + CAB_FLAGS_OFFSET); struct afs_info default_afsi = {.last_played = 0}; - struct para_buffer msg = {.max_size = shm_get_shmmax(), - .max_size_handler = pass_buffer_as_shm, .private_data = &fd}; + struct para_buffer msg = { + .max_size = shm_get_shmmax(), + .max_size_handler = afs_max_size_handler, + .private_data = &(struct afs_max_size_handler_data) { + .fd = fd, + } + }; uint16_t afhi_offset, chunks_offset; hash = (unsigned char *)buf + CAB_HASH_OFFSET; @@ -1914,15 +1924,7 @@ out_free: send_ret = sc_send_va_buffer(&pad->cc->scc, "failed to add %s (%s)\n", path, para_strerror(-ret)); free(obj.data); - if (afhi_ptr) { - free(afhi_ptr->chunk_table); - free(afhi_ptr->techinfo); - free(afhi_ptr->tags.artist); - free(afhi_ptr->tags.title); - free(afhi_ptr->tags.year); - free(afhi_ptr->tags.album); - free(afhi_ptr->tags.comment); - } + clear_afhi(afhi_ptr); /* Stop adding files only on send errors. */ return send_ret; } @@ -2090,7 +2092,7 @@ static void com_touch_callback(int fd, const struct osl_object *query) .pb = { .max_size = shm_get_shmmax(), .private_data = &fd, - .max_size_handler = pass_buffer_as_shm + .max_size_handler = afs_max_size_handler } }; int ret, ret2 = 0; @@ -2231,7 +2233,7 @@ static void com_rm_callback(int fd, const struct osl_object *query) .pb = { .max_size = shm_get_shmmax(), .private_data = &fd, - .max_size_handler = pass_buffer_as_shm + .max_size_handler = afs_max_size_handler } }; int ret; @@ -2373,7 +2375,7 @@ static void com_cpsi_callback(int fd, const struct osl_object *query) .pb = { .max_size = shm_get_shmmax(), .private_data = &fd, - .max_size_handler = pass_buffer_as_shm + .max_size_handler = afs_max_size_handler } }; int ret; @@ -2546,8 +2548,10 @@ void aft_check_callback(int fd, __a_unused const struct osl_object *query) { struct para_buffer pb = { .max_size = shm_get_shmmax(), - .private_data = &fd, - .max_size_handler = pass_buffer_as_shm + .private_data = &(struct afs_max_size_handler_data) { + .fd = fd, + }, + .max_size_handler = afs_max_size_handler }; int ret = para_printf(&pb, "checking audio file table...\n");