T-gnus 6.15.18 revision 00.
[elisp/gnus.git-] / lisp / mm-url.el
index 808a156..6098ce7 100644 (file)
@@ -1,5 +1,5 @@
 ;;; mm-url.el --- a wrapper of url functions/commands for Gnus
-;; Copyright (C) 2001, 2002 Free Software Foundation, Inc.
+;; Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
 
 ;; Author: Shenghuo Zhu <zsh@cs.rochester.edu>
 
@@ -62,7 +62,8 @@
    ((exec-installed-p "lynx") 'lynx)
    ((exec-installed-p "curl") 'curl)
    (t "GET"))
-  "The url grab program."
+  "The url grab program.
+Likely values are `wget', `w3m', `lynx' and `curl'."
   :type '(choice
          (symbol :tag "wget" wget)
          (symbol :tag "w3m" w3m)
@@ -270,22 +271,31 @@ This is taken from RFC 2396.")
 
 (defun mm-url-insert-file-contents (url)
   (if mm-url-use-external
-      (if (string-match "^file:/+" url)
-         (insert-file-contents (substring url (1- (match-end 0))))
-       (mm-url-insert-file-contents-external url))
+      (progn
+       (if (string-match "^file:/+" url)
+           (insert-file-contents (substring url (1- (match-end 0))))
+         (mm-url-insert-file-contents-external url))
+       (goto-char (point-min))
+       (list url (buffer-size)))
     (mm-url-load-url)
     (let ((name buffer-file-name)
+         (url-request-extra-headers (list (cons "Connection" "Close")))
          (url-package-name (or mm-url-package-name
                                url-package-name))
          (url-package-version (or mm-url-package-version
-                                  url-package-version)))
-      (prog1
-         (url-insert-file-contents url)
-       (save-excursion
-         (goto-char (point-min))
-         (while (re-search-forward "\r 1000\r ?" nil t)
-           (replace-match "")))
-       (setq buffer-file-name name)))))
+                                  url-package-version))
+         result)
+      (setq result (url-insert-file-contents url))
+      (save-excursion
+       (goto-char (point-min))
+       (while (re-search-forward "\r 1000\r ?" nil t)
+         (replace-match "")))
+      (setq buffer-file-name name)
+      (if (and (fboundp 'url-generic-parse-url)
+              (listp result))
+         (setq url-current-object (url-generic-parse-url
+                                   (car result))))
+      result)))
 
 (defun mm-url-insert-file-contents-external (url)
   (let (program args)
@@ -355,7 +365,7 @@ If FOLLOW-REFRESH is non-nil, redirect refresh url in META."
   (with-temp-buffer
     (insert string)
     (mm-url-decode-entities)
-    (buffer-substring (point-min) (point-max))))
+    (buffer-string)))
 
 (defun mm-url-form-encode-xwfu (chunk)
   "Escape characters in a string for application/x-www-form-urlencoded.