unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Nick Dokos <nicholas.dokos@hp.com>
To: 8827@debbugs.gnu.org
Cc: Julien Danjou <julien@danjou.info>, nicholas.dokos@hp.com
Subject: bug#8827: Problem in url-cache
Date: Wed, 08 Jun 2011 19:35:45 -0400	[thread overview]
Message-ID: <24461.1307576145@alphaville.americas.hpqcorp.net> (raw)

I was chasing down some problems I was having with Julien Danjou's
google-weather.  The blow-by-blow description can be found in the
following threads on the emacs and orgmode mailing lists:

  http://thread.gmane.org/gmane.emacs.help/81302
  http://thread.gmane.org/gmane.emacs.orgmode/42565

This bug report (and possible patch) concern one aspect of this:
google-weather uses the url package to retrieve icons in GIF format (but
the problem may arise from any kind of binary data) from the server and
caches them locally for 12 hours by default. It does that by calling
url-store-in-cache:

(defun url-store-in-cache (&optional buff)
  "Store buffer BUFF in the cache."
    (with-current-buffer (get-buffer (or buff (current-buffer)))
      (let ((fname (url-cache-create-filename (url-view-url t))))
        (if (url-cache-prepare fname)
            (let ((coding-system-for-write 'binary))
              (write-region (point-min) (point-max) fname nil 5))))))

While the cache is valid, it then fetches the cached data by calling
url-cache-extract:

(defun url-cache-extract (fnam)
  "Extract FNAM from the local disk cache."
  (erase-buffer)
  (insert-file-contents-literally fnam))

But it seems that in a multibyte context, what url-store-in-cache
stores and what url-cache-extract retrieves are not identical:
the former stores a sequence of bytes as they come from the network
and the latter may combine individual bytes into multibyte entities.

My workaround for this problem is

--8<---------------cut here---------------start------------->8---
diff --git a/lisp/url/url-cache.el b/lisp/url/url-cache.el
index 1615920..80d7702 100644
--- a/lisp/url/url-cache.el
+++ b/lisp/url/url-cache.el
@@ -192,6 +192,7 @@ Very fast if you have an `md5' primitive function, suitably fast otherwise."
 (defun url-cache-extract (fnam)
   "Extract FNAM from the local disk cache."
   (erase-buffer)
+  (set-buffer-multibyte nil)
   (insert-file-contents-literally fnam))
 
 (defun url-cache-expired (url &optional expire-time)
--8<---------------cut here---------------end--------------->8---

It seems to work satisfactorily for google-weather. I don't know whether
it causes problems in other ways.

Thanks,
Nick





             reply	other threads:[~2011-06-08 23:35 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-06-08 23:35 Nick Dokos [this message]
2011-06-09  7:37 ` bug#8827: Problem in url-cache Eli Zaretskii
2011-07-06  7:49 ` Julien Danjou

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=24461.1307576145@alphaville.americas.hpqcorp.net \
    --to=nicholas.dokos@hp.com \
    --cc=8827@debbugs.gnu.org \
    --cc=julien@danjou.info \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).