summaryrefslogtreecommitdiff
path: root/src/bookmarks.c
diff options
context:
space:
mode:
authorJaakko Keränen <jaakko.keranen@iki.fi>2021-02-23 06:10:40 +0200
committerJaakko Keränen <jaakko.keranen@iki.fi>2021-02-23 06:10:40 +0200
commitf79e6735864a16c20d0ed0cc9d79c8c20aeb4816 (patch)
tree24b2b2399919ad4507fec805da39b333bd795846 /src/bookmarks.c
parent492d80a084685fc30bb8e9ef7689dcdcbe9ab307 (diff)
Editing bookmark icons
IssueID #140
Diffstat (limited to 'src/bookmarks.c')
-rw-r--r--src/bookmarks.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/bookmarks.c b/src/bookmarks.c
index da53b645..5815f447 100644
--- a/src/bookmarks.c
+++ b/src/bookmarks.c
@@ -248,6 +248,31 @@ iBool updateBookmarkIcon_Bookmarks(iBookmarks *d, const iString *url, iChar icon
248 return changed; 248 return changed;
249} 249}
250 250
251iChar siteIcon_Bookmarks(const iBookmarks *d, iRangecc hostName) {
252 iChar icon = 0;
253 const size_t hostSize = size_Range(&hostName);
254 size_t matchingSize = iInvalidSize; /* we'll pick the shortest matching */
255 lock_Mutex(d->mtx);
256 iConstForEach(Hash, i, &d->bookmarks) {
257 const iBookmark *bm = (const iBookmark *) i.value;
258 iUrl parts;
259 init_Url(&parts, &bm->url);
260 if (!hasTag_Bookmark(bm, "usericon")) { /* TODO: Inefficient! RegExp rebuilt every time. */
261 continue;
262 }
263 if (size_Range(&hostName) == size_Range(&parts.host) &&
264 iCmpStrNCase(hostName.start, parts.host.start, hostSize) == 0) {
265 const size_t n = size_String(&bm->url);
266 if (n < matchingSize && bm->icon) {
267 matchingSize = n;
268 icon = bm->icon;
269 }
270 }
271 }
272 unlock_Mutex(d->mtx);
273 return icon;
274}
275
251iBookmark *get_Bookmarks(iBookmarks *d, uint32_t id) { 276iBookmark *get_Bookmarks(iBookmarks *d, uint32_t id) {
252 return (iBookmark *) value_Hash(&d->bookmarks, id); 277 return (iBookmark *) value_Hash(&d->bookmarks, id);
253} 278}