]> git.tuebingen.mpg.de Git - paraslash.git/blobdiff - aft.c
Define XOPEN_SOURCE and __EXTENSIONS__ on Solaris.
[paraslash.git] / aft.c
diff --git a/aft.c b/aft.c
index cc6026fa8518fe467b7c69bb898a020e25130467..7af50f9de8dfe25ffe70356edd0d5ceaabd79bf4 100644 (file)
--- a/aft.c
+++ b/aft.c
@@ -622,6 +622,7 @@ int load_afd(int shmid, struct audio_file_data *afd)
  * 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
@@ -630,8 +631,8 @@ int load_afd(int shmid, struct audio_file_data *afd)
  *
  * \return Positive shmid on success, negative on errors.
  */
-int open_and_update_audio_file(struct osl_row *aft_row,
-       struct audio_file_data *afd, long score)
+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;
@@ -785,16 +786,20 @@ static char *make_lyrics_lines(struct afs_info *afsi)
        char *lyrics_name;
 
        lyr_get_name_by_id(afsi->lyrics_id, &lyrics_name);
-       return make_message("lyrics_id: %u\nlyrics_name: %s\n",
-               afsi->lyrics_id, lyrics_name? lyrics_name : "(none)");
+       return make_message("%s: %u\n%s: %s\n",
+               status_item_list[SI_LYRICS_ID], afsi->lyrics_id,
+               status_item_list[SI_LYRICS_NAME], lyrics_name?
+                       lyrics_name : "(none)");
 }
 
 static char *make_image_lines(struct afs_info *afsi)
 {
        char *image_name;
        img_get_name_by_id(afsi->image_id, &image_name);
-       return make_message("image_id: %u\nimage_name: %s\n",
-               afsi->image_id, image_name? image_name : "(none)");
+       return make_message("%s: %u\n%s: %s\n",
+               status_item_list[SI_IMAGE_ID], afsi->image_id,
+               status_item_list[SI_IMAGE_NAME], image_name?
+                       image_name : "(none)");
 }
 
 static char *make_filename_lines(const char *path, unsigned flags)
@@ -803,12 +808,14 @@ static char *make_filename_lines(const char *path, unsigned flags)
        char *ret;
 
        if (!(flags & LS_FLAG_FULL_PATH))
-               return make_message("%s: %s\n%s:\n", "basename", path,
-                       "dir");
+               return make_message("%s: %s\n",
+                       status_item_list[SI_BASENAME], path);
        basename = para_basename(path),
        dirname = para_dirname(path);
-       ret = make_message("%s: %s\n%s: %s\n%s: %s\n", "path", path,
-               "dir", dirname, "basename", basename);
+       ret = make_message("%s: %s\n%s: %s\n%s: %s\n",
+               status_item_list[SI_PATH], path,
+               status_item_list[SI_DIRECTORY], dirname,
+               status_item_list[SI_BASENAME], basename);
        free(basename);
        free(dirname);
        return ret;
