From e6b486fd930fea1a6edddf943c6385be8c74418e Mon Sep 17 00:00:00 2001 From: John Trengrove Date: Sun, 1 Aug 2010 22:55:53 +0200 Subject: [PATCH] ftp: display hour:minute information if it is available. --- src/ChangeLog | 10 ++++++++++ src/ftp-ls.c | 9 +++++++-- src/ftp.h | 8 ++++++++ 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index aa074bf7..ccb1be80 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,13 @@ +2010-07-25 John Trengrove (tiny change) + + * ftp.h: Added enum `parsetype'. Modified struct to hold parsetype. + + * ftp-ls.c (ftp_parse_unix_ls): Default to TT_DAY. Change to TT_HOUR_MIN + if hours/minutes parsed. + (ftp_parse_winnt_ls): Default to TT_HOUR_MIN. + (ftp_parse_vms_ls): Default to TT_HOUR_MIN. + (ftp_index): Print only if fileinfo struct value ttype set to TT_HOUR_MIN. + 2010-07-30 Giuseppe Scrivano * html-url.h (struct map_context): Remove member `tail'. diff --git a/src/ftp-ls.c b/src/ftp-ls.c index ed402df7..4224083d 100644 --- a/src/ftp-ls.c +++ b/src/ftp-ls.c @@ -100,7 +100,7 @@ ftp_parse_unix_ls (const char *file, int ignore_perms) }; int next, len, i, error, ignore; int year, month, day; /* for time analysis */ - int hour, min, sec; + int hour, min, sec, ptype; struct tm timestruct, *tnow; time_t timenow; @@ -183,6 +183,7 @@ ftp_parse_unix_ls (const char *file, int ignore_perms) treated equally for now. */ year = hour = min = sec = 0; /* Silence the compiler. */ month = day = 0; + ptype = TT_DAY; next = -1; /* While there are tokens on the line, parse them. Next is the number of tokens left until the filename. @@ -262,6 +263,7 @@ ftp_parse_unix_ls (const char *file, int ignore_perms) /* This means these were hours! */ hour = year; year = 0; + ptype = TT_HOUR_MIN; ++tok; /* Get the minutes... */ for (; c_isdigit (*tok); tok++) @@ -414,6 +416,7 @@ ftp_parse_unix_ls (const char *file, int ignore_perms) timestruct.tm_yday = 0; timestruct.tm_isdst = -1; l->tstamp = mktime (×truct); /* store the time-stamp */ + l->ptype = ptype; xfree (line); } @@ -501,6 +504,7 @@ ftp_parse_winnt_ls (const char *file) timestruct.tm_yday = 0; timestruct.tm_isdst = -1; cur.tstamp = mktime (×truct); /* store the time-stamp */ + cur.ptype = TT_HOUR_MIN; DEBUGP(("Timestamp: %ld\n", cur.tstamp)); @@ -987,6 +991,7 @@ ftp_parse_vms_ls (const char *file) } cur.tstamp = timenow; /* Store the time-stamp. */ DEBUGP(("Timestamp: %ld\n", cur.tstamp)); + cur.ptype = TT_HOUR_MIN; /* Add the data for this item to the linked list, */ if (!dir) @@ -1134,7 +1139,7 @@ ftp_index (const char *file, struct url *u, struct fileinfo *f) fprintf (fp, "%d %s %02d ", ptm->tm_year + 1900, months[ptm->tm_mon], ptm->tm_mday); - if (ptm->tm_hour) + if (f->ptype == TT_HOUR_MIN) fprintf (fp, "%02d:%02d ", ptm->tm_hour, ptm->tm_min); else fprintf (fp, " "); diff --git a/src/ftp.h b/src/ftp.h index 49279ac8..3062fd3a 100644 --- a/src/ftp.h +++ b/src/ftp.h @@ -87,6 +87,13 @@ enum GLOB_GLOBALL, GLOB_GETALL, GLOB_GETONE }; +/* Used by to test if time parsed includes hours and minutes. */ +enum parsetype +{ + TT_HOUR_MIN, TT_DAY +}; + + /* Information about one filename in a linked list. */ struct fileinfo { @@ -94,6 +101,7 @@ struct fileinfo char *name; /* file name */ wgint size; /* file size */ long tstamp; /* time-stamp */ + enum parsetype ptype; /* time parsing */ int perms; /* file permissions */ char *linkto; /* link to which file points */ struct fileinfo *prev; /* previous... */ -- 2.39.2