handle future modtime

SVN revision: 25145
This commit is contained in:
Carsten Haitzler 2006-08-27 04:05:18 +00:00
parent dde8d9c6e4
commit 14aa197e66
1 changed files with 23 additions and 16 deletions

View File

@ -628,27 +628,34 @@ _e_wid_file_perms_get(mode_t st_mode, uid_t st_uid, gid_t st_gid)
static char * static char *
_e_wid_file_time_get(time_t st_modtime) _e_wid_file_time_get(time_t st_modtime)
{ {
float diff; time_t diff;
time_t ltime; time_t ltime;
char modtime[256]; char modtime[256];
char *motime; char *motime;
ltime = time(NULL); ltime = time(NULL);
diff = difftime(ltime, st_modtime); diff = ltime - st_modtime;
if (diff <= 60) if (st_modtime > ltime)
snprintf(modtime, sizeof(modtime), _("In the last minute")); {
if (diff > 60) snprintf(modtime, sizeof(modtime), _("In the future"));
snprintf(modtime, sizeof(modtime), _("%i minutes ago"), ((int)diff/60)); }
if (diff >= 3600) else
snprintf(modtime, sizeof(modtime), _("%i hours ago"), ((int)diff/3600)); {
if (diff >= 86400) if (diff <= 60)
snprintf(modtime, sizeof(modtime), _("%i days ago"), ((int)diff/86400)); snprintf(modtime, sizeof(modtime), _("In the last minute"));
if (diff >= 604800) else if (diff >= 31526000)
snprintf(modtime, sizeof(modtime), _("%i weeks ago"), ((int)diff/604800)); snprintf(modtime, sizeof(modtime), _("%i years ago"), (diff / 31526000));
if (diff >= 2592000) else if (diff >= 2592000)
snprintf(modtime, sizeof(modtime), _("%i months ago"), ((int)diff/2592000)); snprintf(modtime, sizeof(modtime), _("%i months ago"), (diff / 2592000));
if (diff >= 31526000) else if (diff >= 604800)
snprintf(modtime, sizeof(modtime), _("%i years ago"), ((int)diff/31526000)); snprintf(modtime, sizeof(modtime), _("%i weeks ago"), (diff / 604800));
else if (diff >= 86400)
snprintf(modtime, sizeof(modtime), _("%i days ago"), (diff / 86400));
else if (diff >= 3600)
snprintf(modtime, sizeof(modtime), _("%i hours ago"), (diff / 3600));
else if (diff > 60)
snprintf(modtime, sizeof(modtime), _("%i minutes ago"), (diff / 60));
}
if (modtime) if (modtime)
motime = strdup(modtime); motime = strdup(modtime);