From: Andre Noll <maan@tuebingen.mpg.de>
Date: Sun, 21 Dec 2014 18:07:40 +0000 (+0000)
Subject: aft.c: Pass struct ls_data pointer to make_status_items().
X-Git-Tag: v0.5.5~40^2~3
X-Git-Url: https://git.tue.mpg.de/?a=commitdiff_plain;h=e0671caf7202075332964347dacd92ab6e18dcd4;p=paraslash.git

aft.c: Pass struct ls_data pointer to make_status_items().

We essentially already do that, with each field of the structure
spelled out in the argument list of make_status_items().
---

diff --git a/aft.c b/aft.c
index 8a633298..517c972c 100644
--- a/aft.c
+++ b/aft.c
@@ -1040,17 +1040,8 @@ out:
 	return ret;
 }
 
-static int make_status_items(struct audio_file_data *afd,
-		struct afs_info *afsi, char *path, long score,
-		unsigned char *hash)
-{
-	struct ls_data d = {
-		.afhi = afd->afhi,
-		.afsi = *afsi,
-		.path = path,
-		.score = score,
-		.hash = hash
-	};
+static int make_status_items(struct ls_data *d)
+{
 	struct ls_options opts = {
 		.flags = LS_FLAG_FULL_PATH | LS_FLAG_ADMISSIBLE_ONLY,
 		.mode = LS_MODE_VERBOSE,
@@ -1060,7 +1051,7 @@ static int make_status_items(struct audio_file_data *afd,
 	int ret;
 
 	time(&current_time);
-	ret = print_list_item(&d, &opts, &pb, current_time);
+	ret = print_list_item(d, &opts, &pb, current_time);
 	if (ret < 0)
 		return ret;
 	free(status_items);
@@ -1068,7 +1059,7 @@ static int make_status_items(struct audio_file_data *afd,
 	memset(&pb, 0, sizeof(pb));
 	pb.max_size = shm_get_shmmax() - 1;
 	pb.flags = PBF_SIZE_PREFIX;
-	ret = print_list_item(&d, &opts, &pb, current_time);
+	ret = print_list_item(d, &opts, &pb, current_time);
 	if (ret < 0) {
 		free(status_items);
 		status_items = NULL;
@@ -1093,68 +1084,68 @@ static int make_status_items(struct audio_file_data *afd,
 int open_and_update_audio_file(struct audio_file_data *afd)
 {
 	struct osl_row *aft_row;
-	long score;
-	unsigned char *aft_hash, file_hash[HASH_SIZE];
+	unsigned char file_hash[HASH_SIZE];
 	struct osl_object afsi_obj;
-	struct afs_info old_afsi, new_afsi;
+	struct afs_info new_afsi;
 	int ret;
 	struct afsi_change_event_data aced;
 	struct osl_object map, chunk_table_obj;
-	char *path;
+	struct ls_data d;
 again:
-	ret = score_get_best(&aft_row, &score);
+	ret = score_get_best(&aft_row, &d.score);
 	if (ret < 0)
 		return ret;
-	ret = get_hash_of_row(aft_row, &aft_hash);
+	ret = get_hash_of_row(aft_row, &d.hash);
 	if (ret < 0)
 		return ret;
-	ret = get_audio_file_path_of_row(aft_row, &path);
+	ret = get_audio_file_path_of_row(aft_row, &d.path);
 	if (ret < 0)
 		return ret;
-	PARA_NOTICE_LOG("%s\n", path);
+	PARA_NOTICE_LOG("%s\n", d.path);
 	ret = get_afsi_object_of_row(aft_row, &afsi_obj);
 	if (ret < 0)
 		return ret;
-	ret = load_afsi(&old_afsi, &afsi_obj);
+	ret = load_afsi(&d.afsi, &afsi_obj);
 	if (ret < 0)
 		return ret;
 	ret = get_afhi_of_row(aft_row, &afd->afhi);
 	if (ret < 0)
 		return ret;
-	afd->afhi.chunk_table = NULL;
+	d.afhi = afd->afhi;
+	d.afhi.chunk_table = afd->afhi.chunk_table = NULL;
 	ret = osl(osl_open_disk_object(audio_file_table, aft_row,
 		AFTCOL_CHUNKS, &chunk_table_obj));
 	if (ret < 0)
 		return ret;
-	ret = mmap_full_file(path, O_RDONLY, &map.data, &map.size, &afd->fd);
+	ret = mmap_full_file(d.path, O_RDONLY, &map.data, &map.size, &afd->fd);
 	if (ret < 0)
 		goto err;
 	hash_function(map.data, map.size, file_hash);
-	ret = hash_compare(file_hash, aft_hash);
+	ret = hash_compare(file_hash, d.hash);
 	para_munmap(map.data, map.size);
 	if (ret) {
 		ret = -E_HASH_MISMATCH;
 		goto err;
 	}
-	new_afsi = old_afsi;
+	new_afsi = d.afsi;
 	new_afsi.num_played++;
 	new_afsi.last_played = time(NULL);
 	save_afsi(&new_afsi, &afsi_obj); /* in-place update */
 
-	afd->audio_format_id = old_afsi.audio_format_id;
+	afd->audio_format_id = d.afsi.audio_format_id;
 	load_chunk_table(&afd->afhi, chunk_table_obj.data);
-	ret = make_status_items(afd, &old_afsi, path, score, file_hash);
+	ret = make_status_items(&d);
 	if (ret < 0)
 		goto err;
 	aced.aft_row = aft_row;
-	aced.old_afsi = &old_afsi;
+	aced.old_afsi = &d.afsi;
 	afs_event(AFSI_CHANGE, NULL, &aced);
 	ret = save_afd(afd);
 err:
 	free(afd->afhi.chunk_table);
 	osl_close_disk_object(&chunk_table_obj);
 	if (ret < 0) {
-		PARA_ERROR_LOG("%s: %s\n", path, para_strerror(-ret));
+		PARA_ERROR_LOG("%s: %s\n", d.path, para_strerror(-ret));
 		ret = score_delete(aft_row);
 		if (ret >= 0)
 			goto again;