Opened 14 years ago
Closed 10 years ago
#7219 closed Bug report (rejected)
Change from HOUR to YEAR date format too early
Reported by: | Bieringer Dominik | Owned by: | |
---|---|---|---|
Priority: | low | Component: | FileZilla Server |
Keywords: | Cc: | ||
Component version: | Operating system type: | ||
Operating system version: |
Description
When requesting a directory listing from the FileZilla FTP Server, files that were modified very recently are listed with the HOUR and MINUTE fields; files that were modified long time ago are instead listed with the YEAR field.
Normally FTP servers change the format after about a year, which is - as far as I have understood - also the intended way the FileZilla FTP Server should work (see the comment in ticket #1317).
However, this is not the case, as the corresponding code does compare the difference between the current date and the file date wrongly; the related code in Permissions.cpp
:
256 pResult->len += sprintf(pResult->buffer + pResult->len, " %s %02d ", months[sFileTime.wMonth-1], sFileTime.wDay); 257 if (t1 > t2 || (t2-t1) > ((_int64)1000000*60*60*24*350)) 258 pResult->len += sprintf(pResult->buffer + pResult->len, " %d ", sFileTime.wYear); 259 else 260 pResult->len += sprintf(pResult->buffer + pResult->len, "%02d:%02d ", sFileTime.wHour, sFileTime.wMinute);
t2 and t1 are values of type FILETIME (see http://msdn.microsoft.com/en-us/library/ms724284(v=vs.85).aspx), which stores the time in 100-nanosecond intervals. As a nanosecond is 10-9s, which is 1 000 000 000, a value of 10 000 000 in a TIMESTAMP equals one second.
Therefore the comparison should read like 10 000 000*60*60*24*350
instead of 1 000 000*60*60*24*350
.
With the current code, FileZilla changes the format of the listing after 35 days (because of the missing zero).
Change History (2)
comment:1 by , 14 years ago
Priority: | critical → low |
---|
comment:2 by , 10 years ago
Resolution: | → rejected |
---|---|
Status: | new → closed |
The output of LIST is entirely undefined by the FTP specifications. As such, the way FileZilla displays the time only for this short of a time can be considered compliant with the specifications. As such, dropping priority to low.
You may want to upgrade to a modern client that makes use of the MLSD command, which requires timestamps to always include seconds regardless of age.
For future versions of FileZilla Server, I consider simply mapping LIST to MLSD.