summaryrefslogtreecommitdiff
path: root/src/visited.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/visited.c')
-rw-r--r--src/visited.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/src/visited.c b/src/visited.c
index 5d8a5676..3e034399 100644
--- a/src/visited.c
+++ b/src/visited.c
@@ -29,7 +29,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
29#include <the_Foundation/ptrarray.h> 29#include <the_Foundation/ptrarray.h>
30#include <the_Foundation/sortedarray.h> 30#include <the_Foundation/sortedarray.h>
31 31
32static const size_t maxAgeVisited_Visited_ = 2 * 3600 * 24 * 30; /* two months */ 32const int maxAge_Visited = 2 * 3600 * 24 * 30; /* two months */
33 33
34void init_VisitedUrl(iVisitedUrl *d) { 34void init_VisitedUrl(iVisitedUrl *d) {
35 initCurrent_Time(&d->when); 35 initCurrent_Time(&d->when);
@@ -113,16 +113,16 @@ void load_Visited(iVisited *d, const char *dirPath) {
113 sscanf(line.start, "%04d-%02d-%02dT%02d:%02d:%02d ", &y, &m, &D, &H, &M, &S); 113 sscanf(line.start, "%04d-%02d-%02dT%02d:%02d:%02d ", &y, &m, &D, &H, &M, &S);
114 if (!y) break; 114 if (!y) break;
115 iVisitedUrl item; 115 iVisitedUrl item;
116 init_VisitedUrl(&item);
116 const char *urlStart = line.start + 20; 117 const char *urlStart = line.start + 20;
117 if (*urlStart == '0' && size_Range(&line) >= 25) { 118 if (*urlStart == '0' && size_Range(&line) >= 25) {
118 item.flags = strtoul(line.start + 20, NULL, 16); 119 item.flags = strtoul(line.start + 20, NULL, 16);
119 urlStart += 5; 120 urlStart += 5;
120 } 121 }
121 init_VisitedUrl(&item);
122 init_Time( 122 init_Time(
123 &item.when, 123 &item.when,
124 &(iDate){ .year = y, .month = m, .day = D, .hour = H, .minute = M, .second = S }); 124 &(iDate){ .year = y, .month = m, .day = D, .hour = H, .minute = M, .second = S });
125 if (secondsSince_Time(&now, &item.when) > maxAgeVisited_Visited_) { 125 if (secondsSince_Time(&now, &item.when) > maxAge_Visited) {
126 continue; /* Too old. */ 126 continue; /* Too old. */
127 } 127 }
128 initRange_String(&item.url, (iRangecc){ urlStart, line.end }); 128 initRange_String(&item.url, (iRangecc){ urlStart, line.end });
@@ -179,9 +179,12 @@ void visitUrl_Visited(iVisited *d, const iString *url, uint16_t visitFlags) {
179void removeUrl_Visited(iVisited *d, const iString *url) { 179void removeUrl_Visited(iVisited *d, const iString *url) {
180 iGuardMutex(d->mtx, { 180 iGuardMutex(d->mtx, {
181 size_t pos = find_Visited_(d, url); 181 size_t pos = find_Visited_(d, url);
182 if (pos != iInvalidPos) { 182 if (pos < size_SortedArray(&d->visited)) {
183 deinit_VisitedUrl(at_SortedArray(&d->visited, pos)); 183 iVisitedUrl *visUrl = at_SortedArray(&d->visited, pos);
184 remove_Array(&d->visited.values, pos); 184 if (equal_String(&visUrl->url, url)) {
185 deinit_VisitedUrl(visUrl);
186 remove_Array(&d->visited.values, pos);
187 }
185 } 188 }
186 }); 189 });
187} 190}