Use url in FAVICON_SEARCH_PREFIX to get favicon url for sites

Default configuration pointing to google service
Fallfack to <url>/favicon.ico if FAVICON_SEARCH_PREFIX is not set
This commit is contained in:
Silvan Calarco 2015-05-16 13:04:12 +02:00
parent 4199fc7d62
commit 49b2967e9b
3 changed files with 20 additions and 11 deletions

View File

@ -34,6 +34,10 @@ URL_PREFIX="/distromatic/index.html?"
# (default: ARCHS=i586)
#
#ARCHS = i586
#
# FAVICON_SEARCH_PREFIX:
# external prefix url to service providing sites favicons
FAVICON_SEARCH_PREFIX="http://www.google.com/s2/favicons?domain="
#[maintainers]
# put maintainer list with aliases here

View File

@ -255,6 +255,9 @@ struct configTag* read_configuration(const char *confFile)
} else if (!strcmp(vartok, "URL_DIR")) {
configdefaults.url_dir =
(char *) strdup(valuetok);
} else if (!strcmp(vartok, "FAVICON_SEARCH_PREFIX")) {
configdefaults.favicon_search_prefix =
(char *) strdup(valuetok);
} else if (!strcmp(vartok, "ARCHS")) {
vartok = (char *) strtok(valuetok, " ");
i = 0;
@ -621,25 +624,26 @@ int scansdir(const char *dir, struct dirent ***namelist,
return(i);
}
#define favicon_url_prefix "http://g.etfv.co/"
int
get_favicon_from_url(const char* url,char *buf,int bufsize) {
int i=0,l=0;
strncpy(buf, favicon_url_prefix, bufsize);
if (configdefaults.favicon_search_prefix != NULL) {
snprintf(buf, bufsize, "%s%s", configdefaults.favicon_search_prefix, url);
} else {
snprintf(buf, bufsize, "%s", url);
/* expecting urls in the form http://address/... */
if (url) {
while ((i<bufsize) && url[i]) {
if (url[i] == '/') {
while ((i<bufsize) && buf[i]) {
if (buf[i] == '/') {
l++;
if (l == 3) break;
}
i++;
}
buf[i] = 0;
snprintf(&buf[i], bufsize - l, "/favicon.ico");
}
strncpy(&buf[strlen(buf)], url, i);
return 0;
}

View File

@ -18,6 +18,7 @@ struct configDefaults {
char *url_prefix;
char *url_search_prefix;
char *url_dir;
char *favicon_search_prefix;
char *arch[ARCHS_MAX];
};