}
static int get_local_time(uint64_t *seconds, char *buf, size_t size,
- time_t current_time)
+ time_t current_time, enum ls_listing_mode lm)
{
struct tm t;
if (!localtime_r((time_t *)seconds, &t))
return -E_LOCALTIME;
+ if (lm == LS_MODE_MBOX) {
+ if (!strftime(buf, size, "%c", &t))
+ return -E_STRFTIME;
+ return 1;
+ }
if (*seconds + 6 * 30 * 24 * 3600 > current_time) {
if (!strftime(buf, size, "%b %e %k:%M", &t))
return -E_STRFTIME;
struct audio_format_info *afhi = &d->afhi;
struct ls_widths *w = &opts->widths;
int have_score = opts->flags & LS_FLAG_ADMISSIBLE_ONLY;
+ char asc_hash[2 * HASH_SIZE + 1];
+ char *att_line, *lyrics_line, *image_line;
if (opts->mode == LS_MODE_SHORT) {
para_printf(b, "%s\n", d->path);
}
get_attribute_bitmap(&afsi->attributes, att_buf);
ret = get_local_time(&afsi->last_played, last_played_time,
- sizeof(last_played_time), current_time);
+ sizeof(last_played_time), current_time, opts->mode);
if (ret < 0)
return ret;
get_duration_buf(afhi->seconds_total, duration_buf, w->duration_width);
);
return 1;
}
+ hash_to_asc(d->hash, asc_hash);
+ att_line = make_attribute_line(att_buf, afsi);
+ lyrics_line = make_lyrics_line(afsi);
+ image_line = make_image_line(afsi);
if (opts->mode == LS_MODE_VERBOSE) {
- char asc_hash[2 * HASH_SIZE + 1];
- char *att_line, *lyrics_line, *image_line;
- hash_to_asc(d->hash, asc_hash);
- att_line = make_attribute_line(att_buf, afsi);
- lyrics_line = make_lyrics_line(afsi);
- image_line = make_image_line(afsi);
para_printf(b,
"%s: %s\n" /* path */
"%s%s%s" /* score */
last_played_time,
afhi->info_string
);
- free(att_line);
- free(lyrics_line);
- free(image_line);
- return 1;
+ } else { /* mbox mode */
+ struct osl_object lyrics_def;
+ lyr_get_def_by_id(afsi->lyrics_id, &lyrics_def);
+ para_printf(b,
+ "From foo@localhost %s\n"
+ "Received: from\nTo: bar\nFrom: a\n"
+ "Subject: %s\n\n" /* path */
+ "%s%s%s" /* score */
+ "attributes: %s\n"
+ "hash: %s\n"
+ "image_id: %s\n"
+ "lyrics_id: %s\n"
+ "bitrate: %dkbit/s\n"
+ "format: %s\n"
+ "frequency: %dHz\n"
+ "channels: %d\n"
+ "duration: %s\n"
+ "num_played: %d\n"
+ "tag info: %s\n"
+ "%s%s\n",
+ last_played_time,
+ d->path,
+ have_score? "score: " : "", score_buf,
+ have_score? "\n" : "",
+ att_line,
+ asc_hash,
+ image_line,
+ lyrics_line,
+ 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);
}
+ free(att_line);
+ free(lyrics_line);
+ free(image_line);
return 1;
}