summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2012-03-29 12:18:50 +0400
committerAndrew Dolgov <[email protected]>2012-03-29 12:18:50 +0400
commit0bf3e81dafb3880bbe5c012b31de138b8da12632 (patch)
tree5238e6143533887669e10840cd4865b233dded2c /include
parentc20b5168b5a9103e1a2633973492c89fa03a5a57 (diff)
add patch by gmargo to improve favicon detection by content
Diffstat (limited to 'include')
-rw-r--r--include/functions.php28
1 files changed, 27 insertions, 1 deletions
diff --git a/include/functions.php b/include/functions.php
index c19915bb7..6bc3ca4f9 100644
--- a/include/functions.php
+++ b/include/functions.php
@@ -374,7 +374,33 @@
$favicon_url = get_favicon_url($site_url);
if ($favicon_url) {
- $contents = fetch_file_contents($favicon_url, "image");
+ // Limiting to "image" type misses those served with text/plain
+ $contents = fetch_file_contents($favicon_url); // , "image");
+
+ if ($contents) {
+ // Crude image type matching.
+ // Patterns gleaned from the file(1) source code.
+ if (preg_match('/^\x00\x00\x01\x00/', $contents)) {
+ // 0 string \000\000\001\000 MS Windows icon resource
+ //error_log("check_feed_favicon: favicon_url=$favicon_url isa MS Windows icon resource");
+ }
+ elseif (preg_match('/^GIF8/', $contents)) {
+ // 0 string GIF8 GIF image data
+ //error_log("check_feed_favicon: favicon_url=$favicon_url isa GIF image");
+ }
+ elseif (preg_match('/^\x89PNG\x0d\x0a\x1a\x0a/', $contents)) {
+ // 0 string \x89PNG\x0d\x0a\x1a\x0a PNG image data
+ //error_log("check_feed_favicon: favicon_url=$favicon_url isa PNG image");
+ }
+ elseif (preg_match('/^\xff\xd8/', $contents)) {
+ // 0 beshort 0xffd8 JPEG image data
+ //error_log("check_feed_favicon: favicon_url=$favicon_url isa JPG image");
+ }
+ else {
+ //error_log("check_feed_favicon: favicon_url=$favicon_url isa UNKNOWN type");
+ $contents = "";
+ }
+ }
if ($contents) {
$fp = @fopen($icon_file, "w");