X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=aft.c;h=3d22e242ef94ab21b17487b345d636a01dabb3d9;hp=6aace3aee6c4801f043307e10981a40e8280c192;hb=3150a0caa27a34d44556fb77f4a5aebc3d978580;hpb=e4db7671a91a7552c642acc979f0eb278f8d467f diff --git a/aft.c b/aft.c index 6aace3ae..3d22e242 100644 --- a/aft.c +++ b/aft.c @@ -7,7 +7,6 @@ /** \file aft.c Audio file table functions. */ #include -#include /* readdir() */ #include #include #include @@ -19,7 +18,6 @@ #include "string.h" #include "afh.h" #include "afs.h" -#include "net.h" #include "fd.h" #include "ipc.h" #include "portable_io.h" @@ -238,7 +236,7 @@ enum audio_file_table_columns { */ static int aft_hash_compare(const struct osl_object *obj1, const struct osl_object *obj2) { - return hash_compare((HASH_TYPE *)obj1->data, (HASH_TYPE *)obj2->data); + return hash_compare((unsigned char *)obj1->data, (unsigned char *)obj2->data); } static struct osl_column_description aft_cols[] = { @@ -485,7 +483,7 @@ int aft_get_row_of_path(const char *path, struct osl_row **row) * * \return Standard. */ -static int aft_get_row_of_hash(HASH_TYPE *hash, struct osl_row **row) +static int aft_get_row_of_hash(unsigned char *hash, struct osl_row **row) { const struct osl_object obj = {.data = hash, .size = HASH_SIZE}; return osl(osl_get_row(audio_file_table, AFTCOL_HASH, &obj, row)); @@ -605,7 +603,7 @@ static int get_hash_object_of_aft_row(const struct osl_row *row, * \return The return value of the underlying call to * get_hash_object_of_aft_row(). */ -static int get_hash_of_row(const struct osl_row *row, HASH_TYPE **hash) +static int get_hash_of_row(const struct osl_row *row, unsigned char **hash) { struct osl_object obj; int ret = get_hash_object_of_aft_row(row, &obj); @@ -724,7 +722,7 @@ static int get_local_time(uint64_t *seconds, char *buf, size_t size, } \ } -static short unsigned get_duration_width(int seconds) +__a_const static short unsigned get_duration_width(int seconds) { short unsigned width; unsigned hours = seconds / 3600, mins = (seconds % 3600) / 60; @@ -1026,7 +1024,7 @@ out: static int make_status_items(struct audio_file_data *afd, struct afs_info *afsi, char *path, long score, - HASH_TYPE *hash) + unsigned char *hash) { struct ls_data d = { .afhi = afd->afhi, @@ -1039,7 +1037,7 @@ static int make_status_items(struct audio_file_data *afd, .flags = LS_FLAG_FULL_PATH | LS_FLAG_ADMISSIBLE_ONLY, .mode = LS_MODE_VERBOSE, }; - struct para_buffer pb = {.max_size = SHMMAX - 1}; + struct para_buffer pb = {.max_size = shm_get_shmmax() - 1}; time_t current_time; int ret; @@ -1050,7 +1048,7 @@ static int make_status_items(struct audio_file_data *afd, free(status_items); status_items = pb.buf; memset(&pb, 0, sizeof(pb)); - pb.max_size = SHMMAX - 1; + pb.max_size = shm_get_shmmax() - 1; pb.flags = PBF_SIZE_PREFIX; ret = print_list_item(&d, &opts, &pb, current_time); if (ret < 0) { @@ -1079,7 +1077,7 @@ static int make_status_items(struct audio_file_data *afd, int open_and_update_audio_file(struct osl_row *aft_row, long score, struct audio_file_data *afd) { - HASH_TYPE *aft_hash, file_hash[HASH_SIZE]; + unsigned char *aft_hash, file_hash[HASH_SIZE]; struct osl_object afsi_obj; struct afs_info old_afsi, new_afsi; int ret = get_hash_of_row(aft_row, &aft_hash); @@ -1345,7 +1343,7 @@ 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 = 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}; int i = 0, ret; @@ -1526,7 +1524,7 @@ int audio_file_loop(void *private_data, osl_rbtree_loop_func *func) func)); } -static struct osl_row *find_hash_sister(HASH_TYPE *hash) +static struct osl_row *find_hash_sister(unsigned char *hash) { const struct osl_object obj = {.data = hash, .size = HASH_SIZE}; struct osl_row *row; @@ -1558,7 +1556,7 @@ enum com_add_buffer_offsets { * It's OK to call this with afhi == NULL. In this case, the audio format * handler info won't be stored in the buffer. */ -static void save_add_callback_buffer(HASH_TYPE *hash, const char *path, +static void save_add_callback_buffer(unsigned char *hash, const char *path, struct afh_info *afhi, uint32_t flags, uint8_t audio_format_num, struct osl_object *obj) { @@ -1661,17 +1659,17 @@ static void com_add_callback(int fd, const struct osl_object *query) struct osl_row *pb, *aft_row; struct osl_row *hs; struct osl_object objs[NUM_AFT_COLUMNS]; - HASH_TYPE *hash; + unsigned char *hash; char asc[2 * HASH_SIZE + 1]; int ret; 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 = SHMMAX, + struct para_buffer msg = {.max_size = shm_get_shmmax(), .max_size_handler = pass_buffer_as_shm, .private_data = &fd}; uint16_t afhi_offset, chunks_offset; - hash = (HASH_TYPE *)buf + CAB_HASH_OFFSET; + hash = (unsigned char *)buf + CAB_HASH_OFFSET; hash_to_asc(hash, asc);; objs[AFTCOL_HASH].data = buf + CAB_HASH_OFFSET; objs[AFTCOL_HASH].size = HASH_SIZE; @@ -1736,7 +1734,7 @@ static void com_add_callback(int fd, const struct osl_object *query) objs[AFTCOL_CHUNKS].size = query->size - chunks_offset; if (pb && !hs) { /* update pb's hash */ char old_asc[2 * HASH_SIZE + 1]; - HASH_TYPE *old_hash; + unsigned char *old_hash; ret = get_hash_of_row(pb, &old_hash); if (ret < 0) goto out; @@ -1813,7 +1811,7 @@ static void path_brother_callback(int fd, const struct osl_object *query) static void hash_sister_callback(int fd, const struct osl_object *query) { - HASH_TYPE *hash = query->data; + unsigned char *hash = query->data; struct osl_row *hash_sister; hash_sister = find_hash_sister(hash); @@ -1825,7 +1823,7 @@ static void hash_sister_callback(int fd, const struct osl_object *query) static int get_row_pointer_from_result(struct osl_object *result, void *private) { struct osl_row **row = private; - *row = result->data; + *row = *(struct osl_row **)(result->data); return 1; } @@ -1837,7 +1835,7 @@ static int add_one_audio_file(const char *path, void *private_data) struct afh_info afhi, *afhi_ptr = NULL; struct osl_row *pb = NULL, *hs = NULL; /* path brother/hash sister */ struct osl_object map, obj = {.data = NULL}, query; - HASH_TYPE hash[HASH_SIZE]; + unsigned char hash[HASH_SIZE]; ret = guess_audio_format(path); if (ret < 0 && !(pad->flags & ADD_FLAG_ALL)) @@ -2082,7 +2080,7 @@ static void com_touch_callback(int fd, const struct osl_object *query) { struct touch_action_data tad = {.cto = query->data, .pb = { - .max_size = SHMMAX, + .max_size = shm_get_shmmax(), .private_data = &fd, .max_size_handler = pass_buffer_as_shm } @@ -2228,7 +2226,7 @@ static void com_rm_callback(int fd, const struct osl_object *query) { struct com_rm_action_data crd = {.flags = *(uint32_t *)query->data, .pb = { - .max_size = SHMMAX, + .max_size = shm_get_shmmax(), .private_data = &fd, .max_size_handler = pass_buffer_as_shm } @@ -2373,7 +2371,7 @@ static void com_cpsi_callback(int fd, const struct osl_object *query) struct cpsi_action_data cad = { .flags = *(unsigned *)query->data, .pb = { - .max_size = SHMMAX, + .max_size = shm_get_shmmax(), .private_data = &fd, .max_size_handler = pass_buffer_as_shm } @@ -2473,7 +2471,7 @@ static void afs_stat_callback(int fd, const struct osl_object *query) } /** - * Get the current afs status items from the afs process and send it using RC4. + * Get the current afs status items from the afs process and send it. * * \param scc The stream cipher context for data encryption. * \param parser_friendly Whether parser-friendly output format should be used. @@ -2483,6 +2481,8 @@ static void afs_stat_callback(int fd, const struct osl_object *query) * up-to-date afs status items directly. Therefore the usual callback mechanism * is used to pass the status items from the afs process to the command handler * via a shared memory area and a pipe. + * + * \return The return value of the underyling call to \ref send_callback_request(). */ int send_afs_status(struct stream_cipher_context *scc, int parser_friendly) { @@ -2545,7 +2545,7 @@ static int check_audio_file(struct osl_row *row, void *data) void aft_check_callback(int fd, __a_unused const struct osl_object *query) { struct para_buffer pb = { - .max_size = SHMMAX, + .max_size = shm_get_shmmax(), .private_data = &fd, .max_size_handler = pass_buffer_as_shm }; @@ -2570,10 +2570,6 @@ static void aft_close(void) { osl_close_table(audio_file_table, OSL_MARK_CLEAN); audio_file_table = NULL; - free(status_items); - status_items = NULL; - free(parser_friendly_status_items); - parser_friendly_status_items = NULL; } /**