@@ -880,80 +887,56 @@ static int print_list_item(struct ls_data *d, struct ls_options *opts,
        lyrics_lines = make_lyrics_lines(afsi);
        image_lines = make_image_lines(afsi);
        filename_lines = make_filename_lines(d->path, opts->flags);
-       if (opts->mode == LS_MODE_VERBOSE) {
-               para_printf(b,
-                       "%s" /* filename stuff */
-                       "%s%s%s" /* score */
-                       "%s\n" /* attributes */
-                       "hash: %s\n"
-                       "%s" /* image id, image name */
-                       "%s" /* lyrics */
-                       "%s: %dkbit/s\n" /* bitrate */
-                       "format: %s\n"
-                       "%s: %dHz\n" /* frequency */
-                       "channels: %d\n"
-                       "duration: %s\n"
-                       "seconds_total: %lu\n"
-                       "num_played: %d\n"
-                       "last_played: %s\n"
-                       "%s\n", /* tag info */
-                       filename_lines,
-                       have_score? "score: " : "", score_buf,
-                               have_score? "\n" : "",
-                       att_lines,
-                       asc_hash,
-                       image_lines,
-                       lyrics_lines,
-                       status_item_list[SI_BITRATE], afhi->bitrate,
-                       audio_format_name(afsi->audio_format_id),
-                       status_item_list[SI_FREQUENCY], afhi->frequency,
-                       afhi->channels,
-                       duration_buf,
-                       afhi->seconds_total,
-                       afsi->num_played,
-                       last_played_time,
-                       afhi->info_string
-               );
-       } else { /* mbox mode */
-               struct osl_object lyrics_def;
-               lyr_get_def_by_id(afsi->lyrics_id, &lyrics_def);
+       if (opts->mode == LS_MODE_MBOX)
                para_printf(b,
                        "From foo@localhost %s\n"
                        "Received: from\nTo: bar\nFrom: a\n"
-                       "Subject: %s\n\n" /* path */
-                       "%s%s%s" /* score */
-                       "%s\n" /* attributes */
-                       "hash: %s\n"
-                       "%s\n" /* image id, image name */
-                       "lyrics_id: %s\n"
-                       "bitrate: %dkbit/s\n"
-                       "format: %s\n"
-                       "frequency: %dHz\n"
-                       "channels: %d\n"
-                       "duration: %s\n"
-                       "num_played: %d\n"
-                       "%s\n" /* tag info */
-                       "%s%s\n",
+                       "Subject: %s\n\n",
                        last_played_time,
-                       d->path,
-                       have_score? "score: " : "", score_buf,
-                               have_score? "\n" : "",
-                       att_lines,
-                       asc_hash,
-                       image_lines,
-                       lyrics_lines,
-                       afhi->bitrate,
-                       audio_format_name(afsi->audio_format_id),
-                       afhi->frequency,
-                       afhi->channels,
-                       duration_buf,
-                       afsi->num_played,
-                       afhi->info_string,
-                       lyrics_def.data? "Lyrics:\n~~~~~~~\n" : "",
-                       lyrics_def.data? (char *)lyrics_def.data : ""
-               );
-               if (lyrics_def.data)
-                       osl_close_disk_object(lyrics_def.data);
+                       d->path);
+       para_printf(b,
+               "%s" /* filename stuff */
+               "%s%s%s%s" /* score */
+               "%s\n" /* attributes */
+               "%s: %s\n" /* hash */
+               "%s" /* image id, image name */
+               "%s" /* lyrics */
+               "%s: %dkbit/s\n" /* bitrate */
+               "%s: %s\n" /* format */
+               "%s: %dHz\n" /* frequency */
+               "%s: %d\n" /* channels */
+               "%s: %s\n" /* duration */
+               "%s: %lu\n" /* seconds total */
+               "%s: %s\n" /* last played time */
+               "%s: %d\n" /* num_played */
+               "%s\n", /* tag info */
+               filename_lines,
+               have_score? status_item_list[SI_SCORE] : "",
+                       have_score? ": " : "",
+                       score_buf,
+                       have_score? "\n" : "",
+               att_lines,
+               status_item_list[SI_HASH], asc_hash,
+               image_lines,
+               lyrics_lines,
+               status_item_list[SI_BITRATE], afhi->bitrate,
+               status_item_list[SI_FORMAT], audio_format_name(afsi->audio_format_id),
+               status_item_list[SI_FREQUENCY], afhi->frequency,
+               status_item_list[SI_CHANNELS], afhi->channels,
+               status_item_list[SI_DURATION], duration_buf,
+               status_item_list[SI_SECONDS_TOTAL], afhi->seconds_total,
+               status_item_list[SI_LAST_PLAYED], last_played_time,
+               status_item_list[SI_NUM_PLAYED], afsi->num_played,
+               afhi->info_string
+       );
+       if (opts->mode == LS_MODE_MBOX) {
+               struct osl_object lyrics_def;
+               lyr_get_def_by_id(afsi->lyrics_id, &lyrics_def);
+               if (lyrics_def.data) {
+                       para_printf(b, "Lyrics:\n~~~~~~~\n%s",
+                               (char *)lyrics_def.data);
+                       osl_close_disk_object(&lyrics_def);
+               }
        }
        free(att_lines);
        free(lyrics_lines);
@@ -962,6 +945,51 @@ static int print_list_item(struct ls_data *d, struct ls_options *opts,
        return 1;
 }
 
+void make_empty_status_items(char *buf)
+{
+       sprintf(buf,
+               "%s: \n" /* path */
+               "%s: \n" /* dirname */
+               "%s: \n" /* basename */
+               "%s: \n" /* score */
+               "%s: \n" /* attributes bitnmap */
+               "%s: \n" /* attributes txt */
+               "%s: \n" /* hash */
+               "%s: \n" /* image id */
+               "%s: \n" /* image name */
+               "%s: \n" /* lyrics id */
+               "%s: \n" /* lyrics name */
+               "%s: \n" /* bitrate */
+               "%s: \n" /* format */
+               "%s: \n" /* frequency */
+               "%s: \n" /* channels */
+               "%s: \n" /* duration */
+               "%s: \n" /* seconds total */
+               "%s: \n" /* num played */
+               "%s: \n" /* last played */
+               ,
+               status_item_list[SI_PATH],
+               status_item_list[SI_DIRECTORY],
+               status_item_list[SI_BASENAME],
+               status_item_list[SI_SCORE],
+               status_item_list[SI_ATTRIBUTES_BITMAP],
+               status_item_list[SI_ATTRIBUTES_TXT],
+               status_item_list[SI_HASH],
+               status_item_list[SI_IMAGE_ID],
+               status_item_list[SI_IMAGE_NAME],
+               status_item_list[SI_LYRICS_ID],
+               status_item_list[SI_LYRICS_NAME],
+               status_item_list[SI_BITRATE],
+               status_item_list[SI_FORMAT],
+               status_item_list[SI_FREQUENCY],
+               status_item_list[SI_CHANNELS],
+               status_item_list[SI_DURATION],
+               status_item_list[SI_SECONDS_TOTAL],
+               status_item_list[SI_NUM_PLAYED],
+               status_item_list[SI_LAST_PLAYED]
+       );
+}
+
 int make_status_items(struct ls_data *d, struct para_buffer *pb)
 {
        struct ls_options opts = {