如何使用url-retrieve下载Emacs中的tar.gz文件?

时间:2013-03-23 00:39:46

标签: emacs elisp

我正在使用el-get并且未能安装颜色主题。经过一些研究,我发现el-get下载的文件color-theme-6.6.0.tar.gz不完整。使用el-get下载的大小为124853,如果文件是由wget下载的,则大小为124858

然后我发现el-get正在使用url-retrieve来下载包。所以我在*scratch*缓冲区中评估了这段代码。

(url-retrieve
 "http://download.savannah.gnu.org/releases/color-theme/color-theme-6.6.0.tar.gz"
 (lambda (s)
   (write-file "/home/jxq/data/tmp")))

文件/home/jxq/data/tmp现在包含http标头和正文。 http标头的长度为279,整个尺寸为125132。因此,检索到的tar.gz文件大小为124853。丢失的5个字节在哪里?

这是url-retrieve中的错误还是我错误地使用了它?

1 个答案:

答案 0 :(得分:3)

在编写之前,您需要跳过HTTP标头(文档称之为“MIME标头”):

(url-retrieve
 "http://download.savannah.gnu.org/releases/color-theme/color-theme-6.6.0.tar.gz"
 (lambda (s)
   (re-search-forward "\r?\n\r?\n")
   (write-region (point) (point-max) "/tmp/bla")))

此版本保存与Wget相同的内容。