aft: Make make_status_items() static.
authorAndre Noll <maan@systemlinux.org>
Mon, 25 May 2009 21:02:50 +0000 (23:02 +0200)
committerAndre Noll <maan@systemlinux.org>
Mon, 25 May 2009 21:02:50 +0000 (23:02 +0200)
Move its single caller, open_and_update_audio_file(), below
make_status_items and get rid of the declaration in afs.h.

afs.h
aft.c

diff --git a/afs.h b/afs.h
index 267cc8d..bcc3630 100644 (file)
--- a/afs.h
+++ b/afs.h
@@ -117,7 +117,7 @@ struct ls_data {
        /** The sha1 hash of audio file. */
        HASH_TYPE *hash;
 };
-int make_status_items(struct ls_data *d, struct para_buffer *pb);
+
 void make_empty_status_items(char *buf);
 
 /** At most that many bytes will be passed from afs to para_server. */
diff --git a/aft.c b/aft.c
index 62dedbf..6c7f666 100644 (file)
--- a/aft.c
+++ b/aft.c
@@ -627,94 +627,6 @@ int load_afd(int shmid, struct audio_file_data *afd)
        return 1;
 }
 
-/**
- * Mmap the given audio file and update statistics.
- *
- * \param aft_row Determines the audio file to be opened and updated.
- * \param score The score of the audio file.
- * \param afd Result pointer.
- *
- * On success, the numplayed field of the audio file selector info is increased
- * and the lastplayed time is set to the current time. Finally, the score of
- * the audio file is updated.
- *
- * \return Positive shmid on success, negative on errors.
- */
-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];
-       struct osl_object afsi_obj;
-       struct afs_info old_afsi, new_afsi;
-       int ret = get_hash_of_row(aft_row, &aft_hash);
-       struct afsi_change_event_data aced;
-       struct osl_object map, chunk_table_obj;
-       char *path;
-
-       if (ret < 0)
-               return ret;
-       ret = get_audio_file_path_of_row(aft_row, &path);
-       if (ret < 0)
-               return ret;
-       ret = get_afsi_object_of_row(aft_row, &afsi_obj);
-       if (ret < 0)
-               return ret;
-       ret = load_afsi(&old_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;
-       ret = osl_open_disk_object(audio_file_table, aft_row,
-               AFTCOL_CHUNKS, &chunk_table_obj);
-       if (ret < 0)
-               goto err;
-       ret = mmap_full_file(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);
-       para_munmap(map.data, map.size);
-       if (ret) {
-               ret = -E_HASH_MISMATCH;
-               goto err;
-       }
-       new_afsi = old_afsi;
-       new_afsi.num_played++;
-       new_afsi.last_played = time(NULL);
-       save_afsi(&new_afsi, &afsi_obj); /* in-place update */
-
-       load_chunk_table(&afd->afhi, chunk_table_obj.data);
-       {
-               struct ls_data d = {
-                       .afhi = afd->afhi, /* struct copy */
-                       .afsi = old_afsi,
-                       .path = path,
-                       .score = score,
-                       .hash = file_hash
-               };
-               struct para_buffer pb = {.max_size = VERBOSE_LS_OUTPUT_SIZE - 1};
-               ret = make_status_items(&d, &pb); /* frees info string */
-               afd->afhi.info_string = NULL;
-               if (ret < 0)
-                       goto err;
-               strncpy(afd->verbose_ls_output, pb.buf, VERBOSE_LS_OUTPUT_SIZE);
-               afd->verbose_ls_output[VERBOSE_LS_OUTPUT_SIZE - 1] = '\0';
-               free(pb.buf);
-       }
-       aced.aft_row = aft_row;
-       aced.old_afsi = &old_afsi;
-       afs_event(AFSI_CHANGE, NULL, &aced);
-       ret = save_afd(afd);
-err:
-       free(afd->afhi.chunk_table);
-       free(afd->afhi.info_string);
-       osl_close_disk_object(&chunk_table_obj);
-       return ret;
-}
-
 static int get_local_time(uint64_t *seconds, char *buf, size_t size,
        time_t current_time, enum ls_listing_mode lm)
 {
@@ -1068,7 +980,7 @@ void make_empty_status_items(char *buf)
        );
 }
 
-int make_status_items(struct ls_data *d, struct para_buffer *pb)
+static int make_status_items(struct ls_data *d, struct para_buffer *pb)
 {
        struct ls_options opts = {
                .flags = LS_FLAG_FULL_PATH | LS_FLAG_ADMISSIBLE_ONLY,
@@ -1080,6 +992,93 @@ int make_status_items(struct ls_data *d, struct para_buffer *pb)
        return print_list_item(d, &opts, pb, current_time);
 }
 
+/**
+ * Mmap the given audio file and update statistics.
+ *
+ * \param aft_row Determines the audio file to be opened and updated.
+ * \param score The score of the audio file.
+ * \param afd Result pointer.
+ *
+ * On success, the numplayed field of the audio file selector info is increased
+ * and the lastplayed time is set to the current time. Finally, the score of
+ * the audio file is updated.
+ *
+ * \return Positive shmid on success, negative on errors.
+ */
+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];
+       struct osl_object afsi_obj;
+       struct afs_info old_afsi, new_afsi;
+       int ret = get_hash_of_row(aft_row, &aft_hash);
+       struct afsi_change_event_data aced;
+       struct osl_object map, chunk_table_obj;
+       char *path;
+
+       if (ret < 0)
+               return ret;
+       ret = get_audio_file_path_of_row(aft_row, &path);
+       if (ret < 0)
+               return ret;
+       ret = get_afsi_object_of_row(aft_row, &afsi_obj);
+       if (ret < 0)
+               return ret;
+       ret = load_afsi(&old_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;
+       ret = osl_open_disk_object(audio_file_table, aft_row,
+               AFTCOL_CHUNKS, &chunk_table_obj);
+       if (ret < 0)
+               goto err;
+       ret = mmap_full_file(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);
+       para_munmap(map.data, map.size);
+       if (ret) {
+               ret = -E_HASH_MISMATCH;
+               goto err;
+       }
+       new_afsi = old_afsi;
+       new_afsi.num_played++;
+       new_afsi.last_played = time(NULL);
+       save_afsi(&new_afsi, &afsi_obj); /* in-place update */
+
+       load_chunk_table(&afd->afhi, chunk_table_obj.data);
+       {
+               struct ls_data d = {
+                       .afhi = afd->afhi, /* struct copy */
+                       .afsi = old_afsi,
+                       .path = path,
+                       .score = score,
+                       .hash = file_hash
+               };
+               struct para_buffer pb = {.max_size = VERBOSE_LS_OUTPUT_SIZE - 1};
+               ret = make_status_items(&d, &pb); /* frees info string */
+               afd->afhi.info_string = NULL;
+               if (ret < 0)
+                       goto err;
+               strncpy(afd->verbose_ls_output, pb.buf, VERBOSE_LS_OUTPUT_SIZE);
+               afd->verbose_ls_output[VERBOSE_LS_OUTPUT_SIZE - 1] = '\0';
+               free(pb.buf);
+       }
+       aced.aft_row = aft_row;
+       aced.old_afsi = &old_afsi;
+       afs_event(AFSI_CHANGE, NULL, &aced);
+       ret = save_afd(afd);
+err:
+       free(afd->afhi.chunk_table);
+       free(afd->afhi.info_string);
+       osl_close_disk_object(&chunk_table_obj);
+       return ret;
+}
 
 static int ls_audio_format_compare(const void *a, const void *b)
 {