- free(att_lines);
- free(lyrics_lines);
- free(image_lines);
- free(filename_lines);
- 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]
- );
+ ret = write_filename_items(b, d->path, opts->flags);
+ if (ret < 0)
+ goto out;
+ ret = write_score(b, d, opts);
+ if (ret < 0)
+ goto out;
+ ret = write_attribute_items(b, att_buf, afsi);
+ if (ret < 0)
+ goto out;
+ ret = write_image_items(b, afsi);
+ if (ret < 0)
+ goto out;
+ ret = write_lyrics_items(b, afsi);
+ if (ret < 0)
+ goto out;
+ hash_to_asc(d->hash, asc_hash);
+ ret = WRITE_STATUS_ITEM(b, SI_HASH, "%s\n", asc_hash);
+ if (ret < 0)
+ goto out;
+ ret = WRITE_STATUS_ITEM(b, SI_BITRATE, "%dkbit/s\n", afhi->bitrate);
+ if (ret < 0)
+ goto out;
+ ret = WRITE_STATUS_ITEM(b, SI_FORMAT, "%s\n",
+ audio_format_name(afsi->audio_format_id));
+ if (ret < 0)
+ goto out;
+ ret = WRITE_STATUS_ITEM(b, SI_FREQUENCY, "%dHz\n", afhi->frequency);
+ if (ret < 0)
+ goto out;
+ ret = WRITE_STATUS_ITEM(b, SI_CHANNELS, "%d\n", afhi->channels);
+ if (ret < 0)
+ goto out;
+ ret = WRITE_STATUS_ITEM(b, SI_DURATION, "%s\n", duration_buf);
+ if (ret < 0)
+ goto out;
+ ret = WRITE_STATUS_ITEM(b, SI_SECONDS_TOTAL, "%lu\n",
+ afhi->seconds_total);
+ if (ret < 0)
+ goto out;
+ ret = WRITE_STATUS_ITEM(b, SI_LAST_PLAYED, "%s\n", last_played_time);
+ if (ret < 0)
+ goto out;
+ ret = WRITE_STATUS_ITEM(b, SI_NUM_PLAYED, "%d\n", afsi->num_played);
+ if (ret < 0)
+ goto out;
+ ret = WRITE_STATUS_ITEM(b, SI_AMPLIFICATION, "%u\n", afsi->amp);
+ if (ret < 0)
+ goto out;
+ ret = WRITE_STATUS_ITEM(b, SI_CHUNK_TIME, "%lu\n",
+ tv2ms(&afhi->chunk_tv));
+ if (ret < 0)
+ goto out;
+ ret = WRITE_STATUS_ITEM(b, SI_NUM_CHUNKS, "%lu\n",
+ afhi->chunks_total);
+ if (ret < 0)
+ goto out;
+ ret = WRITE_STATUS_ITEM(b, SI_TECHINFO, "%s\n", afhi->techinfo);
+ if (ret < 0)
+ goto out;
+ ret = WRITE_STATUS_ITEM(b, SI_ARTIST, "%s\n", afhi->tags.artist);
+ if (ret < 0)
+ goto out;
+ ret = WRITE_STATUS_ITEM(b, SI_TITLE, "%s\n", afhi->tags.title);
+ if (ret < 0)
+ goto out;
+ ret = WRITE_STATUS_ITEM(b, SI_YEAR, "%s\n", afhi->tags.year);
+ if (ret < 0)
+ goto out;
+ ret = WRITE_STATUS_ITEM(b, SI_ALBUM, "%s\n", afhi->tags.album);
+ if (ret < 0)
+ goto out;
+ ret = WRITE_STATUS_ITEM(b, SI_COMMENT, "%s\n", afhi->tags.comment);
+ if (ret < 0)
+ goto out;
+ 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) {
+ ret = para_printf(b, "Lyrics:\n~~~~~~~\n%s",
+ (char *)lyrics_def.data);
+ osl_close_disk_object(&lyrics_def);
+ }
+ }
+out:
+ return ret;