X-Git-Url: http://git.tuebingen.mpg.de/?a=blobdiff_plain;f=aft.c;h=35e513ffb8a76c099544ac865742810caac10abc;hb=0de6d7ae4c6e87d1af2ad87b703b7459e41df90f;hp=8a8e5282576dec0f3319bb98685bd0e1df9767c5;hpb=030a9d5c9fe28328d5db977bf2c8ddbf7302673d;p=paraslash.git diff --git a/aft.c b/aft.c index 8a8e5282..35e513ff 100644 --- a/aft.c +++ b/aft.c @@ -676,21 +676,27 @@ int load_afd(int shmid, struct audio_file_data *afd) static int get_local_time(uint64_t *seconds, char *buf, size_t size, time_t current_time, enum ls_listing_mode lm) { - struct tm t; + struct tm *tm; + /* + * Omit year but show time if the given value is closer to the current + * time than this many seconds. + */ + const time_t m = 6 * 30 * 24 * 3600; /* six months */ - if (!localtime_r((time_t *)seconds, &t)) + tm = localtime((time_t *)seconds); + if (!tm) return -E_LOCALTIME; if (lm == LS_MODE_MBOX) { - if (!strftime(buf, size, "%c", &t)) + if (!strftime(buf, size, "%c", tm)) return -E_STRFTIME; return 1; } - if (*seconds + 6 * 30 * 24 * 3600 > current_time) { - if (!strftime(buf, size, "%b %e %k:%M", &t)) + if (*seconds > current_time - m && *seconds < current_time + m) { + if (!strftime(buf, size, "%b %e %k:%M", tm)) return -E_STRFTIME; return 1; } - if (!strftime(buf, size, "%b %e %Y", &t)) + if (!strftime(buf, size, "%b %e %Y", tm)) return -E_STRFTIME; return 1; }