summaryrefslogtreecommitdiff
blob: 71a7d8ce248ad537b44b797d74b4b6035850389a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
From: Wolfgang Bauer <wbauer@tmo.at>
Date: Thu, 07 Jan 2016 12:38:55 +0000
Subject: [kio_ftp] fix display of file/directory modification time/date
X-Git-Url: http://quickgit.kde.org/?p=kio.git&a=commitdiff&h=68af1d7e89b7fed136d4cc62b76c1c6ded2d94eb
---
[kio_ftp] fix display of file/directory modification time/date

- QDate() treats the year literally (i.e. 90 is really year 90, not
1990), so subtracting 1900 is wrong.
- Use QDate::currentDate() instead of QDateTime::currentDateTime(), we
only need the current date anyway
- Initialize day, month, and year to the current date instead of 0. In
the case when no year is mentioned in the server's reply (the year is
implicit), it wasn't set to the current year at all, so the result was
either 0 or -1.

BUG: 354597
FIXED-IN: 5.19.0
REVIEW: 126659
---


--- a/src/ioslaves/ftp/ftp.cpp
+++ b/src/ioslaves/ftp/ftp.cpp
@@ -1763,18 +1763,16 @@
             // Parsing the date is somewhat tricky
             // Examples : "Oct  6 22:49", "May 13  1999"
 
-            // First get current time - we need the current month and year
-            QDateTime currentTime(QDateTime::currentDateTime());
-            int currentMonth = currentTime.date().month();
+            // First get current date - we need the current month and year
+            QDate currentDate(QDate::currentDate());
+            int currentMonth = currentDate.month();
             //qDebug() << "Current time :" << asctime( tmptr );
-            // Reset time fields
-            currentTime.setTime(QTime(0, 0, 0));
-            // Get day number (always second field)
-            int day = 0;
-            int month = 0;
-            int year = 0;
+            int day = currentDate.day();
+            int month = currentDate.month();
+            int year = currentDate.year();
             int minute = 0;
             int hour = 0;
+            // Get day number (always second field)
             if (p_date_2) {
                 day = atoi(p_date_2);
             }
@@ -1794,7 +1792,7 @@
 
             // Parse third field
             if (qstrlen(p_date_3) == 4) { // 4 digits, looks like a year
-                year = atoi(p_date_3) - 1900;
+                year = atoi(p_date_3);
             } else {
                 // otherwise, the year is implicit
                 // according to man ls, this happens when it is between than 6 months